Imported Upstream version 2.64.5 upstream/2.64.5
authorDongHun Kwak <dh0128.kwak@samsung.com>
Fri, 29 Oct 2021 01:22:04 +0000 (10:22 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Fri, 29 Oct 2021 01:22:04 +0000 (10:22 +0900)
347 files changed:
.clang-format [new file with mode: 0644]
.gitlab-ci.yml
.gitlab-ci/README.md
.gitlab-ci/android-download-ndk.sh
.gitlab-ci/android-ndk.Dockerfile
.gitlab-ci/android-setup-env.sh
.gitlab-ci/cache-subprojects.sh [new file with mode: 0755]
.gitlab-ci/check-todos.py [new file with mode: 0755]
.gitlab-ci/coverage-docker.sh
.gitlab-ci/cross_file_mingw64.txt
.gitlab-ci/debian-stable.Dockerfile
.gitlab-ci/fedora.Dockerfile
.gitlab-ci/mingw.Dockerfile
.gitlab-ci/run-check-todos.sh [new file with mode: 0755]
.gitlab-ci/run-docker.sh
.gitlab-ci/run-style-check-diff.sh [new file with mode: 0755]
.gitlab-ci/run-tests.sh
.gitlab-ci/test-msvc.bat
.gitlab-ci/test-msys2.sh
NEWS
clang-format-diff.py [new file with mode: 0755]
docs/reference/gio/gdbus-codegen.xml
docs/reference/gio/gdbus-object-manager-example/.gitignore [new file with mode: 0644]
docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-docs.xml [new file with mode: 0644]
docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-sections.txt [new file with mode: 0644]
docs/reference/gio/gdbus-object-manager-example/meson.build [new file with mode: 0644]
docs/reference/gio/gio-docs.xml
docs/reference/gio/gio-sections-common.txt
docs/reference/gio/gio.xml
docs/reference/gio/meson.build
docs/reference/gio/migrating-gdbus.xml
docs/reference/gio/overview.xml
docs/reference/glib/building.xml
docs/reference/glib/cross.xml
docs/reference/glib/glib-docs.xml
docs/reference/glib/glib-sections.txt
docs/reference/glib/meson.build
docs/reference/glib/running.xml
docs/reference/gobject/glib-genmarshal.xml
docs/reference/gobject/glib-mkenums.xml
docs/reference/gobject/meson.build
docs/reference/gobject/tut_gobject.xml
docs/reference/meson.build
fuzzing/README.md
gio/completion/gio
gio/gactiongroup.c
gio/gappinfo.c
gio/gapplication.c
gio/gcancellable.c
gio/gcontenttype.c
gio/gcredentials.c
gio/gdbus-2.0/codegen/codegen.py
gio/gdbus-2.0/codegen/codegen_main.py
gio/gdbus-2.0/codegen/config.py.in
gio/gdbus-2.0/codegen/dbustypes.py
gio/gdbus-2.0/codegen/meson.build
gio/gdbus-2.0/codegen/parser.py
gio/gdbus-tool.c
gio/gdbusaddress.c
gio/gdbusauthmechanismsha1.c
gio/gdbusconnection.c
gio/gdbusconnection.h
gio/gdbusdaemon.c
gio/gdbusmessage.c
gio/gdbusnameowning.c
gio/gdbusnamewatching.c
gio/gdbusobjectmanagerclient.c
gio/gdbusproxy.c
gio/gdesktopappinfo.c
gio/gdocumentportal.c
gio/gdtlsconnection.c
gio/gdummytlsbackend.c
gio/gfdonotificationbackend.c
gio/gfile.c
gio/gfile.h
gio/gfileinfo.c
gio/gfileinfo.h
gio/gio-launch-desktop.c [deleted file]
gio/gio-tool-copy.c
gio/gio-tool-info.c
gio/gio-tool-list.c
gio/gio-tool-mount.c
gio/gio.h
gio/gio_trace.h
gio/gioenums.h
gio/giomodule.c
gio/gioprivate.h
gio/giowin32-private.c [new file with mode: 0644]
gio/glib-compile-resources.c
gio/gliststore.c
gio/gliststore.h
gio/glocalfile.c
gio/glocalfileinfo.c
gio/glocalfileoutputstream.c
gio/glocalvfs.c
gio/gmemorymonitor.c [new file with mode: 0644]
gio/gmemorymonitor.h [new file with mode: 0644]
gio/gmemorymonitordbus.c [new file with mode: 0644]
gio/gmemorymonitordbus.h [new file with mode: 0644]
gio/gmemorymonitorportal.c [new file with mode: 0644]
gio/gmemorymonitorportal.h [new file with mode: 0644]
gio/gmenumodel.c
gio/gnetworkmonitorbase.c
gio/gregistrysettingsbackend.c
gio/gresolver.c
gio/gsettings.c
gio/gsettingsschema.c
gio/gsocket.c
gio/gsocketclient.c
gio/gsocks5proxy.c
gio/gsubprocess.c
gio/gtask.c
gio/gtask.h
gio/gtestdbus.c
gio/gtlsclientconnection.c
gio/gtlsconnection.c
gio/gtrashportal.c
gio/gunixmounts.c
gio/gunixoutputstream.c
gio/gunixsocketaddress.c
gio/gwin32appinfo.c
gio/gwin32registrykey.c
gio/inotify/inotify-helper.c
gio/kqueue/gkqueuefilemonitor.c
gio/meson.build
gio/org.freedesktop.portal.Documents.xml
gio/org.freedesktop.portal.OpenURI.xml
gio/org.freedesktop.portal.ProxyResolver.xml
gio/tests/actions.c
gio/tests/cancellable.c
gio/tests/codegen.py [new file with mode: 0644]
gio/tests/dbus-appinfo.c
gio/tests/defaultvalue.c
gio/tests/fake-document-portal.c [new file with mode: 0644]
gio/tests/file.c
gio/tests/g-file-info-filesystem-readonly.c
gio/tests/gdbus-addresses.c
gio/tests/gdbus-connection-flush.c
gio/tests/gdbus-connection-loss.c
gio/tests/gdbus-connection.c
gio/tests/gdbus-export.c
gio/tests/gdbus-names.c
gio/tests/gdbus-object-manager-example/meson.build
gio/tests/gdbus-serialization.c
gio/tests/gdbus-server-auth.c [new file with mode: 0644]
gio/tests/gdbus-sessionbus.c
gio/tests/gdbus-test-codegen.c
gio/tests/gdbus-test-fixture.c
gio/tests/gdbus-tests.c
gio/tests/gdbus-tests.h
gio/tests/gdbus-threading.c
gio/tests/glistmodel.c
gio/tests/live-g-file.c
gio/tests/memory-monitor-dbus.py.in [new file with mode: 0755]
gio/tests/memory-monitor-portal.py.in [new file with mode: 0755]
gio/tests/memory-monitor.c [new file with mode: 0644]
gio/tests/meson.build
gio/tests/mock-resolver.c
gio/tests/network-address.c
gio/tests/org.gtk.test.dbusappinfo.flatpak.desktop [new file with mode: 0644]
gio/tests/services/meson.build [new file with mode: 0644]
gio/tests/services/org.freedesktop.portal.Documents.service.in [new file with mode: 0644]
gio/tests/socket.c
gio/tests/static-link.py
gio/tests/taptestrunner.py [new file with mode: 0644]
gio/tests/task.c
gio/tests/test-codegen.xml
gio/tests/testfilemonitor.c
gio/tests/unix-streams.c
gio/tests/win32-appinfo.c [new file with mode: 0644]
glib.supp
glib/deprecated/gthread-deprecated.c
glib/garray.c
glib/garray.h
glib/gatomic.c
glib/gatomic.h
glib/gbacktrace.c
glib/gbase64.c
glib/gbitlock.c
glib/gbookmarkfile.c
glib/gbytes.c
glib/gcharset.c
glib/gchecksum.c
glib/gconstructor.h
glib/gdate.c
glib/gdate.h
glib/gdatetime.c
glib/genviron.c
glib/gerror.c
glib/ghash.c
glib/giochannel.c
glib/gkeyfile.c
glib/glib-autocleanups.h
glib/glib-object.h
glib/glib-unix.c
glib/glib-unix.h
glib/glib.h
glib/glib_trace.h
glib/glist.c
glib/glist.h
glib/gmacros.h
glib/gmain.c
glib/gmain.h
glib/gmarkup.c
glib/gmem.c
glib/gmessages.c
glib/gmessages.h
glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build
glib/gnulib/meson.build
glib/gnulib/xsize.c [new file with mode: 0644]
glib/goption.c
glib/gpattern.c
glib/gpoll.c
glib/gprintf.c
glib/gquark.c
glib/grand.c
glib/gslist.c
glib/gslist.h
glib/gspawn.c
glib/gstdio.c
glib/gstdio.h
glib/gstrfuncs.c
glib/gstring.c
glib/gtestutils.c
glib/gtestutils.h
glib/gthread-posix.c
glib/gthread-win32.c
glib/gthread.c
glib/gthread.h
glib/gthreadpool.c
glib/gthreadprivate.h
glib/gtimezone.c
glib/gtypes.h
glib/gunicollate.c
glib/gunidecomp.c
glib/gutf8.c
glib/gutils.c
glib/gutils.h
glib/guuid.c
glib/gvariant-core.c
glib/gvariant-core.h
glib/gvariant-parser.c
glib/gvariant.c
glib/gvariant.h
glib/gvarianttype.c
glib/gversionmacros.h
glib/gwin32.c
glib/libcharset/localcharset.c
glib/libcharset/make-patch.sh
glib/libcharset/meson.build
glib/libcharset/update.sh
glib/meson.build
glib/tests/array-test.c
glib/tests/atomic.c
glib/tests/autoptr.c
glib/tests/bookmarkfile.c
glib/tests/fileutils.c
glib/tests/gdatetime.c
glib/tests/getpwuid-preload.c [new file with mode: 0644]
glib/tests/gutils-user-database.c [new file with mode: 0644]
glib/tests/gvariant.c
glib/tests/io-channel.c [new file with mode: 0644]
glib/tests/macros.c
glib/tests/mainloop.c
glib/tests/markups/fail-54.expected [new file with mode: 0644]
glib/tests/markups/fail-54.gmarkup [new file with mode: 0644]
glib/tests/meson.build
glib/tests/regex.c
glib/tests/spawn-singlethread.c
glib/tests/testing.c
glib/tests/thread-pool.c [new file with mode: 0644]
glib/tests/thread.c
glib/tests/unix.c
glib/tests/utf8-validate.c
glib/tests/utils.c
glib/update-pcre/update.sh
glib/valgrind.h
gmodule/gmodule-ar.c
gmodule/gmodule-dl.c
gmodule/gmodule-dyld.c [deleted file]
gmodule/gmodule-win32.c
gmodule/gmodule.c
gmodule/gmoduleconf.h.in
gmodule/meson.build
gobject/gbinding.c
gobject/gboxed.c
gobject/gobject.c
gobject/gobject.h
gobject/gobject_trace.h
gobject/gparam.c
gobject/gparam.h
gobject/gparamspecs.c
gobject/gparamspecs.h
gobject/gsignal.c
gobject/gsignal.h
gobject/gtype-private.h
gobject/gtype.c
gobject/gtype.h
gobject/gvalue.c
gobject/tests/autoptr.c
gobject/tests/binding.c
gobject/tests/meson.build
gobject/tests/param.c
gobject/tests/reference.c
gobject/tests/signals.c
gobject/tests/testing.c [new file with mode: 0644]
meson.build
meson_options.txt
po/POTFILES.in
po/ca.po
po/cs.po
po/da.po
po/de.po
po/el.po
po/en_GB.po
po/es.po
po/eu.po
po/fr.po
po/gl.po
po/he.po
po/hu.po
po/id.po
po/it.po
po/ja.po
po/kk.po
po/ko.po
po/lt.po
po/ms.po
po/nl.po
po/pl.po
po/pt_BR.po
po/ro.po
po/sl.po
po/sr.po
po/sv.po
po/tr.po
po/uk.po
po/zh_TW.po
subprojects/gtk-doc.wrap [new file with mode: 0644]
subprojects/zlib.wrap
tests/atomic-test.c [deleted file]
tests/meson.build
tests/run-assert-msg-test.sh
tests/run-collate-tests.sh
tests/testgdate.c
tests/testglib.c
tests/threadpool-test.c

diff --git a/.clang-format b/.clang-format
new file mode 100644 (file)
index 0000000..13fd0fb
--- /dev/null
@@ -0,0 +1,11 @@
+# See https://wiki.apertis.org/Guidelines/Coding_conventions#Code_formatting
+BasedOnStyle: GNU
+AlwaysBreakAfterDefinitionReturnType: All
+BreakBeforeBinaryOperators: None
+BinPackParameters: false
+SpaceAfterCStyleCast: true
+# Our column limit is actually 80, but setting that results in clang-format
+# making a lot of dubious hanging-indent choices; disable it and assume the
+# developer will line wrap appropriately. clang-format will still check
+# existing hanging indents.
+ColumnLimit: 0
index 0f091e7..8318ab0 100644 (file)
@@ -1,4 +1,5 @@
 stages:
+  - style-check
   - build
   - coverage
   - analysis
@@ -9,19 +10,53 @@ cache:
     - _ccache/
 
 variables:
+  FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/glib/fedora:v8"
+  DEBIAN_IMAGE: "registry.gitlab.gnome.org/gnome/glib/debian-stable:v6"
+  ANDROID_IMAGE: "registry.gitlab.gnome.org/gnome/glib/android-ndk:v2"
+  MINGW_IMAGE: "registry.gitlab.gnome.org/gnome/glib/mingw:v2"
   MESON_TEST_TIMEOUT_MULTIPLIER: 2
   G_MESSAGES_DEBUG: all
-  MESON_COMMON_OPTIONS: "--buildtype debug --fatal-meson-warnings"
+  MESON_COMMON_OPTIONS_NO_WARNING: "--buildtype debug --wrap-mode=nodownload"
+  MESON_COMMON_OPTIONS: "${MESON_COMMON_OPTIONS_NO_WARNING} --fatal-meson-warnings"
 
-fedora-x86_64:
-  image: registry.gitlab.gnome.org/gnome/glib/fedora:v3
-  stage: build
+.only-default:
+  only:
+    - branches
   except:
     - tags
+
+.build:
+  extends: .only-default
+  before_script:
+    - cp -r $HOME/subprojects/* subprojects/
+
+style-check-diff:
+  extends: .only-default
+  image: $DEBIAN_IMAGE
+  stage: style-check
+  allow_failure: true
+  script:
+    - .gitlab-ci/run-style-check-diff.sh
+
+check-todos:
+  extends: .only-default
+  image: $DEBIAN_IMAGE
+  stage: style-check
+  allow_failure: true
+  script:
+    - .gitlab-ci/run-check-todos.sh
+
+fedora-x86_64:
+  extends: .build
+  image: $FEDORA_IMAGE
+  stage: build
   variables:
     CFLAGS: "-coverage -ftest-coverage -fprofile-arcs"
   script:
-    - meson ${MESON_COMMON_OPTIONS}
+    # FIXME: Cannot use MESON_COMMON_OPTIONS here because meson warns about gtkdoc
+    # feature introduced in 0.52 but we only depends on 0.49. So we cannot build
+    # with --fatal-meson-warnings.
+    - meson ${MESON_COMMON_OPTIONS_NO_WARNING}
             --werror
             --default-library=both
             --prefix=$HOME/glib-installed
@@ -30,18 +65,13 @@ fedora-x86_64:
             -Ddtrace=true
             -Dfam=true
             -Dinstalled_tests=true
+            -Dgtk_doc=true
             _build
     - ninja -C _build
     - mkdir -p _coverage
     - lcov --config-file .gitlab-ci/lcovrc --directory _build --capture --initial --output-file "_coverage/${CI_JOB_NAME}-baseline.lcov"
     - .gitlab-ci/run-tests.sh
     - lcov --config-file .gitlab-ci/lcovrc --directory _build --capture --output-file "_coverage/${CI_JOB_NAME}.lcov"
-    # FIXME: We should run all installed tests, but do only this one for now
-    # because it cannot run uninstalled. Reconfigure with dtrace disabled
-    # because it breaks static link.
-    - meson configure -Ddtrace=false _build
-    - ninja -C _build install
-    - GLIB_TEST_COMPILATION=1 $HOME/glib-installed/libexec/installed-tests/glib/static-link.py $HOME/glib-installed/lib/pkgconfig
   artifacts:
     reports:
       junit: "_build/${CI_JOB_NAME}-report.xml"
@@ -51,14 +81,22 @@ fedora-x86_64:
       - "_build/config.h"
       - "_build/glib/glibconfig.h"
       - "_build/meson-logs"
+      - "_build/docs/reference/glib/glib-undeclared.txt"
+      - "_build/docs/reference/glib/glib-undocumented.txt"
+      - "_build/docs/reference/glib/glib-unused.txt"
+      - "_build/docs/reference/gobject/gobject-undeclared.txt"
+      - "_build/docs/reference/gobject/gobject-undocumented.txt"
+      - "_build/docs/reference/gobject/gobject-unused.txt"
+      - "_build/docs/reference/gio/gio-undeclared.txt"
+      - "_build/docs/reference/gio/gio-undocumented.txt"
+      - "_build/docs/reference/gio/gio-unused.txt"
       - "_build/${CI_JOB_NAME}-report.xml"
       - "_coverage"
 
 debian-stable-x86_64:
-  image: registry.gitlab.gnome.org/gnome/glib/debian-stable:v3
+  extends: .build
+  image: $DEBIAN_IMAGE
   stage: build
-  except:
-    - tags
   script:
     - meson ${MESON_COMMON_OPTIONS}
             --werror
@@ -83,11 +121,62 @@ debian-stable-x86_64:
       - "_build/meson-logs"
       - "_build/${CI_JOB_NAME}-report.xml"
 
+installed-tests:
+  extends: .build
+  image: $FEDORA_IMAGE
+  stage: build
+  script:
+    # dtrace is disabled because it breaks the static-link.py test
+    - meson ${MESON_COMMON_OPTIONS}
+            --werror
+            --prefix=/usr --libdir=/usr/lib64
+            -Dfam=true
+            -Dinstalled_tests=true
+            -Ddefault_library=both
+            -Ddtrace=false
+            _build
+    - ninja -C _build
+    - sudo ninja -C _build install
+    - sudo chown -R `id -un`:`id -gn` _build/
+    # FIXME Install newer xdg-desktop-portal with
+    # GMemoryMonitor support, see:
+    # https://github.com/flatpak/xdg-desktop-portal/pull/365
+    - git clone --single-branch https://github.com/flatpak/xdg-desktop-portal.git
+    - cd xdg-desktop-portal
+    - git reset --hard 1.6.0
+    - ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --disable-libportal --disable-dependency-tracking
+    - make
+    - sudo make install
+    - cd ..
+    # FIXME install newer gobject-introspection
+    # with GMemoryMonitor support, see:
+    # https://gitlab.gnome.org/GNOME/gobject-introspection/merge_requests/193
+    - git clone --single-branch https://gitlab.gnome.org/GNOME/gobject-introspection.git
+    - cd gobject-introspection
+    - /usr/bin/meson _build --prefix=/usr --libdir=/usr/lib64
+    - ninja -C _build
+    - sudo ninja -C _build install
+    - cd ..
+    # Work-around https://gitlab.gnome.org/GNOME/gnome-desktop-testing/merge_requests/2
+    - mkdir -p _build/installed-tests-report/logs/
+    - GLIB_TEST_COMPILATION=1 gnome-desktop-testing-runner
+            --report-directory=_build/installed-tests-report/failed/
+            --log-directory=_build/installed-tests-report/logs/
+            --parallel=0
+            glib
+  artifacts:
+    name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
+    when: always
+    paths:
+      - "_build/config.h"
+      - "_build/glib/glibconfig.h"
+      - "_build/meson-logs"
+      - "_build/installed-tests-report/"
+
 G_DISABLE_ASSERT:
-  image: registry.gitlab.gnome.org/gnome/glib/fedora:v3
+  extends: .build
+  image: $FEDORA_IMAGE
   stage: build
-  except:
-    - tags
   variables:
     CPPFLAGS: "-DG_DISABLE_ASSERT"
   script:
@@ -112,10 +201,9 @@ G_DISABLE_ASSERT:
       - "_build/${CI_JOB_NAME}-report.xml"
 
 valgrind:
-  image: registry.gitlab.gnome.org/gnome/glib/fedora:v3
+  extends: .build
+  image: $FEDORA_IMAGE
   stage: analysis
-  except:
-    - tags
   variables:
     MESON_TEST_TIMEOUT_MULTIPLIER: 10
   script:
@@ -146,9 +234,8 @@ valgrind:
       - "_build/meson-logs"
 
 .cross-template: &cross-template
+  extends: .build
   stage: build
-  except:
-    - tags
   artifacts:
     name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
     when: always
@@ -157,7 +244,7 @@ valgrind:
 
 cross-android_api21_arm64:
   <<: *cross-template
-  image: registry.gitlab.gnome.org/gnome/glib/android-ndk:v1
+  image: $ANDROID_IMAGE
   script:
     # FIXME: add --werror
     # We use -Diconv=auto to test that we successfully detect that iconv is not
@@ -167,7 +254,7 @@ cross-android_api21_arm64:
 
 cross-android_api28_arm64:
   <<: *cross-template
-  image: registry.gitlab.gnome.org/gnome/glib/android-ndk:v1
+  image: $ANDROID_IMAGE
   script:
     # FIXME: add --werror
     - meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_android_arm64_28.txt -Dinternal_pcre=true _build
@@ -175,18 +262,17 @@ cross-android_api28_arm64:
 
 cross-mingw64:
   <<: *cross-template
-  image: registry.gitlab.gnome.org/gnome/glib/mingw:v1
+  image: $MINGW_IMAGE
   script:
     # FIXME: Add --werror
     - meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_mingw64.txt _build
     - ninja -C _build
 
 msys2-mingw32:
+  extends: .only-default
   stage: build
-  except:
-    - tags
   tags:
-    - win32
+    - win32-ps
   variables:
     MSYSTEM: "MINGW32"
     CHERE_INVOKING: "yes"
@@ -195,30 +281,29 @@ msys2-mingw32:
     - C:\msys64\usr\bin\bash -lc "bash -x ./.gitlab-ci/test-msys2.sh"
   artifacts:
     reports:
-      junit: "_build/%CI_JOB_NAME%-report.xml"
-    name: "glib-%CI_JOB_NAME%-%CI_COMMIT_REF_NAME%"
+      junit: "_build/${env:CI_JOB_NAME}-report.xml"
+    name: "glib-${env:CI_JOB_NAME}-${env:CI_COMMIT_REF_NAME}"
     when: always
     paths:
       - _build/meson-logs
-      - "_build/%CI_JOB_NAME%-report.xml"
+      - "_build/${env:CI_JOB_NAME}-report.xml"
       - _coverage/
 
 vs2017-x64:
+  extends: .only-default
   stage: build
-  except:
-    - tags
   tags:
-    - win32
+    - win32-ps
   script:
     - .gitlab-ci/test-msvc.bat
   artifacts:
     reports:
-      junit: "_build/%CI_JOB_NAME%-report.xml"
-    name: "glib-%CI_JOB_NAME%-%CI_COMMIT_REF_NAME%"
+      junit: "_build/${env:CI_JOB_NAME}-report.xml"
+    name: "glib-${env:CI_JOB_NAME}-${env:CI_COMMIT_REF_NAME}"
     when: always
     paths:
       - _build/meson-logs
-      - "_build/%CI_JOB_NAME%-report.xml"
+      - "_build/${env:CI_JOB_NAME}-report.xml"
 
 freebsd-11-x86_64:
   stage: build
@@ -248,8 +333,6 @@ freebsd-11-x86_64:
     - meson ${MESON_COMMON_OPTIONS} -Db_lundef=false -Diconv=external -Dxattr=false _build
     - ninja -C _build
     - bash -x ./.gitlab-ci/run-tests.sh
-  except:
-    - tags
   artifacts:
     reports:
       junit: "_build/${CI_JOB_NAME}-report.xml"
@@ -288,11 +371,45 @@ freebsd-12-x86_64:
       - "_build/meson-logs"
       - "_build/${CI_JOB_NAME}-report.xml"
 
+macos:
+  extends: .only-default
+  stage: build
+  only:
+    - branches@GNOME/glib
+  tags:
+    - macos
+  before_script:
+    - pip3 install --user meson==0.49.2
+    - pip3 install --user ninja
+    - export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH
+  script:
+    # FIXME: Add --werror
+    # FIXME: Use --wrap-mode=default so we download dependencies each time,
+    # until the macOS runner is a VM where we can use a pre-made image which
+    # already contains the dependencies. See:
+    #  - https://gitlab.gnome.org/GNOME/glib/merge_requests/388
+    #  - https://gitlab.gnome.org/Infrastructure/Infrastructure/issues/225
+    - meson ${MESON_COMMON_OPTIONS}
+            --wrap-mode=default
+            _build
+    - ninja -C _build
+    # FIXME: Multiple unit tests currently fails
+    - .gitlab-ci/run-tests.sh || true
+  artifacts:
+    reports:
+      junit: "_build/${CI_JOB_NAME}-report.xml"
+    name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
+    when: always
+    paths:
+      - "_build/config.h"
+      - "_build/glib/glibconfig.h"
+      - "_build/meson-logs"
+      - "_build/${CI_JOB_NAME}-report.xml"
+
 coverage:
-  image: registry.gitlab.gnome.org/gnome/glib/fedora:v3
+  extends: .only-default
+  image: $FEDORA_IMAGE
   stage: coverage
-  except:
-    - tags
   artifacts:
     name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
     paths:
@@ -302,10 +419,9 @@ coverage:
   coverage: '/^\s+lines\.+:\s+([\d.]+\%)\s+/'
 
 scan-build:
-  image: registry.gitlab.gnome.org/gnome/glib/fedora:v3
+  extends: .build
+  image: $FEDORA_IMAGE
   stage: analysis
-  except:
-    - tags
   script:
     - meson ${MESON_COMMON_OPTIONS}
             --werror
@@ -335,12 +451,14 @@ pages:
       - public
 
 dist-job:
-  image: registry.gitlab.gnome.org/gnome/glib/fedora:v3
+  image: $FEDORA_IMAGE
   stage: build
   only:
     - tags
   script:
-    - meson --buildtype release --fatal-meson-warnings -Dgtk_doc=true -Dman=true _build
+    # FIXME: Cannot use --fatal-meson-warnings here because meson warns about gtkdoc
+    # feature introduced in 0.52 but we only depends on 0.49.
+    - meson ${MESON_COMMON_OPTIONS_NO_WARNING} --buildtype release -Dgtk_doc=true -Dman=true _build
     - cd _build
     - ninja dist
     - ninja glib-doc gobject-doc gio-doc
index dc6c821..6c12879 100644 (file)
@@ -6,10 +6,11 @@ GitLab CI jobs run in a Docker image, defined here. To update that image
 (perhaps to install some more packages):
 
 1. Edit `.gitlab-ci/Dockerfile` with the changes you want
-1. Run `.gitlab-ci/run-docker.sh build --base=debian --base-version=1` to build
-   the new image (bump the version as needed)
-1. Run `.gitlab-ci/run-docker.sh push  --base=debian --base-version=1` to upload
-   the new image to the GNOME GitLab Docker registry
+1. Run `.gitlab-ci/run-docker.sh build --base=debian-stable --base-version=1` to
+   build the new image (bump the version from the latest listed for that `base`
+   on https://gitlab.gnome.org/GNOME/glib/container_registry)
+1. Run `.gitlab-ci/run-docker.sh push  --base=debian-stable --base-version=1` to
+   upload the new image to the GNOME GitLab Docker registry
     * If this is the first time you're doing this, you'll need to log into the
       registry
     * If you use 2-factor authentication on your GNOME GitLab account, you'll
index 785ee01..7739e39 100755 (executable)
@@ -24,8 +24,8 @@ set -e
 # Download Android NDK
 ANDROID_NDK_VERSION="r17b"
 ANDROID_NDK_SHA512="062fac12f747730f5563995089a8b4abab683fbbc621aa8582fdf35fe327daee5d69ed2437af257c10ec4ef54ecd3805a8f134a1400eb8f34ee76f55c8dc9ae9"
-wget --quiet https://dl.google.com/android/repository/android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip
-echo "$ANDROID_NDK_SHA512  android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip" | sha512sum -c
-unzip android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip
-rm android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip
-mv android-ndk-$ANDROID_NDK_VERSION $ANDROID_NDK_PATH
+wget --quiet "https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip"
+echo "${ANDROID_NDK_SHA512}  android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip" | sha512sum -c
+unzip "android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip"
+rm "android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip"
+mv "android-ndk-${ANDROID_NDK_VERSION}" "${ANDROID_NDK_PATH}"
index 9d85a9d..56b186c 100644 (file)
@@ -72,4 +72,7 @@ RUN useradd -u $HOST_USER_ID -ms /bin/bash user
 USER user
 WORKDIR /home/user
 
+COPY cache-subprojects.sh .
+RUN ./cache-subprojects.sh
+
 ENV LANG C.UTF-8
index 510056f..bdbb958 100755 (executable)
@@ -27,7 +27,7 @@ toolchain_path=$(pwd)/android-toolchain-$arch-$api
 prefix_path=$(pwd)/android-$arch-$api
 
 # Create standalone toolchains
-$ANDROID_NDK_PATH/build/tools/make_standalone_toolchain.py --arch $arch --api $api --install-dir $toolchain_path
+"${ANDROID_NDK_PATH}/build/tools/make_standalone_toolchain.py" --arch "${arch}" --api "${api}" --install-dir "${toolchain_path}"
 
 target_host=aarch64-linux-android
 export AR=$target_host-ar
@@ -45,7 +45,7 @@ if [ "$api" -lt "28" ]; then
   echo "1233fe3ca09341b53354fd4bfe342a7589181145a1232c9919583a8c9979636855839049f3406f253a9d9829908816bb71fd6d34dd544ba290d6f04251376b1a  libiconv-1.15.tar.gz" | sha512sum -c
   tar xzf libiconv-1.15.tar.gz
   pushd libiconv-1.15
-  ./configure --host=$target_host --prefix=$prefix_path  --libdir=$prefix_path/lib64
+  ./configure --host="${target_host}" --prefix="${prefix_path}"  --libdir="${prefix_path}/lib64"
   make
   make install
   popd
@@ -58,7 +58,7 @@ wget --quiet https://github.com/libffi/libffi/releases/download/v3.3-rc0/libffi-
 echo "e6e695d32cd6eb7d65983f32986fccdfc786a593d2ea18af30ce741f58cfa1eb264b1a8d09df5084cb916001aea15187b005c2149a0620a44397a4453b6137d4  libffi-3.3-rc0.tar.gz" | sha512sum -c
 tar xzf libffi-3.3-rc0.tar.gz
 pushd libffi-3.3-rc0
-./configure --host=$target_host --prefix=$prefix_path --libdir=$prefix_path/lib64
+./configure --host="${target_host}" --prefix="${prefix_path}" --libdir="${prefix_path}/lib64"
 make
 make install
 popd
@@ -66,9 +66,9 @@ rm libffi-3.3-rc0.tar.gz
 rm -r libffi-3.3-rc0
 
 # Create a pkg-config wrapper that won't pick fedora libraries
-mkdir -p $prefix_path/bin
+mkdir -p "${prefix_path}/bin"
 export PKG_CONFIG=$prefix_path/bin/pkg-config
-cat > $PKG_CONFIG <<- EOM
+cat > "${PKG_CONFIG}" <<- EOM
 #!/bin/sh
 SYSROOT=${prefix_path}
 export PKG_CONFIG_DIR=
@@ -76,14 +76,14 @@ export PKG_CONFIG_LIBDIR=\${SYSROOT}/lib64/pkgconfig
 export PKG_CONFIG_SYSROOT_DIR=\${SYSROOT}
 exec pkg-config "\$@"
 EOM
-chmod +x $PKG_CONFIG
+chmod +x "${PKG_CONFIG}"
 
 # Create a cross file that can be passed to meson
-cat > cross_file_android_${arch}_${api}.txt <<- EOM
+cat > "cross_file_android_${arch}_${api}.txt" <<- EOM
 [host_machine]
 system = 'android'
-cpu_family = 'arm64'
-cpu = 'arm64'
+cpu_family = 'aarch64'
+cpu = 'aarch64'
 endian = 'little'
 
 [properties]
@@ -95,6 +95,7 @@ c_link_args = ['-L${prefix_path}/lib64',
 c = '${toolchain_path}/bin/${CC}'
 cpp = '${toolchain_path}/bin/${CXX}'
 ar = '${toolchain_path}/bin/${AR}'
+ld = '${toolchain_path}/bin/${LD}'
 strip = '${toolchain_path}/bin/${STRIP}'
 pkgconfig = '${PKG_CONFIG}'
 EOM
diff --git a/.gitlab-ci/cache-subprojects.sh b/.gitlab-ci/cache-subprojects.sh
new file mode 100755 (executable)
index 0000000..421631e
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+
+git clone https://gitlab.gnome.org/GNOME/glib.git
+meson subprojects download --sourcedir glib
+rm glib/subprojects/*.wrap
+mv glib/subprojects/ .
+rm -rf glib
diff --git a/.gitlab-ci/check-todos.py b/.gitlab-ci/check-todos.py
new file mode 100755 (executable)
index 0000000..83b3eee
--- /dev/null
@@ -0,0 +1,89 @@
+#!/usr/bin/env python3
+#
+# Copyright © 2019 Endless Mobile, Inc.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# Original author: Philip Withnall
+
+"""
+Checks that a merge request doesn’t add any instances of the string ‘todo’
+(in uppercase), or similar keywords. It may remove instances of that keyword,
+or move them around, according to the logic of `git log -S`.
+"""
+
+import argparse
+import re
+import subprocess
+import sys
+
+
+# We have to specify these keywords obscurely to avoid the script matching
+# itself. The keyword ‘fixme’ (in upper case) is explicitly allowed because
+# that’s conventionally used as a way of marking a workaround which needs to
+# be merged for now, but is to be grepped for and reverted or reworked later.
+BANNED_KEYWORDS = [
+    'TO' + 'DO',
+    'X' + 'XX',
+    'W' + 'IP',
+]
+
+
+def main():
+    parser = argparse.ArgumentParser(
+        description='Check a range of commits to ensure they don’t contain '
+                    'banned keywords.')
+    parser.add_argument('commits',
+                        help='SHA to diff from, or range of commits to diff')
+    args = parser.parse_args()
+
+    banned_words_seen = set()
+    seen_in_log = False
+    seen_in_diff = False
+
+    # Check the log messages for banned words.
+    log_process = subprocess.run(
+        ['git', 'log', '--no-color', args.commits + '..HEAD'],
+        stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8',
+        check=True)
+    log_lines = log_process.stdout.strip().split('\n')
+
+    for line in log_lines:
+        for keyword in BANNED_KEYWORDS:
+            if re.search('(^|\W+){}(\W+|$)'.format(keyword), line):
+                banned_words_seen.add(keyword)
+                seen_in_log = True
+
+    # Check the diff for banned words.
+    diff_process = subprocess.run(
+        ['git', 'diff', '-U0', '--no-color', args.commits],
+        stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8',
+        check=True)
+    diff_lines = diff_process.stdout.strip().split('\n')
+
+    for line in diff_lines:
+        if not line.startswith('+ '):
+            continue
+
+        for keyword in BANNED_KEYWORDS:
+            if re.search('(^|\W+){}(\W+|$)'.format(keyword), line):
+                banned_words_seen.add(keyword)
+                seen_in_diff = True
+
+    if banned_words_seen:
+        if seen_in_log and seen_in_diff:
+            where = 'commit message and diff'
+        elif seen_in_log:
+            where = 'commit message'
+        elif seen_in_diff:
+            where = 'commit diff'
+
+        print('Saw banned keywords in a {}: {}. '
+              'This indicates the branch is a work in progress and should not '
+              'be merged in its current '
+              'form.'.format(where, ', '.join(banned_words_seen)))
+        sys.exit(1)
+
+
+if __name__ == '__main__':
+    main()
index b6421be..bf79561 100755 (executable)
@@ -19,7 +19,7 @@ genhtml \
     -o _coverage/coverage
 
 cd _coverage
-rm -f *.lcov
+rm -f ./*.lcov
 
 cat >index.html <<EOL
 <html>
index 1029b6d..7c9176b 100644 (file)
@@ -12,6 +12,7 @@ c_link_args = []
 c = 'x86_64-w64-mingw32-gcc'
 cpp = 'x86_64-w64-mingw32-g++'
 ar = 'x86_64-w64-mingw32-ar'
+ld = 'x86_64-w64-mingw32-ld'
 objcopy = 'x86_64-w64-mingw32-objcopy'
 strip = 'x86_64-w64-mingw32-strip'
 pkgconfig = 'x86_64-w64-mingw32-pkg-config'
index faaaae0..54d2d8c 100644 (file)
@@ -4,6 +4,7 @@ RUN apt-get update -qq && apt-get install --no-install-recommends -qq -y \
     bindfs \
     clang \
     clang-tools-7 \
+    clang-format-7 \
     dbus \
     desktop-file-utils \
     elfutils \
@@ -18,6 +19,7 @@ RUN apt-get update -qq && apt-get install --no-install-recommends -qq -y \
     itstool \
     lcov \
     libattr1-dev \
+    libdbus-1-dev \
     libelf-dev \
     libffi-dev \
     libgamin-dev \
@@ -70,4 +72,7 @@ RUN useradd -u $HOST_USER_ID -ms /bin/bash user
 USER user
 WORKDIR /home/user
 
+COPY cache-subprojects.sh .
+RUN ./cache-subprojects.sh
+
 ENV LANG=C.UTF-8 LANGUAGE=C.UTF-8 LC_ALL=C.UTF-8
index 9b01ccf..5c509fd 100644 (file)
@@ -1,10 +1,12 @@
-FROM fedora:29
+FROM fedora:30
 
-RUN dnf -y install \
+RUN dnf -y update \
+ && dnf -y install \
     bindfs \
     clang \
     clang-analyzer \
     dbus-daemon \
+    dbus-devel \
     desktop-file-utils \
     elfutils-libelf-devel \
     findutils \
@@ -30,6 +32,7 @@ RUN dnf -y install \
     glibc-langpack-pl \
     glibc-langpack-ru \
     glibc-langpack-tr \
+    "gnome-desktop-testing >= 2018.1" \
     gtk-doc \
     itstool \
     lcov \
@@ -41,25 +44,48 @@ RUN dnf -y install \
     ncurses-compat-libs \
     ninja-build \
     pcre-devel \
-    python3 \
-    python3-pip \
+    "python3-dbusmock >= 0.18.3-2" \
+    python3-pygments \
     python3-wheel \
     shared-mime-info \
     systemtap-sdt-devel \
     unzip \
     valgrind \
     wget \
+    xdg-desktop-portal \
     xz \
     zlib-devel \
+ && dnf -y install \
+    meson \
+    flex \
+    bison \
+    python3-devel \
+    autoconf \
+    automake \
+    gettext-devel \
+    libtool \
+    diffutils \
+    fontconfig-devel \
+    json-glib-devel \
+    geoclue2-devel \
+    pipewire-devel \
+    fuse-devel \
+    make \
  && dnf clean all
 
-RUN pip3 install meson==0.49.2
+RUN pip3 install meson==0.52.1
+
+# Enable sudo for wheel users
+RUN sed -i -e 's/# %wheel/%wheel/' -e '0,/%wheel/{s/%wheel/# %wheel/}' /etc/sudoers
 
 ARG HOST_USER_ID=5555
 ENV HOST_USER_ID ${HOST_USER_ID}
-RUN useradd -u $HOST_USER_ID -ms /bin/bash user
+RUN useradd -u $HOST_USER_ID -G wheel -ms /bin/bash user
 
 USER user
 WORKDIR /home/user
 
+COPY cache-subprojects.sh .
+RUN ./cache-subprojects.sh
+
 ENV LANG C.UTF-8
index 19a061a..d89de8c 100644 (file)
@@ -67,4 +67,7 @@ RUN useradd -u $HOST_USER_ID -ms /bin/bash user
 USER user
 WORKDIR /home/user
 
+COPY cache-subprojects.sh .
+RUN ./cache-subprojects.sh
+
 ENV LANG C.UTF-8
diff --git a/.gitlab-ci/run-check-todos.sh b/.gitlab-ci/run-check-todos.sh
new file mode 100755 (executable)
index 0000000..97a2ff7
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+# We need to add a new remote for the upstream master, since this script could
+# be running in a personal fork of the repository which has out of date branches.
+git remote add upstream https://gitlab.gnome.org/GNOME/glib.git
+git fetch upstream
+
+# Work out the newest common ancestor between the detached HEAD that this CI job
+# has checked out, and the upstream target branch (which will typically be
+# `upstream/master` or `upstream/glib-2-62`).
+# `${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}` is only defined if we’re running in
+# a merge request pipeline; fall back to `${CI_DEFAULT_BRANCH}` otherwise.
+newest_common_ancestor_sha=$(diff --old-line-format='' --new-line-format='' <(git rev-list --first-parent "upstream/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:-${CI_DEFAULT_BRANCH}}") <(git rev-list --first-parent HEAD) | head -1)
+./.gitlab-ci/check-todos.py "${newest_common_ancestor_sha}"
index 2f2693b..9b6fce4 100755 (executable)
@@ -6,17 +6,29 @@ read_arg() {
     # $3 = arg parameter
     local rematch='^[^=]*=(.*)$'
     if [[ $2 =~ $rematch ]]; then
-        read "$1" <<< "${BASH_REMATCH[1]}"
+        read -r "$1" <<< "${BASH_REMATCH[1]}"
     else
-        read "$1" <<< "$3"
+        read -r "$1" <<< "$3"
         # There is no way to shift our callers args, so
         # return 1 to indicate they should do it instead.
         return 1
     fi
 }
 
+SUDO_CMD="sudo"
+if docker -v |& grep -q podman; then
+        # Using podman
+        SUDO_CMD=""
+        # Docker is actually implemented by podman, and its OCI output
+        # is incompatible with some of the dockerd instances on GitLab
+        # CI runners.
+        export BUILDAH_FORMAT=docker
+fi
+
 set -e
 
+base=""
+base_version=""
 build=0
 run=0
 push=0
@@ -69,7 +81,7 @@ if [ $list == 1 ]; then
 fi
 
 # All commands after this require --base to be set
-if [ -z $base ]; then
+if [ -z "${base}" ]; then
         echo "Usage: $0 <command>"
         exit 1
 fi
@@ -79,7 +91,7 @@ if [ ! -f "$base.Dockerfile" ]; then
         exit 1
 fi
 
-if [ -z $base_version ]; then
+if [ -z "${base_version}" ]; then
         base_version="latest"
 else
         base_version="v$base_version"
@@ -89,7 +101,7 @@ TAG="registry.gitlab.gnome.org/gnome/glib/${base}:${base_version}"
 
 if [ $build == 1 ]; then
         echo -e "\e[1;32mBUILDING\e[0m: ${base} as ${TAG}"
-        sudo docker build \
+        $SUDO_CMD docker build \
                 --build-arg HOST_USER_ID="$UID" \
                 --tag "${TAG}" \
                 --file "${base}.Dockerfile" .
@@ -100,16 +112,16 @@ if [ $push == 1 ]; then
         echo -e "\e[1;32mPUSHING\e[0m: ${base} as ${TAG}"
 
         if [ $no_login == 0 ]; then
-                sudo docker login registry.gitlab.gnome.org
+                $SUDO_CMD docker login registry.gitlab.gnome.org
         fi
 
-        sudo docker push $TAG
+        $SUDO_CMD docker push $TAG
         exit $?
 fi
 
 if [ $run == 1 ]; then
         echo -e "\e[1;32mRUNNING\e[0m: ${base} as ${TAG}"
-        sudo docker run \
+        $SUDO_CMD docker run \
                 --rm \
                 --volume "$(pwd)/..:/home/user/app" \
                 --workdir "/home/user/app" \
diff --git a/.gitlab-ci/run-style-check-diff.sh b/.gitlab-ci/run-style-check-diff.sh
new file mode 100755 (executable)
index 0000000..534698d
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+set -e
+
+# Wrap everything in a subshell so we can propagate the exit status.
+(
+
+# We need to add a new remote for the upstream master, since this script could
+# be running in a personal fork of the repository which has out of date branches.
+git remote add upstream https://gitlab.gnome.org/GNOME/glib.git
+git fetch upstream
+
+# Work out the newest common ancestor between the detached HEAD that this CI job
+# has checked out, and the upstream target branch (which will typically be
+# `upstream/master` or `upstream/glib-2-62`).
+# `${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}` is only defined if we’re running in
+# a merge request pipeline; fall back to `${CI_DEFAULT_BRANCH}` otherwise.
+newest_common_ancestor_sha=$(diff --old-line-format='' --new-line-format='' <(git rev-list --first-parent "upstream/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:-${CI_DEFAULT_BRANCH}}") <(git rev-list --first-parent HEAD) | head -1)
+git diff -U0 --no-color "${newest_common_ancestor_sha}" | ./clang-format-diff.py -binary "clang-format-7" -p1
+
+)
+exit_status=$?
+
+# The style check is not infallible. The clang-format configuration cannot
+# perfectly describe GLib’s coding style: in particular, it cannot align
+# function arguments. The documented coding style for GLib takes priority over
+# clang-format suggestions. Hopefully we can eventually improve clang-format to
+# be configurable enough for our coding style. That’s why this CI check is OK
+# to fail: the idea is that people can look through the output and ignore it if
+# it’s wrong. (That situation can also happen if someone touches pre-existing
+# badly formatted code and it doesn’t make sense to tidy up the wider coding
+# style with the changes they’re making.)
+echo ""
+echo "Note that clang-format output is advisory and cannot always match the GLib coding style, documented at"
+echo "   https://gitlab.gnome.org/GNOME/gtk/blob/master/docs/CODING-STYLE"
+echo "Warnings from this tool can be ignored in favour of the documented coding style,"
+echo "or in favour of matching the style of existing surrounding code."
+
+exit ${exit_status}
index 539726e..b545a6f 100755 (executable)
@@ -14,7 +14,7 @@ esac
 
 meson test \
         -C _build \
-        --timeout-multiplier ${MESON_TEST_TIMEOUT_MULTIPLIER} \
+        --timeout-multiplier "${MESON_TEST_TIMEOUT_MULTIPLIER}" \
         --no-suite flaky \
         "$@"
 
index ea1870e..6cc6d80 100644 (file)
@@ -1,7 +1,7 @@
 @echo on
 :: vcvarsall.bat sets various env vars like PATH, INCLUDE, LIB, LIBPATH for the
 :: specified build architecture
-call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
+call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
 @echo on
 
 :: FIXME: make warnings fatal
index 34953d5..9845b1a 100755 (executable)
@@ -27,16 +27,21 @@ pacman --noconfirm -S --needed \
 curl -O -J -L "https://github.com/linux-test-project/lcov/releases/download/v1.14/lcov-1.14.tar.gz"
 echo "14995699187440e0ae4da57fe3a64adc0a3c5cf14feab971f8db38fb7d8f071a  lcov-1.14.tar.gz" | sha256sum -c
 tar -xzf lcov-1.14.tar.gz
-LCOV="$(pwd)/lcov-1.14/bin/lcov"
+# FIXME: not currently using lcov, see below
+#LCOV="$(pwd)/lcov-1.14/bin/lcov"
 
 mkdir -p _coverage
 mkdir -p _ccache
-export CCACHE_BASEDIR="$(pwd)"
-export CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
+CCACHE_BASEDIR="$(pwd)"
+CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
+export CCACHE_BASEDIR CCACHE_DIR
+
 pip3 install --upgrade --user meson==0.49.2
-export PATH="$HOME/.local/bin:$PATH"
-export CFLAGS="-coverage -ftest-coverage -fprofile-arcs"
+
+PATH="$(cygpath "$USERPROFILE")/.local/bin:$HOME/.local/bin:$PATH"
+CFLAGS="-coverage -ftest-coverage -fprofile-arcs"
 DIR="$(pwd)"
+export PATH CFLAGS
 
 meson --werror --buildtype debug _build
 cd _build
@@ -53,7 +58,7 @@ ninja
 #    --output-file "${DIR}/_coverage/${CI_JOB_NAME}-baseline.lcov"
 
 # FIXME: fix the test suite
-meson test --timeout-multiplier ${MESON_TEST_TIMEOUT_MULTIPLIER} --no-suite flaky || true
+meson test --timeout-multiplier "${MESON_TEST_TIMEOUT_MULTIPLIER}" --no-suite flaky || true
 
 python3 "${DIR}"/.gitlab-ci/meson-junit-report.py \
         --project-name glib \
diff --git a/NEWS b/NEWS
index 44939b6..5d47efe 100644 (file)
--- a/NEWS
+++ b/NEWS
-Overview of changes in GLib 2.62.3
+Overview of changes in GLib 2.64.5
 ==================================
 
-* Use `poll()` in `g_spawn_sync()` rather than `select()`, which is subject to
-  FD limits (#954)
+* Fix deadlock in `g_subprocess_communicate_async()` (work by Alexander Larsson) (#2182)
 
-* Fix undefined behaviour with `g_utf8_find_prev_char()` (#1917)
+* Fix cross-compilation on iOS (work by Nirbheek Chauhan) (#1868)
 
 * Bugs fixed:
+ - !1519 Backport !1468 “glib-compile-resources: Fix exporting on Visual Studio” to glib-2-64
+ - !1520 Backport !1517 “GWin32RegistryKey: Move assertions” to glib-2-64
+ - !1565 Backport !1563 “gdesktopappinfo: Fix unnecessarily copied and leaked URI list” to glib-2-64
+ - !1608 Backport !1607 “meson: Don't use gnulib for printf on iOS” to glib-2-64
+ - !1618 Backport !1617 “Ensure g_subprocess_communicate_async() never blocks” to glib-2-64
+ - !1621 Backport !1620 “gvariant: Ensure GVS.depth is initialised” to glib-2-64
+
+
+Overview of changes in GLib 2.64.4
+==================================
+
+* Bugs fixed:
+ - #2140 calling malloc in fork child is undefined-behaviour
+ - !1507 Backport !1504 “win32 gpoll: Fix wait for at least one thread to return” to glib-2-64
+ - !1523 Backport !1522 “meson: Fix gnulib printf checks” to glib-2-64
+ - !1547 Backport !1544 “Resolve "calling malloc in fork child is undefined-behaviour"” to glib-2-64
+
+* Translation updates:
+ - Kazakh
+ - Slovenian
+
+
+Overview of changes in GLib 2.64.3
+==================================
+
+* Stability improvements for various unit tests
+
+* Bugs fixed:
+ - #1954 gdbus-server-auth intermittent failure
+ - #2094 Deprecation warnings when compiling with -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_28 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_28
+ - !1470 Backport !1440 -Wformat-nonliteral fixes to glib-2-64
+ - !1471 Backport !1448 memory monitor test dependency fixes to glib-2-64
+ - !1473 CI: Switch to new Windows runners (2.64)
+ - !1478 Backport !1477 D-Bus keyring handling fixes to glib-2-64
+ - !1483 Backport !1481 “array: fix corrupt state of GPtrArray after g_ptr_array_extend_and_steal()” to glib-2-64
+ - !1484 Backport !1480 “CI: Make sure we use meson 0.49.2 in MSYS2” to glib-2-64
+ - !1486 Backport !1472 “gthread: ignore deprecated declarations in static inline functions” to glib-2-64
+ - !1495 Backport !1493 “meson: Remove stray ], in O_DIRECTORY check” to glib-2-64
+ - !1501 Backport !1439 “Fix stpcpy() detection“ to glib-2-64
+
+* Translation updates:
+ - Chinese (Taiwan)
+ - German
+
+
+Overview of changes in GLib 2.64.2
+==================================
+
+* Bugs fixed:
+ - #2067 Glib uses _Static_assert in C++17 mode
+ - #2081 gdbus error messages contains mixed up body and head signatures
+ - !1421 Backport !1420 “gmacros.h: avoid using _Static_assert in C++17 mode” to glib-2-64
+ - !1438 Backport various patches to glib-2-64
+  - !1424 docs: Fix configuration with gtk_doc=true and installed_tests=false
+  - !1428 Add missing 'extern' to the dllexport version of GLIB_VAR/GOBJECT_VAR
+  - !1429 Fix arch detection ifdefs in glib/valgrind.h
+  - !1431 glib-unix.c: fix heap corruption in g_unix_get_passwd_entry
+  - !1432 docs: Mention new gio tool options
+  - !1435 gdbusmessage: Fix swapped signatures in error messages
+ - !1447 Backport !1442 “gfile: Fallback to fast-content-type if content-type is not set” to glib-2-64
+
+* Translation updates:
+ - Hebrew
+ - Romanian
+ - Ukrainian
+
+
+Overview of changes in GLib 2.64.1
+==================================
+
+* Fix memory monitor tests to only be installed if installed-tests are enabled,
+  and to be skipped if GObject-Introspection is too old (!1407)
+
+* Bugs fixed:
+ - #1986 Socks5 Proxy: Authentication seems broken
+ - #1988 Socks5 Proxy: Wrong error returned when using no authentication
+ - !1407 Backport various patches from master to glib-2-64
+ - !1412 Backport SOCKS5 fixes to glib-2-64
+
+* Translation updates:
+ - Dutch
+ - Italian
+ - Serbian
+
+
+Overview of changes in GLib 2.64.0
+==================================
+
+* Use `posix_spawn()` to speed up launching test D-Bus instances (!1388)
+
+* Bugs fixed:
+ - #1783 Document using glib-mkenums with meson
+ - #2049 Crash in g_array_copy
+ - !1384 Some minor clang warning fixes
+ - !1386 docs: Document generated headers caveats for genmarshal
+ - !1387 ci: Correctly propagate exit status in run-style-check-diff.sh
+ - !1388 gtestdbus: Use posix_spawn() to spawn dbus-daemon
+ - !1389 Update GError docs to use G_DEFINE_QUARK
+
+* Translation updates:
+ - Czech
+ - Danish
+
+
+Overview of changes in GLib 2.63.6
+==================================
+
+* Fix potential relative read when calling g_printerr(), which could lead to a
+  denial of service from a setuid-root process being used to block access to the
+  TTY for another user (#1919)
+
+* Fix SOCKS proxy resolver sometimes not being used when resolving addresses
+  via Happy Eyeballs (CVE-2020-6750) (#1989)
+
+* Several other Happy Eyeballs fixes for address resolution (#1871, #1872, #1902)
+
+* Various race fixes in `GDBusConnection` and its unit tests (#1515)
+
+* Fix a race condition with D-Bus name ownership (#1517)
+
+* Drop `gio-launch-desktop` helper application in favour of calling `sh` directly (#1633)
+
+* Fix win32 exception handling with C# exceptions (#2025)
+
+* Fix thread safety of `GUnixMountMonitor` (#2030)
+
+* Additional fixes to new thread pool attribute behaviour from GLib 2.63.4 to
+  check if sched_setattr() is allowed by system policies before depending on it (#2039, !1356)
+
+* Fix memory leaks and corruption when freeing `GSource`s while freeing a `GMainContext` (!1353)
+
+* Drop inappropriate installation of object manager example documentation (!1359)
+
+* Bugs fixed:
+ - #938 gdbus call -a doesn't support message bus connections
+ - #1515 gio/gdbus-threading test sometimes fails in CI
+ - #1517 g_bus_own_name does not always call name_lost_handler when _REPLACE and _ALLOW_REPLACEMENT are set
+ - #1633 should not install gio-launch-desktop into PATH
+ - #1919 read from relative path in g_printerr() in 2.58.3
+ - #1995 Tracker issue for Happy Eyeballs regressions
+ - #2002 g_io_channel_read_line does not honour the line_term symbols set
+ - #2025 W32 exception handling misbehaves when C# exceptions are thrown when running inside the Visual Studio debugger
+ - #2030 Random nautilus test suite failures involving GUnixMountMonitor
+ - #2039 sched_setattr() still can cause EPERM through natural causes
+ - #2043 Low memory monitor test failed in CI
+ - #2044 GApplication docs suggest invalid GVariant type
+ - !1185 gtimezone: Tidy up UTC timezone creation
+ - !1281 ci: Update Docker packages
+ - !1283 gmodule: change _g_module_close to only take a handle.
+ - !1298 tests: Speed up the GIO actions test
+ - !1299 gapplication: Fix a minor typo in the documentation
+ - !1339 gsocketclient: Refactor g_socket_client_connect_async()
+ - !1353 GMainContext - Fix memory leaks and memory corruption when freeing sources while freeing a context
+ - !1354 GThreadPool - Add test for !1340
+ - !1355 glist: Add docs examples of how to combine with g_steal_pointer()
+ - !1356 GThread - Check if sched_setattr is allowed by the system policies before depending on it
+ - !1359 docs: Don’t install object manager example separately
+ - !1363 Make tests pass if we are euid != 0 with capabilities
+ - !1366 Fix oss-fuzz coverage link
+ - !1372 gobject: Fix strict aliasing warnings with g_set_object()
+ - !1376 gitlab-ci: 64-bit ARM is aarch64, not arm64
+ - !1381 ghash: Document the iteration order over a hash table is not defined
+ - !1382 tests: Bump the refcount timeout in gdbus-threading
+ - !1383 ci: Enable parallelisation when running installed tests
+
+* Translation updates:
+ - Basque
+ - English (United Kingdom)
+ - French
+ - Galician
+ - German
+ - Greek, Modern (1453-)
+ - Hungarian
+ - Indonesian
+ - Japanese
+ - Korean
+ - Lithuanian
+ - Polish
+ - Portuguese (Brazil)
+ - Spanish
+ - Swedish
+ - Turkish
+
+
+Overview of changes in GLib 2.63.5
+==================================
+
+* Fix behaviour of `g_file_move()` fallback code to not follow symlinks (#986)
+
+* Rename `--glib-min-version` argument of `gdbus-codegen` to `--glib-min-required`
+  (this is not an API break as `--glib-min-version` was added earlier in the
+  2.63 cycle) (#1993)
+
+* Add gtk-doc checks to CI and fix a number of documentation issues
+  (thanks to Xavier Claessens) (!978)
+
+* Add `G_SIZEOF_MEMBER()` macro (!1333)
+
+* Add a debug message if `g_setenv()` or `g_unsetenv()` are used after any
+  threads have been spawned — this will be upgraded to a warning in future (!1337, #715)
+
+* Skip memory monitor tests if xdg-desktop-portal or dbusmock are not available (!1296, !1338)
+
+* Change the `libmount` configure option from a boolean to a Meson `feature` (!1344)
+
+* Do not return `target-uri` from `g_file_peek_path()` when called on trash/recent files (!1346)
+
+* Drop new TLS certificate API for PKCS #11 backed certificates, as the implementation
+  is not ready yet (this is not an API break as the API was added earlier in the
+  2.63 cycle) (!1347)
+
+* Bugs fixed:
+ - #986 g_file_move: remove G_FILE_COPY_NOFOLLOW_SYMLINKS section
+ - #1551 CI: Add checks for `TODO` in MRs
+ - #1925 Large number of routes installed into kernel cause high cpu usage
+ - #1993 Rename gdbus-codegen --glib-min-version argument to --glib-min-required and add --glib-max-allowed
+ - #2012 spawn_thread_queue not initialised in GThreadPool
+ - #2020 g_network_monitor_base_add_network() improperly unrefs GInetAddressMask
+ - !978 Various fixes to make gtkdoc-check pass on glib
+ - !1018 docs: tag enclose 'all' and 'help' values
+ - !1170 Avoid C++20 deprecated assignment to volatile
+ - !1296 tests: Skip GMemoryMonitor tests if the dbusmock template is not available
+ - !1307 Remove global declaration of GMemoryMonitor
+ - !1322 gmain: Mark G_SOURCE_FUNC as available in 2.58
+ - !1333 Add and use G_SIZEOF_MEMBER() macro
+ - !1337 genviron: Message if g_setenv()/g_unsetenv() are used after threads spawned
+ - !1338 tests: Skip GMemoryMonitor tests if xdg-desktop-portal is not available
+ - !1344 meson: libmount autodectection
+ - !1345 gio-tool-info: Print unix mount information where available
+ - !1346 gfile: Do not return target-uri from g_file_peek_path()
+ - !1347 Revert "gtlscertificate: Add support for PKCS #11 backed certificates"
+ - !1348 ghash: Clarify that g_hash_table_add() always consumes the key
+ - !1349 doc: Clarify that _locker_new() does not actually allocate memory
+ - !1351 glib.supp: update g-threaded-resolver-getaddrinfo-config
+
+* Translation updates:
+ - Japanese
+ - Lithuanian
+ - Malay
+ - Portuguese (Brazil)
+ - Swedish
+
+
+Overview of changes in GLib 2.63.4
+==================================
+
+* Fix various race conditions on signal emission in GDBus (#604, #978, #1232)
+
+* Change thread pools so that thread attributes (in particular, priority) are
+  inherited from the thread which created the `GThreadPool` initially, rather
+  than from the thread which is pushing a new job into the pool (#1834, #2007)
+
+* Expand support for running Windows apps with
+  `g_app_info_launch_default_for_uri()` using rundll32 on Windows (#1932)
+
+* Support multiple directories in `GSETTINGS_SCHEMA_DIR` environment variable (#1998)
+
+* Support full Julian day range in `TZ` environment variable (#1999)
+
+* Apply recursion depth limits to variants in D-Bus messages (!1201)
+
+* Support adding call flags and timeouts to method calls generated by
+  `gdbus-codegen` through the new `--glib-min-version` option (!1286)
+
+* Fully deprecate TLS rehandshakes; they are now ignored due to TLS protocol
+  changes (!1305)
+
+* Bugs fixed:
+ - #198 g_fopen and friends: should also state how to close a stream
+ - #604 GDBus name watching dispatch is buggy/excessively-complicated
+ - #833 g_object_set: document the need to cast varargs
+ - #978 SIGSEGV in on_name_lost_or_acquired
+ - #1232 Insufficient thread safety around GDBusObjectManagerClient
+ - #1416 Re-add macOS CI
+ - #1834 Unwanted priority/etc inheritance with GThreadPool and GThread and the POSIX implementation
+ - #1932 Windows: Gio.AppInfo.launch_default_for_uri seems not to work for local files/folders
+ - #1983 glib:gio / dbus-appinfo test fails: GLib-GIO:ERROR:../../../../Projects/glib/gio/tests/dbus-appinfo.c:326:on_flatpak_open: 'g_file_equal (files[0], f)' should be TRUE
+ - #1997 Base64 encoding with "break_lines" claims to wrap at 72 characters but seems to wrap at 76
+ - #1998 support multiple directories in GSETTINGS_SCHEMA_DIR
+ - #1999 GTimeZone fails to accept full Julian day range when parsing the direct $TZ string format
+ - #2007 Thread scheduler attributes fail under valgrind
+ - !388 ci: Avoid downloading subprojects for each job
+ - !1111 gio: test that launch_uris() exports files with the document portal when launching a flatpak
+ - !1201 gdbusmessage: Limit recursion of variants in D-Bus messages
+ - !1279 tests: Fix an error message set by foo_set_property()
+ - !1286 gdbus-codegen: Add a GDBusCallFlags arg to method calls
+ - !1291 gio-tool-list: Add an option to print display names
+ - !1294 GMemoryMonitor docs fixes
+ - !1295 gio: Fix socket test
+ - !1301 GThread - Inherit parent thread priority by default for new Win32 threads
+ - !1303 gvariant-core: Don't pass NULL second argument to memcpy
+ - !1305 Fully deprecate TLS rehandshakes
+ - !1308 gsocketclient: run timeout source on the task's main context
+ - !1309 Fix crash in gutils when application is prevented access to passwd file
+ - !1317 gfdonotificationbackend: remove notifications when bus name vanishes
+ - !1320 subprojects: Temporarily avoid using wrapdb while it’s down
+ - !1324 ci: Add some documentation to the style check CI test
+ - !1325 Check for SYS_sched_getattr before using it unconditionally
+ - !1330 W32: Correctly set st_ino when doing private stat()
+ - !1334 gthread: Ensure GThreadSchedulerSettings is always defined
+
+* Translation updates:
+ - Catalan
+ - Galician
+ - Hungarian
+ - Indonesian
+ - Polish
+ - Portuguese (Brazil)
+ - Spanish
+
+
+Overview of changes in GLib 2.63.3
+==================================
+
+* Add a `--glib-min-version` argument to `gdbus-codegen` which controls breaks in the API of generated code (#1726)
+
+* Add `g_clear_list()` API to clear `GList`s to `NULL` (#1943)
+
+* Add a `GMemoryMonitor` API to be notified of memory pressure situations using the low-memory-monitor project (!1005)
+
+* Add support for dispose functions for `GSource` implementations (!1175)
+
+* Tighten up validation of GObject signal and property names, allowing performance improvements (!1224)
+
+* Fix installation path of GIO modules on MSVC to be the bindir (!1254)
+
+* Bugs fixed:
+ - #650 g_signal_lookup gives too many warnings
+ - #1011 GListStore, easily find if the item is already inserted
+ - #1130 gdbus-codegen: Add an option to strictly generate markdown in source comments
+ - #1687 glocalvfs.c uses non-thread-safe getpwnam()
+ - #1726 Warn when method/signal uses type 'h' but lacks GDBus.C.UnixFD annotation
+ - #1935 Assert in _kqsub_free seems to be too strict
+ - #1943 Consider g_clear_list()
+ - #1947 Documentation clarification for g_uuid_string_random()
+ - #1953 Documentation for g_type_init() and others missing from online gtk-doc documentation
+ - #1961 A typo in the comment of `g_settings_schema_get_path`: threfore -> therefore
+ - !1005 gio: Add GMemoryMonitor to monitor for low-memory
+ - !1172 gptrarray: Add an example to the g_ptr_array_steal() docs
+ - !1175 Implement a dispose function for GSource
+ - !1223 Add additional valgrind suppressions
+ - !1224 Signal name handling improvements
+ - !1230 ci: Run installed-tests on Fedora
+ - !1235 Add sudo to Fedora docker image
+ - !1239 tests: Run "timeout tests" sequentially
+ - !1248 ci: Update all Debian CI runners to use v5 of the Dockerfile
+ - !1249 gio-tool-mount: Allow mounting by the given UUID
+ - !1252 ci: Fix running all jobs on merge requests
+ - !1253 gthread: Fix "zero as null pointer" warning
+ - !1254 giomodule: gio modules are no longer installed in bindir on MSVC
+ - !1255 ci: Build Docker images rather than OCI images if using podman
+ - !1256 gdate: Add autoptr support
+ - !1258 Minor CI fixups
+ - !1261 gtk-doc: Ensure we have recent enough version
+ - !1262 tests: Add tests for the gdbus-codegen executable
+ - !1265 build: don't check for protected visibility
+ - !1267 Revert "doc: Workaround gtkdoc-scan bug leading to undocumented symbols"
+ - !1268 ci: Work-around successful installed tests having no logs
+ - !1269 gvariant: Add guard to g_variant_get()
+ - !1271 tests: Enable GDBus debug for a number of unreliable tests
+ - !1274 trash portal: Don't follow symlinks
+ - !1275 Small doc correction
+ - !1277 Various gtk-doc improvements
+ - !1278 Update installed tests CI
+ - !1280 clang-format-diff: Output diff for multiple files, not just one
+ - !1282 Revert "Revert "docs: remove GDBusObjectManager example""
+ - !1284 Update POTFILES.in 191212
+ - !1287 atomic/tests: test g_atomic_pointer_compare_and_exchange() with const pointers
+ - !1289 gtype: Define auto-cleanup functions for Module class
+
+* Translation updates:
+ - Spanish
+
+
+Overview of changes in GLib 2.63.2
+==================================
+
+* Use `lldb` rather than `gdb` on macOS for debugging (#1004)
+
+* Switch the atomic builtins from `__sync_fetch_*()` to the slightly more modern
+  `__atomic_*()` (#1750)
+
+* Fix calculation of `gsize` width on various platforms (including OpenBSD) (#1777)
+
+* Fix undefined behaviour causing brokenness in `g_utf8_find_prev_char()` when
+  compiling with GCC ≥ 8 (#1917)
+
+* Revert UNIX mode changes in `G_FILE_ATTRIBUTE_ID_UNIX_MODE` which broke OSTree (#1934)
+
+* Slightly improve performance for signal emissions when no handlers are connected (!1083)
+
+* Add `g_task_return_value()` and `g_task_propagate_value()` APIs to allow
+  `GTask` to be used from language bindings more easily (!1216)
+
+* Fix a file monitoring crash on kqueue-based systems (BSD) (!1221)
+
+* Bugs fixed:
+ - #1004 [PATCH] Make gbacktrace use lldb on Mac OS X
+ - #1552 CI: Add code style checks
+ - #1750 Switch from  __sync_fetch_*() to __atomic_*() in glib/gatomic.h
+ - #1777 gsize: improper typedef on (at least) OpenBSD
+ - #1895 Regression: glib does not compile on centos 6: "objcopy: unrecognized option '--add-symbol'"
+ - #1917 Test utf8-pointer fails with static build, LTO, optimisations, and new GCC
+ - #1930 glib/tests/bookmarkfile.c:385:test_modify: assertion failed: (stamp == now)
+ - #1934 ostree tests broken since bfdc5fc4fc84ef8518d2d1a328c8482cf5a38e98: File '/tmp/test-tmp-libostree_test-basic-user.sh.test-QB4SA0/diff-test2' is not empty
+ - #1938 GDateTime doesn't support leap seconds
+ - #1940 atomics test fails on FreeBSD CI since !1123
+ - !1039 Improve documentation for footgun function g_tls_client_connection_copy_session_state()
+ - !1083 Use the GObject hole on 64bit arches for some flags to improve performance
+ - !1202 CI updates after !1177
+ - !1208 gutils: Slightly improve docs formatting for g_get_os_info()
+ - !1209 Make ld executable configurable
+ - !1210 gdbus-server-auth test: Include gcredentialsprivate.h
+ - !1213 gsocket: Improve diagnostics on bind() failure
+ - !1214 gvariant, gbytes: Avoid memcmp (NULL, ., 0) or memcmp (., NULL, 0)
+ - !1216 Make GTask more binding-friendly
+ - !1218 gdb: Fix GHashTable pretty printer off-by-one error
+ - !1220 gparam: fix memory leak in g_param_value_defaults()
+ - !1221 Add NOTE_REVOKE to the list of the monitoring events
+ - !1225 gtlsconnection: clarify handshake() documentation
+ - !1227 Deprecate old GTlsConnection functionality even harder!
+ - !1231 Fix build on old libc that does not define _SC_HOST_NAME_MAX
+ - !1238 gstrfuncs: use gsize type internally for strv functions
+ - !1242 gfileinfo: Clarify the documentation for G_FILE_ATTRIBUTE_UNIX_MODE
+ - !1243 docs: Fix "occurred" typos in API documentation
+
+* Translation updates:
+ - Spanish
+
+
+Overview of changes in GLib 2.63.1
+==================================
+
+* Several usability improvements to command line `gio` tool (!1153)
+
+* Add `g_array_steal()`, `g_ptr_array_steal()` and `g_byte_array_steal()` APIs (#285)
+
+* Add `g_get_os_info()` API (!1063, !1160)
+
+* Add `g_warning_once()` API (!1028)
+
+* Always resolve `localhost` to loopback address in `GResolver` (!616)
+
+* Add `GMainContextPusher` API (!983)
+
+* Limit recursion in `g_variant_parse()` (!1173)
+
+* Fix crash in `g_spawn()` with high FD numbers due to use of `select()` rather
+  than `poll()` (#954)
+
+* Allow passing empty `GValue`s to `g_param_value_set_default()` (!1186)
+
+* Escape header guards generated by `gdbus-codegen` better (#1379)
+
+* Bugs fixed:
+ - #285 [PATCH] add array steal and memdup functions
  - #954 The g_spawn_sync() function uses select() which has limitations
  - #1318 rare failure in gdbus-peer test: invalid uninstantiatable type '(null)' in cast to 'GDBusServer'
+ - #1379 gdbus-codegen generates invalid header guards when build directory contains a + character
+ - #1622 NULL pointer derefs on g_vasprintf() failure
+ - #1813 g_option_context_add_main_entries() is missing array annotation for entries parameter
+ - #1831 No reply on private socket due to auth problem
+ - #1836 gobject.c uses undefined annotation “(not optional)”
+ - #1858 docs/reference/gobject/tut_gobject.xml: object properties example uses deprecated API
+ - #1877 g_cancellable_source_new annotated with 'skip'
+ - #1896 Use after free when calling g_dbus_connection_flush_sync() in a dedicated thread
  - #1897 glib 2.62.0 fails test 'test_writev_no_vectors' wih gcc7
  - #1903 use-after-free in mimeapps test causes intermittent segfault during testing
+ - #1906 test_os_info fails on FreeBSD
  - #1916 objcopy not used from cross-compilation file in GIO tests
- - #1917 Test utf8-pointer fails with static build, LTO, optimisations, and new GCC
- - !1174 Backport !1164 “use-after-free fix in mimeapps test” to glib-2-62
- - !1184 Backport !1173 “gvariant: Limit recursion in g_variant_parse()” to glib-2-62
- - !1194 Backport !1176, !1183, !1188, !1191 to `glib-2-62`
- - !1203 Backport !1192, !1193, !1197 Fixes for gdbus-peer tests to glib-2-62
- - !1207 Backport !1206 “goption: Relax assertion to avoid being broken by kdeinit5” to glib-2-62
- - !1215 [2.62] gdbus-peer: Specifically listen on 127.0.0.1
- - !1219 Backport !1218 “gdb: Fix GHashTable pretty printer off-by-one error”
- - !1222 Backport !1221 “Add NOTE_REVOKE to the list of the monitoring events” to glib-2-62
- - !1228 Backport !1199 “gunicode: Fix UB in gutf8.c and utf8-pointer test” to glib-2-62
-
-
-Overview of changes in GLib 2.62.2
-==================================
+ - #1923 Recent Versions of GLib Break Dolphin File-Manager's Thumbnailing when Using 'gtk2' Style
+ - !616 Always resolve localhost to loopback address
+ - !983 gmain: Add GMainContextPusher convenience API
+ - !1014 tests: Add a test for g_assert_finalize_object()
+ - !1028 gmessages: Add g_warning_once()
+ - !1035 Switching from C gnu89 to C gnu99 standard
+ - !1063 gutils: Add g_get_os_info()
+ - !1082 gdatetime: Document RFC 3339 extensions when parsing ISO 8601
+ - !1105 syscall flood on every time*() function call
+ - !1120 Update documentation with FreeBSD build instructions
+ - !1135 gmain: use atomic operation instead of GMutex to access g_main_context_default()
+ - !1146 Solaris build fixes
+ - !1147 gmodule: fix typo in doc comment
+ - !1148 gio/gfileinfo: fix parameter references
+ - !1149 gio/gfile: fix parameter reference for value_p
+ - !1150 gio/gfile: fix parameter references to @contents
+ - !1151 gio/gfile: fix typo in doc comment
+ - !1152 gwinhttpvfs: Handle g_get_prgname() returning NULL
+ - !1153 Several gio-tool bash completion fixes and improvements
+ - !1155 Strict-aliasing fixes to new atomic built-ins
+ - !1157 Fix various compiler warnings on Android
+ - !1160 Add Windows support to g_get_os_info()
+ - !1161 hash: Remove an assertion from the hot path
+ - !1163 gcharset: Expand the documentation for g_get_locale_variants()
+ - !1165 Use uname as a fallback to get OS info
+ - !1167 Fix some minor leaks in testfilemonitor
+ - !1168 Fix gdatetime tests on toolbox
+ - !1171 Revert "gdbus-codegen: emit GUnixFDLists if an arg has type 'h'"
+ - !1173 gvariant: Limit recursion in g_variant_parse()
+ - !1177 ci: Add libdbus development files to CI Docker images
+ - !1179 Improve GPtrArray doc-comments
+ - !1180 array: Avoid use of memcpy(dest, NULL, 0)
+ - !1181 gmain: Clarify thread safety of some common GSource functions
+ - !1182 gio: Fix typo in URL
+ - !1186 Allow using an empty GValue with g_param_value_set_default()
+ - !1189 gparamspecs: Fix type class leaks on error handling paths
+ - !1197 Fix GDBus test failures on non-Linux (in particular FreeBSD)
+ - !1200 Minor fixes from a scan-build run
 
-* Bugs fixed:
- - #1896 Use after free when calling g_dbus_connection_flush_sync() in a dedicated thread
- - !1154 Backport !1152 “gwinhttpvfs: Handle g_get_prgname() returning NULL” to glib-2-62
- - !1156 Backport !1146 Solaris fixes to glib-2-62
+* Translation updates:
+ - Catalan
+ - Chinese (Taiwan)
+ - Spanish
 
 
-Overview of changes in GLib 2.62.1
+Overview of changes in GLib 2.63.0
 ==================================
 
+* Add g_fsync() API (#35)
+
 * Fix regression in g_file_copy() when passing
   `G_FILE_COPY_TARGET_DEFAULT_PERMS` flag; the destination permissions would be
   private rather than following the process’ umask (!1142)
@@ -45,22 +535,57 @@ Overview of changes in GLib 2.62.1
 * Always build the tests if installed-tests are enabled, so that the tests can
   actually be installed (!1141)
 
+* Rework atomic function implementations to use memory barrier in the correct
+  place (when compiler intrinsics aren’t providing the atomics), and fix
+  signedness issues (#1449, #1565)
+
+* Use the OS’ `fdwalk()` function (if safe) to speed up `g_spawn_*()` on BSD (#1638)
+
+* Remove the macOS `dyld` `GModule` implementation in favour of `dl` instead (!1093)
+
+* Bump Python requirement to ≥ 3.5, which we implicitly relied on anyway through
+  our Meson dependency (!1132)
+
 * Bugs fixed:
+ - #35 add g_fsync to API
  - #174 g_file_copy always preserves  permissions, even if G_FILE_COPY_ALL_METADATA flag is not set
+ - #259 docs: fix a misunderstanding in g_type_add_interface_*
+ - #767 g_signal_lookup fails if class is not referenced
+ - #1052 g_io_write_chars calls abort when given a null byte as input
+ - #1449 glib fallback atomic int/ptr get/set have memory barrier in wrong place
+ - #1565 Signedness of atomic operations
+ - #1638 g_spawn_*() is extremely slow under certain circumstances
+ - #1809 Provide API for working with PKCS11 backed certificates
+ - #1843 TSAN false positive with g_atomic_pointer_get/g_atomic_pointer_set under Clang
  - #1865 g_variant_get_data_as_bytes fails after serializing a variant
  - #1875 Segfault and Overflow in __gio_xdg_cache_mime_type_subclass() with Wps-Office installed
  - #1887 glib 2.62.0 breaks loading dylibs as modules
  - #1888 2.62: docs build on Windows broken
- - !1021 docs: Remove priv pointers from the tutorial example
- - !1094 Backport to 2.62: gmodule: use dl implementation on macOS
- - !1101 Backport !1092 “Fix doc build on Windows” to glib-2-62
- - !1102 Backport !1080 “tests: Fix skipping mkdir-with-parents-permission test” to glib-2-62
- - !1103 Backport !1085 “xdgmime: Prevent infinite loops from badly-formed MIME registrations” to glib-2-62
- - !1127 Backport !1125 and !1115 GDateTime parsing fixes to glib-2-62
- - !1128 Backport !1043 “gvariant: Handle empty serialisations in get_child_value()” to glib-2-62
- - !1140 [2.62] g_file_info_get_modification_date_time: Calculate in integer domain
- - !1141 [2.62] Always build tests if we enabled installed-tests
- - !1142 Backport !1134 Fix for file copy permissions to glib-2-62
+ - #1897 glib 2.62.0 fails test 'test_writev_no_vectors' wih gcc7
+ - !1020 docs: Remove priv pointers from the tutorial example
+ - !1062 gtype: mark the inline functions in G_DECLARE_*_TYPE() as UNUSED
+ - !1080 tests: Fix skipping mkdir-with-parents-permission test
+ - !1088 Various small scan-build fixes
+ - !1090 giochannel: Clarify type of GSource callback in documentation
+ - !1093 gmodule: remove macOS dyld implementation
+ - !1095 Define G_IOV_MAX to 512 on macOS/iOS
+ - !1099 gmem: clarify that g_malloc always uses the system allocator
+ - !1109 doc: fix typo in gio/gsettings.c
+ - !1110 gio: Add missing "gio remove" option to bash completion script
+ - !1112 Add version macros for GLib 2.64
+ - !1115 gdatetime: Fix error handling in g_date_time_new_ordinal()
+ - !1116 gmarkup: Add a limit on the number of attributes in an element
+ - !1119 Annotate the return value of various utility functions
+ - !1124 docs: Fix typo in GConverter{Input,Output}Stream section titles
+ - !1125 gdatetime: Fix error handling in g_date_time_new_week()
+ - !1126 fileinfo: Mention that usec mtimes are set
+ - !1129 gdate: Fix tautological comparison warnings on Android
+ - !1130 Improve GLIB_DEPRECATED_MACRO_FOR output
+ - !1131 gio/gfileinfo: fix param reference in doc comment
+ - !1132 build: Bump Python requirement to ≥ 3.5
+ - !1137 gregistrysettings: bump key name length to 2048
+ - !1138 Always build tests if we enabled installed-tests
+ - !1139 g_file_info_get_modification_date_time: Calculate in integer domain
 
 * Translation updates:
  - Danish
diff --git a/clang-format-diff.py b/clang-format-diff.py
new file mode 100755 (executable)
index 0000000..3fb776c
--- /dev/null
@@ -0,0 +1,133 @@
+#!/usr/bin/env python3
+#
+# === clang-format-diff.py - ClangFormat Diff Reformatter ---*- python -*-=== #
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+# ===---------------------------------------------------------------------=== #
+
+"""
+This script reads input from a unified diff and reformats all the changed
+lines. This is useful to reformat all the lines touched by a specific patch.
+Example usage for git/svn users:
+
+  git diff -U0 --no-color HEAD^ | clang-format-diff.py -p1 -i
+  svn diff --diff-cmd=diff -x-U0 | clang-format-diff.py -i
+
+"""
+from __future__ import absolute_import, division, print_function
+
+import argparse
+import difflib
+import re
+import subprocess
+import sys
+
+if sys.version_info.major >= 3:
+    from io import StringIO
+else:
+    from io import BytesIO as StringIO
+
+
+def main():
+    parser = argparse.ArgumentParser(
+        description=__doc__,
+        formatter_class=argparse.RawDescriptionHelpFormatter)
+    parser.add_argument('-i', action='store_true', default=False,
+                        help='apply edits to files instead of displaying a '
+                             'diff')
+    parser.add_argument('-p', metavar='NUM', default=0,
+                        help='strip the smallest prefix containing P slashes')
+    parser.add_argument('-regex', metavar='PATTERN', default=None,
+                        help='custom pattern selecting file paths to reformat '
+                        '(case sensitive, overrides -iregex)')
+    parser.add_argument('-iregex', metavar='PATTERN',
+                        default=r'.*\.(cpp|cc|c\+\+|cxx|c|cl|h|hh|hpp|m|mm|inc'
+                                r'|js|ts|proto|protodevel|java|cs)',
+                        help='custom pattern selecting file paths to reformat '
+                             '(case insensitive, overridden by -regex)')
+    parser.add_argument('-sort-includes', action='store_true', default=False,
+                        help='let clang-format sort include blocks')
+    parser.add_argument('-v', '--verbose', action='store_true',
+                        help='be more verbose, ineffective without -i')
+    parser.add_argument('-style',
+                        help='formatting style to apply (LLVM, Google, '
+                        'Chromium, Mozilla, WebKit)')
+    parser.add_argument('-binary', default='clang-format',
+                        help='location of binary to use for clang-format')
+    args = parser.parse_args()
+
+    # Extract changed lines for each file.
+    filename = None
+    lines_by_file = {}
+    for line in sys.stdin:
+        match = re.search(r'^\+\+\+\ (.*?/){%s}(\S*)' % args.p, line)
+        if match:
+            filename = match.group(2)
+        if filename is None:
+            continue
+
+        if args.regex is not None:
+            if not re.match('^%s$' % args.regex, filename):
+                continue
+        else:
+            if not re.match('^%s$' % args.iregex, filename, re.IGNORECASE):
+                continue
+
+        match = re.search(r'^@@.*\+(\d+)(,(\d+))?', line)
+        if match:
+            start_line = int(match.group(1))
+            line_count = 1
+            if match.group(3):
+                line_count = int(match.group(3))
+            if line_count == 0:
+                continue
+            end_line = start_line + line_count - 1
+            lines_by_file.setdefault(filename, []).extend(
+                ['-lines', str(start_line) + ':' + str(end_line)])
+
+    # Reformat files containing changes in place.
+    # We need to count amount of bytes generated in the output of
+    # clang-format-diff. If clang-format-diff doesn't generate any bytes it
+    # means there is nothing to format.
+    format_line_counter = 0
+    for filename, lines in lines_by_file.items():
+        if args.i and args.verbose:
+            print('Formatting {}'.format(filename))
+        command = [args.binary, filename]
+        if args.i:
+            command.append('-i')
+        if args.sort_includes:
+            command.append('-sort-includes')
+        command.extend(lines)
+        if args.style:
+            command.extend(['-style', args.style])
+        p = subprocess.Popen(command,
+                             stdout=subprocess.PIPE,
+                             stderr=None,
+                             stdin=subprocess.PIPE,
+                             universal_newlines=True)
+        stdout, _ = p.communicate()
+        if p.returncode != 0:
+            sys.exit(p.returncode)
+
+        if not args.i:
+            with open(filename) as f:
+                code = f.readlines()
+            formatted_code = StringIO(stdout).readlines()
+            diff = difflib.unified_diff(code, formatted_code,
+                                        filename, filename,
+                                        '(before formatting)',
+                                        '(after formatting)')
+            diff_string = ''.join(diff)
+            if diff_string:
+                format_line_counter += sys.stdout.write(diff_string)
+
+    if format_line_counter > 0:
+        sys.exit(1)
+
+
+if __name__ == '__main__':
+    main()
index fdd367b..9687681 100644 (file)
@@ -50,6 +50,8 @@
         <replaceable>VALUE</replaceable>
       </arg>
     </group>
+    <arg><option>--glib-min-required</option> <replaceable>VERSION</replaceable></arg>
+    <arg><option>--glib-max-allowed</option> <replaceable>VERSION</replaceable></arg>
     <arg choice="plain">FILE</arg>
     <arg>
       <arg choice="plain" rep="repeat">FILE</arg>
@@ -420,6 +422,66 @@ gdbus-codegen --c-namespace MyApp                           \
       </listitem>
     </varlistentry>
 
+    <varlistentry>
+      <term><option>--glib-min-required</option> <replaceable>VERSION</replaceable></term>
+      <listitem>
+        <para>
+          Specifies the minimum version of GLib which the code generated by
+          <command>gdbus-codegen</command> can depend on. This may be used to
+          make backwards-incompatible changes in the output or behaviour of
+          <command>gdbus-codegen</command> in future, which users may opt in to
+          by increasing the value they pass for <option>--glib-min-required</option>.
+          If this option is not passed, the output from <command>gdbus-codegen</command>
+          is guaranteed to be compatible with all versions of GLib from 2.30
+          upwards, as that is when <command>gdbus-codegen</command> was first
+          released.
+        </para>
+        <para>
+          Note that some version parameters introduce incompatible changes: all callers
+          of the generated code might need to be updated, and if the generated code is part of
+          a library's API or ABI, then increasing the version parameter can result in an API
+          or ABI break.
+        </para>
+        <para>
+          The version number must be of the form
+          <literal><replaceable>MAJOR</replaceable>.<replaceable>MINOR</replaceable>.<replaceable>MICRO</replaceable></literal>,
+          where all parts are integers. <replaceable>MINOR</replaceable> and
+          <replaceable>MICRO</replaceable> are optional. The version number may not be smaller
+          than <literal>2.30</literal>.
+        </para>
+        <para>
+          If the version number is <literal>2.64</literal> or greater, the generated code will
+          have the following features: (1) If a method has <literal>h</literal> (file
+          descriptor) parameter(s), a <type>GUnixFDList</type> parameter will exist in the
+          generated code for it (whereas previously the annotation
+          <literal>org.gtk.GDBus.C.UnixFD</literal> was required), and (2) Method call functions will
+          have two additional arguments to allow the user to specify <type>GDBusCallFlags</type>
+          and a timeout value, as is possible when using <function>g_dbus_proxy_call()</function>.
+        </para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><option>--glib-max-allowed</option> <replaceable>VERSION</replaceable></term>
+      <listitem>
+        <para>
+          Specifies the maximum version of GLib which the code generated by
+          <command>gdbus-codegen</command> can depend on. This may be used to
+          ensure that code generated by <command>gdbus-codegen</command> is
+          compilable with specific older versions of GLib that your software has
+          to support.
+        </para>
+        <para>
+          The version number must be of the form
+          <literal><replaceable>MAJOR</replaceable>.<replaceable>MINOR</replaceable>.<replaceable>MICRO</replaceable></literal>,
+          where all parts are integers. <replaceable>MINOR</replaceable> and
+          <replaceable>MICRO</replaceable> are optional. The version number must
+          be greater than or equal to that passed to <option>--glib-min-required</option>.
+          It defaults to the version of GLib which provides this <command>gdbus-codegen</command>.
+        </para>
+      </listitem>
+    </varlistentry>
+
   </variablelist>
 </refsect1>
 
diff --git a/docs/reference/gio/gdbus-object-manager-example/.gitignore b/docs/reference/gio/gdbus-object-manager-example/.gitignore
new file mode 100644 (file)
index 0000000..cc8a11d
--- /dev/null
@@ -0,0 +1 @@
+gdbus-object-manager-example-overrides.txt
diff --git a/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-docs.xml b/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-docs.xml
new file mode 100644 (file)
index 0000000..7b0d1ca
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+               "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<book lang="en" xmlns:xi="http://www.w3.org/2003/XInclude">
+  <part>
+    <title>foo</title>
+    <chapter>
+      <title>bar</title>
+      <xi:include href="xml/ExampleAnimal.xml"/>
+      <xi:include href="xml/ExampleCat.xml"/>
+      <xi:include href="xml/ExampleObject.xml"/>
+      <xi:include href="xml/ExampleObjectManagerClient.xml"/>
+    </chapter>
+  </part>
+</book>
diff --git a/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-sections.txt b/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-sections.txt
new file mode 100644 (file)
index 0000000..1e3b8b8
--- /dev/null
@@ -0,0 +1,161 @@
+<SECTION>
+<FILE>ExampleAnimal</FILE>
+<TITLE>ExampleAnimal</TITLE>
+ExampleAnimal
+ExampleAnimalIface
+example_animal_interface_info
+example_animal_override_properties
+example_animal_call_poke
+example_animal_call_poke_finish
+example_animal_call_poke_sync
+example_animal_complete_poke
+example_animal_emit_jumped
+example_animal_get_mood
+example_animal_get_foo
+example_animal_get_bar
+example_animal_dup_mood
+example_animal_dup_foo
+example_animal_dup_bar
+example_animal_set_mood
+example_animal_set_foo
+example_animal_set_bar
+ExampleAnimalProxy
+ExampleAnimalProxyClass
+example_animal_proxy_new
+example_animal_proxy_new_finish
+example_animal_proxy_new_sync
+example_animal_proxy_new_for_bus
+example_animal_proxy_new_for_bus_finish
+example_animal_proxy_new_for_bus_sync
+ExampleAnimalSkeleton
+ExampleAnimalSkeletonClass
+example_animal_skeleton_new
+<SUBSECTION Standard>
+example_animal_get_type
+example_animal_proxy_get_type
+example_animal_skeleton_get_type
+ExampleAnimalSkeletonPrivate
+ExampleAnimalProxyPrivate
+EXAMPLE_TYPE_ANIMAL
+EXAMPLE_TYPE_ANIMAL_PROXY
+EXAMPLE_TYPE_ANIMAL_SKELETON
+EXAMPLE_ANIMAL
+EXAMPLE_ANIMAL_GET_IFACE
+EXAMPLE_ANIMAL_PROXY
+EXAMPLE_ANIMAL_PROXY_CLASS
+EXAMPLE_ANIMAL_PROXY_GET_CLASS
+EXAMPLE_ANIMAL_SKELETON
+EXAMPLE_ANIMAL_SKELETON_CLASS
+EXAMPLE_ANIMAL_SKELETON_GET_CLASS
+EXAMPLE_IS_ANIMAL
+EXAMPLE_IS_ANIMAL_PROXY
+EXAMPLE_IS_ANIMAL_PROXY_CLASS
+EXAMPLE_IS_ANIMAL_SKELETON
+EXAMPLE_IS_ANIMAL_SKELETON_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>ExampleCat</FILE>
+<TITLE>ExampleCat</TITLE>
+ExampleCat
+ExampleCatIface
+example_cat_interface_info
+example_cat_override_properties
+ExampleCatProxy
+ExampleCatProxyClass
+example_cat_proxy_new
+example_cat_proxy_new_finish
+example_cat_proxy_new_sync
+example_cat_proxy_new_for_bus
+example_cat_proxy_new_for_bus_finish
+example_cat_proxy_new_for_bus_sync
+ExampleCatSkeleton
+ExampleCatSkeletonClass
+example_cat_skeleton_new
+<SUBSECTION Standard>
+example_cat_get_type
+example_cat_proxy_get_type
+example_cat_skeleton_get_type
+ExampleCatProxyPrivate
+ExampleCatSkeletonPrivate
+EXAMPLE_TYPE_CAT
+EXAMPLE_TYPE_CAT_PROXY
+EXAMPLE_TYPE_CAT_SKELETON
+EXAMPLE_CAT
+EXAMPLE_CAT_GET_IFACE
+EXAMPLE_CAT_PROXY
+EXAMPLE_CAT_PROXY_CLASS
+EXAMPLE_CAT_PROXY_GET_CLASS
+EXAMPLE_CAT_SKELETON
+EXAMPLE_CAT_SKELETON_CLASS
+EXAMPLE_CAT_SKELETON_GET_CLASS
+EXAMPLE_IS_CAT
+EXAMPLE_IS_CAT_PROXY
+EXAMPLE_IS_CAT_PROXY_CLASS
+EXAMPLE_IS_CAT_SKELETON
+EXAMPLE_IS_CAT_SKELETON_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>ExampleObject</FILE>
+<TITLE>ExampleObject</TITLE>
+ExampleObject
+ExampleObjectIface
+example_object_get_animal
+example_object_get_cat
+example_object_peek_animal
+example_object_peek_cat
+ExampleObjectProxy
+ExampleObjectProxyClass
+example_object_proxy_new
+ExampleObjectSkeleton
+ExampleObjectSkeletonClass
+example_object_skeleton_new
+example_object_skeleton_set_animal
+example_object_skeleton_set_cat
+<SUBSECTION Standard>
+example_object_get_type
+example_object_proxy_get_type
+example_object_skeleton_get_type
+ExampleObjectProxyPrivate
+ExampleObjectSkeletonPrivate
+EXAMPLE_IS_OBJECT
+EXAMPLE_IS_OBJECT_PROXY
+EXAMPLE_IS_OBJECT_PROXY_CLASS
+EXAMPLE_IS_OBJECT_SKELETON
+EXAMPLE_IS_OBJECT_SKELETON_CLASS
+EXAMPLE_OBJECT
+EXAMPLE_OBJECT_GET_IFACE
+EXAMPLE_OBJECT_PROXY
+EXAMPLE_OBJECT_PROXY_CLASS
+EXAMPLE_OBJECT_PROXY_GET_CLASS
+EXAMPLE_OBJECT_SKELETON
+EXAMPLE_OBJECT_SKELETON_CLASS
+EXAMPLE_OBJECT_SKELETON_GET_CLASS
+EXAMPLE_TYPE_OBJECT
+EXAMPLE_TYPE_OBJECT_PROXY
+EXAMPLE_TYPE_OBJECT_SKELETON
+</SECTION>
+
+<SECTION>
+<FILE>ExampleObjectManagerClient</FILE>
+<TITLE>ExampleObjectManagerClient</TITLE>
+ExampleObjectManagerClient
+ExampleObjectManagerClientClass
+example_object_manager_client_get_proxy_type
+example_object_manager_client_new
+example_object_manager_client_new_finish
+example_object_manager_client_new_sync
+example_object_manager_client_new_for_bus
+example_object_manager_client_new_for_bus_finish
+example_object_manager_client_new_for_bus_sync
+<SUBSECTION Standard>
+example_object_manager_client_get_type
+EXAMPLE_IS_OBJECT_MANAGER_CLIENT
+EXAMPLE_IS_OBJECT_MANAGER_CLIENT_CLASS
+EXAMPLE_OBJECT_MANAGER_CLIENT
+EXAMPLE_OBJECT_MANAGER_CLIENT_CLASS
+EXAMPLE_OBJECT_MANAGER_CLIENT_GET_CLASS
+EXAMPLE_TYPE_OBJECT_MANAGER_CLIENT
+ExampleObjectManagerClientPrivate
+</SECTION>
diff --git a/docs/reference/gio/gdbus-object-manager-example/meson.build b/docs/reference/gio/gdbus-object-manager-example/meson.build
new file mode 100644 (file)
index 0000000..13cae5b
--- /dev/null
@@ -0,0 +1,11 @@
+gdbus_object_manager_example_doc = gnome.gtkdoc('gdbus-object-manager-example',
+  main_xml : 'gdbus-object-manager-example-docs.xml',
+  namespace : 'example',
+  dependencies : [libgdbus_example_objectmanager_dep],
+  src_dir : 'gio/tests/gdbus-object-manager-example',
+  scan_args : gtkdoc_common_scan_args + [
+    '--rebuild-types',
+  ],
+  install : false,
+)
+
index 0ce0e2d..5694729 100644 (file)
         <xi:include href="xml/gremoteactiongroup.xml"/>
         <xi:include href="xml/gactiongroupexporter.xml"/>
         <xi:include href="xml/gdbusactiongroup.xml"/>
+        <xi:include href="xml/gmemorymonitor.xml"/>
         <xi:include href="xml/gmenumodel.xml"/>
         <xi:include href="xml/gmenu.xml"/>
         <xi:include href="xml/gmenuexporter.xml"/>
     <title>Index of new symbols in 2.60</title>
     <xi:include href="xml/api-index-2.60.xml"><xi:fallback /></xi:include>
   </index>
+  <index id="api-index-2-62" role="2.62">
+    <title>Index of new symbols in 2.62</title>
+    <xi:include href="xml/api-index-2.62.xml"><xi:fallback /></xi:include>
+  </index>
+  <index id="api-index-2-64" role="2.64">
+    <title>Index of new symbols in 2.64</title>
+    <xi:include href="xml/api-index-2.64.xml"><xi:fallback /></xi:include>
+  </index>
 
   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
 
index bb483b0..cd62b8a 100644 (file)
@@ -2462,7 +2462,7 @@ g_charset_converter_get_type
 
 <SECTION>
 <FILE>gconverterinputstream</FILE>
-<TITLE>GConverterInputstream</TITLE>
+<TITLE>GConverterInputStream</TITLE>
 GConverterInputStream
 g_converter_input_stream_new
 g_converter_input_stream_get_converter
@@ -2481,7 +2481,7 @@ g_converter_input_stream_get_type
 
 <SECTION>
 <FILE>gconverteroutputstream</FILE>
-<TITLE>GConverterOutputstream</TITLE>
+<TITLE>GConverterOutputStream</TITLE>
 GConverterOutputStream
 g_converter_output_stream_new
 g_converter_output_stream_get_converter
@@ -4170,6 +4170,24 @@ GDBusObjectManagerServerPrivate
 </SECTION>
 
 <SECTION>
+<FILE>gmemorymonitor</FILE>
+<TITLE>GMemoryMonitor</TITLE>
+GMemoryMonitor
+GMemoryMonitorInterface
+GMemoryMonitorWarningLevel
+G_MEMORY_MONITOR_EXTENSION_POINT_NAME
+g_memory_monitor_dup_default
+<SUBSECTION Standard>
+g_memory_monitor_get_type
+G_TYPE_MEMORY_MONITOR
+G_MEMORY_MONITOR
+G_IS_MEMORY_MONITOR
+G_MEMORY_MONITOR_GET_INTERFACE
+G_TYPE_MEMORY_MONITOR_WARNING_LEVEL
+g_memory_monitor_warning_level_get_type
+</SECTION>
+
+<SECTION>
 <FILE>gnetworkmonitor</FILE>
 <TITLE>GNetworkMonitor</TITLE>
 GNetworkMonitor
@@ -4458,6 +4476,7 @@ g_task_get_name
 g_task_return_boolean
 g_task_return_int
 g_task_return_pointer
+g_task_return_value
 g_task_return_error
 g_task_return_new_error
 g_task_return_error_if_cancelled
@@ -4465,6 +4484,7 @@ g_task_return_error_if_cancelled
 g_task_propagate_boolean
 g_task_propagate_int
 g_task_propagate_pointer
+g_task_propagate_value
 g_task_had_error
 g_task_get_completed
 <SUBSECTION>
@@ -4654,6 +4674,8 @@ g_list_store_remove
 g_list_store_remove_all
 g_list_store_splice
 g_list_store_sort
+g_list_store_find
+g_list_store_find_with_equal_func
 <SUBSECTION Standard>
 G_TYPE_LIST_STORE
 <SUBSECTION Private>
index bd0c66e..641b222 100644 (file)
                 <term><option>-P</option>, <option>--no-dereference</option></term>
                 <listitem><para>Never follow symbolic links.</para></listitem>
               </varlistentry>
+              <varlistentry>
+                <term><option>--default-permissions</option></term>
+                <listitem><para>Use the default permissions of the current process for the destination file, rather than copying the permissions of the source file.</para></listitem>
+              </varlistentry>
             </variablelist>
           </refsect3>
         </listitem>
                 <listitem><para>Don’t follow symbolic links.</para></listitem>
               </varlistentry>
               <varlistentry>
+                <term><option>-d</option>, <option>--print-display-names</option></term>
+                <listitem><para>Print display names.</para></listitem>
+              </varlistentry>
+              <varlistentry>
                 <term><option>-u</option>, <option>--print-uris</option></term>
                 <listitem><para>Print full URIs.</para></listitem>
               </varlistentry>
                 <listitem><para>Mount as mountable.</para></listitem>
               </varlistentry>
               <varlistentry>
-                <term><option>-d</option>, <option>--device=<replaceable>DEVICE</replaceable></option></term>
-                <listitem><para>Mount volume with device file.</para></listitem>
+                <term><option>-d</option>, <option>--device=<replaceable>ID</replaceable></option></term>
+                <listitem><para>Mount volume with device file, or other identifier.</para></listitem>
               </varlistentry>
               <varlistentry>
                 <term><option>-u</option>, <option>--unmount</option></term>
                 <listitem><para>Eject the location.</para></listitem>
               </varlistentry>
               <varlistentry>
+                <term><option>-t</option>, <option>--stop=<replaceable>DEVICE</replaceable></option></term>
+                <listitem><para>Stop drive with device file.</para></listitem>
+              </varlistentry>
+              <varlistentry>
                 <term><option>-s</option>, <option>--unmount-scheme=<replaceable>SCHEME</replaceable></option></term>
                 <listitem><para>Unmount all mounts with the given scheme.</para></listitem>
               </varlistentry>
             to <replaceable>DESTINATION</replaceable>. If more than one source
             is specified, the destination must be a directory.</para>
           <para>The <command>move</command> command is similar to the traditional <command>mv</command> utility.</para>
+          <refsect3>
+            <title>Options</title>
+            <variablelist>
+              <varlistentry>
+                <term><option>-T</option>, <option>--no-target-directory</option></term>
+                <listitem><para>Don’t copy into <replaceable>DESTINATION</replaceable> even if it is a directory.</para></listitem>
+              </varlistentry>
+              <varlistentry>
+                <term><option>-p</option>, <option>--progress</option></term>
+                <listitem><para>Show progress.</para></listitem>
+              </varlistentry>
+              <varlistentry>
+                <term><option>-i</option>, <option>--interactive</option></term>
+                <listitem><para>Prompt for confirmation before overwriting files.</para></listitem>
+              </varlistentry>
+              <varlistentry>
+                <term><option>-b</option>, <option>--backup</option></term>
+                <listitem><para>Create backups of existing destination files.</para></listitem>
+              </varlistentry>
+              <varlistentry>
+                <term><option>-C</option>, <option>--no-copy-fallback</option></term>
+                <listitem><para>Don’t use copy and delete fallback.</para></listitem>
+              </varlistentry>
+            </variablelist>
+          </refsect3>
         </listitem>
       </varlistentry>
 
index f8805a5..a4e67ca 100644 (file)
@@ -1,4 +1,7 @@
 if get_option('gtk_doc')
+  if installed_tests_enabled
+    subdir('gdbus-object-manager-example')
+  endif
   subdir('xml')
 
   ignore_headers = [
@@ -50,6 +53,8 @@ if get_option('gtk_doc')
     'glocalfilemonitor.h',
     'glocalfileoutputstream.h',
     'glocalvfs.h',
+    'gmemorymonitordbus.h',
+    'gmemorymonitorportal.h',
     'gmountprivate.h',
     'gnativevolumemonitor.h',
     'gnetworkingprivate.h',
@@ -130,8 +135,6 @@ if get_option('gtk_doc')
     'xdp-dbus.c',
   ]
 
-  # FIXME: ExampleAnimal docs aren't built
-
   docpath = join_paths(glib_datadir, 'gtk-doc', 'html')
   version_conf = configuration_data()
   version_conf.set('VERSION', meson.project_version())
@@ -159,6 +162,30 @@ if get_option('gtk_doc')
     copy : true,
   )
 
+  content_files = [
+    'overview.xml',
+    'migrating-posix.xml',
+    'migrating-gnome-vfs.xml',
+    'migrating-gconf.xml',
+    'migrating-gdbus.xml',
+    'gio-querymodules.xml',
+    'glib-compile-schemas.xml',
+    'glib-compile-resources.xml',
+    'gapplication.xml',
+    'gsettings.xml',
+    'gresource.xml',
+    'gdbus.xml',
+    'gdbus-codegen.xml',
+  ]
+
+  if installed_tests_enabled
+    content_files += [
+      gdbus_example_objectmanager_xml,
+      gdbus_example_objectmanager_sources,
+      gdbus_object_manager_example_doc
+    ]
+  endif
+
   gnome.gtkdoc('gio',
     main_xml : 'gio-docs.xml',
     namespace : 'g',
@@ -172,21 +199,7 @@ if get_option('gtk_doc')
     mkdb_args : [
       '--ignore-files=' + ' '.join(ignore_sources),
     ],
-    content_files : [
-      'overview.xml',
-      'migrating-posix.xml',
-      'migrating-gnome-vfs.xml',
-      'migrating-gconf.xml',
-      'migrating-gdbus.xml',
-      'gio-querymodules.xml',
-      'glib-compile-schemas.xml',
-      'glib-compile-resources.xml',
-      'gapplication.xml',
-      'gsettings.xml',
-      'gresource.xml',
-      'gdbus.xml',
-      'gdbus-codegen.xml',
-    ],
+    content_files : content_files,
     expand_content_files : [
       'overview.xml',
       'migrating-posix.xml',
@@ -205,7 +218,8 @@ if get_option('gtk_doc')
       '--extra-dir=' + join_paths('gio', '..', 'glib', 'html'),
       '--extra-dir=' + join_paths('gio', '..', 'gobject', 'html'),
     ],
-    install: true
+    install: true,
+    check: true,
   )
 endif
 
index 7595aaa..5e2d464 100644 (file)
@@ -241,6 +241,9 @@ on_name_acquired (GDBusConnection *connection,
     </para>
   </section>
 
+  <section>
+    <title>Generating code and docs</title>
+
   <section id="gdbus-example-gdbus-codegen">
     <title>Using gdbus-codegen</title>
 
@@ -267,7 +270,12 @@ gdbus-codegen --interface-prefix org.gtk.GDBus.Example.ObjectManager. \
       generated. Additionally, two XML files
       <filename>generated-docs-org.gtk.GDBus.Example.ObjectManager.Animal</filename> and
       <filename>generated-docs-org.gtk.GDBus.Example.ObjectManager.Cat</filename>
-      with Docbook XML are generated.
+      with Docbook XML are generated. For an example of what the docs look
+      like see <link
+      linkend="gdbus-interface-org-gtk-GDBus-Example-ObjectManager-Animal">the Animal D-Bus interface documentation</link>.
+      and
+      <link
+      linkend="gdbus-interface-org-gtk-GDBus-Example-ObjectManager-Cat">the Cat D-Bus interface documentation</link>.
     </para>
     <para>
       While the contents of <filename>generated-code.h</filename> and
@@ -276,9 +284,26 @@ gdbus-codegen --interface-prefix org.gtk.GDBus.Example.ObjectManager. \
       linkend="gdbus-codegen">gdbus-codegen</link></command> manual
       page, brief examples of how this generated code can be used can be found in
       <xref linkend="gdbus-example-codegen-server"/>
-      and <xref linkend="gdbus-example-codegen-client"/>.
+      and <xref
+      linkend="gdbus-example-codegen-client"/>. Additionally, since
+      the generated code has 100% gtk-doc coverage, see
+      #ExampleAnimal, #ExampleCat, #ExampleObject and
+      #ExampleObjectManagerClient pages for documentation.
     </para>
 
+    <example id="gdbus-example-codegen-server"><title>Server-side application using generated code</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../gdbus-example-objectmanager-server.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
+
+    <example id="gdbus-example-codegen-client"><title>Client-side application using generated code</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../gdbus-example-objectmanager-client.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
+
+  </section>
+
+  <xi:include href="../../../../gio/tests/gdbus-object-manager-example/objectmanager-gen-org.gtk.GDBus.Example.ObjectManager.Animal.xml"/>
+  <xi:include href="../../../../gio/tests/gdbus-object-manager-example/objectmanager-gen-org.gtk.GDBus.Example.ObjectManager.Cat.xml"/>
+  <xi:include href="../gdbus-object-manager-example/xml/ExampleAnimal.xml"/>
+  <xi:include href="../gdbus-object-manager-example/xml/ExampleCat.xml"/>
+  <xi:include href="../gdbus-object-manager-example/xml/ExampleObject.xml"/>
+  <xi:include href="../gdbus-object-manager-example/xml/ExampleObjectManagerClient.xml"/>
+
   </section>
 
 </chapter>
index 960cd2f..9d01326 100644 (file)
@@ -466,10 +466,9 @@ Gvfs is also heavily distributed and relies on a session bus to be present.
       <title><envar>GSETTINGS_SCHEMA_DIR</envar></title>
 
       <para>
-        This variable can be set to the name of a directory that is
-        considered in addition to the <filename>glib-2.0/schemas</filename>
-        subdirectories of the XDG system data dirs when looking
-        for compiled schemas for #GSettings.
+        This variable can be set to the names of directories to consider when looking for compiled schemas for #GSettings,
+        in addition to the <filename>glib-2.0/schemas</filename>
+        subdirectories of the XDG system data dirs. To specify multiple directories, use <constant>G_SEARCHPATH_SEPARATOR_S</constant> as a separator.
       </para>
     </formalpara>
 
index 79567f6..720a6ff 100644 (file)
         <userinput>ninja -C _build</userinput>
         <userinput>ninja -C _build install</userinput>
       </literallayout>
+
+      On FreeBSD:
+      <literallayout>
+        <userinput>env CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib -Wl,--disable-new-dtags" meson -Dxattr=false -Dinstalled_tests=true -Diconv=external -Db_lundef=false _build</userinput>
+        <userinput>ninja -C _build</userinput>
+      </literallayout>
     </para>
 
     <para>
       </listitem>
       <listitem>
         <para>
+          Python 3.5 or newer is required. Your system Python must
+          conform to <ulink
+          url="https://www.python.org/dev/peps/pep-0394/">PEP 394
+          </ulink>
+          For FreeBSD, this means that the
+          <literal>lang/python3</literal> port must be installed.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
           The libintl library from the <ulink
           url="http://www.gnu.org/software/gettext">GNU gettext
           package</ulink> is needed if your system doesn't have the
index 977421f..c90b30b 100644 (file)
@@ -59,6 +59,7 @@ c_link_args = []
 c = 'x86_64-w64-mingw32-gcc'
 cpp = 'x86_64-w64-mingw32-g++'
 ar = 'x86_64-w64-mingw32-ar'
+ld = 'x86_64-w64-mingw32-ld'
 objcopy = 'x86_64-w64-mingw32-objcopy'
 strip = 'x86_64-w64-mingw32-strip'
 pkgconfig = 'x86_64-w64-mingw32-pkg-config'
index fa43eaf..186543f 100644 (file)
     <title>Index of new symbols in 2.62</title>
     <xi:include href="xml/api-index-2.62.xml"><xi:fallback /></xi:include>
   </index>
+  <index id="api-index-2-64" role="2.64">
+    <title>Index of new symbols in 2.64</title>
+    <xi:include href="xml/api-index-2.64.xml"><xi:fallback /></xi:include>
+  </index>
 
   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
 
index a5e64a1..63f40ba 100644 (file)
@@ -135,6 +135,7 @@ GLIB_VERSION_2_56
 GLIB_VERSION_2_58
 GLIB_VERSION_2_60
 GLIB_VERSION_2_62
+GLIB_VERSION_2_64
 GLIB_VERSION_MIN_REQUIRED
 GLIB_VERSION_MAX_ALLOWED
 GLIB_DISABLE_DEPRECATION_WARNINGS
@@ -160,6 +161,7 @@ GLIB_AVAILABLE_ENUMERATOR_IN_2_56
 GLIB_AVAILABLE_ENUMERATOR_IN_2_58
 GLIB_AVAILABLE_ENUMERATOR_IN_2_60
 GLIB_AVAILABLE_ENUMERATOR_IN_2_62
+GLIB_AVAILABLE_ENUMERATOR_IN_2_64
 GLIB_AVAILABLE_IN_ALL
 GLIB_AVAILABLE_IN_2_26
 GLIB_AVAILABLE_IN_2_28
@@ -180,6 +182,7 @@ GLIB_AVAILABLE_IN_2_56
 GLIB_AVAILABLE_IN_2_58
 GLIB_AVAILABLE_IN_2_60
 GLIB_AVAILABLE_IN_2_62
+GLIB_AVAILABLE_IN_2_64
 GLIB_AVAILABLE_MACRO_IN_2_26
 GLIB_AVAILABLE_MACRO_IN_2_28
 GLIB_AVAILABLE_MACRO_IN_2_30
@@ -199,6 +202,7 @@ GLIB_AVAILABLE_MACRO_IN_2_56
 GLIB_AVAILABLE_MACRO_IN_2_58
 GLIB_AVAILABLE_MACRO_IN_2_60
 GLIB_AVAILABLE_MACRO_IN_2_62
+GLIB_AVAILABLE_MACRO_IN_2_64
 GLIB_AVAILABLE_TYPE_IN_2_26
 GLIB_AVAILABLE_TYPE_IN_2_28
 GLIB_AVAILABLE_TYPE_IN_2_30
@@ -218,6 +222,7 @@ GLIB_AVAILABLE_TYPE_IN_2_56
 GLIB_AVAILABLE_TYPE_IN_2_58
 GLIB_AVAILABLE_TYPE_IN_2_60
 GLIB_AVAILABLE_TYPE_IN_2_62
+GLIB_AVAILABLE_TYPE_IN_2_64
 GLIB_DEPRECATED_ENUMERATOR
 GLIB_DEPRECATED_ENUMERATOR_FOR
 GLIB_DEPRECATED_ENUMERATOR_IN_2_26
@@ -258,6 +263,8 @@ GLIB_DEPRECATED_ENUMERATOR_IN_2_60
 GLIB_DEPRECATED_ENUMERATOR_IN_2_60_FOR
 GLIB_DEPRECATED_ENUMERATOR_IN_2_62
 GLIB_DEPRECATED_ENUMERATOR_IN_2_62_FOR
+GLIB_DEPRECATED_ENUMERATOR_IN_2_64
+GLIB_DEPRECATED_ENUMERATOR_IN_2_64_FOR
 GLIB_DEPRECATED_IN_2_26
 GLIB_DEPRECATED_IN_2_26_FOR
 GLIB_DEPRECATED_IN_2_28
@@ -296,6 +303,8 @@ GLIB_DEPRECATED_IN_2_60
 GLIB_DEPRECATED_IN_2_60_FOR
 GLIB_DEPRECATED_IN_2_62
 GLIB_DEPRECATED_IN_2_62_FOR
+GLIB_DEPRECATED_IN_2_64
+GLIB_DEPRECATED_IN_2_64_FOR
 GLIB_DEPRECATED_MACRO
 GLIB_DEPRECATED_MACRO_FOR
 GLIB_DEPRECATED_MACRO_IN_2_26
@@ -336,6 +345,8 @@ GLIB_DEPRECATED_MACRO_IN_2_60
 GLIB_DEPRECATED_MACRO_IN_2_60_FOR
 GLIB_DEPRECATED_MACRO_IN_2_62
 GLIB_DEPRECATED_MACRO_IN_2_62_FOR
+GLIB_DEPRECATED_MACRO_IN_2_64
+GLIB_DEPRECATED_MACRO_IN_2_64_FOR
 GLIB_DEPRECATED_TYPE
 GLIB_DEPRECATED_TYPE_FOR
 GLIB_DEPRECATED_TYPE_IN_2_26
@@ -376,6 +387,8 @@ GLIB_DEPRECATED_TYPE_IN_2_60
 GLIB_DEPRECATED_TYPE_IN_2_60_FOR
 GLIB_DEPRECATED_TYPE_IN_2_62
 GLIB_DEPRECATED_TYPE_IN_2_62_FOR
+GLIB_DEPRECATED_TYPE_IN_2_64
+GLIB_DEPRECATED_TYPE_IN_2_64_FOR
 GLIB_VERSION_CUR_STABLE
 GLIB_VERSION_PREV_STABLE
 </SECTION>
@@ -411,6 +424,7 @@ CLAMP
 G_APPROX_VALUE
 
 <SUBSECTION>
+G_SIZEOF_MEMBER
 G_STRUCT_MEMBER
 G_STRUCT_MEMBER_P
 G_STRUCT_OFFSET
@@ -769,6 +783,11 @@ g_main_context_invoke
 g_main_context_invoke_full
 
 <SUBSECTION>
+GMainContextPusher
+g_main_context_pusher_new
+g_main_context_pusher_free
+
+<SUBSECTION>
 g_main_context_get_thread_default
 g_main_context_ref_thread_default
 g_main_context_push_thread_default
@@ -805,11 +824,13 @@ G_POLLFD_FORMAT
 GSource
 GSourceDummyMarshal
 GSourceFuncs
+GSourceDisposeFunc
 GSourceCallbackFuncs
 g_source_new
 g_source_ref
 g_source_unref
 g_source_set_funcs
+g_source_set_dispose_function
 g_source_attach
 g_source_destroy
 g_source_is_destroyed
@@ -1398,6 +1419,7 @@ g_log
 g_logv
 g_message
 g_warning
+g_warning_once
 g_critical
 g_error
 g_info
@@ -1613,6 +1635,7 @@ g_remove
 g_rmdir
 g_fopen
 g_freopen
+g_fsync
 g_chmod
 g_access
 g_creat
@@ -2072,6 +2095,20 @@ g_get_user_special_dir
 g_get_system_data_dirs
 g_get_system_config_dirs
 g_reload_user_special_dirs_cache
+g_get_os_info
+
+<SUBSECTION>
+G_OS_INFO_KEY_NAME
+G_OS_INFO_KEY_PRETTY_NAME
+G_OS_INFO_KEY_VERSION
+G_OS_INFO_KEY_VERSION_CODENAME
+G_OS_INFO_KEY_VERSION_ID
+G_OS_INFO_KEY_ID
+G_OS_INFO_KEY_HOME_URL
+G_OS_INFO_KEY_DOCUMENTATION_URL
+G_OS_INFO_KEY_SUPPORT_URL
+G_OS_INFO_KEY_BUG_REPORT_URL
+G_OS_INFO_KEY_PRIVACY_POLICY_URL
 
 <SUBSECTION>
 g_get_host_name
@@ -2421,6 +2458,9 @@ g_unix_fd_add
 g_unix_fd_add_full
 g_unix_fd_source_new
 
+<SUBSECTION>
+g_unix_get_passwd_entry
+
 <SUBSECTION Private>
 g_unix_error_quark
 </SECTION>
@@ -2469,6 +2509,7 @@ g_list_delete_link
 g_list_remove_all
 g_list_free
 g_list_free_full
+g_clear_list
 
 <SUBSECTION>
 g_list_alloc
@@ -2525,6 +2566,7 @@ g_slist_free
 g_slist_free_full
 g_slist_free_1
 g_slist_free1
+g_clear_slist
 
 <SUBSECTION>
 g_slist_length
@@ -2791,6 +2833,7 @@ g_string_chunk_free
 <FILE>arrays</FILE>
 GArray
 g_array_new
+g_array_steal
 g_array_sized_new
 g_array_copy
 g_array_ref
@@ -2819,6 +2862,7 @@ g_array_free
 <FILE>arrays_pointer</FILE>
 GPtrArray
 g_ptr_array_new
+g_ptr_array_steal
 g_ptr_array_sized_new
 g_ptr_array_new_with_free_func
 g_ptr_array_copy
@@ -2854,6 +2898,7 @@ g_ptr_array_find_with_equal_func
 <SUBSECTION>
 GByteArray
 g_byte_array_new
+g_byte_array_steal
 g_byte_array_new_take
 g_byte_array_sized_new
 g_byte_array_ref
index bba7649..62d95f7 100644 (file)
@@ -88,7 +88,8 @@ if get_option('gtk_doc')
                fixxref_args: [
                  '--html-dir=' + docpath,
                ],
-               install: true)
+               install: true,
+               check: true)
 endif
 
 if get_option('man')
index 86765c8..989f5b4 100644 (file)
@@ -156,8 +156,8 @@ How to run and debug your GLib application
         </listitem>
       </varlistentry>
     </variablelist>
-    The special value all can be used to turn on all debug options.
-    The special value help can be used to print all available options.
+    The special value <literal>all</literal> can be used to turn on all debug options.
+    The special value <literal>help</literal> can be used to print all available options.
   </para>
 </formalpara>
 
@@ -207,8 +207,8 @@ How to run and debug your GLib application
         </listitem>
       </varlistentry>
     </variablelist>
-    The special value all can be used to turn on all options.
-    The special value help can be used to print all available options.
+    The special value <literal>all</literal> can be used to turn on all options.
+    The special value <literal>help</literal> can be used to print all available options.
   </para>
 </formalpara>
 
index bf72ba7..2b3e86f 100644 (file)
@@ -411,7 +411,66 @@ debugging information. This option is mutually exclusive with the
 </variablelist>
 </refsect1>
 
-<refsect1><title>Using glib-genmarshal with Autotools</title>
+<refsect1><title>Using <command>glib-genmarshal</command> with Meson</title>
+<para>
+Meson supports generating closure marshallers using <command>glib-genmarshal</command>
+out of the box in its "gnome" module.
+</para>
+
+<para>
+In your <filename>meson.build</filename> file you will typically call the
+<literal>gnome.genmarshal()</literal> method with the source list of marshallers
+to generate:
+</para>
+<informalexample><programlisting>
+gnome = import('gnome')
+marshal_files = gnome.genmarshal('marshal',
+  sources: 'marshal.list',
+  internal: true,
+)
+</programlisting></informalexample>
+<para>
+The <literal>marshal_files</literal> variable will contain an array of two elements
+in the following order:
+</para>
+<itemizedlist>
+  <listitem><para>a build target for the source file</para></listitem>
+  <listitem><para>a build target for the header file</para></listitem>
+</itemizedlist>
+<para>
+You should use the returned objects to provide a dependency on every other
+build target that references the source or header file; for instance, if you
+are using the source to build a library:
+</para>
+<informalexample><programlisting>
+mainlib = library('project',
+  sources: project_sources + marshal_files,
+  ...
+)
+</programlisting></informalexample>
+<para>
+Additionally, if you are including the generated header file inside a build
+target that depends on the library you just built, you must ensure that the
+internal dependency includes the generated header as a required source file:
+</para>
+<informalexample><programlisting>
+mainlib_dep = declare_dependency(sources: marshal_files[1], link_with: mainlib)
+</programlisting></informalexample>
+<para>
+You should not include the generated source file as well, otherwise it will
+be built separately for every target that depends on it, causing build
+failures. To know more about why all this is required, please refer to the
+<ulink url="https://mesonbuild.com/FAQ.html#how-do-i-tell-meson-that-my-sources-use-generated-headers">
+corresponding Meson FAQ entry</ulink>.
+</para>
+<para>
+For more information on how to use the method, see the
+<ulink url="https://mesonbuild.com/Gnome-module.html#gnomegenmarshal">Meson
+documentation for <literal>gnome.genmarshal()</literal></ulink>.
+</para>
+</refsect1>
+
+<refsect1><title>Using <command>glib-genmarshal</command> with Autotools</title>
 <para>
 In order to use <command>glib-genmarshal</command> in your project when using
 Autotools as the build system, you will first need to modify your
index 4c86416..9dac821 100644 (file)
@@ -153,15 +153,16 @@ The same as <literal>@type@</literal> with all letters uppercased (e.g. <literal
 <varlistentry>
 <term><literal>@filename@</literal></term>
 <listitem><para>
-The name of the input file currently being processed (e.g. <literal>foo.h</literal>).
+The full path of the input file currently being processed (e.g. <literal>/build/environment/project/src/foo.h</literal>).
 </para></listitem>
 </varlistentry>
 
 <varlistentry>
 <term><literal>@basename@</literal></term>
 <listitem><para>
-The base name of the input file currently being processed (e.g. <literal>foo.h</literal>). Typically
-you want to use <literal>@basename@</literal> in place of <literal>@filename@</literal> in your templates, to improve the reproducibility of the build. (Since: 2.22)
+The base name of the input file currently being processed (e.g. <literal>foo.h</literal>).
+Typically you want to use <literal>@basename@</literal> in place of <literal>@filename@</literal>
+in your templates, to improve the reproducibility of the build. (Since: 2.22)
 </para></listitem>
 </varlistentry>
 </variablelist>
@@ -389,52 +390,15 @@ limit. For example, Windows has a limit of 8191 characters.
 </variablelist>
 </refsect1>
 
-<refsect1><title>Using glib-mkenums with Autotools</title>
+<refsect1><title>Using templates</title>
 <para>
-In order to use <command>glib-mkenums</command> in your project when using
-Autotools as the build system, you will first need to modify your
-<filename>configure.ac</filename> file to ensure you find the appropriate
-command using <command>pkg-config</command>, similarly as to how you discover
-the compiler and linker flags for GLib.
+Instead of passing the various sections of the generated file to the command
+line of <command>glib-mkenums</command>, it's strongly recommended to use a
+template file, especially for generating C sources.
 </para>
-<informalexample><programlisting>
-PKG_PROG_PKG_CONFIG([0.28])
 
-PKG_CHECK_VAR([GLIB_MKENUMS], [glib-2.0], [glib_mkenums])
-</programlisting></informalexample>
 <para>
-In your <filename>Makefile.am</filename> file you will typically use rules
-like these:
-</para>
-<informalexample><programlisting>
-# A list of headers to inspect
-project_headers = \
-        project-foo.h \
-        project-bar.h \
-        project-baz.h
-
-enum-types.h: $(project_headers) enum-types.h.in
-        $(AM_V_GEN)$(GLIB_MKENUMS) \
-                --template=enum-types.h.in \
-                --output=$@ \
-                $(project_headers)
-
-enum-types.c: $(project_headers) enum-types.c.in enum-types.h
-        $(AM_V_GEN)$(GLIB_MKENUMS) \
-                --template=enum-types.c.in \
-                --output=$@ \
-                $(project_headers)
-
-BUILT_SOURCES += enum-types.h enum-types.c
-CLEANFILES += enum-types.h enum-types.c
-EXTRA_DIST += enum-types.h.in enum-types.c.in
-</programlisting></informalexample>
-<para>
-In the example above, we have a variable called <literal>project_headers</literal>
-where we reference all header files we want to inspect for generating enumeration
-GTypes. In the <filename>enum-types.h</filename> rule we use <command>glib-mkenums</command>
-with a template called <filename>enum-types.h.in</filename> in order to generate the
-header file; a header template file will typically look like this:
+A C header template file will typically look like this:
 </para>
 <informalexample><programlisting>
 /*** BEGIN file-header ***/
@@ -448,7 +412,7 @@ G_BEGIN_DECLS
 
 /*** BEGIN file-production ***/
 
-/* enumerations from "@filename@" */
+/* enumerations from "@basename@" */
 /*** END file-production ***/
 
 /*** BEGIN value-header ***/
@@ -460,10 +424,9 @@ GType @enum_name@_get_type (void) G_GNUC_CONST;
 G_END_DECLS
 /*** END file-tail ***/
 </programlisting></informalexample>
+
 <para>
-The <filename>enum-types.c</filename> rule is similar to the rule for the
-header file, but will use a different <filename>enum-types.c.in</filename> template
-file, similar to this:
+A C source template file will typically look like this:
 </para>
 <informalexample><programlisting>
 /*** BEGIN file-header ***/
@@ -473,7 +436,7 @@ file, similar to this:
 /*** END file-header ***/
 
 /*** BEGIN file-production ***/
-/* enumerations from "@filename@" */
+/* enumerations from "@basename@" */
 /*** END file-production ***/
 
 /*** BEGIN value-header ***/
@@ -505,6 +468,141 @@ GType
 
 /*** END value-tail ***/
 </programlisting></informalexample>
+
+<para>
+Template files are easier to modify and update, and can be used
+to generate various types of outputs using the same command line
+or tools during the build.
+</para>
+</refsect1>
+
+<refsect1><title>Using glib-mkenums with Meson</title>
+<para>
+Meson supports generating enumeration types using <command>glib-mkenums</command>
+out of the box in its "gnome" module.
+</para>
+
+<para>
+In your <filename>meson.build</filename> file you will typically call the
+<literal>gnome.mkenums_simple()</literal> method to generate idiomatic enumeration
+types from a list of headers to inspect:
+</para>
+<informalexample><programlisting>
+project_headers = [
+  'project-foo.h',
+  'project-bar.h',
+  'project-baz.h',
+]
+
+gnome = import('gnome')
+enum_files = gnome.mkenums_simple('enum-types',
+  sources: project_headers,
+)
+</programlisting></informalexample>
+
+<para>
+The <literal>enum_files</literal> variable will contain an array of two elements
+in the following order:
+</para>
+<itemizedlist>
+  <listitem><para>a build target for the source file</para></listitem>
+  <listitem><para>a build target for the header file</para></listitem>
+</itemizedlist>
+<para>
+You should use the returned objects to provide a dependency on every other
+build target that references the source or header file; for instance, if you
+are using the source to build a library:
+</para>
+<informalexample><programlisting>
+mainlib = library('project',
+  sources: project_sources + enum_files,
+  ...
+)
+</programlisting></informalexample>
+<para>
+Additionally, if you are including the generated header file inside a build
+target that depends on the library you just built, you must ensure that the
+internal dependency includes the generated header as a required source file:
+</para>
+<informalexample><programlisting>
+mainlib_dep = declare_dependency(sources: enum_files[1], link_with: mainlib)
+</programlisting></informalexample>
+<para>
+You should not include the generated source file as well, otherwise it will
+be built separately for every target that depends on it, causing build
+failures. To know more about why all this is required, please refer to the
+<ulink url="https://mesonbuild.com/FAQ.html#how-do-i-tell-meson-that-my-sources-use-generated-headers">
+corresponding Meson FAQ entry</ulink>.
+</para>
+
+<para>
+If you are generating C header and source files that require special
+templates, you can use <literal>gnome.mkenums()</literal> to provide those
+headers, for instance:
+</para>
+<informalexample><programlisting>
+enum_files = gnome.mkenums('enum-types',
+  sources: project_headers,
+  h_template: 'enum-types.h.in',
+  c_template: 'enum-types.c.in',
+  install_header: true,
+)
+</programlisting></informalexample>
+<para>
+For more information, see the <ulink url="https://mesonbuild.com/Gnome-module.html#gnomegenmarshal">Meson
+documentation for <literal>gnome.mkenums()</literal></ulink>.
+</para>
+</refsect1>
+
+<refsect1><title>Using glib-mkenums with Autotools</title>
+<para>
+In order to use <command>glib-mkenums</command> in your project when using
+Autotools as the build system, you will first need to modify your
+<filename>configure.ac</filename> file to ensure you find the appropriate
+command using <command>pkg-config</command>, similarly as to how you discover
+the compiler and linker flags for GLib.
+</para>
+<informalexample><programlisting>
+PKG_PROG_PKG_CONFIG([0.28])
+
+PKG_CHECK_VAR([GLIB_MKENUMS], [glib-2.0], [glib_mkenums])
+</programlisting></informalexample>
+<para>
+In your <filename>Makefile.am</filename> file you will typically use rules
+like these:
+</para>
+<informalexample><programlisting>
+# A list of headers to inspect
+project_headers = \
+        project-foo.h \
+        project-bar.h \
+        project-baz.h
+
+enum-types.h: $(project_headers) enum-types.h.in
+        $(AM_V_GEN)$(GLIB_MKENUMS) \
+                --template=enum-types.h.in \
+                --output=$@ \
+                $(project_headers)
+
+enum-types.c: $(project_headers) enum-types.c.in enum-types.h
+        $(AM_V_GEN)$(GLIB_MKENUMS) \
+                --template=enum-types.c.in \
+                --output=$@ \
+                $(project_headers)
+
+# Build the enum types files before every other target
+BUILT_SOURCES += enum-types.h enum-types.c
+CLEANFILES += enum-types.h enum-types.c
+EXTRA_DIST += enum-types.h.in enum-types.c.in
+</programlisting></informalexample>
+<para>
+In the example above, we have a variable called <literal>project_headers</literal>
+where we reference all header files we want to inspect for generating enumeration
+GTypes. In the <filename>enum-types.h</filename> rule we use <command>glib-mkenums</command>
+with a template called <filename>enum-types.h.in</filename> in order to generate the
+header file; similarly, in the <filename>enum-types.c</filename> rule we use a
+template called <filename>enum-types.c.in</filename>.
+</para>
 </refsect1>
 
 <refsect1><title>See also</title>
index 096c903..a9a6543 100644 (file)
@@ -50,7 +50,8 @@ if get_option('gtk_doc')
       '--html-dir=' + docpath,
       '--extra-dir=' + join_paths('gobject', '..', 'glib', 'html'),
     ],
-    install: true
+    install: true,
+    check: true,
   )
 endif
 
index 947f488..fc7d6fe 100644 (file)
@@ -65,6 +65,8 @@ struct _ViewerFile
   GObject parent_instance;
 
   /* instance members */
+  gchar *filename;
+  guint zoom_level;
 };
 
 /* will create viewer_file_get_type and set viewer_file_parent_class */
@@ -81,11 +83,24 @@ viewer_file_constructed (GObject *obj)
 }
 
 static void
+viewer_file_finalize (GObject *obj)
+{
+  ViewerFile *self = VIEWER_FILE (obj);
+
+  g_free (self->filename);
+
+  /* Always chain up to the parent finalize function to complete object
+   * destruction. */
+  G_OBJECT_CLASS (viewer_file_parent_class)-&gt;finalize (obj);
+}
+
+static void
 viewer_file_class_init (ViewerFileClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class-&gt;constructed = viewer_file_constructed;
+  object_class-&gt;finalize = viewer_file_finalize;
 }
 
 static void
@@ -465,12 +480,12 @@ ViewerFile *file = g_object_new (VIEWER_TYPE_FILE, NULL);
 /* Implementation                               */
 /************************************************/
 
-enum
+typedef enum
 {
   PROP_FILENAME = 1,
   PROP_ZOOM_LEVEL,
   N_PROPERTIES
-};
+} ViewerFileProperty;
 
 static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
 
@@ -482,7 +497,7 @@ viewer_file_set_property (GObject      *object,
 {
   ViewerFile *self = VIEWER_FILE (object);
 
-  switch (property_id)
+  switch ((ViewerFileProperty) property_id)
     {
     case PROP_FILENAME:
       g_free (self-&gt;filename);
@@ -510,7 +525,7 @@ viewer_file_get_property (GObject    *object,
 {
   ViewerFile *self = VIEWER_FILE (object);
 
-  switch (property_id)
+  switch ((ViewerFileProperty) property_id)
     {
     case PROP_FILENAME:
       g_value_set_string (value, self-&gt;filename);
index 8da9665..0dd821a 100644 (file)
@@ -7,7 +7,7 @@
 stable_2_series_versions = [
   '26', '28', '30', '32', '34', '36', '38',
   '40', '42', '44', '46', '48', '50', '52', '54', '56', '58',
-  '60', '62',
+  '60', '62', '64',
 ]
 
 ignore_decorators = [
@@ -19,9 +19,24 @@ ignore_decorators = [
 
 foreach version : stable_2_series_versions
   ignore_decorators += [
+    # Note that gtkdoc is going to use those in regex, and the longest match
+    # must come first. That's why '_FOR()' variant comes first.
+    # gtkdoc special-case '()' and replace it by a regex matching a symbol name.
     'GLIB_AVAILABLE_IN_2_' + version,
+    'GLIB_DEPRECATED_IN_2_' + version + '_FOR()',
     'GLIB_DEPRECATED_IN_2_' + version,
-    'GLIB_DEPRECATED_IN_2_' + version + '_FOR',
+
+    'GLIB_AVAILABLE_ENUMERATOR_IN_2_' + version,
+    'GLIB_DEPRECATED_ENUMERATOR_IN_2_' + version + '_FOR()',
+    'GLIB_DEPRECATED_ENUMERATOR_IN_2_' + version,
+
+    'GLIB_AVAILABLE_MACRO_IN_2_' + version,
+    'GLIB_DEPRECATED_MACRO_IN_2_' + version + '_FOR()',
+    'GLIB_DEPRECATED_MACRO_IN_2_' + version,
+
+    'GLIB_AVAILABLE_TYPE_IN_2_' + version,
+    'GLIB_DEPRECATED_TYPE_IN_2_' + version + '_FOR()',
+    'GLIB_DEPRECATED_TYPE_IN_2_' + version,
   ]
 endforeach
 
@@ -29,6 +44,17 @@ gtkdoc_common_scan_args = [
   '--ignore-decorators=' + '|'.join(ignore_decorators),
 ]
 
+if get_option('gtk_doc')
+  if not meson.version().version_compare('>=0.52.0')
+    error('Building documentation requires Meson >= 0.52.0.')
+  endif
+  # Check we have the minimum gtk-doc version required. Older versions won't
+  # generate correct documentation.
+  dependency('gtk-doc', version : '>=1.32',
+    fallback : ['gtk-doc', 'dummy_dep'],
+    default_options : ['tests=false'])
+endif
+
 subdir('gio')
 subdir('glib')
 subdir('gobject')
\ No newline at end of file
index dcacef6..16f5a05 100644 (file)
@@ -1,6 +1,6 @@
 Fuzz targets used by [oss-fuzz](https://github.com/google/oss-fuzz/).
 
-Useful links: [Dashboard](https://oss-fuzz.com/) _(requires access)_, [Build logs](https://oss-fuzz-build-logs.storage.googleapis.com/index.html), [Coverage](https://oss-fuzz.com/v2/coverage-report/job/libfuzzer_asan_glib/latest)
+Useful links: [Dashboard](https://oss-fuzz.com/) _(requires access)_, [Build logs](https://oss-fuzz-build-logs.storage.googleapis.com/index.html), [Coverage](https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_glib/latest)
 
 ## How to add new targets
 
index c1db985..63d3a12 100644 (file)
@@ -43,20 +43,19 @@ __gio_location() {
     if [[ $cur =~ "/"$ ]]; then
         dir="$cur"
     elif [[ $cur =~ "/" ]]; then
-        dir="$(dirname "$cur")/"
+        # Subtract basename because dirname cmd doesn't work well with schemes
+        dir=${cur%$(basename "$cur")}
     fi
 
-    # List daemon mounts, just if dir is not specified, or looks like scheme
-    local mounts=()
-    if [[ $dir == "" ]] || [[ $dir =~ ":"$ && ! $dir =~ "/" ]]; then
-        while IFS=$'\n' read mount; do
-            # Do not care about local mounts
-            [[ "$mount" =~ ^"file:" ]] && continue
+    # List volumes and mounts
+    local mounts=( )
+    while IFS=$'\n' read mount; do
+        # Do not care about local mounts
+        [[ "$mount" =~ ^"file:" ]] && continue
 
-            # Use only matching mounts
-            [[ "$mount" =~ ^"$cur" && "$mount" != "$cur" ]] && mounts+=("$mount")
-        done < <(gio mount -l | sed -n -r 's/^ *Mount\([0-9]+\): .* -> (.*)$/\1/p')
-    fi
+        # Use only matching mounts
+        [[ "$mount" =~ ^"$cur" && "$mount" != "$cur" ]] && mounts+=("$mount")
+    done < <(gio mount -li | sed -n -r 's/^ *(default_location|activation_root)=(.*)$/\2/p' | sort -u)
 
     # Workaround to unescape dir name (e.g. "\ " -> " ")
     declare -a tmp="( ${dir} )"
@@ -106,7 +105,7 @@ __gio_location() {
 __gio() {
     # Complete subcommands
     if (( ${COMP_CWORD} == 1 )); then
-        COMPREPLY=($(compgen -W "help version cat copy info list mime mkdir monitor mount move open rename save set trash tree" -- "${COMP_WORDS[1]}"))
+        COMPREPLY=($(compgen -W "help version cat copy info list mime mkdir monitor mount move open rename remove save set trash tree" -- "${COMP_WORDS[1]}"))
         compopt +o nospace
         return 0
     fi
index 2345ce3..24da353 100644 (file)
@@ -529,7 +529,7 @@ g_action_group_get_action_enabled (GActionGroup *action_group,
  * The return value (if non-%NULL) should be freed with
  * g_variant_unref() when it is no longer required.
  *
- * Returns: (nullable): the current state of the action
+ * Returns: (nullable) (transfer full): the current state of the action
  *
  * Since: 2.28
  **/
index 1dafc78..6b00925 100644 (file)
@@ -1309,7 +1309,7 @@ g_app_launch_context_get_display (GAppLaunchContext *context,
  * `DESKTOP_STARTUP_ID` for the launched operation, if supported.
  *
  * Startup notification IDs are defined in the 
- * [FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt").
+ * [FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt).
  *
  * Returns: a startup notification ID for the application, or %NULL if
  *     not supported.
index 02ab2b0..8256639 100644 (file)
  * initialization for all of these in a single place.
  *
  * Regardless of which of these entry points is used to start the
- * application, GApplication passes some "platform data from the
+ * application, GApplication passes some ‘platform data’ from the
  * launching instance to the primary instance, in the form of a
  * #GVariant dictionary mapping strings to variants. To use platform
  * data, override the @before_emit or @after_emit virtual functions
@@ -701,14 +701,14 @@ add_packed_option (GApplication *application,
  *
  * It is important to use the proper GVariant format when retrieving
  * the options with g_variant_dict_lookup():
- * - for %G_OPTION_ARG_NONE, use b
- * - for %G_OPTION_ARG_STRING, use &s
- * - for %G_OPTION_ARG_INT, use i
- * - for %G_OPTION_ARG_INT64, use x
- * - for %G_OPTION_ARG_DOUBLE, use d
- * - for %G_OPTION_ARG_FILENAME, use ^ay
- * - for %G_OPTION_ARG_STRING_ARRAY, use &as
- * - for %G_OPTION_ARG_FILENAME_ARRAY, use ^aay
+ * - for %G_OPTION_ARG_NONE, use `b`
+ * - for %G_OPTION_ARG_STRING, use `&s`
+ * - for %G_OPTION_ARG_INT, use `i`
+ * - for %G_OPTION_ARG_INT64, use `x`
+ * - for %G_OPTION_ARG_DOUBLE, use `d`
+ * - for %G_OPTION_ARG_FILENAME, use `^&ay`
+ * - for %G_OPTION_ARG_STRING_ARRAY, use `^a&s`
+ * - for %G_OPTION_ARG_FILENAME_ARRAY, use `^a&ay`
  *
  * Since: 2.40
  */
index 0cfa91c..d9e58b8 100644 (file)
@@ -642,20 +642,19 @@ typedef struct {
   GSource       source;
 
   GCancellable *cancellable;
-  guint         cancelled_handler;
+  gulong        cancelled_handler;
 } GCancellableSource;
 
 /*
- * We can't guarantee that the source still has references, so we are
- * relying on the fact that g_source_set_ready_time() no longer makes
- * assertions about the reference count - the source might be in the
- * window between last-unref and finalize, during which its refcount
- * is officially 0. However, we *can* guarantee that it's OK to
- * dereference it in a limited way, because we know we haven't yet reached
- * cancellable_source_finalize() - if we had, then we would have waited
- * for signal emission to finish, then disconnected the signal handler
- * under the lock.
- * See https://bugzilla.gnome.org/show_bug.cgi?id=791754
+ * The reference count of the GSource might be 0 at this point but it is not
+ * finalized yet and its dispose function did not run yet, or otherwise we
+ * would have disconnected the signal handler already and due to the signal
+ * emission lock it would be impossible to call the signal handler at that
+ * point. That is: at this point we either have a fully valid GSource, or
+ * it's not disposed or finalized yet and we can still resurrect it as needed.
+ *
+ * As such we first ensure that we have a strong reference to the GSource in
+ * here before calling any other GSource API.
  */
 static void
 cancellable_source_cancelled (GCancellable *cancellable,
@@ -663,7 +662,9 @@ cancellable_source_cancelled (GCancellable *cancellable,
 {
   GSource *source = user_data;
 
+  g_source_ref (source);
   g_source_set_ready_time (source, 0);
+  g_source_unref (source);
 }
 
 static gboolean
@@ -679,15 +680,15 @@ cancellable_source_dispatch (GSource     *source,
 }
 
 static void
-cancellable_source_finalize (GSource *source)
+cancellable_source_dispose (GSource *source)
 {
   GCancellableSource *cancellable_source = (GCancellableSource *)source;
 
   if (cancellable_source->cancellable)
     {
-      g_cancellable_disconnect (cancellable_source->cancellable,
-                                cancellable_source->cancelled_handler);
-      g_object_unref (cancellable_source->cancellable);
+      g_clear_signal_handler (&cancellable_source->cancelled_handler,
+                              cancellable_source->cancellable);
+      g_clear_object (&cancellable_source->cancellable);
     }
 }
 
@@ -720,12 +721,12 @@ static GSourceFuncs cancellable_source_funcs =
   NULL,
   NULL,
   cancellable_source_dispatch,
-  cancellable_source_finalize,
+  NULL,
   (GSourceFunc)cancellable_source_closure_callback,
 };
 
 /**
- * g_cancellable_source_new: (skip)
+ * g_cancellable_source_new:
  * @cancellable: (nullable): a #GCancellable, or %NULL
  *
  * Creates a source that triggers if @cancellable is cancelled and
@@ -750,6 +751,7 @@ g_cancellable_source_new (GCancellable *cancellable)
 
   source = g_source_new (&cancellable_source_funcs, sizeof (GCancellableSource));
   g_source_set_name (source, "GCancellable");
+  g_source_set_dispose_function (source, cancellable_source_dispose);
   cancellable_source = (GCancellableSource *)source;
 
   if (cancellable)
index 04d278d..2716c89 100644 (file)
@@ -614,6 +614,8 @@ g_content_type_get_generic_icon_name (const gchar *type)
   const gchar *xdg_icon_name;
   gchar *icon_name;
 
+  g_return_val_if_fail (type != NULL, NULL);
+
   G_LOCK (gio_xdgmime);
   xdg_icon_name = xdg_mime_get_generic_icon (type);
   G_UNLOCK (gio_xdgmime);
index ff9b7e0..c4794de 100644 (file)
@@ -286,7 +286,7 @@ linux_ucred_check_valid (struct ucred  *native,
       g_set_error_literal (error,
                            G_IO_ERROR,
                            G_IO_ERROR_INVALID_DATA,
-                           "GCredentials contains invalid data");
+                           _("GCredentials contains invalid data"));
       return FALSE;
     }
 
@@ -578,13 +578,12 @@ g_credentials_set_unix_user (GCredentials    *credentials,
                              uid_t            uid,
                              GError         **error)
 {
-  gboolean ret;
+  gboolean ret = FALSE;
 
   g_return_val_if_fail (G_IS_CREDENTIALS (credentials), FALSE);
   g_return_val_if_fail (uid != -1, FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  ret = FALSE;
 #if G_CREDENTIALS_USE_LINUX_UCRED
   credentials->native.uid = uid;
   ret = TRUE;
index aa1280f..d71299e 100644 (file)
@@ -29,10 +29,11 @@ from . import dbustypes
 from .utils import print_error
 
 LICENSE_STR = '''/*
- * Generated by gdbus-codegen {!s} from {!s}. DO NOT EDIT.
+ * This file is generated by gdbus-codegen, do not modify it.
  *
  * The license of this code is the same as for the D-Bus interface description
- * it was derived from.
+ * it was derived from. Note that it links to GLib, so must comply with the
+ * LGPL linking clauses.
  */\n'''
 
 def generate_namespace(namespace):
@@ -51,17 +52,25 @@ def generate_namespace(namespace):
 
     return (ns, ns_upper, ns_lower)
 
+def generate_header_guard(header_name):
+    # There might be more characters that are safe to use than these, but lets
+    # stay conservative.
+    safe_valid_chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+    return ''.join(map(lambda c: c if c in safe_valid_chars else '_',
+                       header_name.upper()))
+
 class HeaderCodeGenerator:
     def __init__(self, ifaces, namespace, generate_objmanager,
                  generate_autocleanup, header_name, input_files_basenames,
-                 use_pragma, outfile):
+                 use_pragma, glib_min_required, outfile):
         self.ifaces = ifaces
         self.namespace, self.ns_upper, self.ns_lower = generate_namespace(namespace)
         self.generate_objmanager = generate_objmanager
         self.generate_autocleanup = generate_autocleanup
-        self.header_guard = header_name.upper().replace('.', '_').replace('-', '_').replace('/', '_').replace(':', '_')
+        self.header_guard = generate_header_guard(header_name)
         self.input_files_basenames = input_files_basenames
         self.use_pragma = use_pragma
+        self.glib_min_required = glib_min_required
         self.outfile = outfile
 
     # ----------------------------------------------------------------------------------------------------
@@ -112,14 +121,11 @@ class HeaderCodeGenerator:
             if len(i.methods) > 0:
                 self.outfile.write('\n')
                 for m in i.methods:
-                    unix_fd = False
-                    if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
-                        unix_fd = True
                     key = (m.since, '_method_%s'%m.name_lower)
                     value  = '  gboolean (*handle_%s) (\n'%(m.name_lower)
                     value += '    %s *object,\n'%(i.camel_name)
                     value += '    GDBusMethodInvocation *invocation'%()
-                    if unix_fd:
+                    if m.unix_fd:
                         value += ',\n    GUnixFDList *fd_list'
                     for a in m.in_args:
                         value += ',\n    %sarg_%s'%(a.ctype_in, a.name)
@@ -176,15 +182,12 @@ class HeaderCodeGenerator:
                 self.outfile.write('\n')
                 self.outfile.write('/* D-Bus method call completion functions: */\n')
                 for m in i.methods:
-                    unix_fd = False
-                    if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
-                        unix_fd = True
                     if m.deprecated:
                         self.outfile.write('G_GNUC_DEPRECATED ')
                     self.outfile.write('void %s_complete_%s (\n'
                                        '    %s *object,\n'
                                        '    GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
-                    if unix_fd:
+                    if m.unix_fd:
                         self.outfile.write(',\n    GUnixFDList *fd_list')
                     for a in m.out_args:
                         self.outfile.write(',\n    %s%s'%(a.ctype_in, a.name))
@@ -212,9 +215,6 @@ class HeaderCodeGenerator:
                 self.outfile.write('\n')
                 self.outfile.write('/* D-Bus method calls: */\n')
                 for m in i.methods:
-                    unix_fd = False
-                    if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
-                        unix_fd = True
                     # async begin
                     if m.deprecated:
                         self.outfile.write('G_GNUC_DEPRECATED ')
@@ -222,7 +222,10 @@ class HeaderCodeGenerator:
                                        '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
                     for a in m.in_args:
                         self.outfile.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
-                    if unix_fd:
+                    if self.glib_min_required >= (2, 64):
+                        self.outfile.write(',\n    GDBusCallFlags call_flags'
+                                           ',\n    gint timeout_msec')
+                    if m.unix_fd:
                         self.outfile.write(',\n    GUnixFDList *fd_list')
                     self.outfile.write(',\n'
                                        '    GCancellable *cancellable,\n'
@@ -236,7 +239,7 @@ class HeaderCodeGenerator:
                                        '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
                     for a in m.out_args:
                         self.outfile.write(',\n    %sout_%s'%(a.ctype_out, a.name))
-                    if unix_fd:
+                    if m.unix_fd:
                         self.outfile.write(',\n    GUnixFDList **out_fd_list')
                     self.outfile.write(',\n'
                                        '    GAsyncResult *res,\n'
@@ -249,11 +252,14 @@ class HeaderCodeGenerator:
                                        '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
                     for a in m.in_args:
                         self.outfile.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
-                    if unix_fd:
+                    if self.glib_min_required >= (2, 64):
+                        self.outfile.write(',\n    GDBusCallFlags call_flags'
+                                           ',\n    gint timeout_msec')
+                    if m.unix_fd:
                         self.outfile.write(',\n    GUnixFDList  *fd_list')
                     for a in m.out_args:
                         self.outfile.write(',\n    %sout_%s'%(a.ctype_out, a.name))
-                    if unix_fd:
+                    if m.unix_fd:
                         self.outfile.write(',\n    GUnixFDList **out_fd_list')
                     self.outfile.write(',\n'
                                        '    GCancellable *cancellable,\n'
@@ -619,12 +625,13 @@ class HeaderCodeGenerator:
 # ----------------------------------------------------------------------------------------------------
 
 class InterfaceInfoHeaderCodeGenerator:
-    def __init__(self, ifaces, namespace, header_name, input_files_basenames, use_pragma, outfile):
+    def __init__(self, ifaces, namespace, header_name, input_files_basenames, use_pragma, glib_min_required, outfile):
         self.ifaces = ifaces
         self.namespace, self.ns_upper, self.ns_lower = generate_namespace(namespace)
-        self.header_guard = header_name.upper().replace('.', '_').replace('-', '_').replace('/', '_').replace(':', '_')
+        self.header_guard = generate_header_guard(header_name)
         self.input_files_basenames = input_files_basenames
         self.use_pragma = use_pragma
+        self.glib_min_required = glib_min_required
         self.outfile = outfile
 
     # ----------------------------------------------------------------------------------------------------
@@ -672,11 +679,12 @@ class InterfaceInfoHeaderCodeGenerator:
 # ----------------------------------------------------------------------------------------------------
 
 class InterfaceInfoBodyCodeGenerator:
-    def __init__(self, ifaces, namespace, header_name, input_files_basenames, outfile):
+    def __init__(self, ifaces, namespace, header_name, input_files_basenames, glib_min_required, outfile):
         self.ifaces = ifaces
         self.namespace, self.ns_upper, self.ns_lower = generate_namespace(namespace)
         self.header_name = header_name
         self.input_files_basenames = input_files_basenames
+        self.glib_min_required = glib_min_required
         self.outfile = outfile
 
     # ----------------------------------------------------------------------------------------------------
@@ -904,13 +912,14 @@ class InterfaceInfoBodyCodeGenerator:
 
 class CodeGenerator:
     def __init__(self, ifaces, namespace, generate_objmanager, header_name,
-                 input_files_basenames, docbook_gen, outfile):
+                 input_files_basenames, docbook_gen, glib_min_required, outfile):
         self.ifaces = ifaces
         self.namespace, self.ns_upper, self.ns_lower = generate_namespace(namespace)
         self.generate_objmanager = generate_objmanager
         self.header_name = header_name
         self.input_files_basenames = input_files_basenames
         self.docbook_gen = docbook_gen
+        self.glib_min_required = glib_min_required
         self.outfile = outfile
 
     # ----------------------------------------------------------------------------------------------------
@@ -1153,9 +1162,6 @@ class CodeGenerator:
 
             if len(i.methods) > 0:
                 for m in i.methods:
-                    unix_fd = False
-                    if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
-                        unix_fd = True
                     self.generate_args('_%s_method_info_%s_IN_ARG'%(i.name_lower, m.name_lower), m.in_args)
                     self.generate_args('_%s_method_info_%s_OUT_ARG'%(i.name_lower, m.name_lower), m.out_args)
 
@@ -1181,7 +1187,7 @@ class CodeGenerator:
                     self.outfile.write('  },\n'
                                        '  "handle-%s",\n'
                                        '  %s\n'
-                                       %(m.name_hyphen, 'TRUE' if unix_fd else 'FALSE'))
+                                       %(m.name_hyphen, 'TRUE' if m.unix_fd else 'FALSE'))
                     self.outfile.write('};\n'
                                        '\n')
 
@@ -1399,16 +1405,13 @@ class CodeGenerator:
         if len(i.methods) > 0:
             self.outfile.write('  /* GObject signals for incoming D-Bus method calls: */\n')
             for m in i.methods:
-                unix_fd = False
-                if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
-                    unix_fd = True
                 self.outfile.write(self.docbook_gen.expand(
                         '  /**\n'
                         '   * %s::handle-%s:\n'
                         '   * @object: A #%s.\n'
                         '   * @invocation: A #GDBusMethodInvocation.\n'
                         %(i.camel_name, m.name_hyphen, i.camel_name), False))
-                if unix_fd:
+                if m.unix_fd:
                     self.outfile.write('   * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
                 for a in m.in_args:
                     self.outfile.write('   * @arg_%s: Argument passed by remote caller.\n'%(a.name))
@@ -1421,7 +1424,7 @@ class CodeGenerator:
                         '   * Returns: %%TRUE if the invocation was handled, %%FALSE to let other signal handlers run.\n'
                         %(i.name, m.name, i.name_lower, m.name_lower), False))
                 self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 2)
-                if unix_fd:
+                if m.unix_fd:
                     extra_args = 2
                 else:
                     extra_args = 1
@@ -1436,7 +1439,7 @@ class CodeGenerator:
                                    '    %d,\n'
                                    '    G_TYPE_DBUS_METHOD_INVOCATION'
                                    %(m.name_hyphen, i.camel_name, m.name_lower, len(m.in_args) + extra_args))
-                if unix_fd:
+                if m.unix_fd:
                     self.outfile.write(', G_TYPE_UNIX_FD_LIST')
                 for a in m.in_args:
                     self.outfile.write(', %s'%(a.gtype))
@@ -1565,7 +1568,7 @@ class CodeGenerator:
                     ' *\n'
                     %(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint), False))
             if p.arg.free_func != None:
-                self.outfile.write(' * <warning>The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use %s_dup_%s() if on another thread.</warning>\n'
+                self.outfile.write(' * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use %s_dup_%s() if on another thread.\n'
                                    ' *\n'
                                    ' * Returns: (transfer none) (nullable): The property value or %%NULL if the property is not set. Do not free the returned value, it belongs to @object.\n'
                                    %(i.name_lower, p.name_lower))
@@ -1662,9 +1665,6 @@ class CodeGenerator:
 
     def generate_method_calls(self, i):
         for m in i.methods:
-            unix_fd = False
-            if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
-                unix_fd = True
             # async begin
             self.outfile.write('/**\n'
                                ' * %s_call_%s:\n'
@@ -1672,7 +1672,12 @@ class CodeGenerator:
                                %(i.name_lower, m.name_lower, i.camel_name))
             for a in m.in_args:
                 self.outfile.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
-            if unix_fd:
+            if self.glib_min_required >= (2, 64):
+                self.outfile.write(' * @call_flags: Flags from the #GDBusCallFlags enumeration. If you want to allow interactive\n'
+                                   '       authorization be sure to set %G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION.\n'
+                                   ' * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning "infinite") or\n'
+                                   '       -1 to use the proxy default timeout.\n')
+            if m.unix_fd:
                 self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
             self.outfile.write(self.docbook_gen.expand(
                     ' * @cancellable: (nullable): A #GCancellable or %%NULL.\n'
@@ -1680,7 +1685,7 @@ class CodeGenerator:
                     ' * @user_data: User data to pass to @callback.\n'
                     ' *\n'
                     ' * Asynchronously invokes the %s.%s() D-Bus method on @proxy.\n'
-                    ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                    ' * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).\n'
                     ' * You can then call %s_call_%s_finish() to get the result of the operation.\n'
                     ' *\n'
                     ' * See %s_call_%s_sync() for the synchronous, blocking version of this method.\n'
@@ -1691,14 +1696,17 @@ class CodeGenerator:
                                '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
             for a in m.in_args:
                 self.outfile.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
-            if unix_fd:
+            if self.glib_min_required >= (2, 64):
+                self.outfile.write(',\n    GDBusCallFlags call_flags'
+                                   ',\n    gint timeout_msec')
+            if m.unix_fd:
                 self.outfile.write(',\n    GUnixFDList *fd_list')
             self.outfile.write(',\n'
                                '    GCancellable *cancellable,\n'
                                '    GAsyncReadyCallback callback,\n'
                                '    gpointer user_data)\n'
                                '{\n')
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write('  g_dbus_proxy_call_with_unix_fd_list (G_DBUS_PROXY (proxy),\n')
             else:
                 self.outfile.write('  g_dbus_proxy_call (G_DBUS_PROXY (proxy),\n')
@@ -1709,10 +1717,14 @@ class CodeGenerator:
             self.outfile.write(')"')
             for a in m.in_args:
                 self.outfile.write(',\n                   arg_%s'%(a.name))
-            self.outfile.write('),\n'
-                               '    G_DBUS_CALL_FLAGS_NONE,\n'
-                               '    -1,\n')
-            if unix_fd:
+            self.outfile.write('),\n')
+            if self.glib_min_required >= (2, 64):
+                self.outfile.write('    call_flags,\n'
+                                   '    timeout_msec,\n')
+            else:
+                self.outfile.write('    G_DBUS_CALL_FLAGS_NONE,\n'
+                                   '    -1,\n')
+            if m.unix_fd:
                 self.outfile.write('    fd_list,\n')
             self.outfile.write('    cancellable,\n'
                                '    callback,\n'
@@ -1726,7 +1738,7 @@ class CodeGenerator:
                                %(i.name_lower, m.name_lower, i.camel_name))
             for a in m.out_args:
                 self.outfile.write(' * @out_%s: (out) (optional)%s: Return location for return parameter or %%NULL to ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write(' * @out_fd_list: (out) (optional): Return location for a #GUnixFDList or %NULL to ignore.\n')
             self.outfile.write(self.docbook_gen.expand(
                     ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_call_%s().\n'
@@ -1742,14 +1754,14 @@ class CodeGenerator:
                                '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
             for a in m.out_args:
                 self.outfile.write(',\n    %sout_%s'%(a.ctype_out, a.name))
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write(',\n    GUnixFDList **out_fd_list')
             self.outfile.write(',\n'
                                '    GAsyncResult *res,\n'
                                '    GError **error)\n'
                                '{\n'
                                '  GVariant *_ret;\n')
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write('  _ret = g_dbus_proxy_call_with_unix_fd_list_finish (G_DBUS_PROXY (proxy), out_fd_list, res, error);\n')
             else:
                 self.outfile.write('  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);\n')
@@ -1777,11 +1789,16 @@ class CodeGenerator:
                                %(i.name_lower, m.name_lower, i.camel_name))
             for a in m.in_args:
                 self.outfile.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
-            if unix_fd:
+            if self.glib_min_required >= (2, 64):
+                self.outfile.write(' * @call_flags: Flags from the #GDBusCallFlags enumeration. If you want to allow interactive\n'
+                                   '       authorization be sure to set %G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION.\n'
+                                   ' * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning "infinite") or\n'
+                                   '       -1 to use the proxy default timeout.\n')
+            if m.unix_fd:
                 self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
             for a in m.out_args:
                 self.outfile.write(' * @out_%s: (out) (optional)%s: Return location for return parameter or %%NULL to ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
             self.outfile.write(self.docbook_gen.expand(
                     ' * @cancellable: (nullable): A #GCancellable or %%NULL.\n'
@@ -1799,18 +1816,21 @@ class CodeGenerator:
                                '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
             for a in m.in_args:
                 self.outfile.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
-            if unix_fd:
+            if self.glib_min_required >= (2, 64):
+                self.outfile.write(',\n    GDBusCallFlags call_flags'
+                                   ',\n    gint timeout_msec')
+            if m.unix_fd:
                 self.outfile.write(',\n    GUnixFDList  *fd_list')
             for a in m.out_args:
                 self.outfile.write(',\n    %sout_%s'%(a.ctype_out, a.name))
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write(',\n    GUnixFDList **out_fd_list')
             self.outfile.write(',\n'
                                '    GCancellable *cancellable,\n'
                                '    GError **error)\n'
                                '{\n'
                                '  GVariant *_ret;\n')
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write('  _ret = g_dbus_proxy_call_with_unix_fd_list_sync (G_DBUS_PROXY (proxy),\n')
             else:
                 self.outfile.write('  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),\n')
@@ -1821,10 +1841,14 @@ class CodeGenerator:
             self.outfile.write(')"')
             for a in m.in_args:
                 self.outfile.write(',\n                   arg_%s'%(a.name))
-            self.outfile.write('),\n'
-                               '    G_DBUS_CALL_FLAGS_NONE,\n'
-                               '    -1,\n')
-            if unix_fd:
+            self.outfile.write('),\n')
+            if self.glib_min_required >= (2, 64):
+                self.outfile.write('    call_flags,\n'
+                                   '    timeout_msec,\n')
+            else:
+                self.outfile.write('    G_DBUS_CALL_FLAGS_NONE,\n'
+                                   '    -1,\n')
+            if m.unix_fd:
                 self.outfile.write('    fd_list,\n'
                                    '    out_fd_list,\n')
             self.outfile.write('    cancellable,\n'
@@ -1849,15 +1873,12 @@ class CodeGenerator:
 
     def generate_method_completers(self, i):
         for m in i.methods:
-            unix_fd = False
-            if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
-                unix_fd = True
             self.outfile.write('/**\n'
                                ' * %s_complete_%s:\n'
                                ' * @object: A #%s.\n'
                                ' * @invocation: (transfer full): A #GDBusMethodInvocation.\n'
                                %(i.name_lower, m.name_lower, i.camel_name))
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
             for a in m.out_args:
                 self.outfile.write(' * @%s: Parameter to return.\n'%(a.name))
@@ -1872,14 +1893,14 @@ class CodeGenerator:
                                '%s_complete_%s (\n'
                                '    %s *object,\n'
                                '    GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write(',\n    GUnixFDList *fd_list')
             for a in m.out_args:
                 self.outfile.write(',\n    %s%s'%(a.ctype_in, a.name))
             self.outfile.write(')\n'
                                '{\n')
 
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write('  g_dbus_method_invocation_return_value_with_unix_fd_list (invocation,\n'
                                    '    g_variant_new ("(')
             else:
@@ -1890,7 +1911,7 @@ class CodeGenerator:
             self.outfile.write(')"')
             for a in m.out_args:
                 self.outfile.write(',\n                   %s'%(a.name))
-            if unix_fd:
+            if m.unix_fd:
                 self.outfile.write('),\n    fd_list);\n')
             else:
                 self.outfile.write('));\n')
@@ -2226,7 +2247,7 @@ class CodeGenerator:
                 ' *\n'
                 ' * Asynchronously creates a proxy for the D-Bus interface #%s. See g_dbus_proxy_new() for more details.\n'
                 ' *\n'
-                ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                ' * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).\n'
                 ' * You can then call %s_proxy_new_finish() to get the result of the operation.\n'
                 ' *\n'
                 ' * See %s_proxy_new_sync() for the synchronous, blocking version of this constructor.\n'
@@ -2324,7 +2345,7 @@ class CodeGenerator:
                 ' *\n'
                 ' * Like %s_proxy_new() but takes a #GBusType instead of a #GDBusConnection.\n'
                 ' *\n'
-                ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                ' * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).\n'
                 ' * You can then call %s_proxy_new_for_bus_finish() to get the result of the operation.\n'
                 ' *\n'
                 ' * See %s_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.\n'
@@ -3113,7 +3134,7 @@ class CodeGenerator:
                     ' *\n'
                     ' * Like %sobject_get_%s() but doesn\'t increase the reference count on the returned object.\n'
                     ' *\n'
-                    ' * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>\n'
+                    ' * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.\n'
                     ' *\n'
                     ' * Returns: (transfer none) (nullable): A #%s or %%NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.\n'
                     %(self.ns_lower, i.name_upper.lower(), self.namespace, self.ns_lower, i.name_upper.lower(), i.camel_name), False))
@@ -3532,7 +3553,7 @@ class CodeGenerator:
                 ' *\n'
                 ' * Asynchronously creates #GDBusObjectManagerClient using %sobject_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details.\n'
                 ' *\n'
-                ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                ' * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).\n'
                 ' * You can then call %sobject_manager_client_new_finish() to get the result of the operation.\n'
                 ' *\n'
                 ' * See %sobject_manager_client_new_sync() for the synchronous, blocking version of this constructor.\n'
@@ -3630,7 +3651,7 @@ class CodeGenerator:
                 ' *\n'
                 ' * Like %sobject_manager_client_new() but takes a #GBusType instead of a #GDBusConnection.\n'
                 ' *\n'
-                ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                ' * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).\n'
                 ' * You can then call %sobject_manager_client_new_for_bus_finish() to get the result of the operation.\n'
                 ' *\n'
                 ' * See %sobject_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.\n'
index 7683f0a..75d97e3 100644 (file)
@@ -149,7 +149,7 @@ def apply_annotations(iface_list, annotation_list):
 
 def codegen_main():
     arg_parser = argparse.ArgumentParser(description='D-Bus code and documentation generator')
-    arg_parser.add_argument('files', metavar='FILE', nargs='*',
+    arg_parser.add_argument('files', metavar='FILE', nargs='+',
                             help='D-Bus introspection XML file')
     arg_parser.add_argument('--xml-files', metavar='FILE', action='append', default=[],
                             help=argparse.SUPPRESS)
@@ -167,6 +167,10 @@ def codegen_main():
                             help='Use "pragma once" as the inclusion guard')
     arg_parser.add_argument('--annotate', nargs=3, action='append', metavar='WHAT KEY VALUE',
                             help='Add annotation (may be used several times)')
+    arg_parser.add_argument('--glib-min-required', metavar='VERSION',
+                            help='Minimum version of GLib to be supported by the outputted code (default: 2.30)')
+    arg_parser.add_argument('--glib-max-allowed', metavar='VERSION',
+                            help='Maximum version of GLib to be used by the outputted code (default: current GLib version)')
 
     group = arg_parser.add_mutually_exclusive_group()
     group.add_argument('--generate-c-code', metavar='OUTFILES',
@@ -233,12 +237,55 @@ def codegen_main():
         c_file = args.output
         header_name = os.path.splitext(os.path.basename(c_file))[0] + '.h'
 
+    # Check the minimum GLib version. The minimum --glib-min-required is 2.30,
+    # because that’s when gdbus-codegen was introduced. Support 1, 2 or 3
+    # component versions, but ignore the micro component if it’s present.
+    if args.glib_min_required:
+        try:
+            parts = args.glib_min_required.split('.', 3)
+            glib_min_required = (int(parts[0]),
+                                 int(parts[1] if len(parts) > 1 else 0))
+            # Ignore micro component, but still validate it:
+            _ = int(parts[2] if len(parts) > 2 else 0)
+        except (ValueError, IndexError):
+            print_error('Unrecognized --glib-min-required string ‘{}’'.format(
+                args.glib_min_required))
+
+        if glib_min_required < (2, 30):
+            print_error('Invalid --glib-min-required string ‘{}’: minimum '
+                        'version is 2.30'.format(args.glib_min_required))
+    else:
+        glib_min_required = (2, 30)
+
+    # And the maximum GLib version.
+    if args.glib_max_allowed:
+        try:
+            parts = args.glib_max_allowed.split('.', 3)
+            glib_max_allowed = (int(parts[0]),
+                                int(parts[1] if len(parts) > 1 else 0))
+            # Ignore micro component, but still validate it:
+            _ = int(parts[2] if len(parts) > 2 else 0)
+        except (ValueError, IndexError):
+            print_error('Unrecognized --glib-max-allowed string ‘{}’'.format(
+                args.glib_max_allowed))
+    else:
+        glib_max_allowed = (config.MAJOR_VERSION, config.MINOR_VERSION)
+
+    # Round --glib-max-allowed up to the next stable release.
+    glib_max_allowed = \
+        (glib_max_allowed[0], glib_max_allowed[1] + (glib_max_allowed[1] % 2))
+
+    if glib_max_allowed < glib_min_required:
+        print_error('Invalid versions: --glib-min-required ({}) must be '
+                    'less than or equal to --glib-max-allowed ({})'.format(glib_min_required, glib_max_allowed))
+
     all_ifaces = []
     input_files_basenames = []
     for fname in sorted(args.files + args.xml_files):
         with open(fname, 'rb') as f:
             xml_data = f.read()
-        parsed_ifaces = parser.parse_dbus_xml(xml_data)
+        parsed_ifaces = parser.parse_dbus_xml(xml_data,
+                                              h_type_implies_unix_fd=(glib_min_required >= (2, 64)))
         all_ifaces.extend(parsed_ifaces)
         input_files_basenames.append(os.path.basename(fname))
 
@@ -262,6 +309,7 @@ def codegen_main():
                                               header_name,
                                               input_files_basenames,
                                               args.pragma_once,
+                                              glib_min_required,
                                               outfile)
             gen.generate()
 
@@ -273,6 +321,7 @@ def codegen_main():
                                         header_name,
                                         input_files_basenames,
                                         docbook_gen,
+                                        glib_min_required,
                                         outfile)
             gen.generate()
 
@@ -283,6 +332,7 @@ def codegen_main():
                                                            header_name,
                                                            input_files_basenames,
                                                            args.pragma_once,
+                                                           glib_min_required,
                                                            outfile)
             gen.generate()
 
@@ -292,6 +342,7 @@ def codegen_main():
                                                          args.c_namespace,
                                                          header_name,
                                                          input_files_basenames,
+                                                         glib_min_required,
                                                          outfile)
             gen.generate()
 
index a91178a..4e6df5a 100644 (file)
@@ -20,3 +20,5 @@
 # Author: David Zeuthen <davidz@redhat.com>
 
 VERSION = "@VERSION@"
+MAJOR_VERSION = @MAJOR_VERSION@
+MINOR_VERSION = @MINOR_VERSION@
index 60c53c4..415a5cc 100644 (file)
@@ -252,14 +252,16 @@ class Arg:
             a.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
 
 class Method:
-    def __init__(self, name):
+    def __init__(self, name, h_type_implies_unix_fd=True):
         self.name = name
+        self.h_type_implies_unix_fd = h_type_implies_unix_fd
         self.in_args = []
         self.out_args = []
         self.annotations = []
         self.doc_string = ''
         self.since = ''
         self.deprecated = False
+        self.unix_fd = False
 
     def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
         if len(self.doc_string) == 0:
@@ -283,14 +285,21 @@ class Method:
         for a in self.in_args:
             a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count)
             arg_count += 1
+            if self.h_type_implies_unix_fd and 'h' in a.signature:
+                self.unix_fd = True
 
         for a in self.out_args:
             a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count)
             arg_count += 1
+            if self.h_type_implies_unix_fd and 'h' in a.signature:
+                self.unix_fd = True
 
         if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
             self.deprecated = True
 
+        if utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.UnixFD'):
+            self.unix_fd = True
+
         for a in self.annotations:
             a.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
 
index 121e9e6..c0caf0e 100644 (file)
@@ -10,6 +10,8 @@ gdbus_codegen_files = [
 
 gdbus_codegen_conf = configuration_data()
 gdbus_codegen_conf.set('VERSION', glib_version)
+gdbus_codegen_conf.set('MAJOR_VERSION', major_version)
+gdbus_codegen_conf.set('MINOR_VERSION', minor_version)
 gdbus_codegen_conf.set('PYTHON', python_name)
 gdbus_codegen_conf.set('DATADIR', glib_datadir)
 
@@ -22,7 +24,7 @@ gdbus_codegen = configure_file(input : 'gdbus-codegen.in',
   # Provide tools for others when we're a subproject and they use the Meson GNOME module
 meson.override_find_program('gdbus-codegen', gdbus_codegen)
 
-codegen_dir = join_paths(get_option('datadir'), 'glib-2.0/codegen')
+codegen_dir = join_paths(glib_datadir, 'glib-2.0', 'codegen')
 
 gdbus_codegen_built_files = []
 gdbus_codegen_built_files += configure_file(input : 'config.py.in',
index f49136d..7dcc735 100644 (file)
@@ -36,7 +36,7 @@ class DBusXMLParser:
     STATE_ANNOTATION = 'annotation'
     STATE_IGNORED = 'ignored'
 
-    def __init__(self, xml_data):
+    def __init__(self, xml_data, h_type_implies_unix_fd=True):
         self._parser = xml.parsers.expat.ParserCreate()
         self._parser.CommentHandler = self.handle_comment
         self._parser.CharacterDataHandler = self.handle_char_data
@@ -53,6 +53,8 @@ class DBusXMLParser:
 
         self.doc_comment_last_symbol = ''
 
+        self._h_type_implies_unix_fd = h_type_implies_unix_fd
+
         self._parser.Parse(xml_data)
 
     COMMENT_STATE_BEGIN = 'begin'
@@ -163,7 +165,8 @@ class DBusXMLParser:
         elif self.state == DBusXMLParser.STATE_INTERFACE:
             if name == DBusXMLParser.STATE_METHOD:
                 self.state = DBusXMLParser.STATE_METHOD
-                method = dbustypes.Method(attrs['name'])
+                method = dbustypes.Method(attrs['name'],
+                                          h_type_implies_unix_fd=self._h_type_implies_unix_fd)
                 self._cur_object.methods.append(method)
                 self._cur_object = method
             elif name == DBusXMLParser.STATE_SIGNAL:
@@ -288,6 +291,6 @@ class DBusXMLParser:
         self.state = self.state_stack.pop()
         self._cur_object = self._cur_object_stack.pop()
 
-def parse_dbus_xml(xml_data):
-    parser = DBusXMLParser(xml_data)
+def parse_dbus_xml(xml_data, h_type_implies_unix_fd):
+    parser = DBusXMLParser(xml_data, h_type_implies_unix_fd)
     return parser.parsed_interfaces
index 57978f1..863a5e8 100644 (file)
@@ -414,7 +414,8 @@ connection_get_group (void)
 }
 
 static GDBusConnection *
-connection_get_dbus_connection (GError **error)
+connection_get_dbus_connection (gboolean   require_message_bus,
+                                GError   **error)
 {
   GDBusConnection *c;
 
@@ -450,8 +451,11 @@ connection_get_dbus_connection (GError **error)
     }
   else if (opt_connection_address != NULL)
     {
+      GDBusConnectionFlags flags = G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT;
+      if (require_message_bus)
+        flags |= G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION;
       c = g_dbus_connection_new_for_address_sync (opt_connection_address,
-                                                  G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT,
+                                                  flags,
                                                   NULL, /* GDBusAuthObserver */
                                                   NULL, /* GCancellable */
                                                   error);
@@ -649,7 +653,7 @@ handle_emit (gint        *argc,
     }
 
   error = NULL;
-  c = connection_get_dbus_connection (&error);
+  c = connection_get_dbus_connection ((opt_emit_dest != NULL), &error);
   if (c == NULL)
     {
       if (request_completion)
@@ -956,7 +960,7 @@ handle_call (gint        *argc,
     }
 
   error = NULL;
-  c = connection_get_dbus_connection (&error);
+  c = connection_get_dbus_connection (TRUE, &error);
   if (c == NULL)
     {
       if (request_completion)
@@ -1750,7 +1754,7 @@ handle_introspect (gint        *argc,
     }
 
   error = NULL;
-  c = connection_get_dbus_connection (&error);
+  c = connection_get_dbus_connection (TRUE, &error);
   if (c == NULL)
     {
       if (request_completion)
@@ -1982,7 +1986,7 @@ handle_monitor (gint        *argc,
     }
 
   error = NULL;
-  c = connection_get_dbus_connection (&error);
+  c = connection_get_dbus_connection (TRUE, &error);
   if (c == NULL)
     {
       if (request_completion)
@@ -2202,7 +2206,7 @@ handle_wait (gint        *argc,
     }
 
   error = NULL;
-  c = connection_get_dbus_connection (&error);
+  c = connection_get_dbus_connection (TRUE, &error);
   if (c == NULL)
     {
       if (request_completion)
index 3015457..6958d7c 100644 (file)
@@ -244,8 +244,8 @@ is_valid_nonce_tcp (const gchar  *address_entry,
           g_set_error (error,
                        G_IO_ERROR,
                        G_IO_ERROR_INVALID_ARGUMENT,
-                       _("Error in address “%s” — the port attribute is malformed"),
-                       address_entry);
+                       _("Error in address “%s” — the “%s” attribute is malformed"),
+                       address_entry, "port");
           goto out;
         }
     }
@@ -255,8 +255,8 @@ is_valid_nonce_tcp (const gchar  *address_entry,
       g_set_error (error,
                    G_IO_ERROR,
                    G_IO_ERROR_INVALID_ARGUMENT,
-                   _("Error in address “%s” — the family attribute is malformed"),
-                   address_entry);
+                   _("Error in address “%s” — the “%s” attribute is malformed"),
+                   address_entry, "family");
       goto out;
     }
 
@@ -265,9 +265,17 @@ is_valid_nonce_tcp (const gchar  *address_entry,
       /* TODO: validate host */
     }
 
-  nonce_file = nonce_file; /* To avoid -Wunused-but-set-variable */
+  if (nonce_file != NULL && *nonce_file == '\0')
+    {
+      g_set_error (error,
+                   G_IO_ERROR,
+                   G_IO_ERROR_INVALID_ARGUMENT,
+                   _("Error in address “%s” — the “%s” attribute is malformed"),
+                   address_entry, "noncefile");
+      goto out;
+    }
 
-  ret= TRUE;
+  ret = TRUE;
 
  out:
   g_list_free (keys);
@@ -325,8 +333,8 @@ is_valid_tcp (const gchar  *address_entry,
           g_set_error (error,
                        G_IO_ERROR,
                        G_IO_ERROR_INVALID_ARGUMENT,
-                       _("Error in address “%s” — the port attribute is malformed"),
-                       address_entry);
+                       _("Error in address “%s” — the “%s” attribute is malformed"),
+                       address_entry, "port");
           goto out;
         }
     }
@@ -336,8 +344,8 @@ is_valid_tcp (const gchar  *address_entry,
       g_set_error (error,
                    G_IO_ERROR,
                    G_IO_ERROR_INVALID_ARGUMENT,
-                   _("Error in address “%s” — the family attribute is malformed"),
-                   address_entry);
+                   _("Error in address “%s” — the “%s” attribute is malformed"),
+                   address_entry, "family");
       goto out;
     }
 
index 2754d3c..5e3e93d 100644 (file)
@@ -234,6 +234,9 @@ ensure_keyring_directory (GError **error)
 {
   gchar *path;
   const gchar *e;
+#ifdef G_OS_UNIX
+  struct stat statbuf;
+#endif
 
   g_return_val_if_fail (error == NULL || *error == NULL, NULL);
 
@@ -249,48 +252,54 @@ ensure_keyring_directory (GError **error)
                                NULL);
     }
 
-  if (g_file_test (path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))
+#ifdef G_OS_UNIX
+  if (stat (path, &statbuf) != 0)
     {
-      if (g_getenv ("G_DBUS_COOKIE_SHA1_KEYRING_DIR_IGNORE_PERMISSION") == NULL)
+      int errsv = errno;
+
+      if (errsv != ENOENT)
         {
-#ifdef G_OS_UNIX
-          struct stat statbuf;
-          if (stat (path, &statbuf) != 0)
-            {
-              int errsv = errno;
-              g_set_error (error,
-                           G_IO_ERROR,
-                           g_io_error_from_errno (errsv),
-                           _("Error when getting information for directory “%s”: %s"),
-                           path,
-                           g_strerror (errsv));
-              g_free (path);
-              path = NULL;
-              goto out;
-            }
-          if ((statbuf.st_mode  & 0777) != 0700)
-            {
-              g_set_error (error,
-                           G_IO_ERROR,
-                           G_IO_ERROR_FAILED,
-                           _("Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"),
-                           path,
-                           (guint) (statbuf.st_mode & 0777));
-              g_free (path);
-              path = NULL;
-              goto out;
-            }
-#else
+          g_set_error (error,
+                       G_IO_ERROR,
+                       g_io_error_from_errno (errsv),
+                       _("Error when getting information for directory “%s”: %s"),
+                       path,
+                       g_strerror (errsv));
+          g_clear_pointer (&path, g_free);
+          return NULL;
+        }
+    }
+  else if (S_ISDIR (statbuf.st_mode))
+    {
+      if (g_getenv ("G_DBUS_COOKIE_SHA1_KEYRING_DIR_IGNORE_PERMISSION") == NULL &&
+          (statbuf.st_mode & 0777) != 0700)
+        {
+          g_set_error (error,
+                       G_IO_ERROR,
+                       G_IO_ERROR_FAILED,
+                       _("Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"),
+                       path,
+                       (guint) (statbuf.st_mode & 0777));
+          g_clear_pointer (&path, g_free);
+          return NULL;
+        }
+
+      return g_steal_pointer (&path);
+    }
+#else  /* if !G_OS_UNIX */
+  /* On non-Unix platforms, check that it exists as a directory, but don’t do
+   * permissions checks at the moment. */
+  if (g_file_test (path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))
+    {
 #ifdef __GNUC__
 #pragma GCC diagnostic push
 #pragma GCC diagnostic warning "-Wcpp"
 #warning Please implement permission checking on this non-UNIX platform
 #pragma GCC diagnostic pop
-#endif
-#endif
-        }
-      goto out;
+#endif  /* __GNUC__ */
+      return g_steal_pointer (&path);
     }
+#endif  /* if !G_OS_UNIX */
 
   if (g_mkdir_with_parents (path, 0700) != 0)
     {
@@ -301,13 +310,11 @@ ensure_keyring_directory (GError **error)
                    _("Error creating directory “%s”: %s"),
                    path,
                    g_strerror (errsv));
-      g_free (path);
-      path = NULL;
-      goto out;
+      g_clear_pointer (&path, g_free);
+      return NULL;
     }
 
-out:
-  return path;
+  return g_steal_pointer (&path);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -450,25 +457,52 @@ _log (const gchar *message,
   g_free (s);
 }
 
+/* Returns FD for lock file, if it was created exclusively (didn't exist already,
+ * and was created successfully) */
+static gint
+create_lock_exclusive (const gchar  *lock_path,
+                       GError      **error)
+{
+  int errsv;
+  gint ret;
+
+  ret = g_open (lock_path, O_CREAT | O_EXCL, 0600);
+  errsv = errno;
+  if (ret < 0)
+    {
+      g_set_error (error,
+                   G_IO_ERROR,
+                   g_io_error_from_errno (errsv),
+                   _("Error creating lock file “%s”: %s"),
+                   lock_path,
+                   g_strerror (errsv));
+      return -1;
+    }
+
+  return ret;
+}
+
 static gint
 keyring_acquire_lock (const gchar  *path,
                       GError      **error)
 {
-  gchar *lock;
+  gchar *lock = NULL;
   gint ret;
   guint num_tries;
-#ifdef EEXISTS
-  guint num_create_tries;
-#endif
   int errsv;
 
-  g_return_val_if_fail (path != NULL, FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+  /* Total possible sleep period = max_tries * timeout_usec = 0.5s */
+  const guint max_tries = 50;
+  const guint timeout_usec = 1000 * 10;
+
+  g_return_val_if_fail (path != NULL, -1);
+  g_return_val_if_fail (error == NULL || *error == NULL, -1);
 
   ret = -1;
-  lock = g_strdup_printf ("%s.lock", path);
+  lock = g_strconcat (path, ".lock", NULL);
 
   /* This is what the D-Bus spec says
+   * (https://dbus.freedesktop.org/doc/dbus-specification.html#auth-mechanisms-sha)
    *
    *  Create a lockfile name by appending ".lock" to the name of the
    *  cookie file. The server should attempt to create this file using
@@ -481,66 +515,43 @@ keyring_acquire_lock (const gchar  *path,
    *         real locking implementations are still flaky on network filesystems
    */
 
-#ifdef EEXISTS
-  num_create_tries = 0;
- again:
-#endif
-  num_tries = 0;
-  while (g_file_test (lock, G_FILE_TEST_EXISTS))
+  for (num_tries = 0; num_tries < max_tries; num_tries++)
     {
+      /* Ignore the error until the final call. */
+      ret = create_lock_exclusive (lock, NULL);
+      if (ret >= 0)
+        break;
+
       /* sleep 10ms, then try again */
-      g_usleep (1000*10);
-      num_tries++;
-      if (num_tries == 50)
-        {
-          /* ok, we slept 50*10ms = 0.5 seconds. Conclude that the lock file must be
-           * stale (nuke the it from orbit)
-           */
-          if (g_unlink (lock) != 0)
-            {
-              errsv = errno;
-              g_set_error (error,
-                           G_IO_ERROR,
-                           g_io_error_from_errno (errsv),
-                           _("Error deleting stale lock file “%s”: %s"),
-                           lock,
-                           g_strerror (errsv));
-              goto out;
-            }
-          _log ("Deleted stale lock file '%s'", lock);
-          break;
-        }
+      g_usleep (timeout_usec);
     }
 
-  ret = g_open (lock, O_CREAT |
-#ifdef O_EXCL
-                O_EXCL,
-#else
-                0,
-#endif
-                0700);
-  errsv = errno;
-  if (ret == -1)
+  if (num_tries == max_tries)
     {
-#ifdef EEXISTS
-      /* EEXIST: pathname already exists and O_CREAT and O_EXCL were used. */
-      if (errsv == EEXISTS)
+      /* ok, we slept 50*10ms = 0.5 seconds. Conclude that the lock file must be
+       * stale (nuke it from orbit)
+       */
+      if (g_unlink (lock) != 0)
         {
-          num_create_tries++;
-          if (num_create_tries < 5)
-            goto again;
+          errsv = errno;
+          g_set_error (error,
+                       G_IO_ERROR,
+                       g_io_error_from_errno (errsv),
+                       _("Error deleting stale lock file “%s”: %s"),
+                       lock,
+                       g_strerror (errsv));
+          goto out;
         }
-#endif
-      g_set_error (error,
-                   G_IO_ERROR,
-                   g_io_error_from_errno (errsv),
-                   _("Error creating lock file “%s”: %s"),
-                   lock,
-                   g_strerror (errsv));
-      goto out;
+
+      _log ("Deleted stale lock file '%s'", lock);
+
+      /* Try one last time to create it, now that we've deleted the stale one */
+      ret = create_lock_exclusive (lock, error);
+      if (ret < 0)
+        goto out;
     }
 
- out:
+out:
   g_free (lock);
   return ret;
 }
index f1f0921..1a4dae3 100644 (file)
@@ -222,7 +222,6 @@ typedef struct
 {
   GDestroyNotify              callback;
   gpointer                    user_data;
-  GMainContext               *context;
 } CallDestroyNotifyData;
 
 static gboolean
@@ -236,8 +235,6 @@ call_destroy_notify_data_in_idle (gpointer user_data)
 static void
 call_destroy_notify_data_free (CallDestroyNotifyData *data)
 {
-  if (data->context != NULL)
-    g_main_context_unref (data->context);
   g_free (data);
 }
 
@@ -258,14 +255,11 @@ call_destroy_notify (GMainContext  *context,
   CallDestroyNotifyData *data;
 
   if (callback == NULL)
-    goto out;
+    return;
 
   data = g_new0 (CallDestroyNotifyData, 1);
   data->callback = callback;
   data->user_data = user_data;
-  data->context = context;
-  if (data->context != NULL)
-    g_main_context_ref (data->context);
 
   idle_source = g_idle_source_new ();
   g_source_set_priority (idle_source, G_PRIORITY_DEFAULT);
@@ -274,11 +268,8 @@ call_destroy_notify (GMainContext  *context,
                          data,
                          (GDestroyNotify) call_destroy_notify_data_free);
   g_source_set_name (idle_source, "[gio] call_destroy_notify_data_in_idle");
-  g_source_attach (idle_source, data->context);
+  g_source_attach (idle_source, context);
   g_source_unref (idle_source);
-
- out:
-  ;
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -3148,7 +3139,7 @@ g_dbus_connection_add_filter (GDBusConnection            *connection,
 
   CONNECTION_LOCK (connection);
   data = g_new0 (FilterData, 1);
-  data->id = g_atomic_int_add (&_global_filter_id, 1); /* TODO: overflow etc. */
+  data->id = (guint) g_atomic_int_add (&_global_filter_id, 1); /* TODO: overflow etc. */
   data->ref_count = 1;
   data->filter_function = filter_function;
   data->user_data = user_data;
@@ -3248,18 +3239,9 @@ typedef struct
   gchar *object_path;
   gchar *arg0;
   GDBusSignalFlags flags;
-  GArray *subscribers;
+  GPtrArray *subscribers;  /* (owned) (element-type SignalSubscriber) */
 } SignalData;
 
-typedef struct
-{
-  GDBusSignalCallback callback;
-  gpointer user_data;
-  GDestroyNotify user_data_free_func;
-  guint id;
-  GMainContext *context;
-} SignalSubscriber;
-
 static void
 signal_data_free (SignalData *signal_data)
 {
@@ -3270,10 +3252,46 @@ signal_data_free (SignalData *signal_data)
   g_free (signal_data->member);
   g_free (signal_data->object_path);
   g_free (signal_data->arg0);
-  g_array_free (signal_data->subscribers, TRUE);
+  g_ptr_array_unref (signal_data->subscribers);
   g_free (signal_data);
 }
 
+typedef struct
+{
+  /* All fields are immutable after construction. */
+  gatomicrefcount ref_count;
+  GDBusSignalCallback callback;
+  gpointer user_data;
+  GDestroyNotify user_data_free_func;
+  guint id;
+  GMainContext *context;
+} SignalSubscriber;
+
+static SignalSubscriber *
+signal_subscriber_ref (SignalSubscriber *subscriber)
+{
+  g_atomic_ref_count_inc (&subscriber->ref_count);
+  return subscriber;
+}
+
+static void
+signal_subscriber_unref (SignalSubscriber *subscriber)
+{
+  if (g_atomic_ref_count_dec (&subscriber->ref_count))
+    {
+      /* Destroy the user data. It doesn’t matter which thread
+       * signal_subscriber_unref() is called in (or whether it’s called with a
+       * lock held), as call_destroy_notify() always defers to the next
+       * #GMainContext iteration. */
+      call_destroy_notify (subscriber->context,
+                           subscriber->user_data_free_func,
+                           subscriber->user_data);
+
+      g_main_context_unref (subscriber->context);
+      g_free (subscriber);
+    }
+}
+
 static gchar *
 args_to_rule (const gchar      *sender,
               const gchar      *interface_name,
@@ -3441,6 +3459,24 @@ is_signal_data_for_name_lost_or_acquired (SignalData *signal_data)
  * signal is unsubscribed from, and may be called after @connection
  * has been destroyed.)
  *
+ * As @callback is potentially invoked in a different thread from where it’s
+ * emitted, it’s possible for this to happen after
+ * g_dbus_connection_signal_unsubscribe() has been called in another thread.
+ * Due to this, @user_data should have a strong reference which is freed with
+ * @user_data_free_func, rather than pointing to data whose lifecycle is tied
+ * to the signal subscription. For example, if a #GObject is used to store the
+ * subscription ID from g_dbus_connection_signal_subscribe(), a strong reference
+ * to that #GObject must be passed to @user_data, and g_object_unref() passed to
+ * @user_data_free_func. You are responsible for breaking the resulting
+ * reference count cycle by explicitly unsubscribing from the signal when
+ * dropping the last external reference to the #GObject. Alternatively, a weak
+ * reference may be used.
+ *
+ * It is guaranteed that if you unsubscribe from a signal using
+ * g_dbus_connection_signal_unsubscribe() from the same thread which made the
+ * corresponding g_dbus_connection_signal_subscribe() call, @callback will not
+ * be invoked after g_dbus_connection_signal_unsubscribe() returns.
+ *
  * The returned subscription identifier is an opaque value which is guaranteed
  * to never be zero.
  *
@@ -3464,7 +3500,7 @@ g_dbus_connection_signal_subscribe (GDBusConnection     *connection,
 {
   gchar *rule;
   SignalData *signal_data;
-  SignalSubscriber subscriber;
+  SignalSubscriber *subscriber;
   GPtrArray *signal_data_array;
   const gchar *sender_unique_name;
 
@@ -3505,17 +3541,19 @@ g_dbus_connection_signal_subscribe (GDBusConnection     *connection,
   else
     sender_unique_name = "";
 
-  subscriber.callback = callback;
-  subscriber.user_data = user_data;
-  subscriber.user_data_free_func = user_data_free_func;
-  subscriber.id = g_atomic_int_add (&_global_subscriber_id, 1); /* TODO: overflow etc. */
-  subscriber.context = g_main_context_ref_thread_default ();
+  subscriber = g_new0 (SignalSubscriber, 1);
+  subscriber->ref_count = 1;
+  subscriber->callback = callback;
+  subscriber->user_data = user_data;
+  subscriber->user_data_free_func = user_data_free_func;
+  subscriber->id = (guint) g_atomic_int_add (&_global_subscriber_id, 1); /* TODO: overflow etc. */
+  subscriber->context = g_main_context_ref_thread_default ();
 
   /* see if we've already have this rule */
   signal_data = g_hash_table_lookup (connection->map_rule_to_signal_data, rule);
   if (signal_data != NULL)
     {
-      g_array_append_val (signal_data->subscribers, subscriber);
+      g_ptr_array_add (signal_data->subscribers, subscriber);
       g_free (rule);
       goto out;
     }
@@ -3529,8 +3567,8 @@ g_dbus_connection_signal_subscribe (GDBusConnection     *connection,
   signal_data->object_path           = g_strdup (object_path);
   signal_data->arg0                  = g_strdup (arg0);
   signal_data->flags                 = flags;
-  signal_data->subscribers           = g_array_new (FALSE, FALSE, sizeof (SignalSubscriber));
-  g_array_append_val (signal_data->subscribers, subscriber);
+  signal_data->subscribers           = g_ptr_array_new_with_free_func ((GDestroyNotify) signal_subscriber_unref);
+  g_ptr_array_add (signal_data->subscribers, subscriber);
 
   g_hash_table_insert (connection->map_rule_to_signal_data,
                        signal_data->rule,
@@ -3560,26 +3598,27 @@ g_dbus_connection_signal_subscribe (GDBusConnection     *connection,
 
  out:
   g_hash_table_insert (connection->map_id_to_signal_data,
-                       GUINT_TO_POINTER (subscriber.id),
+                       GUINT_TO_POINTER (subscriber->id),
                        signal_data);
 
   CONNECTION_UNLOCK (connection);
 
-  return subscriber.id;
+  return subscriber->id;
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
 
 /* called in any thread */
-/* must hold lock when calling this (except if connection->finalizing is TRUE) */
-static void
+/* must hold lock when calling this (except if connection->finalizing is TRUE)
+ * returns the number of removed subscribers */
+static guint
 unsubscribe_id_internal (GDBusConnection *connection,
-                         guint            subscription_id,
-                         GArray          *out_removed_subscribers)
+                         guint            subscription_id)
 {
   SignalData *signal_data;
   GPtrArray *signal_data_array;
   guint n;
+  guint n_removed = 0;
 
   signal_data = g_hash_table_lookup (connection->map_id_to_signal_data,
                                      GUINT_TO_POINTER (subscription_id));
@@ -3591,16 +3630,19 @@ unsubscribe_id_internal (GDBusConnection *connection,
 
   for (n = 0; n < signal_data->subscribers->len; n++)
     {
-      SignalSubscriber *subscriber;
+      SignalSubscriber *subscriber = signal_data->subscribers->pdata[n];
 
-      subscriber = &(g_array_index (signal_data->subscribers, SignalSubscriber, n));
       if (subscriber->id != subscription_id)
         continue;
 
+      /* It’s OK to rearrange the array order using the ‘fast’ #GPtrArray
+       * removal functions, since we’re going to exit the loop below anyway — we
+       * never move on to the next element. Secondly, subscription IDs are
+       * guaranteed to be unique. */
       g_warn_if_fail (g_hash_table_remove (connection->map_id_to_signal_data,
                                            GUINT_TO_POINTER (subscription_id)));
-      g_array_append_val (out_removed_subscribers, *subscriber);
-      g_array_remove_index (signal_data->subscribers, n);
+      n_removed++;
+      g_ptr_array_remove_index_fast (signal_data->subscribers, n);
 
       if (signal_data->subscribers->len == 0)
         {
@@ -3641,7 +3683,7 @@ unsubscribe_id_internal (GDBusConnection *connection,
   g_assert_not_reached ();
 
  out:
-  ;
+  return n_removed;
 }
 
 /**
@@ -3652,50 +3694,38 @@ unsubscribe_id_internal (GDBusConnection *connection,
  *
  * Unsubscribes from signals.
  *
+ * Note that there may still be D-Bus traffic to process (relating to this
+ * signal subscription) in the current thread-default #GMainContext after this
+ * function has returned. You should continue to iterate the #GMainContext
+ * until the #GDestroyNotify function passed to
+ * g_dbus_connection_signal_subscribe() is called, in order to avoid memory
+ * leaks through callbacks queued on the #GMainContext after it’s stopped being
+ * iterated.
+ *
  * Since: 2.26
  */
 void
 g_dbus_connection_signal_unsubscribe (GDBusConnection *connection,
                                       guint            subscription_id)
 {
-  GArray *subscribers;
-  guint n;
+  guint n_subscribers_removed G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
 
   g_return_if_fail (G_IS_DBUS_CONNECTION (connection));
   g_return_if_fail (check_initialized (connection));
 
-  subscribers = g_array_new (FALSE, FALSE, sizeof (SignalSubscriber));
-
   CONNECTION_LOCK (connection);
-  unsubscribe_id_internal (connection,
-                           subscription_id,
-                           subscribers);
+  n_subscribers_removed = unsubscribe_id_internal (connection, subscription_id);
   CONNECTION_UNLOCK (connection);
 
   /* invariant */
-  g_assert (subscribers->len == 0 || subscribers->len == 1);
-
-  /* call GDestroyNotify without lock held */
-  for (n = 0; n < subscribers->len; n++)
-    {
-      SignalSubscriber *subscriber;
-      subscriber = &(g_array_index (subscribers, SignalSubscriber, n));
-      call_destroy_notify (subscriber->context,
-                           subscriber->user_data_free_func,
-                           subscriber->user_data);
-      g_main_context_unref (subscriber->context);
-    }
-
-  g_array_free (subscribers, TRUE);
+  g_assert (n_subscribers_removed == 0 || n_subscribers_removed == 1);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
 
 typedef struct
 {
-  guint                subscription_id;
-  GDBusSignalCallback  callback;
-  gpointer             user_data;
+  SignalSubscriber    *subscriber;  /* (owned) */
   GDBusMessage        *message;
   GDBusConnection     *connection;
   const gchar         *sender;
@@ -3727,7 +3757,7 @@ emit_signal_instance_in_idle_cb (gpointer data)
 
 #if 0
   g_print ("in emit_signal_instance_in_idle_cb (id=%d sender=%s path=%s interface=%s member=%s params=%s)\n",
-           signal_instance->subscription_id,
+           signal_instance->subscriber->id,
            signal_instance->sender,
            signal_instance->path,
            signal_instance->interface,
@@ -3739,18 +3769,18 @@ emit_signal_instance_in_idle_cb (gpointer data)
   CONNECTION_LOCK (signal_instance->connection);
   has_subscription = FALSE;
   if (g_hash_table_lookup (signal_instance->connection->map_id_to_signal_data,
-                           GUINT_TO_POINTER (signal_instance->subscription_id)) != NULL)
+                           GUINT_TO_POINTER (signal_instance->subscriber->id)) != NULL)
     has_subscription = TRUE;
   CONNECTION_UNLOCK (signal_instance->connection);
 
   if (has_subscription)
-    signal_instance->callback (signal_instance->connection,
-                               signal_instance->sender,
-                               signal_instance->path,
-                               signal_instance->interface,
-                               signal_instance->member,
-                               parameters,
-                               signal_instance->user_data);
+    signal_instance->subscriber->callback (signal_instance->connection,
+                                           signal_instance->sender,
+                                           signal_instance->path,
+                                           signal_instance->interface,
+                                           signal_instance->member,
+                                           parameters,
+                                           signal_instance->subscriber->user_data);
 
   g_variant_unref (parameters);
 
@@ -3762,6 +3792,7 @@ signal_instance_free (SignalInstance *signal_instance)
 {
   g_object_unref (signal_instance->message);
   g_object_unref (signal_instance->connection);
+  signal_subscriber_unref (signal_instance->subscriber);
   g_free (signal_instance);
 }
 
@@ -3876,16 +3907,12 @@ schedule_callbacks (GDBusConnection *connection,
 
       for (m = 0; m < signal_data->subscribers->len; m++)
         {
-          SignalSubscriber *subscriber;
+          SignalSubscriber *subscriber = signal_data->subscribers->pdata[m];
           GSource *idle_source;
           SignalInstance *signal_instance;
 
-          subscriber = &(g_array_index (signal_data->subscribers, SignalSubscriber, m));
-
           signal_instance = g_new0 (SignalInstance, 1);
-          signal_instance->subscription_id = subscriber->id;
-          signal_instance->callback = subscriber->callback;
-          signal_instance->user_data = subscriber->user_data;
+          signal_instance->subscriber = signal_subscriber_ref (subscriber);
           signal_instance->message = g_object_ref (message);
           signal_instance->connection = g_object_ref (connection);
           signal_instance->sender = sender;
@@ -3954,7 +3981,6 @@ purge_all_signal_subscriptions (GDBusConnection *connection)
   GHashTableIter iter;
   gpointer key;
   GArray *ids;
-  GArray *subscribers;
   guint n;
 
   ids = g_array_new (FALSE, FALSE, sizeof (guint));
@@ -3965,28 +3991,12 @@ purge_all_signal_subscriptions (GDBusConnection *connection)
       g_array_append_val (ids, subscription_id);
     }
 
-  subscribers = g_array_new (FALSE, FALSE, sizeof (SignalSubscriber));
   for (n = 0; n < ids->len; n++)
     {
       guint subscription_id = g_array_index (ids, guint, n);
-      unsubscribe_id_internal (connection,
-                               subscription_id,
-                               subscribers);
+      unsubscribe_id_internal (connection, subscription_id);
     }
   g_array_free (ids, TRUE);
-
-  /* call GDestroyNotify without lock held */
-  for (n = 0; n < subscribers->len; n++)
-    {
-      SignalSubscriber *subscriber;
-      subscriber = &(g_array_index (subscribers, SignalSubscriber, n));
-      call_destroy_notify (subscriber->context,
-                           subscriber->user_data_free_func,
-                           subscriber->user_data);
-      g_main_context_unref (subscriber->context);
-    }
-
-  g_array_free (subscribers, TRUE);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -5198,7 +5208,7 @@ g_dbus_connection_register_object (GDBusConnection             *connection,
     }
 
   ei = g_new0 (ExportedInterface, 1);
-  ei->id = g_atomic_int_add (&_global_registration_id, 1); /* TODO: overflow etc. */
+  ei->id = (guint) g_atomic_int_add (&_global_registration_id, 1); /* TODO: overflow etc. */
   ei->eo = eo;
   ei->user_data = user_data;
   ei->user_data_free_func = user_data_free_func;
@@ -5726,17 +5736,19 @@ g_dbus_connection_call_done (GObject      *source,
       _g_dbus_debug_print_lock ();
       g_print ("========================================================================\n"
                "GDBus-debug:Call:\n"
-               " <<<< ASYNC COMPLETE %s() (serial %d)\n"
-               "      ",
-               state->method_name,
-               g_dbus_message_get_reply_serial (reply));
+               " <<<< ASYNC COMPLETE %s()",
+               state->method_name);
+
       if (reply != NULL)
         {
-          g_print ("SUCCESS\n");
+          g_print (" (serial %d)\n"
+                   "      SUCCESS\n",
+                   g_dbus_message_get_reply_serial (reply));
         }
       else
         {
-          g_print ("FAILED: %s\n",
+          g_print ("\n"
+                   "      FAILED: %s\n",
                    error->message);
         }
       _g_dbus_debug_print_unlock ();
@@ -6858,7 +6870,7 @@ g_dbus_connection_register_subtree (GDBusConnection           *connection,
 
   es->vtable = _g_dbus_subtree_vtable_copy (vtable);
   es->flags = flags;
-  es->id = g_atomic_int_add (&_global_subtree_registration_id, 1); /* TODO: overflow etc. */
+  es->id = (guint) g_atomic_int_add (&_global_subtree_registration_id, 1); /* TODO: overflow etc. */
   es->user_data = user_data;
   es->user_data_free_func = user_data_free_func;
   es->context = g_main_context_ref_thread_default ();
index c37363c..f7f08a3 100644 (file)
@@ -489,7 +489,7 @@ typedef GDBusInterfaceInfo ** (*GDBusSubtreeIntrospectFunc) (GDBusConnection
  * @object_path: The object path that was registered with g_dbus_connection_register_subtree().
  * @interface_name: The D-Bus interface name that the method call or property access is for.
  * @node: A node that is a child of @object_path (relative to @object_path) or %NULL for the root of the subtree.
- * @out_user_data: (nullable) (not optional): Return location for user data to pass to functions in the returned #GDBusInterfaceVTable (never %NULL).
+ * @out_user_data: (nullable) (not optional): Return location for user data to pass to functions in the returned #GDBusInterfaceVTable.
  * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_subtree().
  *
  * The type of the @dispatch function in #GDBusSubtreeVTable.
index 0d5058f..7ae55ec 100644 (file)
@@ -170,6 +170,7 @@ name_new (GDBusDaemon *daemon, const char *str)
 static Name *
 name_ref (Name *name)
 {
+  g_assert (name->refcount > 0);
   name->refcount++;
   return name;
 }
@@ -177,6 +178,7 @@ name_ref (Name *name)
 static void
 name_unref (Name *name)
 {
+  g_assert (name->refcount > 0);
   if (--name->refcount == 0)
     {
       g_hash_table_remove (name->daemon->names, name->name);
@@ -1463,10 +1465,11 @@ filter_function (GDBusConnection *connection,
                 gpointer         user_data)
 {
   Client *client = user_data;
-  const char *types[] = {"invalid", "method_call", "method_return", "error", "signal" };
 
   if (0)
-    g_printerr ("%s%s %s %d(%d) sender: %s destination: %s %s %s.%s\n",
+    {
+      const char *types[] = {"invalid", "method_call", "method_return", "error", "signal" };
+      g_printerr ("%s%s %s %d(%d) sender: %s destination: %s %s %s.%s\n",
                client->id,
                incoming? "->" : "<-",
                types[g_dbus_message_get_message_type (message)],
@@ -1477,6 +1480,7 @@ filter_function (GDBusConnection *connection,
                g_dbus_message_get_path (message),
                g_dbus_message_get_interface (message),
                g_dbus_message_get_member (message));
+    }
 
   if (incoming)
     {
index 852a704..4680ee7 100644 (file)
 
 #include "glibintl.h"
 
+/* See https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-marshaling-signature
+ * This is 64 containers plus 1 value within them. */
+#define G_DBUS_MAX_TYPE_DEPTH (64 + 1)
+
 typedef struct _GMemoryBuffer GMemoryBuffer;
 struct _GMemoryBuffer
 {
@@ -1439,17 +1443,27 @@ read_bytes (GMemoryBuffer  *mbuf,
 static GVariant *
 parse_value_from_blob (GMemoryBuffer       *buf,
                        const GVariantType  *type,
+                       guint                max_depth,
                        gboolean             just_align,
                        guint                indent,
                        GError             **error)
 {
-  GVariant *ret;
-  GError *local_error;
+  GVariant *ret = NULL;
+  GError *local_error = NULL;
 #ifdef DEBUG_SERIALIZER
   gboolean is_leaf;
 #endif /* DEBUG_SERIALIZER */
   const gchar *type_string;
 
+  if (max_depth == 0)
+    {
+      g_set_error_literal (&local_error,
+                           G_IO_ERROR,
+                           G_IO_ERROR_INVALID_ARGUMENT,
+                           _("Value nested too deeply"));
+      goto fail;
+    }
+
   type_string = g_variant_type_peek_string (type);
 
 #ifdef DEBUG_SERIALIZER
@@ -1465,12 +1479,9 @@ parse_value_from_blob (GMemoryBuffer       *buf,
     }
 #endif /* DEBUG_SERIALIZER */
 
-  ret = NULL;
-
 #ifdef DEBUG_SERIALIZER
   is_leaf = TRUE;
 #endif /* DEBUG_SERIALIZER */
-  local_error = NULL;
   switch (type_string[0])
     {
     case 'b': /* G_VARIANT_TYPE_BOOLEAN */
@@ -1690,6 +1701,17 @@ parse_value_from_blob (GMemoryBuffer       *buf,
                   goto fail;
                 }
 
+              if (max_depth == 1)
+                {
+                  /* If we had recursed into parse_value_from_blob() again to
+                   * parse the array values, this would have been emitted. */
+                  g_set_error_literal (&local_error,
+                                       G_IO_ERROR,
+                                       G_IO_ERROR_INVALID_ARGUMENT,
+                                       _("Value nested too deeply"));
+                  goto fail;
+                }
+
               ensure_input_padding (buf, fixed_size);
               array_data = read_bytes (buf, array_len, &local_error);
               if (array_data == NULL)
@@ -1717,6 +1739,7 @@ parse_value_from_blob (GMemoryBuffer       *buf,
                   GVariant *item G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
                   item = parse_value_from_blob (buf,
                                                 element_type,
+                                                max_depth - 1,
                                                 TRUE,
                                                 indent + 2,
                                                 NULL);
@@ -1731,6 +1754,7 @@ parse_value_from_blob (GMemoryBuffer       *buf,
                       GVariant *item;
                       item = parse_value_from_blob (buf,
                                                     element_type,
+                                                    max_depth - 1,
                                                     FALSE,
                                                     indent + 2,
                                                     &local_error);
@@ -1770,6 +1794,7 @@ parse_value_from_blob (GMemoryBuffer       *buf,
               key_type = g_variant_type_key (type);
               key = parse_value_from_blob (buf,
                                            key_type,
+                                           max_depth - 1,
                                            FALSE,
                                            indent + 2,
                                            &local_error);
@@ -1778,6 +1803,7 @@ parse_value_from_blob (GMemoryBuffer       *buf,
               value_type = g_variant_type_value (type);
               value = parse_value_from_blob (buf,
                                              value_type,
+                                             max_depth - 1,
                                              FALSE,
                                              indent + 2,
                                              &local_error);
@@ -1812,6 +1838,7 @@ parse_value_from_blob (GMemoryBuffer       *buf,
                   GVariant *item;
                   item = parse_value_from_blob (buf,
                                                 element_type,
+                                                max_depth - 1,
                                                 FALSE,
                                                 indent + 2,
                                                 &local_error);
@@ -1858,9 +1885,26 @@ parse_value_from_blob (GMemoryBuffer       *buf,
                                sig);
                   goto fail;
                 }
+
+              if (max_depth <= g_variant_type_string_get_depth_ (sig))
+                {
+                  /* Catch the type nesting being too deep without having to
+                   * parse the data. We don’t have to check this for static
+                   * container types (like arrays and tuples, above) because
+                   * the g_variant_type_string_is_valid() check performed before
+                   * the initial parse_value_from_blob() call should check the
+                   * static type nesting. */
+                  g_set_error_literal (&local_error,
+                                       G_IO_ERROR,
+                                       G_IO_ERROR_INVALID_ARGUMENT,
+                                       _("Value nested too deeply"));
+                  goto fail;
+                }
+
               variant_type = g_variant_type_new (sig);
               value = parse_value_from_blob (buf,
                                              variant_type,
+                                             max_depth - 1,
                                              FALSE,
                                              indent + 2,
                                              &local_error);
@@ -2098,6 +2142,7 @@ g_dbus_message_new_from_blob (guchar                *blob,
 #endif /* DEBUG_SERIALIZER */
   headers = parse_value_from_blob (&mbuf,
                                    G_VARIANT_TYPE ("a{yv}"),
+                                   G_DBUS_MAX_TYPE_DEPTH + 2 /* for the a{yv} */,
                                    FALSE,
                                    2,
                                    error);
@@ -2169,6 +2214,7 @@ g_dbus_message_new_from_blob (guchar                *blob,
 #endif /* DEBUG_SERIALIZER */
           message->body = parse_value_from_blob (&mbuf,
                                                  variant_type,
+                                                 G_DBUS_MAX_TYPE_DEPTH + 1 /* for the surrounding tuple */,
                                                  FALSE,
                                                  2,
                                                  error);
@@ -2740,7 +2786,7 @@ g_dbus_message_to_blob (GDBusMessage          *message,
                        G_IO_ERROR,
                        G_IO_ERROR_INVALID_ARGUMENT,
                        _("Message body has signature “%s” but there is no signature header"),
-                       signature_str);
+                       g_variant_get_type_string (message->body));
           goto out;
         }
       tupled_signature_str = g_strdup_printf ("(%s)", signature_str);
@@ -2750,7 +2796,7 @@ g_dbus_message_to_blob (GDBusMessage          *message,
                        G_IO_ERROR,
                        G_IO_ERROR_INVALID_ARGUMENT,
                        _("Message body has type signature “%s” but signature in the header field is “%s”"),
-                       tupled_signature_str, g_variant_get_type_string (message->body));
+                       g_variant_get_type_string (message->body), tupled_signature_str);
           g_free (tupled_signature_str);
           goto out;
         }
index 9764f24..d20e6ff 100644 (file)
@@ -310,7 +310,7 @@ request_name_cb (GObject      *source_object,
   Client *client = user_data;
   GVariant *result;
   guint32 request_name_reply;
-  gboolean subscribe;
+  gboolean unsubscribe;
 
   request_name_reply = 0;
   result = NULL;
@@ -325,22 +325,18 @@ request_name_cb (GObject      *source_object,
       g_variant_unref (result);
     }
 
-  subscribe = FALSE;
+  unsubscribe = FALSE;
 
   switch (request_name_reply)
     {
     case 1: /* DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER */
       /* We got the name - now listen for NameLost and NameAcquired */
       call_acquired_handler (client);
-      subscribe = TRUE;
-      client->needs_release = TRUE;
       break;
 
     case 2: /* DBUS_REQUEST_NAME_REPLY_IN_QUEUE */
       /* Waiting in line - listen for NameLost and NameAcquired */
       call_lost_handler (client);
-      subscribe = TRUE;
-      client->needs_release = TRUE;
       break;
 
     default:
@@ -349,48 +345,34 @@ request_name_cb (GObject      *source_object,
     case 4: /* DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER */
       /* Some other part of the process is already owning the name */
       call_lost_handler (client);
+      unsubscribe = TRUE;
+      client->needs_release = FALSE;
       break;
     }
 
-
-  if (subscribe)
+  /* If we’re not the owner and not in the queue, there’s no point in continuing
+   * to listen to NameAcquired or NameLost. */
+  if (unsubscribe)
     {
       GDBusConnection *connection = NULL;
 
-      /* if cancelled, there is no point in subscribing to signals - if not, make sure
-       * we use a known good Connection object since it may be set to NULL at any point
-       * after being cancelled
+      /* make sure we use a known good Connection object since it may be set to
+       * NULL at any point after being cancelled
        */
       G_LOCK (lock);
       if (!client->cancelled)
         connection = g_object_ref (client->connection);
       G_UNLOCK (lock);
 
-      /* start listening to NameLost and NameAcquired messages */
       if (connection != NULL)
         {
-          client->name_lost_subscription_id =
-            g_dbus_connection_signal_subscribe (connection,
-                                                "org.freedesktop.DBus",
-                                                "org.freedesktop.DBus",
-                                                "NameLost",
-                                                "/org/freedesktop/DBus",
-                                                client->name,
-                                                G_DBUS_SIGNAL_FLAGS_NONE,
-                                                on_name_lost_or_acquired,
-                                                client,
-                                                NULL);
-          client->name_acquired_subscription_id =
-            g_dbus_connection_signal_subscribe (connection,
-                                                "org.freedesktop.DBus",
-                                                "org.freedesktop.DBus",
-                                                "NameAcquired",
-                                                "/org/freedesktop/DBus",
-                                                client->name,
-                                                G_DBUS_SIGNAL_FLAGS_NONE,
-                                                on_name_lost_or_acquired,
-                                                client,
-                                                NULL);
+          if (client->name_acquired_subscription_id > 0)
+            g_dbus_connection_signal_unsubscribe (client->connection, client->name_acquired_subscription_id);
+          if (client->name_lost_subscription_id > 0)
+            g_dbus_connection_signal_unsubscribe (client->connection, client->name_lost_subscription_id);
+          client->name_acquired_subscription_id = 0;
+          client->name_lost_subscription_id = 0;
+
           g_object_unref (connection);
         }
     }
@@ -434,7 +416,42 @@ has_connection (Client *client)
                                                              G_CALLBACK (on_connection_disconnected),
                                                              client);
 
+  /* Start listening to NameLost and NameAcquired messages. We hold
+   * references to the Client in the signal closures, since it’s possible
+   * for a signal to be in-flight after unsubscribing the signal handler.
+   * This creates a reference count cycle, but that’s explicitly broken by
+   * disconnecting the signal handlers before calling client_unref() in
+   * g_bus_unown_name().
+   *
+   * Subscribe to NameLost and NameAcquired before calling RequestName() to
+   * avoid the potential race of losing the name between receiving a reply to
+   * RequestName() and subscribing to NameLost. The #PreviousCall state will
+   * ensure that the user callbacks get called an appropriate number of times. */
+  client->name_lost_subscription_id =
+    g_dbus_connection_signal_subscribe (client->connection,
+                                        "org.freedesktop.DBus",
+                                        "org.freedesktop.DBus",
+                                        "NameLost",
+                                        "/org/freedesktop/DBus",
+                                        client->name,
+                                        G_DBUS_SIGNAL_FLAGS_NONE,
+                                        on_name_lost_or_acquired,
+                                        client_ref (client),
+                                        (GDestroyNotify) client_unref);
+  client->name_acquired_subscription_id =
+    g_dbus_connection_signal_subscribe (client->connection,
+                                        "org.freedesktop.DBus",
+                                        "org.freedesktop.DBus",
+                                        "NameAcquired",
+                                        "/org/freedesktop/DBus",
+                                        client->name,
+                                        G_DBUS_SIGNAL_FLAGS_NONE,
+                                        on_name_lost_or_acquired,
+                                        client_ref (client),
+                                        (GDestroyNotify) client_unref);
+
   /* attempt to acquire the name */
+  client->needs_release = TRUE;
   g_dbus_connection_call (client->connection,
                           "org.freedesktop.DBus",  /* bus name */
                           "/org/freedesktop/DBus", /* object path */
@@ -872,6 +889,13 @@ g_bus_own_name_on_connection_with_closures (GDBusConnection    *connection,
  *
  * Stops owning a name.
  *
+ * Note that there may still be D-Bus traffic to process (relating to owning
+ * and unowning the name) in the current thread-default #GMainContext after
+ * this function has returned. You should continue to iterate the #GMainContext
+ * until the #GDestroyNotify function passed to g_bus_own_name() is called, in
+ * order to avoid memory leaks through callbacks queued on the #GMainContext
+ * after it’s stopped being iterated.
+ *
  * Since: 2.26
  */
 void
@@ -939,6 +963,10 @@ g_bus_unown_name (guint owner_id)
                 {
                   g_warning ("Unexpected reply %d when releasing name %s", release_name_reply, client->name);
                 }
+              else
+                {
+                  client->needs_release = FALSE;
+                }
               g_variant_unref (result);
             }
         }
index 3a97c50..bc2a911 100644 (file)
@@ -148,6 +148,11 @@ call_handler_data_free (CallHandlerData *data)
 static void
 actually_do_call (Client *client, GDBusConnection *connection, const gchar *name_owner, CallType call_type)
 {
+  /* The client might have been cancelled (g_bus_unwatch_name()) while we were
+   * sitting in the #GMainContext dispatch queue. */
+  if (client->cancelled)
+    return;
+
   switch (call_type)
     {
     case CALL_TYPE_NAME_APPEARED:
@@ -234,13 +239,12 @@ call_appeared_handler (Client *client)
 }
 
 static void
-call_vanished_handler (Client  *client,
-                       gboolean ignore_cancelled)
+call_vanished_handler (Client *client)
 {
   if (client->previous_call != PREVIOUS_CALL_VANISHED)
     {
       client->previous_call = PREVIOUS_CALL_VANISHED;
-      if (((!client->cancelled) || ignore_cancelled) && client->name_vanished_handler != NULL)
+      if (!client->cancelled && client->name_vanished_handler != NULL)
         {
           do_call (client, CALL_TYPE_NAME_VANISHED);
         }
@@ -296,7 +300,7 @@ on_connection_disconnected (GDBusConnection *connection,
   client->name_owner_changed_subscription_id = 0;
   client->connection = NULL;
 
-  call_vanished_handler (client, FALSE);
+  call_vanished_handler (client);
 
   client_unref (client);
 }
@@ -345,7 +349,7 @@ on_name_owner_changed (GDBusConnection *connection,
     {
       g_free (client->name_owner);
       client->name_owner = NULL;
-      call_vanished_handler (client, FALSE);
+      call_vanished_handler (client);
     }
 
   if (new_owner != NULL && strlen (new_owner) > 0)
@@ -390,7 +394,7 @@ get_name_owner_cb (GObject      *source_object,
     }
   else
     {
-      call_vanished_handler (client, FALSE);
+      call_vanished_handler (client);
     }
 
   client->initialized = TRUE;
@@ -450,7 +454,7 @@ start_service_by_name_cb (GObject      *source_object,
       else
         {
           g_warning ("Unexpected reply %d from StartServiceByName() method", start_service_result);
-          call_vanished_handler (client, FALSE);
+          call_vanished_handler (client);
           client->initialized = TRUE;
         }
     }
@@ -529,7 +533,7 @@ connection_get_cb (GObject      *source_object,
   client->connection = g_bus_get_finish (res, NULL);
   if (client->connection == NULL)
     {
-      call_vanished_handler (client, FALSE);
+      call_vanished_handler (client);
       goto out;
     }
 
@@ -603,7 +607,7 @@ g_bus_watch_name (GBusType                  bus_type,
 
   client = g_new0 (Client, 1);
   client->ref_count = 1;
-  client->id = g_atomic_int_add (&next_global_id, 1); /* TODO: uh oh, handle overflow */
+  client->id = (guint) g_atomic_int_add (&next_global_id, 1); /* TODO: uh oh, handle overflow */
   client->name = g_strdup (name);
   client->flags = flags;
   client->name_appeared_handler = name_appeared_handler;
@@ -665,7 +669,7 @@ guint g_bus_watch_name_on_connection (GDBusConnection          *connection,
 
   client = g_new0 (Client, 1);
   client->ref_count = 1;
-  client->id = g_atomic_int_add (&next_global_id, 1); /* TODO: uh oh, handle overflow */
+  client->id = (guint) g_atomic_int_add (&next_global_id, 1); /* TODO: uh oh, handle overflow */
   client->name = g_strdup (name);
   client->flags = flags;
   client->name_appeared_handler = name_appeared_handler;
@@ -854,6 +858,13 @@ guint g_bus_watch_name_on_connection_with_closures (
  *
  * Stops watching a name.
  *
+ * Note that there may still be D-Bus traffic to process (relating to watching
+ * and unwatching the name) in the current thread-default #GMainContext after
+ * this function has returned. You should continue to iterate the #GMainContext
+ * until the #GDestroyNotify function passed to g_bus_watch_name() is called, in
+ * order to avoid memory leaks through callbacks queued on the #GMainContext
+ * after it’s stopped being iterated.
+ *
  * Since: 2.26
  */
 void
index 38e6f53..a9b94f6 100644 (file)
@@ -141,6 +141,9 @@ struct _GDBusObjectManagerClientPrivate
   GDBusProxyTypeFunc get_proxy_type_func;
   gpointer get_proxy_type_user_data;
   GDestroyNotify get_proxy_type_destroy_notify;
+
+  gulong name_owner_signal_id;
+  gulong signal_signal_id;
 };
 
 enum
@@ -197,13 +200,18 @@ g_dbus_object_manager_client_finalize (GObject *object)
 
   g_hash_table_unref (manager->priv->map_object_path_to_object_proxy);
 
-  if (manager->priv->control_proxy != NULL)
-    {
-      g_signal_handlers_disconnect_by_func (manager->priv->control_proxy,
-                                            on_control_proxy_g_signal,
-                                            manager);
-      g_object_unref (manager->priv->control_proxy);
-    }
+  if (manager->priv->control_proxy != NULL && manager->priv->signal_signal_id != 0)
+    g_signal_handler_disconnect (manager->priv->control_proxy,
+                                 manager->priv->signal_signal_id);
+  manager->priv->signal_signal_id = 0;
+
+  if (manager->priv->control_proxy != NULL && manager->priv->name_owner_signal_id != 0)
+    g_signal_handler_disconnect (manager->priv->control_proxy,
+                                 manager->priv->name_owner_signal_id);
+  manager->priv->name_owner_signal_id = 0;
+
+  g_clear_object (&manager->priv->control_proxy);
+
   if (manager->priv->connection != NULL)
     g_object_unref (manager->priv->connection);
   g_free (manager->priv->object_path);
@@ -1241,16 +1249,20 @@ on_notify_g_name_owner (GObject    *object,
                         GParamSpec *pspec,
                         gpointer    user_data)
 {
-  GDBusObjectManagerClient *manager = G_DBUS_OBJECT_MANAGER_CLIENT (user_data);
+  GWeakRef *manager_weak = user_data;
+  GDBusObjectManagerClient *manager = NULL;
   gchar *old_name_owner;
   gchar *new_name_owner;
 
+  manager = G_DBUS_OBJECT_MANAGER_CLIENT (g_weak_ref_get (manager_weak));
+  if (manager == NULL)
+    return;
+
   g_mutex_lock (&manager->priv->lock);
   old_name_owner = manager->priv->name_owner;
   new_name_owner = g_dbus_proxy_get_name_owner (manager->priv->control_proxy);
   manager->priv->name_owner = NULL;
 
-  g_object_ref (manager);
   if (g_strcmp0 (old_name_owner, new_name_owner) != 0)
     {
       GList *l;
@@ -1330,6 +1342,21 @@ on_notify_g_name_owner (GObject    *object,
   g_object_unref (manager);
 }
 
+static GWeakRef *
+weak_ref_new (GObject *object)
+{
+  GWeakRef *weak_ref = g_new0 (GWeakRef, 1);
+  g_weak_ref_init (weak_ref, object);
+  return g_steal_pointer (&weak_ref);
+}
+
+static void
+weak_ref_free (GWeakRef *weak_ref)
+{
+  g_weak_ref_clear (weak_ref);
+  g_free (weak_ref);
+}
+
 static gboolean
 initable_init (GInitable     *initable,
                GCancellable  *cancellable,
@@ -1365,15 +1392,30 @@ initable_init (GInitable     *initable,
   if (manager->priv->control_proxy == NULL)
     goto out;
 
-  g_signal_connect (G_OBJECT (manager->priv->control_proxy),
-                    "notify::g-name-owner",
-                    G_CALLBACK (on_notify_g_name_owner),
-                    manager);
-
-  g_signal_connect (manager->priv->control_proxy,
-                    "g-signal",
-                    G_CALLBACK (on_control_proxy_g_signal),
-                    manager);
+  /* Use weak refs here. The @control_proxy will emit its signals in the current
+   * #GMainContext (since we constructed it just above). However, the user may
+   * drop the last external reference to this #GDBusObjectManagerClient in
+   * another thread between a signal being emitted and scheduled in an idle
+   * callback in this #GMainContext, and that idle callback being invoked. We
+   * can’t use a strong reference here, as there’s no
+   * g_dbus_object_manager_client_disconnect() (or similar) method to tell us
+   * when the last external reference to this object has been dropped, so we
+   * can’t break a strong reference count cycle. So use weak refs. */
+  manager->priv->name_owner_signal_id =
+      g_signal_connect_data (G_OBJECT (manager->priv->control_proxy),
+                            "notify::g-name-owner",
+                            G_CALLBACK (on_notify_g_name_owner),
+                            weak_ref_new (G_OBJECT (manager)),
+                            (GClosureNotify) weak_ref_free,
+                            0  /* flags */);
+
+  manager->priv->signal_signal_id =
+      g_signal_connect_data (manager->priv->control_proxy,
+                            "g-signal",
+                            G_CALLBACK (on_control_proxy_g_signal),
+                            weak_ref_new (G_OBJECT (manager)),
+                            (GClosureNotify) weak_ref_free,
+                            0  /* flags */);
 
   manager->priv->name_owner = g_dbus_proxy_get_name_owner (manager->priv->control_proxy);
   if (manager->priv->name_owner == NULL && manager->priv->name != NULL)
@@ -1397,11 +1439,20 @@ initable_init (GInitable     *initable,
       if (value == NULL)
         {
           maybe_unsubscribe_signals (manager);
-          g_warn_if_fail (g_signal_handlers_disconnect_by_func (manager->priv->control_proxy,
-                                                                on_control_proxy_g_signal,
-                                                                manager) == 1);
+
+          g_warn_if_fail (manager->priv->signal_signal_id != 0);
+          g_signal_handler_disconnect (manager->priv->control_proxy,
+                                       manager->priv->signal_signal_id);
+          manager->priv->signal_signal_id = 0;
+
+          g_warn_if_fail (manager->priv->name_owner_signal_id != 0);
+          g_signal_handler_disconnect (manager->priv->control_proxy,
+                                       manager->priv->name_owner_signal_id);
+          manager->priv->name_owner_signal_id = 0;
+
           g_object_unref (manager->priv->control_proxy);
           manager->priv->control_proxy = NULL;
+
           goto out;
         }
 
@@ -1668,9 +1719,14 @@ on_control_proxy_g_signal (GDBusProxy   *proxy,
                            GVariant     *parameters,
                            gpointer      user_data)
 {
-  GDBusObjectManagerClient *manager = G_DBUS_OBJECT_MANAGER_CLIENT (user_data);
+  GWeakRef *manager_weak = user_data;
+  GDBusObjectManagerClient *manager = NULL;
   const gchar *object_path;
 
+  manager = G_DBUS_OBJECT_MANAGER_CLIENT (g_weak_ref_get (manager_weak));
+  if (manager == NULL)
+    return;
+
   //g_debug ("yay, g_signal %s: %s\n", signal_name, g_variant_print (parameters, TRUE));
 
   if (g_strcmp0 (signal_name, "InterfacesAdded") == 0)
@@ -1693,6 +1749,8 @@ on_control_proxy_g_signal (GDBusProxy   *proxy,
       remove_interfaces (manager, object_path, ifaces);
       g_free (ifaces);
     }
+
+  g_object_unref (manager);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
index 39eed16..4c68297 100644 (file)
@@ -95,28 +95,19 @@ G_LOCK_DEFINE_STATIC (properties_lock);
 
 /* ---------------------------------------------------------------------------------------------------- */
 
-G_LOCK_DEFINE_STATIC (signal_subscription_lock);
-
-typedef struct
-{
-  volatile gint ref_count;
-  GDBusProxy *proxy;
-} SignalSubscriptionData;
-
-static SignalSubscriptionData *
-signal_subscription_ref (SignalSubscriptionData *data)
+static GWeakRef *
+weak_ref_new (GObject *object)
 {
-  g_atomic_int_inc (&data->ref_count);
-  return data;
+  GWeakRef *weak_ref = g_new0 (GWeakRef, 1);
+  g_weak_ref_init (weak_ref, object);
+  return g_steal_pointer (&weak_ref);
 }
 
 static void
-signal_subscription_unref (SignalSubscriptionData *data)
+weak_ref_free (GWeakRef *weak_ref)
 {
-  if (g_atomic_int_dec_and_test (&data->ref_count))
-    {
-      g_slice_free (SignalSubscriptionData, data);
-    }
+  g_weak_ref_clear (weak_ref);
+  g_free (weak_ref);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -152,8 +143,6 @@ struct _GDBusProxyPrivate
 
   /* mutable, protected by properties_lock */
   GDBusObject *object;
-
-  SignalSubscriptionData *signal_subscription_data;
 };
 
 enum
@@ -190,22 +179,6 @@ G_DEFINE_TYPE_WITH_CODE (GDBusProxy, g_dbus_proxy, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init))
 
 static void
-g_dbus_proxy_dispose (GObject *object)
-{
-  GDBusProxy *proxy = G_DBUS_PROXY (object);
-  G_LOCK (signal_subscription_lock);
-  if (proxy->priv->signal_subscription_data != NULL)
-    {
-      proxy->priv->signal_subscription_data->proxy = NULL;
-      signal_subscription_unref (proxy->priv->signal_subscription_data);
-      proxy->priv->signal_subscription_data = NULL;
-    }
-  G_UNLOCK (signal_subscription_lock);
-
-  G_OBJECT_CLASS (g_dbus_proxy_parent_class)->dispose (object);
-}
-
-static void
 g_dbus_proxy_finalize (GObject *object)
 {
   GDBusProxy *proxy = G_DBUS_PROXY (object);
@@ -346,7 +319,6 @@ g_dbus_proxy_class_init (GDBusProxyClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  gobject_class->dispose      = g_dbus_proxy_dispose;
   gobject_class->finalize     = g_dbus_proxy_finalize;
   gobject_class->set_property = g_dbus_proxy_set_property;
   gobject_class->get_property = g_dbus_proxy_get_property;
@@ -638,9 +610,6 @@ static void
 g_dbus_proxy_init (GDBusProxy *proxy)
 {
   proxy->priv = g_dbus_proxy_get_instance_private (proxy);
-  proxy->priv->signal_subscription_data = g_slice_new0 (SignalSubscriptionData);
-  proxy->priv->signal_subscription_data->ref_count = 1;
-  proxy->priv->signal_subscription_data->proxy = proxy;
   proxy->priv->properties = g_hash_table_new_full (g_str_hash,
                                                    g_str_equal,
                                                    g_free,
@@ -868,21 +837,12 @@ on_signal_received (GDBusConnection *connection,
                     GVariant        *parameters,
                     gpointer         user_data)
 {
-  SignalSubscriptionData *data = user_data;
+  GWeakRef *proxy_weak = user_data;
   GDBusProxy *proxy;
 
-  G_LOCK (signal_subscription_lock);
-  proxy = data->proxy;
+  proxy = G_DBUS_PROXY (g_weak_ref_get (proxy_weak));
   if (proxy == NULL)
-    {
-      G_UNLOCK (signal_subscription_lock);
-      return;
-    }
-  else
-    {
-      g_object_ref (proxy);
-      G_UNLOCK (signal_subscription_lock);
-    }
+    return;
 
   if (!proxy->priv->initialized)
     goto out;
@@ -929,8 +889,7 @@ on_signal_received (GDBusConnection *connection,
                  parameters);
 
  out:
-  if (proxy != NULL)
-    g_object_unref (proxy);
+  g_clear_object (&proxy);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -1038,7 +997,7 @@ on_properties_changed (GDBusConnection *connection,
                        GVariant        *parameters,
                        gpointer         user_data)
 {
-  SignalSubscriptionData *data = user_data;
+  GWeakRef *proxy_weak = user_data;
   gboolean emit_g_signal = FALSE;
   GDBusProxy *proxy;
   const gchar *interface_name_for_signal;
@@ -1052,18 +1011,9 @@ on_properties_changed (GDBusConnection *connection,
   changed_properties = NULL;
   invalidated_properties = NULL;
 
-  G_LOCK (signal_subscription_lock);
-  proxy = data->proxy;
+  proxy = G_DBUS_PROXY (g_weak_ref_get (proxy_weak));
   if (proxy == NULL)
-    {
-      G_UNLOCK (signal_subscription_lock);
-      goto out;
-    }
-  else
-    {
-      g_object_ref (proxy);
-      G_UNLOCK (signal_subscription_lock);
-    }
+    return;
 
   if (!proxy->priv->initialized)
     goto out;
@@ -1150,11 +1100,9 @@ on_properties_changed (GDBusConnection *connection,
     }
 
  out:
-  if (changed_properties != NULL)
-    g_variant_unref (changed_properties);
+  g_clear_pointer (&changed_properties, g_variant_unref);
   g_free (invalidated_properties);
-  if (proxy != NULL)
-    g_object_unref (proxy);
+  g_clear_object (&proxy);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -1258,8 +1206,7 @@ on_name_owner_changed_get_all_cb (GDBusConnection *connection,
     {
       G_LOCK (properties_lock);
       g_free (data->proxy->priv->name_owner);
-      data->proxy->priv->name_owner = data->name_owner;
-      data->name_owner = NULL; /* to avoid an extra copy, we steal the string */
+      data->proxy->priv->name_owner = g_steal_pointer (&data->name_owner);
       g_hash_table_remove_all (data->proxy->priv->properties);
       G_UNLOCK (properties_lock);
       if (result != NULL)
@@ -1289,23 +1236,14 @@ on_name_owner_changed (GDBusConnection *connection,
                        GVariant         *parameters,
                        gpointer          user_data)
 {
-  SignalSubscriptionData *data = user_data;
+  GWeakRef *proxy_weak = user_data;
   GDBusProxy *proxy;
   const gchar *old_owner;
   const gchar *new_owner;
 
-  G_LOCK (signal_subscription_lock);
-  proxy = data->proxy;
+  proxy = G_DBUS_PROXY (g_weak_ref_get (proxy_weak));
   if (proxy == NULL)
-    {
-      G_UNLOCK (signal_subscription_lock);
-      goto out;
-    }
-  else
-    {
-      g_object_ref (proxy);
-      G_UNLOCK (signal_subscription_lock);
-    }
+    return;
 
   /* if we are already trying to load properties, cancel that */
   if (proxy->priv->get_all_cancellable != NULL)
@@ -1415,8 +1353,7 @@ on_name_owner_changed (GDBusConnection *connection,
     }
 
  out:
-  if (proxy != NULL)
-    g_object_unref (proxy);
+  g_clear_object (&proxy);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -1762,8 +1699,8 @@ async_initable_init_first (GAsyncInitable *initable)
                                             proxy->priv->interface_name,
                                             G_DBUS_SIGNAL_FLAGS_NONE,
                                             on_properties_changed,
-                                            signal_subscription_ref (proxy->priv->signal_subscription_data),
-                                            (GDestroyNotify) signal_subscription_unref);
+                                            weak_ref_new (G_OBJECT (proxy)),
+                                            (GDestroyNotify) weak_ref_free);
     }
 
   if (!(proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS))
@@ -1778,8 +1715,8 @@ async_initable_init_first (GAsyncInitable *initable)
                                             NULL,                        /* arg0 */
                                             G_DBUS_SIGNAL_FLAGS_NONE,
                                             on_signal_received,
-                                            signal_subscription_ref (proxy->priv->signal_subscription_data),
-                                            (GDestroyNotify) signal_subscription_unref);
+                                            weak_ref_new (G_OBJECT (proxy)),
+                                            (GDestroyNotify) weak_ref_free);
     }
 
   if (proxy->priv->name != NULL &&
@@ -1794,8 +1731,8 @@ async_initable_init_first (GAsyncInitable *initable)
                                             proxy->priv->name,       /* arg0 */
                                             G_DBUS_SIGNAL_FLAGS_NONE,
                                             on_name_owner_changed,
-                                            signal_subscription_ref (proxy->priv->signal_subscription_data),
-                                            (GDestroyNotify) signal_subscription_unref);
+                                            weak_ref_new (G_OBJECT (proxy)),
+                                            (GDestroyNotify) weak_ref_free);
     }
 }
 
index f1e2fdd..fe3ebe2 100644 (file)
@@ -160,7 +160,6 @@ static const gchar    *desktop_file_dirs_config_dir = NULL;
 static DesktopFileDir *desktop_file_dir_user_config = NULL;  /* (owned) */
 static DesktopFileDir *desktop_file_dir_user_data = NULL;  /* (owned) */
 static GMutex          desktop_file_dir_lock;
-static const gchar    *gio_launch_desktop_path = NULL;
 
 /* Monitor 'changed' signal handler {{{2 */
 static void desktop_file_dir_reset (DesktopFileDir *dir);
@@ -2728,7 +2727,7 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo            *info,
    * internally by expand_macro(), so we need to pass a copy of it instead,
    * and also use that copy to control the exit condition of the loop below.
    */
-  dup_uris = g_list_copy (uris);
+  dup_uris = uris;
   do
     {
       GPid pid;
@@ -2737,6 +2736,14 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo            *info,
       char *sn_id = NULL;
       char **wrapped_argv;
       int i;
+      const gchar * const wrapper_argv[] =
+        {
+          "/bin/sh",
+          "-e",
+          "-u",
+          "-c", "export GIO_LAUNCHED_DESKTOP_FILE_PID=$$; exec \"$@\"",
+          "sh",  /* argv[0] for sh */
+        };
 
       old_uris = dup_uris;
       if (!expand_application_parameters (info, exec_line, &dup_uris, &argc, &argv, error))
@@ -2778,26 +2785,26 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo            *info,
           g_list_free_full (launched_files, g_object_unref);
         }
 
-      if (g_once_init_enter (&gio_launch_desktop_path))
-        {
-          const gchar *tmp;
-
-          /* Allow test suite to specify path to gio-launch-desktop */
-          tmp = g_getenv ("GIO_LAUNCH_DESKTOP");
-
-          /* Fall back on usual searching in $PATH */
-          if (tmp == NULL)
-            tmp = "gio-launch-desktop";
-          g_once_init_leave (&gio_launch_desktop_path, tmp);
-        }
-
-      wrapped_argv = g_new (char *, argc + 2);
-      wrapped_argv[0] = g_strdup (gio_launch_desktop_path);
-
+      /* Wrap the @argv in a command which will set the
+       * `GIO_LAUNCHED_DESKTOP_FILE_PID` environment variable. We can’t set this
+       * in @envp along with `GIO_LAUNCHED_DESKTOP_FILE` because we need to know
+       * the PID of the new forked process. We can’t use setenv() between fork()
+       * and exec() because we’d rather use posix_spawn() for speed.
+       *
+       * `sh` should be available on all the platforms that `GDesktopAppInfo`
+       * currently supports (since they are all POSIX). If additional platforms
+       * need to be supported in future, it will probably have to be replaced
+       * with a wrapper program (grep the GLib git history for
+       * `gio-launch-desktop` for an example of this which could be
+       * resurrected). */
+      wrapped_argv = g_new (char *, argc + G_N_ELEMENTS (wrapper_argv) + 1);
+
+      for (i = 0; i < G_N_ELEMENTS (wrapper_argv); i++)
+        wrapped_argv[i] = g_strdup (wrapper_argv[i]);
       for (i = 0; i < argc; i++)
-        wrapped_argv[i + 1] = g_steal_pointer (&argv[i]);
+        wrapped_argv[i + G_N_ELEMENTS (wrapper_argv)] = g_steal_pointer (&argv[i]);
 
-      wrapped_argv[i + 1] = NULL;
+      wrapped_argv[i + G_N_ELEMENTS (wrapper_argv)] = NULL;
       g_free (argv);
       argv = NULL;
 
@@ -2857,7 +2864,6 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo            *info,
   completed = TRUE;
 
  out:
-  g_list_free (dup_uris);
   g_strfreev (argv);
   g_strfreev (envp);
 
index 154cc74..644829a 100644 (file)
 #define HAVE_O_CLOEXEC 1
 #endif
 
-static GXdpDocuments *documents;
-static char *documents_mountpoint;
-
 static gboolean
-init_document_portal (void)
+get_document_portal (GXdpDocuments **documents,
+                     char          **documents_mountpoint,
+                     GError        **error)
 {
-  static gsize documents_inited = 0;
+  GDBusConnection *connection = NULL;
 
-  if (g_once_init_enter (&documents_inited))
-    {
-      GError *error = NULL;
-      GDBusConnection *connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+  *documents = NULL;
+  *documents_mountpoint = NULL;
 
-      if (connection != NULL)
-        {
-          documents = gxdp_documents_proxy_new_sync (connection, 0,
-                                                     "org.freedesktop.portal.Documents",
-                                                     "/org/freedesktop/portal/documents",
-                                                     NULL, &error);
-          if (documents != NULL)
-            {
-              gxdp_documents_call_get_mount_point_sync (documents,
-                                                        &documents_mountpoint,
-                                                        NULL, &error);
-
-              if (error != NULL)
-                {
-                  g_warning ("Cannot get document portal mount point: %s", error->message);
-                  g_error_free (error);
-                }
-            }
-          else
-            {
-              g_warning ("Cannot create document portal proxy: %s", error->message);
-              g_error_free (error);
-            }
+  connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, error);
+  if (connection == NULL)
+    {
+      g_prefix_error (error, "Cannot connect to session bus when initializing document portal: ");
+      goto out;
+    }
 
-          g_object_unref (connection);
-        }
-      else
-        {
-          g_warning ("Cannot connect to session bus when initializing document portal: %s",
-                     error->message);
-          g_error_free (error);
-        }
+  *documents = gxdp_documents_proxy_new_sync (connection,
+                                              G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
+                                              G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
+                                              "org.freedesktop.portal.Documents",
+                                              "/org/freedesktop/portal/documents",
+                                              NULL, error);
+  if (*documents == NULL)
+    {
+      g_prefix_error (error, "Cannot create document portal proxy: ");
+      goto out;
+    }
 
-      g_once_init_leave (&documents_inited, 1);
+  if (!gxdp_documents_call_get_mount_point_sync (*documents,
+                                                 documents_mountpoint,
+                                                 NULL, error))
+    {
+      g_clear_object (documents);
+      g_prefix_error (error, "Cannot get document portal mount point: ");
+      goto out;
     }
 
-  return (documents != NULL && documents_mountpoint != NULL);
+out:
+  g_clear_object (&connection);
+  return *documents != NULL;
 }
 
 /* Flags accepted by org.freedesktop.portal.Documents.AddFull */
@@ -102,6 +93,8 @@ g_document_portal_add_documents (GList       *uris,
                                  const char  *app_id,
                                  GError     **error)
 {
+  GXdpDocuments *documents = NULL;
+  char *documents_mountpoint = NULL;
   int length;
   GList *ruris = NULL;
   gboolean *as_is;
@@ -113,10 +106,8 @@ g_document_portal_add_documents (GList       *uris,
   char **doc_ids = NULL;
   GVariant *extra_out = NULL;
 
-  if (!init_document_portal ())
+  if (!get_document_portal (&documents, &documents_mountpoint, error))
     {
-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_INITIALIZED,
-                   "Document portal is not available");
       return NULL;
     }
 
@@ -213,6 +204,8 @@ g_document_portal_add_documents (GList       *uris,
     }
 
 out:
+  g_clear_object (&documents);
+  g_clear_pointer (&documents_mountpoint, g_free);
   g_clear_object (&fd_list);
   g_clear_pointer (&extra_out, g_variant_unref);
   g_clear_pointer (&doc_ids, g_strfreev);
index 1a74e3c..e019d3b 100644 (file)
@@ -164,9 +164,7 @@ g_dtls_connection_default_init (GDtlsConnectionInterface *iface)
    *
    * Since: 2.48
    *
-   * Deprecated: 2.60. Changing the rehandshake mode is no longer
-   *   required for compatibility. Also, rehandshaking has been removed
-   *   from the TLS protocol in TLS 1.3.
+   * Deprecated: 2.60: The rehandshake mode is ignored.
    */
   g_object_interface_install_property (iface,
                                        g_param_spec_enum ("rehandshake-mode",
@@ -615,26 +613,10 @@ g_dtls_connection_get_require_close_notify (GDtlsConnection *conn)
  * @conn: a #GDtlsConnection
  * @mode: the rehandshaking mode
  *
- * Sets how @conn behaves with respect to rehandshaking requests.
- *
- * %G_TLS_REHANDSHAKE_NEVER means that it will never agree to
- * rehandshake after the initial handshake is complete. (For a client,
- * this means it will refuse rehandshake requests from the server, and
- * for a server, this means it will close the connection with an error
- * if the client attempts to rehandshake.)
- *
- * %G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a
- * rehandshake only if the other end of the connection supports the
- * TLS `renegotiation_info` extension. This is the default behavior,
- * but means that rehandshaking will not work against older
- * implementations that do not support that extension.
- *
- * %G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow
- * rehandshaking even without the `renegotiation_info` extension. On
- * the server side in particular, this is not recommended, since it
- * leaves the server open to certain attacks. However, this mode is
- * necessary if you need to allow renegotiation with older client
- * software.
+ * Since GLib 2.64, changing the rehandshake mode is no longer supported
+ * and will have no effect. With TLS 1.3, rehandshaking has been removed from
+ * the TLS protocol, replaced by separate post-handshake authentication and
+ * rekey operations.
  *
  * Since: 2.48
  *
@@ -650,7 +632,7 @@ g_dtls_connection_set_rehandshake_mode (GDtlsConnection     *conn,
   g_return_if_fail (G_IS_DTLS_CONNECTION (conn));
 
   g_object_set (G_OBJECT (conn),
-                "rehandshake-mode", mode,
+                "rehandshake-mode", G_TLS_REHANDSHAKE_SAFELY,
                 NULL);
 }
 G_GNUC_END_IGNORE_DEPRECATIONS
@@ -662,22 +644,29 @@ G_GNUC_END_IGNORE_DEPRECATIONS
  * Gets @conn rehandshaking mode. See
  * g_dtls_connection_set_rehandshake_mode() for details.
  *
- * Returns: @conn's rehandshaking mode
+ * Returns: %G_TLS_REHANDSHAKE_SAFELY
  *
  * Since: 2.48
+ *
+ * Deprecated: 2.64. Changing the rehandshake mode is no longer
+ *   required for compatibility. Also, rehandshaking has been removed
+ *   from the TLS protocol in TLS 1.3.
  */
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 GTlsRehandshakeMode
-g_dtls_connection_get_rehandshake_mode (GDtlsConnection       *conn)
+g_dtls_connection_get_rehandshake_mode (GDtlsConnection *conn)
 {
   GTlsRehandshakeMode mode;
 
-  g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), G_TLS_REHANDSHAKE_NEVER);
+  g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), G_TLS_REHANDSHAKE_SAFELY);
 
+  /* Continue to call g_object_get(), even though the return value is
+   * ignored, so that behavior doesn’t change for derived classes.
+   */
   g_object_get (G_OBJECT (conn),
                 "rehandshake-mode", &mode,
                 NULL);
-  return mode;
+  return G_TLS_REHANDSHAKE_SAFELY;
 }
 G_GNUC_END_IGNORE_DEPRECATIONS
 
@@ -691,28 +680,25 @@ G_GNUC_END_IGNORE_DEPRECATIONS
  *
  * On the client side, it is never necessary to call this method;
  * although the connection needs to perform a handshake after
- * connecting (or after sending a "STARTTLS"-type command) and may
- * need to rehandshake later if the server requests it,
- * #GDtlsConnection will handle this for you automatically when you try
- * to send or receive data on the connection. However, you can call
- * g_dtls_connection_handshake() manually if you want to know for sure
- * whether the initial handshake succeeded or failed (as opposed to
- * just immediately trying to write to @conn, in which
- * case if it fails, it may not be possible to tell if it failed
- * before or after completing the handshake).
+ * connecting, #GDtlsConnection will handle this for you automatically
+ * when you try to send or receive data on the connection. You can call
+ * g_dtls_connection_handshake() manually if you want to know whether
+ * the initial handshake succeeded or failed (as opposed to just
+ * immediately trying to use @conn to read or write, in which case,
+ * if it fails, it may not be possible to tell if it failed before
+ * or after completing the handshake), but beware that servers may reject
+ * client authentication after the handshake has completed, so a
+ * successful handshake does not indicate the connection will be usable.
  *
  * Likewise, on the server side, although a handshake is necessary at
  * the beginning of the communication, you do not need to call this
  * function explicitly unless you want clearer error reporting.
  *
- * If TLS 1.2 or older is in use, you may call
- * g_dtls_connection_handshake() after the initial handshake to
- * rehandshake; however, this usage is deprecated because rehandshaking
- * is no longer part of the TLS protocol in TLS 1.3. Accordingly, the
- * behavior of calling this function after the initial handshake is now
- * undefined, except it is guaranteed to be reasonable and
- * nondestructive so as to preserve compatibility with code written for
- * older versions of GLib.
+ * Previously, calling g_dtls_connection_handshake() after the initial
+ * handshake would trigger a rehandshake; however, this usage was
+ * deprecated in GLib 2.60 because rehandshaking was removed from the
+ * TLS protocol in TLS 1.3. Since GLib 2.64, calling this function after
+ * the initial handshake will no longer do anything.
  *
  * #GDtlsConnection::accept_certificate may be emitted during the
  * handshake.
index 52342d9..8744b83 100644 (file)
@@ -235,7 +235,9 @@ enum
   PROP_CONN_SERVER_IDENTITY,
   PROP_CONN_USE_SSL3,
   PROP_CONN_ACCEPTED_CAS,
-  PROP_CONN_AUTHENTICATION_MODE
+  PROP_CONN_AUTHENTICATION_MODE,
+  PROP_CONN_ADVERTISED_PROTOCOLS,
+  PROP_CONN_NEGOTIATED_PROTOCOL,
 };
 
 static void g_dummy_tls_connection_initable_iface_init (GInitableIface *iface);
@@ -301,6 +303,8 @@ g_dummy_tls_connection_class_init (GDummyTlsConnectionClass *connection_class)
   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");
+  g_object_class_override_property (gobject_class, PROP_CONN_ADVERTISED_PROTOCOLS, "advertised-protocols");
+  g_object_class_override_property (gobject_class, PROP_CONN_NEGOTIATED_PROTOCOL, "negotiated-protocol");
 }
 
 static void
index c4fa0dc..b6fbfd2 100644 (file)
@@ -25,6 +25,7 @@
 #include "giomodule-priv.h"
 #include "gnotification-private.h"
 #include "gdbusconnection.h"
+#include "gdbusnamewatching.h"
 #include "gactiongroup.h"
 #include "gaction.h"
 #include "gthemedicon.h"
@@ -42,6 +43,8 @@ struct _GFdoNotificationBackend
 {
   GNotificationBackend parent;
 
+  guint   bus_name_id;
+
   guint   notify_subscription;
   GSList *notifications;
 };
@@ -205,6 +208,20 @@ notify_signal (GDBusConnection *connection,
     }
 }
 
+static void
+name_vanished_handler_cb (GDBusConnection *connection,
+                          const gchar     *name,
+                          gpointer         user_data)
+{
+  GFdoNotificationBackend *backend = user_data;
+
+  if (backend->notifications)
+    {
+      g_slist_free_full (backend->notifications, freedesktop_notification_free);
+      backend->notifications = NULL;
+    }
+}
+
 /* Converts a GNotificationPriority to an urgency level as defined by
  * the freedesktop spec (0: low, 1: normal, 2: critical).
  */
@@ -370,6 +387,12 @@ g_fdo_notification_backend_dispose (GObject *object)
 {
   GFdoNotificationBackend *backend = G_FDO_NOTIFICATION_BACKEND (object);
 
+  if (backend->bus_name_id)
+    {
+      g_bus_unwatch_name (backend->bus_name_id);
+      backend->bus_name_id = 0;
+    }
+
   if (backend->notify_subscription)
     {
       GDBusConnection *session_bus;
@@ -407,6 +430,17 @@ g_fdo_notification_backend_send_notification (GNotificationBackend *backend,
   GFdoNotificationBackend *self = G_FDO_NOTIFICATION_BACKEND (backend);
   FreedesktopNotification *n, *tmp;
 
+  if (self->bus_name_id == 0)
+    {
+      self->bus_name_id = g_bus_watch_name_on_connection (backend->dbus_connection,
+                                                          "org.freedesktop.Notifications",
+                                                          G_BUS_NAME_WATCHER_FLAGS_NONE,
+                                                          NULL,
+                                                          name_vanished_handler_cb,
+                                                          backend,
+                                                          NULL);
+    }
+
   if (self->notify_subscription == 0)
     {
       self->notify_subscription =
index ba93f7c..a2ded14 100644 (file)
@@ -534,37 +534,6 @@ g_file_get_path (GFile *file)
   return (* iface->get_path) (file);
 }
 
-/* Original commit introducing this in libgsystem:
- *
- *  fileutil: Handle recent: and trash: URIs
- *
- *  The gs_file_get_path_cached() was rather brittle in its handling
- *  of URIs. It would assert() when a GFile didn't have a backing path
- *  (such as when handling trash: or recent: URIs), and didn't know
- *  how to get the target URI for those items either.
- *
- *  Make sure that we do not assert() when a backing path cannot be
- *  found, and handle recent: and trash: URIs.
- *
- *  https://bugzilla.gnome.org/show_bug.cgi?id=708435
- */
-static char *
-file_get_target_path (GFile *file)
-{
-  GFileInfo *info;
-  const char *target;
-  char *path;
-
-  info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI, G_FILE_QUERY_INFO_NONE, NULL, NULL);
-  if (info == NULL)
-    return NULL;
-  target = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
-  path = g_filename_from_uri (target, NULL, NULL);
-  g_object_unref (info);
-
-  return path;
-}
-
 static const char *
 file_peek_path_generic (GFile *file)
 {
@@ -591,11 +560,7 @@ file_peek_path_generic (GFile *file)
       if (path != NULL)
         break;
 
-      if (g_file_has_uri_scheme (file, "trash") ||
-          g_file_has_uri_scheme (file, "recent"))
-        new_path = file_get_target_path (file);
-      else
-        new_path = g_file_get_path (file);
+      new_path = g_file_get_path (file);
       if (new_path == NULL)
         return NULL;
 
@@ -603,7 +568,10 @@ file_peek_path_generic (GFile *file)
       if (g_object_replace_qdata ((GObject *) file, _file_path_quark,
                                   NULL, (gpointer) new_path,
                                   (GDestroyNotify) g_free, NULL))
-        break;
+        {
+          path = new_path;
+          break;
+        }
       else
         g_free (new_path);
     }
@@ -936,7 +904,7 @@ g_file_get_child_for_display_name (GFile      *file,
  * of @prefix.
  *
  * Virtual: prefix_matches
- * Returns:  %TRUE if the @files's parent, grandparent, etc is @prefix,
+ * Returns:  %TRUE if the @file's parent, grandparent, etc is @prefix,
  *     %FALSE otherwise.
  */
 gboolean
@@ -3652,10 +3620,6 @@ g_file_copy_finish (GFile         *file,
  * If the flag #G_FILE_COPY_OVERWRITE is specified an already
  * existing @destination file is overwritten.
  *
- * If the flag #G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
- * will be copied as symlinks, otherwise the target of the
- * @source symlink will be copied.
- *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
@@ -3759,7 +3723,7 @@ g_file_move (GFile                  *source,
       return FALSE;
     }
 
-  flags |= G_FILE_COPY_ALL_METADATA;
+  flags |= G_FILE_COPY_ALL_METADATA | G_FILE_COPY_NOFOLLOW_SYMLINKS;
   if (!g_file_copy (source, destination, flags, cancellable,
                     progress_callback, progress_callback_data,
                     error))
@@ -4046,7 +4010,7 @@ g_file_make_symbolic_link (GFile         *file,
     {
       g_set_error_literal (error, G_IO_ERROR,
                            G_IO_ERROR_NOT_SUPPORTED,
-                           _("Operation not supported"));
+                           _("Symbolic links not supported"));
       return FALSE;
     }
 
@@ -4522,7 +4486,7 @@ g_file_query_writable_namespaces (GFile         *file,
  *     %NULL to ignore
  * @error: a #GError, or %NULL
  *
- * Sets an attribute in the file with attribute name @attribute to @value.
+ * Sets an attribute in the file with attribute name @attribute to @value_p.
  *
  * Some attributes can be unset by setting @type to
  * %G_FILE_ATTRIBUTE_TYPE_INVALID and @value_p to %NULL.
@@ -6875,7 +6839,8 @@ g_file_query_default_handler (GFile         *file,
     g_free (uri_scheme);
 
   info = g_file_query_info (file,
-                            G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+                            G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+                            G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
                             0,
                             cancellable,
                             error);
@@ -6885,6 +6850,8 @@ g_file_query_default_handler (GFile         *file,
   appinfo = NULL;
 
   content_type = g_file_info_get_content_type (info);
+  if (content_type == NULL)
+    content_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE);
   if (content_type)
     {
       /* Don't use is_native(), as we want to support fuse paths if available */
@@ -6926,6 +6893,8 @@ query_default_handler_query_info_cb (GObject      *object,
     }
 
   content_type = g_file_info_get_content_type (info);
+  if (content_type == NULL)
+    content_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE);
   if (content_type)
     {
       char *path;
@@ -6996,7 +6965,8 @@ g_file_query_default_handler_async (GFile              *file,
     g_free (uri_scheme);
 
   g_file_query_info_async (file,
-                           G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+                           G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+                           G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE,
                            0,
                            io_priority,
                            cancellable,
@@ -7044,7 +7014,7 @@ g_file_query_default_handler_finish (GFile        *file,
  *
  * Loads the content of the file into memory. The data is always
  * zero-terminated, but this is not included in the resultant @length.
- * The returned @content should be freed with g_free() when no longer
+ * The returned @contents should be freed with g_free() when no longer
  * needed.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
@@ -7333,7 +7303,7 @@ g_file_load_partial_contents_async (GFile                 *file,
  * Finishes an asynchronous partial load operation that was started
  * with g_file_load_partial_contents_async(). The data is always
  * zero-terminated, but this is not included in the resultant @length.
- * The returned @content should be freed with g_free() when no longer
+ * The returned @contents should be freed with g_free() when no longer
  * needed.
  *
  * Returns: %TRUE if the load was successful. If %FALSE and @error is
@@ -7430,7 +7400,7 @@ g_file_load_contents_async (GFile               *file,
  *
  * Finishes an asynchronous load of the @file's contents.
  * The contents are placed in @contents, and @length is set to the
- * size of the @contents string. The @content should be freed with
+ * size of the @contents string. The @contents should be freed with
  * g_free() when no longer needed. If @etag_out is present, it will be
  * set to the new entity tag for the @file.
  *
@@ -7687,7 +7657,7 @@ replace_contents_open_callback (GObject      *obj,
  * If @make_backup is %TRUE, this function will attempt to
  * make a backup of @file.
  *
- * Note that no copy of @content will be made, so it must stay valid
+ * Note that no copy of @contents will be made, so it must stay valid
  * until @callback is called. See g_file_replace_contents_bytes_async()
  * for a #GBytes version that will automatically hold a reference to the
  * contents (without copying) for the duration of the call.
index 8441d0b..8b6d083 100644 (file)
@@ -111,10 +111,13 @@ typedef struct _GFileIface                GFileIface;
  * @make_directory: Makes a directory.
  * @make_directory_async: Asynchronously makes a directory.
  * @make_directory_finish: Finishes making a directory asynchronously.
- * @make_symbolic_link: Makes a symbolic link.
+ * @make_symbolic_link: (nullable): Makes a symbolic link. %NULL if symbolic
+ *    links are unsupported.
  * @_make_symbolic_link_async: Asynchronously makes a symbolic link
  * @_make_symbolic_link_finish: Finishes making a symbolic link asynchronously.
- * @copy: Copies a file.
+ * @copy: (nullable): Copies a file. %NULL if copying is unsupported, which will
+ *     cause `GFile` to use a fallback copy method where it reads from the
+ *     source and writes to the destination.
  * @copy_async: Asynchronously copies a file.
  * @copy_finish: Finishes an asynchronous copy operation.
  * @move: Moves a file.
index 032d211..5ec5ec4 100644 (file)
@@ -564,7 +564,7 @@ g_file_info_find_value_by_name (GFileInfo  *info,
  *
  * Checks if a file info structure has an attribute named @attribute.
  *
- * Returns: %TRUE if @Ginfo has an attribute named @attribute,
+ * Returns: %TRUE if @info has an attribute named @attribute,
  *     %FALSE otherwise.
  **/
 gboolean
@@ -588,7 +588,7 @@ g_file_info_has_attribute (GFileInfo  *info,
  * Checks if a file info structure has an attribute in the
  * specified @name_space.
  *
- * Returns: %TRUE if @Ginfo has an attribute in @name_space,
+ * Returns: %TRUE if @info has an attribute in @name_space,
  *     %FALSE otherwise.
  *
  * Since: 2.22
@@ -2163,8 +2163,9 @@ g_file_info_set_size (GFileInfo *info,
  * @info: a #GFileInfo.
  * @mtime: a #GTimeVal.
  *
- * Sets the %G_FILE_ATTRIBUTE_TIME_MODIFIED attribute in the file
- * info to the given time value.
+ * Sets the %G_FILE_ATTRIBUTE_TIME_MODIFIED and
+ * %G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC attributes in the file info to the
+ * given time value.
  *
  * Deprecated: 2.62: Use g_file_info_set_modification_date_time() instead, as
  *    #GTimeVal is deprecated due to the year 2038 problem.
@@ -2200,8 +2201,9 @@ G_GNUC_END_IGNORE_DEPRECATIONS
  * @info: a #GFileInfo.
  * @mtime: (not nullable): a #GDateTime.
  *
- * Sets the %G_FILE_ATTRIBUTE_TIME_MODIFIED attribute in the file
- * info to the given date/time value.
+ * Sets the %G_FILE_ATTRIBUTE_TIME_MODIFIED and
+ * %G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC attributes in the file info to the
+ * given date/time value.
  *
  * Since: 2.62
  */
@@ -2389,7 +2391,7 @@ matcher_optimize (GFileAttributeMatcher *matcher)
  * the number of references falls to 0, the #GFileAttributeMatcher is
  * automatically destroyed.
  *
- * The @attribute string should be formatted with specific keys separated
+ * The @attributes string should be formatted with specific keys separated
  * from namespaces with a double colon. Several "namespace::key" strings may be
  * concatenated with a single comma (e.g. "standard::type,standard::is-hidden").
  * The wildcard "*" may be used to match all keys and namespaces, or
index 1629a2e..d245951 100644 (file)
@@ -578,8 +578,10 @@ typedef struct _GFileInfoClass   GFileInfoClass;
  * G_FILE_ATTRIBUTE_UNIX_MODE:
  *
  * A key in the "unix" namespace for getting the mode of the file
- * (e.g. whether the file is a regular file, symlink, etc). See lstat()
- * documentation. This attribute is only available for UNIX file systems.
+ * (e.g. whether the file is a regular file, symlink, etc). See the
+ * documentation for `lstat()`: this attribute is equivalent to the `st_mode`
+ * member of `struct stat`, and includes both the file type and permissions.
+ * This attribute is only available for UNIX file systems.
  * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
  **/
 #define G_FILE_ATTRIBUTE_UNIX_MODE "unix::mode"                   /* uint32 */
diff --git a/gio/gio-launch-desktop.c b/gio/gio-launch-desktop.c
deleted file mode 100644 (file)
index 03845df..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/* GIO - GLib Input, Output and Streaming Library
- *
- * Copyright (C) 2018 Endless Mobile, 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.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General
- * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
- *
- * Author: Daniel Drake <drake@endlessm.com>
- */
-
-/*
- * gio-launch-desktop: GDesktopAppInfo helper
- * Executable wrapper to set GIO_LAUNCHED_DESKTOP_FILE_PID
- * There are complications when doing this in a fork()/exec() codepath,
- * and it cannot otherwise be done with posix_spawn().
- * This wrapper is designed to be minimal and lightweight.
- * It does not even link against glib.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-int
-main (int argc, char *argv[])
-{
-  pid_t pid = getpid ();
-  char buf[50];
-  int r;
-
-  if (argc < 2)
-    return -1;
-
-  r = snprintf (buf, sizeof (buf), "GIO_LAUNCHED_DESKTOP_FILE_PID=%ld", (long) pid);
-  if (r >= sizeof (buf))
-    return -1;
-
-  putenv (buf);
-
-  return execvp (argv[1], argv + 1);
-}
index 4cc4a9d..0083eba 100644 (file)
@@ -37,6 +37,7 @@ static gboolean interactive = FALSE;
 static gboolean preserve = FALSE;
 static gboolean backup = FALSE;
 static gboolean no_dereference = FALSE;
+static gboolean default_permissions = FALSE;
 
 static const GOptionEntry entries[] = {
   { "no-target-directory", 'T', 0, G_OPTION_ARG_NONE, &no_target_directory, N_("No target directory"), NULL },
@@ -45,6 +46,7 @@ static const GOptionEntry entries[] = {
   { "preserve", 'p', 0, G_OPTION_ARG_NONE, &preserve, N_("Preserve all attributes"), NULL },
   { "backup", 'b', 0, G_OPTION_ARG_NONE, &backup, N_("Backup existing destination files"), NULL },
   { "no-dereference", 'P', 0, G_OPTION_ARG_NONE, &no_dereference, N_("Never follow symbolic links"), NULL },
+  { "default-permissions", 0, 0, G_OPTION_ARG_NONE, &default_permissions, N_("Use default permissions for the destination"), NULL },
   { NULL }
 };
 
@@ -175,6 +177,8 @@ handle_copy (int argc, char *argv[], gboolean do_help)
         flags |= G_FILE_COPY_NOFOLLOW_SYMLINKS;
       if (preserve)
         flags |= G_FILE_COPY_ALL_METADATA;
+      if (default_permissions)
+        flags |= G_FILE_COPY_TARGET_DEFAULT_PERMS;
 
       error = NULL;
       start_time = g_get_monotonic_time ();
index d6fc6b4..7cf5683 100644 (file)
 #include <gio/gio.h>
 #include <gi18n.h>
 
-#include "gio-tool.h"
+#ifdef G_OS_UNIX
+#include <gio/gunixmounts.h>
+#endif
 
+#include "gio-tool.h"
 
 static gboolean writable = FALSE;
 static gboolean filesystem = FALSE;
@@ -120,6 +123,10 @@ show_info (GFile *file, GFileInfo *info)
   const char *name, *type;
   char *escaped, *uri;
   goffset size;
+  const char *path;
+#ifdef G_OS_UNIX
+  GUnixMountEntry *entry;
+#endif
 
   name = g_file_info_get_display_name (info);
   if (name)
@@ -159,6 +166,50 @@ show_info (GFile *file, GFileInfo *info)
   g_print (_("uri: %s\n"), uri);
   g_free (uri);
 
+  path = g_file_peek_path (file);
+  if (path)
+    {
+      g_print (_("local path: %s\n"), path);
+
+#ifdef G_OS_UNIX
+      entry = g_unix_mount_at (path, NULL);
+      if (entry == NULL)
+        entry = g_unix_mount_for (path, NULL);
+      if (entry != NULL)
+        {
+          gchar *device;
+          const gchar *root;
+          gchar *root_string = NULL;
+          gchar *mount;
+          gchar *fs;
+          gchar *options;
+
+          device = g_strescape (g_unix_mount_get_device_path (entry), NULL);
+          root = g_unix_mount_get_root_path (entry);
+          if (root != NULL && g_strcmp0 (root, "/") != 0)
+            {
+              escaped = g_strescape (root, NULL);
+              root_string = g_strconcat ("[", escaped, "]", NULL);
+              g_free (escaped);
+            }
+          mount = g_strescape (g_unix_mount_get_mount_path (entry), NULL);
+          fs = g_strescape (g_unix_mount_get_fs_type (entry), NULL);
+          options = g_strescape (g_unix_mount_get_options (entry), NULL);
+
+          g_print (_("unix mount: %s%s %s %s %s\n"), device,
+                   root_string ? root_string : "", mount, fs, options);
+
+          g_free (device);
+          g_free (root_string);
+          g_free (mount);
+          g_free (fs);
+          g_free (options);
+
+          g_unix_mount_free (entry);
+        }
+#endif
+    }
+
   show_attributes (info);
 }
 
index d1501b8..9f52d15 100644 (file)
@@ -29,6 +29,7 @@ static char *attributes = NULL;
 static gboolean show_hidden = FALSE;
 static gboolean show_long = FALSE;
 static gboolean nofollow_symlinks = FALSE;
+static gboolean print_display_names = FALSE;
 static gboolean print_uris = FALSE;
 
 static const GOptionEntry entries[] = {
@@ -36,6 +37,7 @@ static const GOptionEntry entries[] = {
   { "hidden", 'h', 0, G_OPTION_ARG_NONE, &show_hidden, N_("Show hidden files"), NULL },
   { "long", 'l', 0, G_OPTION_ARG_NONE, &show_long, N_("Use a long listing format"), NULL },
   { "nofollow-symlinks", 'n', 0, G_OPTION_ARG_NONE, &nofollow_symlinks, N_("Don’t follow symbolic links"), NULL},
+  { "print-display-names", 'd', 0, G_OPTION_ARG_NONE, &print_display_names, N_("Print display names"), NULL },
   { "print-uris", 'u', 0, G_OPTION_ARG_NONE, &print_uris, N_("Print full URIs"), NULL},
   { NULL }
 };
@@ -54,7 +56,11 @@ show_file_listing (GFileInfo *info, GFile *parent)
   if ((g_file_info_get_is_hidden (info)) && !show_hidden)
     return;
 
-  name = g_file_info_get_name (info);
+  if (print_display_names)
+    name = g_file_info_get_display_name (info);
+  else
+    name = g_file_info_get_name (info);
+
   if (name == NULL)
     name = "";
 
@@ -81,7 +87,8 @@ show_file_listing (GFileInfo *info, GFile *parent)
       char *val_as_string;
 
       if (!show_long ||
-          strcmp (attributes[i], G_FILE_ATTRIBUTE_STANDARD_NAME) == 0 ||
+          (!print_display_names && strcmp (attributes[i], G_FILE_ATTRIBUTE_STANDARD_NAME) == 0) ||
+          (print_display_names && strcmp (attributes[i], G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME) == 0) ||
           strcmp (attributes[i], G_FILE_ATTRIBUTE_STANDARD_SIZE) == 0 ||
           strcmp (attributes[i], G_FILE_ATTRIBUTE_STANDARD_TYPE) == 0 ||
           strcmp (attributes[i], G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN) == 0)
@@ -195,7 +202,8 @@ handle_list (int argc, char *argv[], gboolean do_help)
   if (attributes != NULL)
     show_long = TRUE;
 
-  attributes = g_strconcat (G_FILE_ATTRIBUTE_STANDARD_NAME ","
+  attributes = g_strconcat (!print_display_names ? G_FILE_ATTRIBUTE_STANDARD_NAME "," : "",
+                            print_display_names ? G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "," : "",
                             G_FILE_ATTRIBUTE_STANDARD_TYPE ","
                             G_FILE_ATTRIBUTE_STANDARD_SIZE ","
                             G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN,
index 05647d9..67278bb 100644 (file)
@@ -53,7 +53,7 @@ static gboolean tcrypt_hidden = FALSE;
 static gboolean tcrypt_system = FALSE;
 static guint tcrypt_pim = 0;
 static const char *unmount_scheme = NULL;
-static const char *mount_device_file = NULL;
+static const char *mount_id = NULL;
 static const char *stop_device_file = NULL;
 static gboolean success = TRUE;
 
@@ -61,7 +61,7 @@ static gboolean success = TRUE;
 static const GOptionEntry entries[] =
 {
   { "mountable", 'm', 0, G_OPTION_ARG_NONE, &mount_mountable, N_("Mount as mountable"), NULL },
-  { "device", 'd', 0, G_OPTION_ARG_STRING, &mount_device_file, N_("Mount volume with device file"), N_("DEVICE") },
+  { "device", 'd', 0, G_OPTION_ARG_STRING, &mount_id, N_("Mount volume with device file, or other identifier"), N_("ID") },
   { "unmount", 'u', 0, G_OPTION_ARG_NONE, &mount_unmount, N_("Unmount"), NULL},
   { "eject", 'e', 0, G_OPTION_ARG_NONE, &mount_eject, N_("Eject"), NULL},
   { "stop", 't', 0, G_OPTION_ARG_STRING, &stop_device_file, N_("Stop drive with device file"), N_("DEVICE") },
@@ -950,7 +950,7 @@ mount_with_device_file_cb (GObject *object,
   GVolume *volume;
   gboolean succeeded;
   GError *error = NULL;
-  gchar *device_path = (gchar *)user_data;
+  gchar *id = (gchar *)user_data;
 
   volume = G_VOLUME (object);
 
@@ -958,28 +958,12 @@ mount_with_device_file_cb (GObject *object,
 
   if (!succeeded)
     {
-      print_error ("%s: %s", device_path, error->message);
+      print_error ("%s: %s", id, error->message);
       g_error_free (error);
       success = FALSE;
     }
-  else
-    {
-      GMount *mount;
-      GFile *root;
-      char *mount_path;
-
-      mount = g_volume_get_mount (volume);
-      root = g_mount_get_root (mount);
-      mount_path = g_file_get_path (root);
-
-      g_print (_("Mounted %s at %s\n"), device_path, mount_path);
-
-      g_object_unref (mount);
-      g_object_unref (root);
-      g_free (mount_path);
-    }
 
-  g_free (device_path);
+  g_free (id);
 
   outstanding_mounts--;
 
@@ -988,7 +972,7 @@ mount_with_device_file_cb (GObject *object,
 }
 
 static void
-mount_with_device_file (const char *device_file)
+mount_with_id (const char *id)
 {
   GList *volumes;
   GList *l;
@@ -997,10 +981,12 @@ mount_with_device_file (const char *device_file)
   for (l = volumes; l != NULL; l = l->next)
     {
       GVolume *volume = G_VOLUME (l->data);
-      gchar *id;
+      gchar *device;
+      gchar *uuid;
 
-      id = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
-      if (g_strcmp0 (id, device_file) == 0)
+      device = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
+      uuid = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UUID);
+      if (g_strcmp0 (device, id) == 0 || g_strcmp0 (uuid, id) == 0)
         {
           GMountOperation *op;
 
@@ -1011,20 +997,21 @@ mount_with_device_file (const char *device_file)
                           op,
                           NULL,
                           mount_with_device_file_cb,
-                          id);
+                          g_strdup (id));
 
           g_object_unref (op);
 
           outstanding_mounts++;
         }
-      else
-        g_free (id);
+
+      g_free (device);
+      g_free (uuid);
     }
   g_list_free_full (volumes, g_object_unref);
 
   if (outstanding_mounts == 0)
     {
-      print_error ("%s: %s", device_file, _("No volume for device file"));
+      print_error ("%s: %s", id, _("No volume for given ID"));
       success = FALSE;
     }
 }
@@ -1236,8 +1223,8 @@ handle_mount (int argc, char *argv[], gboolean do_help)
 
   if (mount_list)
     list_monitor_items ();
-  else if (mount_device_file != NULL)
-    mount_with_device_file (mount_device_file);
+  else if (mount_id != NULL)
+    mount_with_id (mount_id);
   else if (stop_device_file)
     stop_with_device_file (stop_device_file);
   else if (unmount_scheme != NULL)
index 8053768..3532b73 100644 (file)
--- a/gio/gio.h
+++ b/gio/gio.h
 #include <gio/gdatagrambased.h>
 #include <gio/gdatainputstream.h>
 #include <gio/gdataoutputstream.h>
+#include <gio/gdbusactiongroup.h>
 #include <gio/gdbusaddress.h>
 #include <gio/gdbusauthobserver.h>
 #include <gio/gdbusconnection.h>
 #include <gio/gdbuserror.h>
+#include <gio/gdbusinterface.h>
+#include <gio/gdbusinterfaceskeleton.h>
 #include <gio/gdbusintrospection.h>
+#include <gio/gdbusmenumodel.h>
 #include <gio/gdbusmessage.h>
 #include <gio/gdbusmethodinvocation.h>
 #include <gio/gdbusnameowning.h>
 #include <gio/gdbusnamewatching.h>
+#include <gio/gdbusobject.h>
+#include <gio/gdbusobjectmanager.h>
+#include <gio/gdbusobjectmanagerclient.h>
+#include <gio/gdbusobjectmanagerserver.h>
+#include <gio/gdbusobjectproxy.h>
+#include <gio/gdbusobjectskeleton.h>
 #include <gio/gdbusproxy.h>
 #include <gio/gdbusserver.h>
 #include <gio/gdbusutils.h>
@@ -64,9 +74,9 @@
 #include <gio/gdtlsconnection.h>
 #include <gio/gdtlsserverconnection.h>
 #include <gio/gemblemedicon.h>
+#include <gio/gfile.h>
 #include <gio/gfileattribute.h>
 #include <gio/gfileenumerator.h>
-#include <gio/gfile.h>
 #include <gio/gfileicon.h>
 #include <gio/gfileinfo.h>
 #include <gio/gfileinputstream.h>
 #include <gio/giomodule.h>
 #include <gio/gioscheduler.h>
 #include <gio/giostream.h>
+#include <gio/glistmodel.h>
+#include <gio/gliststore.h>
 #include <gio/gloadableicon.h>
 #include <gio/gmemoryinputstream.h>
+#include <gio/gmemorymonitor.h>
 #include <gio/gmemoryoutputstream.h>
+#include <gio/gmenu.h>
+#include <gio/gmenuexporter.h>
+#include <gio/gmenumodel.h>
 #include <gio/gmount.h>
 #include <gio/gmountoperation.h>
 #include <gio/gnativesocketaddress.h>
 #include <gio/gnetworkaddress.h>
 #include <gio/gnetworkmonitor.h>
 #include <gio/gnetworkservice.h>
+#include <gio/gnotification.h>
 #include <gio/goutputstream.h>
 #include <gio/gpermission.h>
 #include <gio/gpollableinputstream.h>
 #include <gio/gproxyaddress.h>
 #include <gio/gproxyaddressenumerator.h>
 #include <gio/gproxyresolver.h>
+#include <gio/gremoteactiongroup.h>
 #include <gio/gresolver.h>
 #include <gio/gresource.h>
 #include <gio/gseekable.h>
-#include <gio/gsettingsschema.h>
 #include <gio/gsettings.h>
+#include <gio/gsettingsschema.h>
 #include <gio/gsimpleaction.h>
 #include <gio/gsimpleactiongroup.h>
 #include <gio/gsimpleasyncresult.h>
 #include <gio/gsimpleiostream.h>
 #include <gio/gsimplepermission.h>
-#include <gio/gsocketaddressenumerator.h>
+#include <gio/gsimpleproxyresolver.h>
+#include <gio/gsocket.h>
 #include <gio/gsocketaddress.h>
+#include <gio/gsocketaddressenumerator.h>
 #include <gio/gsocketclient.h>
 #include <gio/gsocketconnectable.h>
 #include <gio/gsocketconnection.h>
 #include <gio/gsocketcontrolmessage.h>
-#include <gio/gsocket.h>
 #include <gio/gsocketlistener.h>
 #include <gio/gsocketservice.h>
 #include <gio/gsrvtarget.h>
-#include <gio/gsimpleproxyresolver.h>
-#include <gio/gtask.h>
 #include <gio/gsubprocess.h>
 #include <gio/gsubprocesslauncher.h>
+#include <gio/gtask.h>
 #include <gio/gtcpconnection.h>
 #include <gio/gtcpwrapperconnection.h>
 #include <gio/gtestdbus.h>
 #include <gio/gtlsdatabase.h>
 #include <gio/gtlsfiledatabase.h>
 #include <gio/gtlsinteraction.h>
-#include <gio/gtlsserverconnection.h>
 #include <gio/gtlspassword.h>
+#include <gio/gtlsserverconnection.h>
 #include <gio/gvfs.h>
 #include <gio/gvolume.h>
 #include <gio/gvolumemonitor.h>
 #include <gio/gzlibcompressor.h>
 #include <gio/gzlibdecompressor.h>
-#include <gio/gdbusinterface.h>
-#include <gio/gdbusinterfaceskeleton.h>
-#include <gio/gdbusobject.h>
-#include <gio/gdbusobjectskeleton.h>
-#include <gio/gdbusobjectproxy.h>
-#include <gio/gdbusobjectmanager.h>
-#include <gio/gdbusobjectmanagerclient.h>
-#include <gio/gdbusobjectmanagerserver.h>
-#include <gio/gdbusactiongroup.h>
-#include <gio/gremoteactiongroup.h>
-#include <gio/gmenumodel.h>
-#include <gio/gmenu.h>
-#include <gio/gmenuexporter.h>
-#include <gio/gdbusmenumodel.h>
-#include <gio/gnotification.h>
-#include <gio/glistmodel.h>
-#include <gio/gliststore.h>
 
 #include <gio/gio-autocleanups.h>
 
index 47d4eac..addb70a 100644 (file)
@@ -25,7 +25,9 @@
 #error "config.h must be included prior to gio_trace.h"
 #endif
 
-#ifdef HAVE_DTRACE
+/* Ignore probes when doing static analysis, as they do weird things which
+ * confuses the analyser. */
+#if defined(HAVE_DTRACE) && !defined(__clang_analyzer__)
 
 /* include the generated probes header and put markers in code */
 #include "gio_probes.h"
index 22fe700..6154d43 100644 (file)
@@ -1964,6 +1964,35 @@ typedef enum {
   G_POLLABLE_RETURN_WOULD_BLOCK  = -G_IO_ERROR_WOULD_BLOCK
 } GPollableReturn;
 
+/**
+ * GMemoryMonitorWarningLevel:
+ * @G_MEMORY_MONITOR_WARNING_LEVEL_LOW: Memory on the device is low, processes
+ *   should free up unneeded resources (for example, in-memory caches) so they can
+ *   be used elsewhere.
+ * @G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM: Same as @G_MEMORY_MONITOR_WARNING_LEVEL_LOW
+ *   but the device has even less free memory, so processes should try harder to free
+ *   up unneeded resources. If your process does not need to stay running, it is a
+ *   good time for it to quit.
+ * @G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL: The system will soon start terminating
+ *   processes to reclaim memory, including background processes.
+ *
+ * Memory availability warning levels.
+ *
+ * Note that because new values might be added, it is recommended that applications check
+ * #GMemoryMonitorWarningLevel as ranges, for example:
+ * |[<!-- language="C" -->
+ * if (warning_level > G_MEMORY_MONITOR_WARNING_LEVEL_LOW)
+ *   drop_caches ();
+ * ]|
+ *
+ * Since: 2.64
+ */
+typedef enum {
+  G_MEMORY_MONITOR_WARNING_LEVEL_LOW      = 50,
+  G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM   = 100,
+  G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL = 255
+} GMemoryMonitorWarningLevel;
+
 G_END_DECLS
 
 #endif /* __GIO_ENUMS_H__ */
index 1007abd..c420260 100644 (file)
@@ -42,6 +42,9 @@
 #include "gnotificationbackend.h"
 #include "ginitable.h"
 #include "gnetworkmonitor.h"
+#include "gmemorymonitor.h"
+#include "gmemorymonitorportal.h"
+#include "gmemorymonitordbus.h"
 #ifdef G_OS_WIN32
 #include "gregistrysettingsbackend.h"
 #endif
@@ -1025,6 +1028,9 @@ extern GType _g_network_monitor_netlink_get_type (void);
 extern GType _g_network_monitor_nm_get_type (void);
 #endif
 
+extern GType g_memory_monitor_dbus_get_type (void);
+extern GType g_memory_monitor_portal_get_type (void);
+
 #ifdef G_OS_UNIX
 extern GType g_fdo_notification_backend_get_type (void);
 extern GType g_gtk_notification_backend_get_type (void);
@@ -1127,6 +1133,9 @@ _g_io_modules_ensure_extension_points_registered (void)
 
       ep = g_io_extension_point_register (G_NOTIFICATION_BACKEND_EXTENSION_POINT_NAME);
       g_io_extension_point_set_required_type (ep, G_TYPE_NOTIFICATION_BACKEND);
+
+      ep = g_io_extension_point_register (G_MEMORY_MONITOR_EXTENSION_POINT_NAME);
+      g_io_extension_point_set_required_type (ep, G_TYPE_MEMORY_MONITOR);
     }
   
   G_UNLOCK (registered_extensions);
@@ -1144,18 +1153,9 @@ get_gio_module_dir (void)
       gchar *install_dir;
 
       install_dir = g_win32_get_package_installation_directory_of_module (gio_dll);
-#ifdef _MSC_VER
-      /* On Visual Studio builds we have all the libraries and binaries in bin
-       * so better load the gio modules from bin instead of lib
-       */
-      module_dir = g_build_filename (install_dir,
-                                     "bin", "gio", "modules",
-                                     NULL);
-#else
       module_dir = g_build_filename (install_dir,
                                      "lib", "gio", "modules",
                                      NULL);
-#endif
       g_free (install_dir);
 #else
       module_dir = g_strdup (GIO_MODULE_DIR);
@@ -1235,6 +1235,8 @@ _g_io_modules_ensure_loaded (void)
       g_type_ensure (g_fdo_notification_backend_get_type ());
       g_type_ensure (g_gtk_notification_backend_get_type ());
       g_type_ensure (g_portal_notification_backend_get_type ());
+      g_type_ensure (g_memory_monitor_dbus_get_type ());
+      g_type_ensure (g_memory_monitor_portal_get_type ());
       g_type_ensure (g_network_monitor_portal_get_type ());
       g_type_ensure (g_proxy_resolver_portal_get_type ());
 #endif
index 2bc54e4..608d912 100644 (file)
@@ -43,6 +43,10 @@ void g_socket_connection_set_cached_remote_address (GSocketConnection *connectio
 #define G_IOV_MAX IOV_MAX
 #elif defined(UIO_MAXIOV)
 #define G_IOV_MAX UIO_MAXIOV
+#elif defined(__APPLE__)
+/* For macOS/iOS, UIO_MAXIOV is documented in writev(2), but <sys/uio.h>
+ * only declares it if defined(KERNEL) */
+#define G_IOV_MAX 512
 #else
 /* 16 is the minimum value required by POSIX */
 #define G_IOV_MAX 16
diff --git a/gio/giowin32-private.c b/gio/giowin32-private.c
new file mode 100644 (file)
index 0000000..7120ae0
--- /dev/null
@@ -0,0 +1,447 @@
+/* giowin32-private.c - private glib-gio functions for W32 GAppInfo
+ *
+ * Copyright 2019 Руслан Ижбулатов
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+static gssize
+g_utf16_len (const gunichar2 *str)
+{
+  gssize result;
+
+  for (result = 0; str[0] != 0; str++, result++)
+    ;
+
+  return result;
+}
+
+static gunichar2 *
+g_wcsdup (const gunichar2 *str, gssize str_len)
+{
+  gssize str_size;
+
+  g_return_val_if_fail (str != NULL, NULL);
+
+  if (str_len == -1)
+    str_len = g_utf16_len (str);
+
+  g_assert (str_len <= G_MAXSIZE / sizeof (gunichar2) - 1);
+  str_size = (str_len + 1) * sizeof (gunichar2);
+
+  return g_memdup (str, str_size);
+}
+
+static const gunichar2 *
+g_utf16_wchr (const gunichar2 *str, const wchar_t wchr)
+{
+  for (; str != NULL && str[0] != 0; str++)
+    if ((wchar_t) str[0] == wchr)
+      return str;
+
+  return NULL;
+}
+
+static gboolean
+g_utf16_to_utf8_and_fold (const gunichar2  *str,
+                          gssize            length,
+                          gchar           **str_u8,
+                          gchar           **str_u8_folded)
+{
+  gchar *u8;
+  gchar *folded;
+  u8 = g_utf16_to_utf8 (str, length, NULL, NULL, NULL);
+
+  if (u8 == NULL)
+    return FALSE;
+
+  folded = g_utf8_casefold (u8, -1);
+
+  if (str_u8)
+    *str_u8 = g_steal_pointer (&u8);
+
+  g_free (u8);
+
+  if (str_u8_folded)
+    *str_u8_folded = g_steal_pointer (&folded);
+
+  g_free (folded);
+
+  return TRUE;
+}
+
+/* Finds the last directory separator in @filename,
+ * returns a pointer to the position after that separator.
+ * If the string ends with a separator, returned value
+ * will be pointing at the NUL terminator.
+ * If the string does not contain separators, returns the
+ * string itself.
+ */
+static const gunichar2 *
+g_utf16_find_basename (const gunichar2 *filename,
+                       gssize           len)
+{
+  const gunichar2 *result;
+
+  if (len < 0)
+    len = g_utf16_len (filename);
+  if (len == 0)
+    return filename;
+
+  result = &filename[len - 1];
+
+  while (result > filename)
+    {
+      if ((wchar_t) result[0] == L'/' ||
+          (wchar_t) result[0] == L'\\')
+        {
+          result += 1;
+          break;
+        }
+
+      result -= 1;
+    }
+
+  return result;
+}
+
+/* Finds the last directory separator in @filename,
+ * returns a pointer to the position after that separator.
+ * If the string ends with a separator, returned value
+ * will be pointing at the NUL terminator.
+ * If the string does not contain separators, returns the
+ * string itself.
+ */
+static const gchar *
+g_utf8_find_basename (const gchar *filename,
+                      gssize       len)
+{
+  const gchar *result;
+
+  if (len < 0)
+    len = strlen (filename);
+  if (len == 0)
+    return filename;
+
+  result = &filename[len - 1];
+
+  while (result > filename)
+    {
+      if (result[0] == '/' ||
+          result[0] == '\\')
+        {
+          result += 1;
+          break;
+        }
+
+      result -= 1;
+    }
+
+  return result;
+}
+
+/**
+ * Parses @commandline, figuring out what the filename being invoked
+ * is. All returned strings are pointers into @commandline.
+ * @commandline must be a valid UTF-16 string and not be NULL.
+ * @after_executable is the first character after executable
+ * (usually a space, but not always).
+ * If @comma_separator is TRUE, accepts ',' as a separator between
+ * the filename and the following argument.
+ */
+static void
+_g_win32_parse_filename (const gunichar2  *commandline,
+                         gboolean          comma_separator,
+                         const gunichar2 **executable_start,
+                         gssize           *executable_len,
+                         const gunichar2 **executable_basename,
+                         const gunichar2 **after_executable)
+{
+  const gunichar2 *p;
+  const gunichar2 *first_argument;
+  gboolean quoted;
+  gssize len;
+  gssize execlen;
+  gboolean found;
+
+  while ((wchar_t) commandline[0] == L' ')
+    commandline++;
+
+  quoted = FALSE;
+  execlen = 0;
+  found = FALSE;
+  first_argument = NULL;
+
+  if ((wchar_t) commandline[0] == L'"')
+    {
+      quoted = TRUE;
+      commandline += 1;
+    }
+
+  len = g_utf16_len (commandline);
+  p = commandline;
+
+  while (p < &commandline[len])
+    {
+      switch ((wchar_t) p[0])
+        {
+        case L'"':
+          if (quoted)
+            {
+              first_argument = p + 1;
+              /* Note: this is a valid commandline for opening "c:/file.txt":
+               * > "notepad"c:/file.txt
+               */
+              p = &commandline[len];
+              found = TRUE;
+            }
+          else
+            execlen += 1;
+          break;
+        case L' ':
+          if (!quoted)
+            {
+              first_argument = p;
+              p = &commandline[len];
+              found = TRUE;
+            }
+          else
+            execlen += 1;
+          break;
+        case L',':
+          if (!quoted && comma_separator)
+            {
+              first_argument = p;
+              p = &commandline[len];
+              found = TRUE;
+            }
+          else
+            execlen += 1;
+          break;
+        default:
+          execlen += 1;
+          break;
+        }
+      p += 1;
+    }
+
+  if (!found)
+    first_argument = &commandline[len];
+
+  if (executable_start)
+    *executable_start = commandline;
+
+  if (executable_len)
+    *executable_len = execlen;
+
+  if (executable_basename)
+    *executable_basename = g_utf16_find_basename (commandline, execlen);
+
+  if (after_executable)
+    *after_executable = first_argument;
+}
+
+/* Make sure @commandline is a valid UTF-16 string before
+ * calling this function!
+ * follow_class_chain_to_handler() does perform such validation.
+ */
+static void
+_g_win32_extract_executable (const gunichar2  *commandline,
+                             gchar           **ex_out,
+                             gchar           **ex_basename_out,
+                             gchar           **ex_folded_out,
+                             gchar           **ex_folded_basename_out,
+                             gchar           **dll_function_out)
+{
+  gchar *ex;
+  gchar *ex_folded;
+  const gunichar2 *first_argument;
+  const gunichar2 *executable;
+  const gunichar2 *executable_basename;
+  gboolean quoted;
+  gboolean folded;
+  gssize execlen;
+
+  _g_win32_parse_filename (commandline, FALSE, &executable, &execlen, &executable_basename, &first_argument);
+
+  commandline = executable;
+
+  while ((wchar_t) first_argument[0] == L' ')
+    first_argument++;
+
+  folded = g_utf16_to_utf8_and_fold (executable, (gssize) execlen, &ex, &ex_folded);
+  /* This should never fail as @executable has to be valid UTF-16. */
+  g_assert (folded);
+
+  if (dll_function_out)
+    *dll_function_out = NULL;
+
+  /* See if the executable basename is "rundll32.exe". If so, then
+   * parse the rest of the commandline as r'"?path-to-dll"?[ ]*,*[ ]*dll_function_to_invoke'
+   */
+  /* Using just "rundll32.exe", without an absolute path, seems
+   * very exploitable, but MS does that sometimes, so we have
+   * to accept that.
+   */
+  if ((g_strcmp0 (ex_folded, "rundll32.exe") == 0 ||
+       g_str_has_suffix (ex_folded, "\\rundll32.exe") ||
+       g_str_has_suffix (ex_folded, "/rundll32.exe")) &&
+      first_argument[0] != 0 &&
+      dll_function_out != NULL)
+    {
+      /* Corner cases:
+       * > rundll32.exe c:\some,file,with,commas.dll,some_function
+       * is treated by rundll32 as:
+       * dll=c:\some
+       * function=file,with,commas.dll,some_function
+       * unless the dll name is surrounded by double quotation marks:
+       * > rundll32.exe "c:\some,file,with,commas.dll",some_function
+       * in which case everything works normally.
+       * Also, quoting only works if it surrounds the file name, i.e:
+       * > rundll32.exe "c:\some,file"",with,commas.dll",some_function
+       * will not work.
+       * Also, comma is optional when filename is quoted or when function
+       * name is separated from the filename by space(s):
+       * > rundll32.exe "c:\some,file,with,commas.dll"some_function
+       * will work,
+       * > rundll32.exe c:\some_dll_without_commas_or_spaces.dll some_function
+       * will work too.
+       * Also, any number of commas is accepted:
+       * > rundll32.exe c:\some_dll_without_commas_or_spaces.dll , , ,,, , some_function
+       * works just fine.
+       * And the ultimate example is:
+       * > "rundll32.exe""c:\some,file,with,commas.dll"some_function
+       * and it also works.
+       * Good job, Microsoft!
+       */
+      const gunichar2 *filename_end = NULL;
+      gssize filename_len = 0;
+      gssize function_len = 0;
+      const gunichar2 *dllpart;
+
+      quoted = FALSE;
+
+      if ((wchar_t) first_argument[0] == L'"')
+        quoted = TRUE;
+
+      _g_win32_parse_filename (first_argument, TRUE, &dllpart, &filename_len, NULL, &filename_end);
+
+      if (filename_end[0] != 0 && filename_len > 0)
+        {
+          const gunichar2 *function_begin = filename_end;
+
+          while ((wchar_t) function_begin[0] == L',' || (wchar_t) function_begin[0] == L' ')
+            function_begin += 1;
+
+          if (function_begin[0] != 0)
+            {
+              gchar *dllpart_utf8;
+              gchar *dllpart_utf8_folded;
+              gchar *function_utf8;
+              gboolean folded;
+              const gunichar2 *space = g_utf16_wchr (function_begin, L' ');
+
+              if (space)
+                function_len = space - function_begin;
+              else
+                function_len = g_utf16_len (function_begin);
+
+              if (quoted)
+                first_argument += 1;
+
+              folded = g_utf16_to_utf8_and_fold (first_argument, filename_len, &dllpart_utf8, &dllpart_utf8_folded);
+              g_assert (folded);
+
+              function_utf8 = g_utf16_to_utf8 (function_begin, function_len, NULL, NULL, NULL);
+
+              /* We only take this branch when dll_function_out is not NULL */
+              *dll_function_out = g_steal_pointer (&function_utf8);
+
+              g_free (function_utf8);
+
+              /*
+               * Free our previous output candidate (rundll32) and replace it with the DLL path,
+               * then proceed forward as if nothing has changed.
+               */
+              g_free (ex);
+              g_free (ex_folded);
+
+              ex = dllpart_utf8;
+              ex_folded = dllpart_utf8_folded;
+            }
+        }
+    }
+
+  if (ex_out)
+    {
+      if (ex_basename_out)
+        *ex_basename_out = (gchar *) g_utf8_find_basename (ex, -1);
+
+      *ex_out = g_steal_pointer (&ex);
+    }
+
+  g_free (ex);
+
+  if (ex_folded_out)
+    {
+      if (ex_folded_basename_out)
+        *ex_folded_basename_out = (gchar *) g_utf8_find_basename (ex_folded, -1);
+
+      *ex_folded_out = g_steal_pointer (&ex_folded);
+    }
+
+  g_free (ex_folded);
+}
+
+/**
+ * rundll32 accepts many different commandlines. Among them is this:
+ * > rundll32.exe "c:/program files/foo/bar.dll",,, , ,,,, , function_name %1
+ * rundll32 just reads the first argument as a potentially quoted
+ * filename until the quotation ends (if quoted) or until a comma,
+ * or until a space. Then ignores all subsequent spaces (if any) and commas (if any;
+ * at least one comma is mandatory only if the filename is not quoted),
+ * and then interprets the rest of the commandline (until a space or a NUL-byte)
+ * as a name of a function.
+ * When GLib tries to run a program, it attempts to correctly re-quote the arguments,
+ * turning the first argument into "c:/program files/foo/bar.dll,,,".
+ * This breaks rundll32 parsing logic.
+ * Try to work around this by ensuring that the syntax is like this:
+ * > rundll32.exe "c:/program files/foo/bar.dll" function_name
+ * This syntax is valid for rundll32 *and* GLib spawn routines won't break it.
+ *
+ * @commandline must have at least 2 arguments, and the second argument
+ * must contain a (possibly quoted) filename, followed by a space or
+ * a comma. This can be checked for with an extract_executable() call -
+ * it should return a non-null dll_function.
+ */
+static void
+_g_win32_fixup_broken_microsoft_rundll_commandline (gunichar2 *commandline)
+{
+  const gunichar2 *first_argument;
+  gunichar2 *after_first_argument;
+
+  _g_win32_parse_filename (commandline, FALSE, NULL, NULL, NULL, &first_argument);
+
+  while ((wchar_t) first_argument[0] == L' ')
+    first_argument++;
+
+  _g_win32_parse_filename (first_argument, TRUE, NULL, NULL, NULL, (const gunichar2 **) &after_first_argument);
+
+  if ((wchar_t) after_first_argument[0] == L',')
+    after_first_argument[0] = 0x0020;
+  /* Else everything is ok (first char after filename is ' ' or the first char
+   * of the function name - either way this will work).
+   */
+}
index 9b82eba..f3675c1 100644 (file)
@@ -1061,6 +1061,7 @@ main (int argc, char **argv)
       guint8 *data;
       gsize data_size;
       gsize i;
+      const char *export = "G_MODULE_EXPORT";
 
       if (!g_file_get_contents (binary_target, (char **)&data,
                                &data_size, NULL))
@@ -1081,6 +1082,9 @@ main (int argc, char **argv)
          return 1;
        }
 
+      if (internal)
+        export = "G_GNUC_INTERNAL";
+
       g_fprintf (file,
               "#include <gio/gio.h>\n"
               "\n"
@@ -1140,30 +1144,36 @@ main (int argc, char **argv)
       g_fprintf (file,
               "\n"
               "static GStaticResource static_resource = { %s_resource_data.data, sizeof (%s_resource_data.data)%s, NULL, NULL, NULL };\n"
-              "%s GResource *%s_get_resource (void);\n"
+              "\n"
+              "%s\n"
+              "GResource *%s_get_resource (void);\n"
               "GResource *%s_get_resource (void)\n"
               "{\n"
               "  return g_static_resource_get_resource (&static_resource);\n"
               "}\n",
-              c_name, c_name, (external_data ? "" : " - 1 /* nul terminator */"), linkage, c_name, c_name);
+              c_name, c_name, (external_data ? "" : " - 1 /* nul terminator */"),
+              export, c_name, c_name);
 
 
       if (manual_register)
        {
          g_fprintf (file,
                   "\n"
-                  "%s void %s_unregister_resource (void);\n"
+                  "%s\n"
+                  "void %s_unregister_resource (void);\n"
                   "void %s_unregister_resource (void)\n"
                   "{\n"
                   "  g_static_resource_fini (&static_resource);\n"
                   "}\n"
                   "\n"
-                  "%s void %s_register_resource (void);\n"
+                  "%s\n"
+                  "void %s_register_resource (void);\n"
                   "void %s_register_resource (void)\n"
                   "{\n"
                   "  g_static_resource_init (&static_resource);\n"
                   "}\n",
-                  linkage, c_name, c_name, linkage, c_name, c_name);
+                  export, c_name, c_name,
+                  export, c_name, c_name);
        }
       else
        {
index 7b2a453..3c2361e 100644 (file)
@@ -494,3 +494,86 @@ g_list_store_splice (GListStore *store,
 
   g_list_store_items_changed (store, position, n_removals, n_additions);
 }
+
+/**
+ * g_list_store_find_with_equal_func:
+ * @store: a #GListStore
+ * @item: (type GObject): an item
+ * @equal_func: (scope call): A custom equality check function
+ * @position: (out) (optional): the first position of @item, if it was found.
+ *
+ * Looks up the given @item in the list store by looping over the items and
+ * comparing them with @compare_func until the first occurrence of @item which
+ * matches. If @item was not found, then @position will not be set, and this
+ * method will return %FALSE.
+ *
+ * Returns: Whether @store contains @item. If it was found, @position will be
+ * set to the position where @item occurred for the first time.
+ *
+ * Since: 2.64
+ */
+gboolean
+g_list_store_find_with_equal_func (GListStore *store,
+                                   gpointer    item,
+                                   GEqualFunc  equal_func,
+                                   guint      *position)
+{
+  GSequenceIter *iter, *begin, *end;
+
+  g_return_val_if_fail (G_IS_LIST_STORE (store), FALSE);
+  g_return_val_if_fail (g_type_is_a (G_OBJECT_TYPE (item), store->item_type),
+                        FALSE);
+  g_return_val_if_fail (equal_func != NULL, FALSE);
+
+  /* NOTE: We can't use g_sequence_lookup() or g_sequence_search(), because we
+   * can't assume the sequence is sorted. */
+  begin = g_sequence_get_begin_iter (store->items);
+  end = g_sequence_get_end_iter (store->items);
+
+  iter = begin;
+  while (iter != end)
+    {
+      gpointer iter_item;
+
+      iter_item = g_sequence_get (iter);
+      if (equal_func (iter_item, item))
+        {
+          if (position)
+            *position = g_sequence_iter_get_position (iter);
+          return TRUE;
+        }
+
+      iter = g_sequence_iter_next (iter);
+    }
+
+  return FALSE;
+}
+
+/**
+ * g_list_store_find:
+ * @store: a #GListStore
+ * @item: (type GObject): an item
+ * @position: (out) (optional): the first position of @item, if it was found.
+ *
+ * Looks up the given @item in the list store by looping over the items until
+ * the first occurrence of @item. If @item was not found, then @position will
+ * not be set, and this method will return %FALSE.
+ *
+ * If you need to compare the two items with a custom comparison function, use
+ * g_list_store_find_with_equal_func() with a custom #GEqualFunc instead.
+ *
+ * Returns: Whether @store contains @item. If it was found, @position will be
+ * set to the position where @item occurred for the first time.
+ *
+ * Since: 2.64
+ */
+gboolean
+g_list_store_find (GListStore *store,
+                   gpointer    item,
+                   guint      *position)
+{
+  return g_list_store_find_with_equal_func (store,
+                                            item,
+                                            g_direct_equal,
+                                            position);
+}
index 407d542..ef3b839 100644 (file)
@@ -72,6 +72,17 @@ void                    g_list_store_splice                             (GListSt
                                                                          gpointer   *additions,
                                                                          guint       n_additions);
 
+GLIB_AVAILABLE_IN_2_64
+gboolean                g_list_store_find                               (GListStore *store,
+                                                                         gpointer    item,
+                                                                         guint      *position);
+
+GLIB_AVAILABLE_IN_2_64
+gboolean                g_list_store_find_with_equal_func               (GListStore *store,
+                                                                         gpointer    item,
+                                                                         GEqualFunc  equal_func,
+                                                                         guint      *position);
+
 G_END_DECLS
 
 #endif /* __G_LIST_STORE_H__ */
index 62f30b5..5d01a4b 100644 (file)
@@ -1511,7 +1511,7 @@ g_local_file_delete (GFile         *file,
     {
       int errsv = errno;
 
-      /* Posix allows EEXIST too, but the more sane error
+      /* Posix allows EEXIST too, but the clearer error
         is G_IO_ERROR_NOT_FOUND, and it's what nautilus
         expects */
       if (errsv == EEXIST)
@@ -2330,13 +2330,13 @@ g_local_file_make_directory (GFile         *file,
   return TRUE;
 }
 
+#ifdef HAVE_SYMLINK
 static gboolean
 g_local_file_make_symbolic_link (GFile         *file,
                                 const char    *symlink_value,
                                 GCancellable  *cancellable,
                                 GError       **error)
 {
-#ifdef HAVE_SYMLINK
   GLocalFile *local = G_LOCAL_FILE (file);
   
   if (symlink (symlink_value, local->filename) == -1)
@@ -2359,26 +2359,8 @@ g_local_file_make_symbolic_link (GFile         *file,
       return FALSE;
     }
   return TRUE;
-#else
-  g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, _("Symbolic links not supported"));
-  return FALSE;
-#endif
-}
-
-
-static gboolean
-g_local_file_copy (GFile                  *source,
-                  GFile                  *destination,
-                  GFileCopyFlags          flags,
-                  GCancellable           *cancellable,
-                  GFileProgressCallback   progress_callback,
-                  gpointer                progress_callback_data,
-                  GError                **error)
-{
-  /* Fall back to default copy */
-  g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, "Copy not supported");
-  return FALSE;
 }
+#endif
 
 static gboolean
 g_local_file_move (GFile                  *source,
@@ -2979,8 +2961,9 @@ g_local_file_file_iface_init (GFileIface *iface)
   iface->delete_file = g_local_file_delete;
   iface->trash = g_local_file_trash;
   iface->make_directory = g_local_file_make_directory;
+#ifdef HAVE_SYMLINK
   iface->make_symbolic_link = g_local_file_make_symbolic_link;
-  iface->copy = g_local_file_copy;
+#endif
   iface->move = g_local_file_move;
   iface->monitor_dir = g_local_file_monitor_dir;
   iface->monitor_file = g_local_file_monitor_file;
index 487f8cc..5245567 100644 (file)
@@ -504,7 +504,10 @@ get_xattrs (const char            *path,
        }
 
       if (list_res_size == -1)
-       return;
+        {
+          g_free (list);
+          return;
+        }
 
       attr = list;
       while (list_res_size > 0)
index a3dd621..a8161bd 100644 (file)
@@ -224,9 +224,9 @@ g_local_file_output_stream_write (GOutputStream  *stream,
 #ifdef G_OS_UNIX
 /* Macro to check if struct iovec and GOutputVector have the same ABI */
 #define G_OUTPUT_VECTOR_IS_IOVEC (sizeof (struct iovec) == sizeof (GOutputVector) && \
-      sizeof ((struct iovec *) 0)->iov_base == sizeof ((GOutputVector *) 0)->buffer && \
+      G_SIZEOF_MEMBER (struct iovec, iov_base) == G_SIZEOF_MEMBER (GOutputVector, buffer) && \
       G_STRUCT_OFFSET (struct iovec, iov_base) == G_STRUCT_OFFSET (GOutputVector, buffer) && \
-      sizeof ((struct iovec *) 0)->iov_len == sizeof((GOutputVector *) 0)->size && \
+      G_SIZEOF_MEMBER (struct iovec, iov_len) == G_SIZEOF_MEMBER (GOutputVector, size) && \
       G_STRUCT_OFFSET (struct iovec, iov_len) == G_STRUCT_OFFSET (GOutputVector, size))
 
 static gboolean
@@ -979,7 +979,7 @@ handle_overwrite_open (const char    *filename,
            fchown (tmpfd, original_stat.st_uid, original_stat.st_gid) == -1 ||
 #endif
 #ifdef HAVE_FCHMOD
-           fchmod (tmpfd, original_stat.st_mode) == -1 ||
+           fchmod (tmpfd, original_stat.st_mode & ~S_IFMT) == -1 ||
 #endif
            0
            )
index c29d071..f8d85e4 100644 (file)
@@ -27,6 +27,7 @@
 #include <gio/gdummyfile.h>
 #include <sys/types.h>
 #ifdef G_OS_UNIX
+#include "glib-unix.h"
 #include <pwd.h>
 #endif
 #include <string.h>
@@ -160,15 +161,17 @@ g_local_vfs_parse_name (GVfs       *vfs,
               struct passwd *passwd_file_entry;
               char *user_name;
 
-             user_name = g_strndup (user_start, user_end - user_start);
-             passwd_file_entry = getpwnam (user_name);
-             g_free (user_name);
-             
-             if (passwd_file_entry != NULL &&
-                 passwd_file_entry->pw_dir != NULL)
-               user_prefix = g_strdup (passwd_file_entry->pw_dir);
-             else
-               user_prefix = g_strdup (g_get_home_dir ());
+              user_name = g_strndup (user_start, user_end - user_start);
+              passwd_file_entry = g_unix_get_passwd_entry (user_name, NULL);
+              g_free (user_name);
+
+              if (passwd_file_entry != NULL &&
+                  passwd_file_entry->pw_dir != NULL)
+                user_prefix = g_strdup (passwd_file_entry->pw_dir);
+              else
+                user_prefix = g_strdup (g_get_home_dir ());
+
+              g_free (passwd_file_entry);
            }
 #else
          user_prefix = g_strdup (g_get_home_dir ());
diff --git a/gio/gmemorymonitor.c b/gio/gmemorymonitor.c
new file mode 100644 (file)
index 0000000..4368ee3
--- /dev/null
@@ -0,0 +1,150 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2019 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+#include "glib.h"
+#include "glibintl.h"
+
+#include "gmemorymonitor.h"
+#include "ginetaddress.h"
+#include "ginetsocketaddress.h"
+#include "ginitable.h"
+#include "gioenumtypes.h"
+#include "giomodule-priv.h"
+#include "gtask.h"
+
+/**
+ * SECTION:gmemorymonitor
+ * @title: GMemoryMonitor
+ * @short_description: Memory usage monitor
+ * @include: gio/gio.h
+ *
+ * #GMemoryMonitor will monitor system memory and suggest to the application
+ * when to free memory so as to leave more room for other applications.
+ * It is implemented on Linux using the [Low Memory Monitor](https://gitlab.freedesktop.org/hadess/low-memory-monitor/)
+ * ([API documentation](https://hadess.pages.freedesktop.org/low-memory-monitor/)).
+ *
+ * There is also an implementation for use inside Flatpak sandboxes.
+ *
+ * Possible actions to take when the signal is received are:
+ * - Free caches
+ * - Save files that haven't been looked at in a while to disk, ready to be reopened when needed
+ * - Run a garbage collection cycle
+ * - Try and compress fragmented allocations
+ * - Exit on idle if the process has no reason to stay around
+ *
+ * See #GMemoryMonitorWarningLevel for details on the various warning levels.
+ *
+ * |[<!-- language="C" -->
+ * static void
+ * warning_cb (GMemoryMonitor *m, GMemoryMonitorWarningLevel level)
+ * {
+ *   g_debug ("Warning level: %d", level);
+ *   if (warning_level > G_MEMORY_MONITOR_WARNING_LEVEL_LOW)
+ *     drop_caches ();
+ * }
+ *
+ * static GMemoryMonitor *
+ * monitor_low_memory (void)
+ * {
+ *   GMemoryMonitor *m;
+ *   m = g_memory_monitor_dup_default ();
+ *   g_signal_connect (G_OBJECT (m), "low-memory-warning",
+ *                     G_CALLBACK (warning_cb), NULL);
+ *   return m;
+ * }
+ * ]|
+ *
+ * Don't forget to disconnect the #GMemoryMonitor::low-memory-warning
+ * signal, and unref the #GMemoryMonitor itself when exiting.
+ *
+ * Since: 2.64
+ */
+
+/**
+ * GMemoryMonitor:
+ *
+ * #GMemoryMonitor monitors system memory and indicates when
+ * the system is low on memory.
+ *
+ * Since: 2.64
+ */
+
+/**
+ * GMemoryMonitorInterface:
+ * @g_iface: The parent interface.
+ * @low_memory_warning: the virtual function pointer for the
+ *  #GMemoryMonitor::low-memory-warning signal.
+ *
+ * The virtual function table for #GMemoryMonitor.
+ *
+ * Since: 2.64
+ */
+
+G_DEFINE_INTERFACE_WITH_CODE (GMemoryMonitor, g_memory_monitor, G_TYPE_OBJECT,
+                              g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_INITABLE))
+
+enum {
+  LOW_MEMORY_WARNING,
+  LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
+/**
+ * g_memory_monitor_dup_default:
+ *
+ * Gets a reference to the default #GMemoryMonitor for the system.
+ *
+ * Returns: (transfer full): a new reference to the default #GMemoryMonitor
+ *
+ * Since: 2.64
+ */
+GMemoryMonitor *
+g_memory_monitor_dup_default (void)
+{
+  return g_object_ref (_g_io_module_get_default (G_MEMORY_MONITOR_EXTENSION_POINT_NAME,
+                                                 "GIO_USE_MEMORY_MONITOR",
+                                                 NULL));
+}
+
+static void
+g_memory_monitor_default_init (GMemoryMonitorInterface *iface)
+{
+  /**
+   * GMemoryMonitor::low-memory-warning:
+   * @monitor: a #GMemoryMonitor
+   * @level: the #GMemoryMonitorWarningLevel warning level
+   *
+   * Emitted when the system is running low on free memory. The signal
+   * handler should then take the appropriate action depending on the
+   * warning level. See the #GMemoryMonitorWarningLevel documentation for
+   * details.
+   *
+   * Since: 2.64
+   */
+  signals[LOW_MEMORY_WARNING] =
+    g_signal_new (I_("low-memory-warning"),
+                  G_TYPE_MEMORY_MONITOR,
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GMemoryMonitorInterface, low_memory_warning),
+                  NULL, NULL,
+                  NULL,
+                  G_TYPE_NONE, 1,
+                  G_TYPE_MEMORY_MONITOR_WARNING_LEVEL);
+}
diff --git a/gio/gmemorymonitor.h b/gio/gmemorymonitor.h
new file mode 100644 (file)
index 0000000..a3ad216
--- /dev/null
@@ -0,0 +1,62 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2019 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __G_MEMORY_MONITOR_H__
+#define __G_MEMORY_MONITOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_MEMORY_MONITOR_EXTENSION_POINT_NAME:
+ *
+ * Extension point for memory usage monitoring functionality.
+ * See [Extending GIO][extending-gio].
+ *
+ * Since: 2.64
+ */
+#define G_MEMORY_MONITOR_EXTENSION_POINT_NAME "gio-memory-monitor"
+
+#define G_TYPE_MEMORY_MONITOR             (g_memory_monitor_get_type ())
+GLIB_AVAILABLE_IN_2_64
+G_DECLARE_INTERFACE(GMemoryMonitor, g_memory_monitor, g, memory_monitor, GObject)
+
+#define G_MEMORY_MONITOR(o)               (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_MONITOR, GMemoryMonitor))
+#define G_IS_MEMORY_MONITOR(o)            (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_MEMORY_MONITOR))
+#define G_MEMORY_MONITOR_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_MEMORY_MONITOR, GMemoryMonitorInterface))
+
+struct _GMemoryMonitorInterface {
+  /*< private >*/
+  GTypeInterface g_iface;
+
+  /*< public >*/
+  void     (*low_memory_warning)  (GMemoryMonitor             *monitor,
+                                   GMemoryMonitorWarningLevel  level);
+};
+
+GLIB_AVAILABLE_IN_2_64
+GMemoryMonitor      *g_memory_monitor_dup_default           (void);
+
+G_END_DECLS
+
+#endif /* __G_MEMORY_MONITOR_H__ */
diff --git a/gio/gmemorymonitordbus.c b/gio/gmemorymonitordbus.c
new file mode 100644 (file)
index 0000000..a34a58d
--- /dev/null
@@ -0,0 +1,171 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2019 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include "gmemorymonitor.h"
+#include "gmemorymonitordbus.h"
+#include "gioerror.h"
+#include "ginitable.h"
+#include "giomodule-priv.h"
+#include "glibintl.h"
+#include "glib/gstdio.h"
+#include "gdbusproxy.h"
+#include "gdbusnamewatching.h"
+
+#define G_MEMORY_MONITOR_DBUS_GET_INITABLE_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_INITABLE, GInitable))
+
+static void g_memory_monitor_dbus_iface_init (GMemoryMonitorInterface *iface);
+static void g_memory_monitor_dbus_initable_iface_init (GInitableIface *iface);
+
+struct _GMemoryMonitorDBus
+{
+  GObject parent_instance;
+
+  guint watch_id;
+  GDBusProxy *proxy;
+  gulong signal_id;
+};
+
+G_DEFINE_TYPE_WITH_CODE (GMemoryMonitorDBus, g_memory_monitor_dbus, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+                                                g_memory_monitor_dbus_initable_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_MEMORY_MONITOR,
+                                                g_memory_monitor_dbus_iface_init)
+                         _g_io_modules_ensure_extension_points_registered ();
+                         g_io_extension_point_implement (G_MEMORY_MONITOR_EXTENSION_POINT_NAME,
+                                                         g_define_type_id,
+                                                         "dbus",
+                                                         30))
+
+static void
+g_memory_monitor_dbus_init (GMemoryMonitorDBus *dbus)
+{
+}
+
+static void
+proxy_signal_cb (GDBusProxy         *proxy,
+                 const gchar        *sender_name,
+                 const gchar        *signal_name,
+                 GVariant           *parameters,
+                 GMemoryMonitorDBus *dbus)
+{
+  guint8 level;
+
+  if (g_strcmp0 (signal_name, "LowMemoryWarning") != 0)
+    return;
+  if (parameters == NULL)
+    return;
+
+  g_variant_get (parameters, "(y)", &level);
+  g_signal_emit_by_name (dbus, "low-memory-warning", level);
+}
+
+static void
+lmm_appeared_cb (GDBusConnection *connection,
+                 const gchar     *name,
+                 const gchar     *name_owner,
+                 gpointer         user_data)
+{
+  GMemoryMonitorDBus *dbus = user_data;
+  GDBusProxy *proxy;
+  GError *error = NULL;
+
+  proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+                                         G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
+                                         NULL,
+                                         "org.freedesktop.LowMemoryMonitor",
+                                         "/org/freedesktop/LowMemoryMonitor",
+                                         "org.freedesktop.LowMemoryMonitor",
+                                         NULL,
+                                         &error);
+
+  if (!proxy)
+    {
+      g_debug ("Failed to create LowMemoryMonitor D-Bus proxy: %s",
+               error->message);
+      g_error_free (error);
+      return;
+    }
+
+  dbus->signal_id = g_signal_connect (G_OBJECT (proxy), "g-signal",
+                                      G_CALLBACK (proxy_signal_cb), dbus);
+  dbus->proxy = proxy;
+}
+
+static void
+lmm_vanished_cb (GDBusConnection *connection,
+                 const gchar     *name,
+                 gpointer         user_data)
+{
+  GMemoryMonitorDBus *dbus = user_data;
+
+  if (dbus->proxy != NULL)
+    g_clear_signal_handler (&dbus->signal_id, dbus->proxy);
+  g_clear_object (&dbus->proxy);
+}
+
+static gboolean
+g_memory_monitor_dbus_initable_init (GInitable     *initable,
+                                     GCancellable  *cancellable,
+                                     GError       **error)
+{
+  GMemoryMonitorDBus *dbus = G_MEMORY_MONITOR_DBUS (initable);
+
+  dbus->watch_id = g_bus_watch_name (G_BUS_TYPE_SYSTEM,
+                                     "org.freedesktop.LowMemoryMonitor",
+                                     G_BUS_NAME_WATCHER_FLAGS_AUTO_START,
+                                     lmm_appeared_cb,
+                                     lmm_vanished_cb,
+                                     dbus,
+                                     NULL);
+
+  return TRUE;
+}
+
+static void
+g_memory_monitor_dbus_finalize (GObject *object)
+{
+  GMemoryMonitorDBus *dbus = G_MEMORY_MONITOR_DBUS (object);
+
+  if (dbus->proxy != NULL)
+    g_clear_signal_handler (&dbus->signal_id, dbus->proxy);
+  g_clear_object (&dbus->proxy);
+  g_clear_handle_id (&dbus->watch_id, g_bus_unwatch_name);
+
+  G_OBJECT_CLASS (g_memory_monitor_dbus_parent_class)->finalize (object);
+}
+
+static void
+g_memory_monitor_dbus_class_init (GMemoryMonitorDBusClass *nl_class)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (nl_class);
+
+  gobject_class->finalize = g_memory_monitor_dbus_finalize;
+}
+
+static void
+g_memory_monitor_dbus_iface_init (GMemoryMonitorInterface *monitor_iface)
+{
+}
+
+static void
+g_memory_monitor_dbus_initable_iface_init (GInitableIface *iface)
+{
+  iface->init = g_memory_monitor_dbus_initable_init;
+}
diff --git a/gio/gmemorymonitordbus.h b/gio/gmemorymonitordbus.h
new file mode 100644 (file)
index 0000000..e48e755
--- /dev/null
@@ -0,0 +1,31 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2019 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __G_MEMORY_MONITOR_DBUS_H__
+#define __G_MEMORY_MONITOR_DBUS_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_MEMORY_MONITOR_DBUS         (g_memory_monitor_dbus_get_type ())
+G_DECLARE_FINAL_TYPE (GMemoryMonitorDBus, g_memory_monitor_dbus, G, MEMORY_MONITOR_DBUS, GObject)
+
+G_END_DECLS
+
+#endif /* __G_MEMORY_MONITOR_DBUS_H__ */
diff --git a/gio/gmemorymonitorportal.c b/gio/gmemorymonitorportal.c
new file mode 100644 (file)
index 0000000..440629f
--- /dev/null
@@ -0,0 +1,152 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2019 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include "gmemorymonitor.h"
+#include "gmemorymonitorportal.h"
+#include "ginitable.h"
+#include "giomodule-priv.h"
+#include "xdp-dbus.h"
+#include "gportalsupport.h"
+
+#define G_MEMORY_MONITOR_PORTAL_GET_INITABLE_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_INITABLE, GInitable))
+
+static void g_memory_monitor_portal_iface_init (GMemoryMonitorInterface *iface);
+static void g_memory_monitor_portal_initable_iface_init (GInitableIface *iface);
+
+struct _GMemoryMonitorPortal
+{
+  GObject parent_instance;
+
+  GDBusProxy *proxy;
+  gulong signal_id;
+};
+
+G_DEFINE_TYPE_WITH_CODE (GMemoryMonitorPortal, g_memory_monitor_portal, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+                                                g_memory_monitor_portal_initable_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_MEMORY_MONITOR,
+                                                g_memory_monitor_portal_iface_init)
+                         _g_io_modules_ensure_extension_points_registered ();
+                         g_io_extension_point_implement (G_MEMORY_MONITOR_EXTENSION_POINT_NAME,
+                                                         g_define_type_id,
+                                                         "portal",
+                                                         40))
+
+static void
+g_memory_monitor_portal_init (GMemoryMonitorPortal *portal)
+{
+}
+
+static void
+proxy_signal (GDBusProxy            *proxy,
+              const char            *sender,
+              const char            *signal,
+              GVariant              *parameters,
+              GMemoryMonitorPortal *portal)
+{
+  guint8 level;
+
+  if (strcmp (signal, "LowMemoryWarning") != 0)
+    return;
+  if (!parameters)
+    return;
+
+  g_variant_get (parameters, "(y)", &level);
+  g_signal_emit_by_name (portal, "low-memory-warning", level);
+}
+
+static gboolean
+g_memory_monitor_portal_initable_init (GInitable     *initable,
+                                        GCancellable  *cancellable,
+                                        GError       **error)
+{
+  GMemoryMonitorPortal *portal = G_MEMORY_MONITOR_PORTAL (initable);
+  GDBusProxy *proxy;
+  gchar *name_owner = NULL;
+
+  if (!glib_should_use_portal ())
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Not using portals");
+      return FALSE;
+    }
+
+  proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
+                                         G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
+                                         NULL,
+                                         "org.freedesktop.portal.Desktop",
+                                         "/org/freedesktop/portal/desktop",
+                                         "org.freedesktop.portal.MemoryMonitor",
+                                         cancellable,
+                                         error);
+  if (!proxy)
+    return FALSE;
+
+  name_owner = g_dbus_proxy_get_name_owner (proxy);
+
+  if (name_owner == NULL)
+    {
+      g_object_unref (proxy);
+      g_set_error (error,
+                   G_DBUS_ERROR,
+                   G_DBUS_ERROR_NAME_HAS_NO_OWNER,
+                   "Desktop portal not found");
+      return FALSE;
+    }
+
+  g_free (name_owner);
+
+  portal->signal_id = g_signal_connect (proxy, "g-signal",
+                                        G_CALLBACK (proxy_signal), portal);
+
+  portal->proxy = proxy;
+
+  return TRUE;
+}
+
+static void
+g_memory_monitor_portal_finalize (GObject *object)
+{
+  GMemoryMonitorPortal *portal = G_MEMORY_MONITOR_PORTAL (object);
+
+  if (portal->proxy != NULL)
+    g_clear_signal_handler (&portal->signal_id, portal->proxy);
+  g_clear_object (&portal->proxy);
+
+  G_OBJECT_CLASS (g_memory_monitor_portal_parent_class)->finalize (object);
+}
+
+static void
+g_memory_monitor_portal_class_init (GMemoryMonitorPortalClass *nl_class)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (nl_class);
+
+  gobject_class->finalize  = g_memory_monitor_portal_finalize;
+}
+
+static void
+g_memory_monitor_portal_iface_init (GMemoryMonitorInterface *monitor_iface)
+{
+}
+
+static void
+g_memory_monitor_portal_initable_iface_init (GInitableIface *iface)
+{
+  iface->init = g_memory_monitor_portal_initable_init;
+}
diff --git a/gio/gmemorymonitorportal.h b/gio/gmemorymonitorportal.h
new file mode 100644 (file)
index 0000000..57074b4
--- /dev/null
@@ -0,0 +1,31 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2019 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __G_MEMORY_MONITOR_PORTAL_H__
+#define __G_MEMORY_MONITOR_PORTAL_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_MEMORY_MONITOR_PORTAL         (g_memory_monitor_portal_get_type ())
+G_DECLARE_FINAL_TYPE (GMemoryMonitorPortal, g_memory_monitor_portal, G, MEMORY_MONITOR_PORTAL, GObject)
+
+G_END_DECLS
+
+#endif /* __G_MEMORY_MONITOR_PORTAL_H__ */
index 8ca45e0..b3f3fb7 100644 (file)
@@ -309,7 +309,7 @@ g_menu_model_real_iterate_item_attributes (GMenuModel *model,
   else
     {
       g_critical ("GMenuModel implementation '%s' doesn't override iterate_item_attributes() "
-                  "and fails to return sane values from get_item_attributes()",
+                  "and fails to return valid values from get_item_attributes()",
                   G_OBJECT_TYPE_NAME (model));
       result = NULL;
     }
@@ -373,7 +373,7 @@ g_menu_model_real_iterate_item_links (GMenuModel *model,
   else
     {
       g_critical ("GMenuModel implementation '%s' doesn't override iterate_item_links() "
-                  "and fails to return sane values from get_item_links()",
+                  "and fails to return valid values from get_item_links()",
                   G_OBJECT_TYPE_NAME (model));
       result = NULL;
     }
index 6ac37c4..d503759 100644 (file)
@@ -45,7 +45,7 @@ enum
 
 struct _GNetworkMonitorBasePrivate
 {
-  GPtrArray    *networks;
+  GHashTable   *networks  /* (element-type GInetAddressMask) (owned) */;
   gboolean      have_ipv4_default_route;
   gboolean      have_ipv6_default_route;
   gboolean      is_available;
@@ -58,6 +58,9 @@ struct _GNetworkMonitorBasePrivate
 static guint network_changed_signal = 0;
 
 static void queue_network_changed (GNetworkMonitorBase *monitor);
+static guint inet_address_mask_hash (gconstpointer key);
+static gboolean inet_address_mask_equal (gconstpointer a,
+                                         gconstpointer b);
 
 G_DEFINE_TYPE_WITH_CODE (GNetworkMonitorBase, g_network_monitor_base, G_TYPE_OBJECT,
                          G_ADD_PRIVATE (GNetworkMonitorBase)
@@ -75,7 +78,9 @@ static void
 g_network_monitor_base_init (GNetworkMonitorBase *monitor)
 {
   monitor->priv = g_network_monitor_base_get_instance_private (monitor);
-  monitor->priv->networks = g_ptr_array_new_with_free_func (g_object_unref);
+  monitor->priv->networks = g_hash_table_new_full (inet_address_mask_hash,
+                                                   inet_address_mask_equal,
+                                                   g_object_unref, NULL);
   monitor->priv->context = g_main_context_get_thread_default ();
   if (monitor->priv->context)
     g_main_context_ref (monitor->priv->context);
@@ -149,7 +154,7 @@ g_network_monitor_base_finalize (GObject *object)
 {
   GNetworkMonitorBase *monitor = G_NETWORK_MONITOR_BASE (object);
 
-  g_ptr_array_free (monitor->priv->networks, TRUE);
+  g_hash_table_unref (monitor->priv->networks);
   if (monitor->priv->network_changed_source)
     {
       g_source_destroy (monitor->priv->network_changed_source);
@@ -180,15 +185,18 @@ g_network_monitor_base_can_reach_sockaddr (GNetworkMonitorBase *base,
                                            GSocketAddress *sockaddr)
 {
   GInetAddress *iaddr;
-  int i;
+  GHashTableIter iter;
+  gpointer key;
 
   if (!G_IS_INET_SOCKET_ADDRESS (sockaddr))
     return FALSE;
 
   iaddr = g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (sockaddr));
-  for (i = 0; i < base->priv->networks->len; i++)
+  g_hash_table_iter_init (&iter, base->priv->networks);
+  while (g_hash_table_iter_next (&iter, &key, NULL))
     {
-      if (g_inet_address_mask_matches (base->priv->networks->pdata[i], iaddr))
+      GInetAddressMask *mask = key;
+      if (g_inet_address_mask_matches (mask, iaddr))
         return TRUE;
     }
 
@@ -205,7 +213,7 @@ g_network_monitor_base_can_reach (GNetworkMonitor      *monitor,
   GSocketAddressEnumerator *enumerator;
   GSocketAddress *addr;
 
-  if (base->priv->networks->len == 0)
+  if (g_hash_table_size (base->priv->networks) == 0)
     {
       g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NETWORK_UNREACHABLE,
                            _("Network unreachable"));
@@ -309,7 +317,7 @@ g_network_monitor_base_can_reach_async (GNetworkMonitor     *monitor,
   task = g_task_new (monitor, cancellable, callback, user_data);
   g_task_set_source_tag (task, g_network_monitor_base_can_reach_async);
 
-  if (G_NETWORK_MONITOR_BASE (monitor)->priv->networks->len == 0)
+  if (g_hash_table_size (G_NETWORK_MONITOR_BASE (monitor)->priv->networks) == 0)
     {
       g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NETWORK_UNREACHABLE,
                                _("Network unreachable"));
@@ -361,6 +369,60 @@ g_network_monitor_base_initable_iface_init (GInitableIface *iface)
   iface->init = g_network_monitor_base_initable_init;
 }
 
+static guint
+inet_address_mask_hash (gconstpointer key)
+{
+  GInetAddressMask *mask = G_INET_ADDRESS_MASK (key);
+  guint addr_hash;
+  guint mask_length = g_inet_address_mask_get_length (mask);
+  GInetAddress *addr = g_inet_address_mask_get_address (mask);
+  const guint8 *bytes = g_inet_address_to_bytes (addr);
+  gsize bytes_length = g_inet_address_get_native_size (addr);
+
+  union
+    {
+      const guint8 *bytes;
+      guint32 *hash32;
+      guint64 *hash64;
+    } integerifier;
+
+  /* If we can fit the entire address into the hash key, do it. Don’t worry
+   * about endianness; the address should always be in network endianness. */
+  if (bytes_length == sizeof (guint32))
+    {
+      integerifier.bytes = bytes;
+      addr_hash = *integerifier.hash32;
+    }
+  else if (bytes_length == sizeof (guint64))
+    {
+      integerifier.bytes = bytes;
+      addr_hash = *integerifier.hash64;
+    }
+  else
+    {
+      gsize i;
+
+      /* Otherwise, fall back to adding the bytes together. We do this, rather
+       * than XORing them, as routes often have repeated tuples which would
+       * cancel out under XOR. */
+      addr_hash = 0;
+      for (i = 0; i < bytes_length; i++)
+        addr_hash += bytes[i];
+    }
+
+  return addr_hash + mask_length;;
+}
+
+static gboolean
+inet_address_mask_equal (gconstpointer a,
+                         gconstpointer b)
+{
+  GInetAddressMask *mask_a = G_INET_ADDRESS_MASK (a);
+  GInetAddressMask *mask_b = G_INET_ADDRESS_MASK (b);
+
+  return g_inet_address_mask_equal (mask_a, mask_b);
+}
+
 static gboolean
 emit_network_changed (gpointer user_data)
 {
@@ -424,7 +486,7 @@ queue_network_changed (GNetworkMonitorBase *monitor)
 /**
  * g_network_monitor_base_add_network:
  * @monitor: the #GNetworkMonitorBase
- * @network: a #GInetAddressMask
+ * @network: (transfer none): a #GInetAddressMask
  *
  * Adds @network to @monitor's list of available networks.
  *
@@ -434,15 +496,9 @@ void
 g_network_monitor_base_add_network (GNetworkMonitorBase *monitor,
                                     GInetAddressMask    *network)
 {
-  int i;
-
-  for (i = 0; i < monitor->priv->networks->len; i++)
-    {
-      if (g_inet_address_mask_equal (monitor->priv->networks->pdata[i], network))
-        return;
-    }
+  if (!g_hash_table_add (monitor->priv->networks, g_object_ref (network)))
+    return;
 
-  g_ptr_array_add (monitor->priv->networks, g_object_ref (network));
   if (g_inet_address_mask_get_length (network) == 0)
     {
       switch (g_inet_address_mask_get_family (network))
@@ -481,33 +537,25 @@ void
 g_network_monitor_base_remove_network (GNetworkMonitorBase *monitor,
                                        GInetAddressMask    *network)
 {
-  int i;
+  if (!g_hash_table_remove (monitor->priv->networks, network))
+    return;
 
-  for (i = 0; i < monitor->priv->networks->len; i++)
+  if (g_inet_address_mask_get_length (network) == 0)
     {
-      if (g_inet_address_mask_equal (monitor->priv->networks->pdata[i], network))
+      switch (g_inet_address_mask_get_family (network))
         {
-          g_ptr_array_remove_index_fast (monitor->priv->networks, i);
-
-          if (g_inet_address_mask_get_length (network) == 0)
-            {
-              switch (g_inet_address_mask_get_family (network))
-                {
-                case G_SOCKET_FAMILY_IPV4:
-                  monitor->priv->have_ipv4_default_route = FALSE;
-                  break;
-                case G_SOCKET_FAMILY_IPV6:
-                  monitor->priv->have_ipv6_default_route = FALSE;
-                  break;
-                default:
-                  break;
-                }
-            }
-
-          queue_network_changed (monitor);
-          return;
+        case G_SOCKET_FAMILY_IPV4:
+          monitor->priv->have_ipv4_default_route = FALSE;
+          break;
+        case G_SOCKET_FAMILY_IPV6:
+          monitor->priv->have_ipv6_default_route = FALSE;
+          break;
+        default:
+          break;
         }
     }
+
+  queue_network_changed (monitor);
 }
 
 /**
@@ -526,7 +574,7 @@ g_network_monitor_base_set_networks (GNetworkMonitorBase  *monitor,
 {
   int i;
 
-  g_ptr_array_set_size (monitor->priv->networks, 0);
+  g_hash_table_remove_all (monitor->priv->networks);
   monitor->priv->have_ipv4_default_route = FALSE;
   monitor->priv->have_ipv6_default_route = FALSE;
 
index 26de251..b0e295a 100644 (file)
@@ -98,7 +98,7 @@
 //#define TRACE
 
 /* GSettings' limit */
-#define MAX_KEY_NAME_LENGTH   32
+#define MAX_KEY_NAME_LENGTH   128
 
 /* Testing (on Windows XP SP3) shows that WaitForMultipleObjects fails with
  * "The parameter is incorrect" after 64 watches. We need one for the
@@ -201,7 +201,7 @@ trace (const char *format,
  * equivalent function for g_warning because none of the registry errors can
  * result from programmer error (Microsoft programmers don't count), instead
  * they will mostly occur from people messing with the registry by hand. */
-static void
+static void G_GNUC_PRINTF (2, 3)
 g_message_win32_error (DWORD        result_code,
                        const gchar *format,
                       ...)
@@ -312,7 +312,7 @@ handle_read_error (LONG         result,
 {
   /* file not found means key value not set, this isn't an error for us. */
   if (result != ERROR_FILE_NOT_FOUND)
-    g_message_win32_error (result, "Unable to query value %s/%s: %s.\n",
+    g_message_win32_error (result, "Unable to query value %s/%s",
                            path_name, value_name);
 }
 
index 732d217..651e7d0 100644 (file)
@@ -296,15 +296,50 @@ remove_duplicates (GList *addrs)
     }
 }
 
+static gboolean
+hostname_is_localhost (const char *hostname)
+{
+  size_t len = strlen (hostname);
+  const char *p;
+
+  /* Match "localhost", "localhost.", "*.localhost" and "*.localhost." */
+  if (len < strlen ("localhost"))
+    return FALSE;
+
+  if (hostname[len - 1] == '.')
+      len--;
+
+  /* Scan backwards in @hostname to find the right-most dot (excluding the final dot, if it exists, as it was chopped off above).
+   * We can’t use strrchr() because because we need to operate with string lengths.
+   * End with @p pointing to the character after the right-most dot. */
+  p = hostname + len - 1;
+  while (p >= hostname)
+    {
+      if (*p == '.')
+       {
+         p++;
+         break;
+       }
+      else if (p == hostname)
+        break;
+      p--;
+    }
+
+  len -= p - hostname;
+
+  return g_ascii_strncasecmp (p, "localhost", MAX (len, strlen ("localhost"))) == 0;
+}
+
 /* Note that this does not follow the "FALSE means @error is set"
  * convention. The return value tells the caller whether it should
  * return @addrs and @error to the caller right away, or if it should
  * continue and trying to resolve the name as a hostname.
  */
 static gboolean
-handle_ip_address (const char  *hostname,
-                   GList      **addrs,
-                   GError     **error)
+handle_ip_address_or_localhost (const char                *hostname,
+                                GList                    **addrs,
+                                GResolverNameLookupFlags   flags,
+                                GError                   **error)
 {
   GInetAddress *addr;
 
@@ -355,6 +390,28 @@ handle_ip_address (const char  *hostname,
       return TRUE;
     }
 
+  /* Always resolve localhost to a loopback address so it can be reliably considered secure.
+     This behavior is being adopted by browsers:
+     - https://w3c.github.io/webappsec-secure-contexts/
+     - https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/RC9dSw-O3fE/E3_0XaT0BAAJ
+     - https://chromium.googlesource.com/chromium/src.git/+/8da2a80724a9b896890602ff77ef2216cb951399
+     - https://bugs.webkit.org/show_bug.cgi?id=171934
+     - https://tools.ietf.org/html/draft-west-let-localhost-be-localhost-06
+  */
+  if (hostname_is_localhost (hostname))
+    {
+      if (flags & G_RESOLVER_NAME_LOOKUP_FLAGS_IPV6_ONLY)
+        *addrs = g_list_append (*addrs, g_inet_address_new_loopback (G_SOCKET_FAMILY_IPV6)); 
+      if (flags & G_RESOLVER_NAME_LOOKUP_FLAGS_IPV4_ONLY)
+        *addrs = g_list_append (*addrs, g_inet_address_new_loopback (G_SOCKET_FAMILY_IPV4));
+      if (*addrs == NULL)
+        {
+          *addrs = g_list_append (*addrs, g_inet_address_new_loopback (G_SOCKET_FAMILY_IPV6));
+          *addrs = g_list_append (*addrs, g_inet_address_new_loopback (G_SOCKET_FAMILY_IPV4));
+        }
+      return TRUE;
+    }
+
   return FALSE;
 }
 
@@ -374,7 +431,7 @@ lookup_by_name_real (GResolver                 *resolver,
   g_return_val_if_fail (error == NULL || *error == NULL, NULL);
 
   /* Check if @hostname is just an IP address */
-  if (handle_ip_address (hostname, &addrs, error))
+  if (handle_ip_address_or_localhost (hostname, &addrs, flags, error))
     return addrs;
 
   if (g_hostname_is_non_ascii (hostname))
@@ -513,7 +570,7 @@ lookup_by_name_async_real (GResolver                *resolver,
   g_return_if_fail (!(flags & G_RESOLVER_NAME_LOOKUP_FLAGS_IPV4_ONLY && flags & G_RESOLVER_NAME_LOOKUP_FLAGS_IPV6_ONLY));
 
   /* Check if @hostname is just an IP address */
-  if (handle_ip_address (hostname, &addrs, &error))
+  if (handle_ip_address_or_localhost (hostname, &addrs, flags, &error))
     {
       GTask *task;
 
index 1e46d5a..eeb9e3b 100644 (file)
@@ -2469,7 +2469,7 @@ g_settings_get_child (GSettings   *settings,
  *
  * Returns: (transfer full) (element-type utf8): a list of the keys on
  *    @settings, in no defined order
- * Deprecated: 2.46: Use g_settings_schema_list_keys instead().
+ * Deprecated: 2.46: Use g_settings_schema_list_keys() instead.
  */
 gchar **
 g_settings_list_keys (GSettings *settings)
index 3a60b8c..0b94f76 100644 (file)
@@ -345,6 +345,7 @@ initialise_schema_sources (void)
     {
       const gchar * const *dirs;
       const gchar *path;
+      gchar **extra_schema_dirs;
       gint i;
 
       /* iterate in reverse: count up, then count down */
@@ -357,7 +358,15 @@ initialise_schema_sources (void)
       try_prepend_data_dir (g_get_user_data_dir ());
 
       if ((path = g_getenv ("GSETTINGS_SCHEMA_DIR")) != NULL)
-        try_prepend_dir (path);
+        {
+          extra_schema_dirs = g_strsplit (path, G_SEARCHPATH_SEPARATOR_S, 0);
+          for (i = 0; extra_schema_dirs[i]; i++);
+
+          while (i--)
+            try_prepend_dir (extra_schema_dirs[i]);
+
+          g_strfreev (extra_schema_dirs);
+        }
 
       g_once_init_leave (&initialised, TRUE);
     }
@@ -989,7 +998,7 @@ g_settings_schema_get_value (GSettingsSchema *schema,
  * database: those located at the path returned by this function.
  *
  * Relocatable schemas can be referenced by other schemas and can
- * threfore describe multiple sets of keys at different locations.  For
+ * therefore describe multiple sets of keys at different locations.  For
  * relocatable schemas, this function will return %NULL.
  *
  * Returns: (transfer none): the path of the schema, or %NULL
index 66073af..2a15bdd 100644 (file)
@@ -364,6 +364,50 @@ _win32_unset_event_mask (GSocket *socket, int mask)
   recv (sockfd, (gpointer)buf, len, flags)
 #endif
 
+static gchar *
+address_to_string (GSocketAddress *address)
+{
+  GString *ret = g_string_new ("");
+
+  if (G_IS_INET_SOCKET_ADDRESS (address))
+    {
+      GInetSocketAddress *isa = G_INET_SOCKET_ADDRESS (address);
+      GInetAddress *ia = g_inet_socket_address_get_address (isa);
+      GSocketFamily family = g_inet_address_get_family (ia);
+      gchar *tmp;
+
+      /* Represent IPv6 addresses in URL style:
+       * ::1 port 12345 -> [::1]:12345 */
+      if (family == G_SOCKET_FAMILY_IPV6)
+        g_string_append_c (ret, '[');
+
+      tmp = g_inet_address_to_string (ia);
+      g_string_append (ret, tmp);
+      g_free (tmp);
+
+      if (family == G_SOCKET_FAMILY_IPV6)
+        {
+          guint32 scope = g_inet_socket_address_get_scope_id (isa);
+
+          if (scope != 0)
+            g_string_append_printf (ret, "%%%u", scope);
+
+          g_string_append_c (ret, ']');
+        }
+
+      g_string_append_c (ret, ':');
+
+      g_string_append_printf (ret, "%u", g_inet_socket_address_get_port (isa));
+    }
+  else
+    {
+      /* For unknown address types, just show the type */
+      g_string_append_printf (ret, "(%s)", G_OBJECT_TYPE_NAME (address));
+    }
+
+  return g_string_free (ret, FALSE);
+}
+
 static gboolean
 check_socket (GSocket *socket,
              GError **error)
@@ -2153,9 +2197,13 @@ g_socket_bind (GSocket         *socket,
            g_socket_address_get_native_size (address)) < 0)
     {
       int errsv = get_socket_errno ();
+      gchar *address_string = address_to_string (address);
+
       g_set_error (error,
                   G_IO_ERROR, socket_io_error_from_errno (errsv),
-                  _("Error binding to address: %s"), socket_strerror (errsv));
+                  _("Error binding to address %s: %s"),
+                  address_string, socket_strerror (errsv));
+      g_free (address_string);
       return FALSE;
     }
 
index 6adeee2..c994330 100644 (file)
@@ -1337,13 +1337,15 @@ typedef struct
 
   GSocketConnectable *connectable;
   GSocketAddressEnumerator *enumerator;
-  GProxyAddress *proxy_addr;
-  GSocket *socket;
-  GIOStream *connection;
+  GCancellable *enumeration_cancellable;
 
   GSList *connection_attempts;
+  GSList *successful_connections;
   GError *last_error;
 
+  gboolean enumerated_at_least_once;
+  gboolean enumeration_completed;
+  gboolean connection_in_progress;
   gboolean completed;
 } GSocketClientAsyncConnectData;
 
@@ -1355,10 +1357,9 @@ g_socket_client_async_connect_data_free (GSocketClientAsyncConnectData *data)
   data->task = NULL;
   g_clear_object (&data->connectable);
   g_clear_object (&data->enumerator);
-  g_clear_object (&data->proxy_addr);
-  g_clear_object (&data->socket);
-  g_clear_object (&data->connection);
+  g_clear_object (&data->enumeration_cancellable);
   g_slist_free_full (data->connection_attempts, connection_attempt_unref);
+  g_slist_free_full (data->successful_connections, connection_attempt_unref);
 
   g_clear_error (&data->last_error);
 
@@ -1370,6 +1371,7 @@ typedef struct
   GSocketAddress *address;
   GSocket *socket;
   GIOStream *connection;
+  GProxyAddress *proxy_addr;
   GSocketClientAsyncConnectData *data; /* unowned */
   GSource *timeout_source;
   GCancellable *cancellable;
@@ -1401,6 +1403,7 @@ connection_attempt_unref (gpointer pointer)
       g_clear_object (&attempt->socket);
       g_clear_object (&attempt->connection);
       g_clear_object (&attempt->cancellable);
+      g_clear_object (&attempt->proxy_addr);
       if (attempt->timeout_source)
         {
           g_source_destroy (attempt->timeout_source);
@@ -1418,37 +1421,59 @@ connection_attempt_remove (ConnectionAttempt *attempt)
 }
 
 static void
-g_socket_client_async_connect_complete (GSocketClientAsyncConnectData *data)
+cancel_all_attempts (GSocketClientAsyncConnectData *data)
 {
-  g_assert (data->connection);
+  GSList *l;
 
-  if (!G_IS_SOCKET_CONNECTION (data->connection))
+  for (l = data->connection_attempts; l; l = g_slist_next (l))
     {
-      GSocketConnection *wrapper_connection;
-
-      wrapper_connection = g_tcp_wrapper_connection_new (data->connection, data->socket);
-      g_object_unref (data->connection);
-      data->connection = (GIOStream *)wrapper_connection;
+      ConnectionAttempt *attempt_entry = l->data;
+      g_cancellable_cancel (attempt_entry->cancellable);
+      connection_attempt_unref (attempt_entry);
     }
+  g_slist_free (data->connection_attempts);
+  data->connection_attempts = NULL;
 
-  if (!data->completed)
+  g_slist_free_full (data->successful_connections, connection_attempt_unref);
+  data->successful_connections = NULL;
+
+  g_cancellable_cancel (data->enumeration_cancellable);
+}
+
+static void
+g_socket_client_async_connect_complete (ConnectionAttempt *attempt)
+{
+  GSocketClientAsyncConnectData *data = attempt->data;
+  GError *error = NULL;
+  g_assert (attempt->connection);
+  g_assert (!data->completed);
+
+  if (!G_IS_SOCKET_CONNECTION (attempt->connection))
     {
-      GError *error = NULL;
+      GSocketConnection *wrapper_connection;
 
-      if (g_cancellable_set_error_if_cancelled (g_task_get_cancellable (data->task), &error))
-        {
-          g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_COMPLETE, data->connectable, NULL);
-          g_task_return_error (data->task, g_steal_pointer (&error));
-        }
-      else
-        {
-          g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_COMPLETE, data->connectable, data->connection);
-          g_task_return_pointer (data->task, g_steal_pointer (&data->connection), g_object_unref);
-        }
+      wrapper_connection = g_tcp_wrapper_connection_new (attempt->connection, attempt->socket);
+      g_object_unref (attempt->connection);
+      attempt->connection = (GIOStream *)wrapper_connection;
+    }
 
-      data->completed = TRUE;
+  data->completed = TRUE;
+  cancel_all_attempts (data);
+
+  if (g_cancellable_set_error_if_cancelled (g_task_get_cancellable (data->task), &error))
+    {
+      g_debug ("GSocketClient: Connection cancelled!");
+      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_COMPLETE, data->connectable, NULL);
+      g_task_return_error (data->task, g_steal_pointer (&error));
+    }
+  else
+    {
+      g_debug ("GSocketClient: Connection successful!");
+      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_COMPLETE, data->connectable, attempt->connection);
+      g_task_return_pointer (data->task, g_steal_pointer (&attempt->connection), g_object_unref);
     }
 
+  connection_attempt_unref (attempt);
   g_object_unref (data->task);
 }
 
@@ -1470,59 +1495,63 @@ static void
 enumerator_next_async (GSocketClientAsyncConnectData *data,
                        gboolean                       add_task_ref)
 {
-  /* We need to cleanup the state */
-  g_clear_object (&data->socket);
-  g_clear_object (&data->proxy_addr);
-  g_clear_object (&data->connection);
-
   /* Each enumeration takes a ref. This arg just avoids repeated unrefs when
      an enumeration starts another enumeration */
   if (add_task_ref)
     g_object_ref (data->task);
 
   g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_RESOLVING, data->connectable, NULL);
+  g_debug ("GSocketClient: Starting new address enumeration");
   g_socket_address_enumerator_next_async (data->enumerator,
-                                         g_task_get_cancellable (data->task),
+                                         data->enumeration_cancellable,
                                          g_socket_client_enumerator_callback,
                                          data);
 }
 
+static void try_next_connection_or_finish (GSocketClientAsyncConnectData *, gboolean);
+
 static void
 g_socket_client_tls_handshake_callback (GObject      *object,
                                        GAsyncResult *result,
                                        gpointer      user_data)
 {
-  GSocketClientAsyncConnectData *data = user_data;
+  ConnectionAttempt *attempt = user_data;
+  GSocketClientAsyncConnectData *data = attempt->data;
 
   if (g_tls_connection_handshake_finish (G_TLS_CONNECTION (object),
                                         result,
                                         &data->last_error))
     {
-      g_object_unref (data->connection);
-      data->connection = G_IO_STREAM (object);
+      g_object_unref (attempt->connection);
+      attempt->connection = G_IO_STREAM (object);
 
-      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_TLS_HANDSHAKED, data->connectable, data->connection);
-      g_socket_client_async_connect_complete (data);
+      g_debug ("GSocketClient: TLS handshake succeeded");
+      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_TLS_HANDSHAKED, data->connectable, attempt->connection);
+      g_socket_client_async_connect_complete (attempt);
     }
   else
     {
       g_object_unref (object);
-      enumerator_next_async (data, FALSE);
+      connection_attempt_unref (attempt);
+      g_debug ("GSocketClient: TLS handshake failed: %s", data->last_error->message);
+      try_next_connection_or_finish (data, TRUE);
     }
 }
 
 static void
-g_socket_client_tls_handshake (GSocketClientAsyncConnectData *data)
+g_socket_client_tls_handshake (ConnectionAttempt *attempt)
 {
+  GSocketClientAsyncConnectData *data = attempt->data;
   GIOStream *tlsconn;
 
   if (!data->client->priv->tls)
     {
-      g_socket_client_async_connect_complete (data);
+      g_socket_client_async_connect_complete (attempt);
       return;
     }
 
-  tlsconn = g_tls_client_connection_new (data->connection,
+  g_debug ("GSocketClient: Starting TLS handshake");
+  tlsconn = g_tls_client_connection_new (attempt->connection,
                                         data->connectable,
                                         &data->last_error);
   if (tlsconn)
@@ -1534,11 +1563,12 @@ g_socket_client_tls_handshake (GSocketClientAsyncConnectData *data)
                                        G_PRIORITY_DEFAULT,
                                        g_task_get_cancellable (data->task),
                                        g_socket_client_tls_handshake_callback,
-                                       data);
+                                       attempt);
     }
   else
     {
-      enumerator_next_async (data, FALSE);
+      connection_attempt_unref (attempt);
+      try_next_connection_or_finish (data, TRUE);
     }
 }
 
@@ -1547,23 +1577,38 @@ g_socket_client_proxy_connect_callback (GObject      *object,
                                        GAsyncResult *result,
                                        gpointer      user_data)
 {
-  GSocketClientAsyncConnectData *data = user_data;
+  ConnectionAttempt *attempt = user_data;
+  GSocketClientAsyncConnectData *data = attempt->data;
 
-  g_object_unref (data->connection);
-  data->connection = g_proxy_connect_finish (G_PROXY (object),
-                                            result,
-                                            &data->last_error);
-  if (data->connection)
+  g_object_unref (attempt->connection);
+  attempt->connection = g_proxy_connect_finish (G_PROXY (object),
+                                                result,
+                                                &data->last_error);
+  if (attempt->connection)
     {
-      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_PROXY_NEGOTIATED, data->connectable, data->connection);
+      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_PROXY_NEGOTIATED, data->connectable, attempt->connection);
     }
   else
     {
-      enumerator_next_async (data, FALSE);
+      connection_attempt_unref (attempt);
+      try_next_connection_or_finish (data, TRUE);
       return;
     }
 
-  g_socket_client_tls_handshake (data);
+  g_socket_client_tls_handshake (attempt);
+}
+
+static void
+complete_connection_with_error (GSocketClientAsyncConnectData *data,
+                                GError                        *error)
+{
+  g_debug ("GSocketClient: Connection failed: %s", error->message);
+  g_assert (!data->completed);
+
+  g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_COMPLETE, data->connectable, NULL);
+  data->completed = TRUE;
+  cancel_all_attempts (data);
+  g_task_return_error (data->task, error);
 }
 
 static gboolean
@@ -1577,15 +1622,114 @@ task_completed_or_cancelled (GSocketClientAsyncConnectData *data)
     return TRUE;
   else if (g_cancellable_set_error_if_cancelled (cancellable, &error))
     {
-      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_COMPLETE, data->connectable, NULL);
-      g_task_return_error (task, g_steal_pointer (&error));
-      data->completed = TRUE;
+      complete_connection_with_error (data, g_steal_pointer (&error));
       return TRUE;
     }
   else
     return FALSE;
 }
 
+static gboolean
+try_next_successful_connection (GSocketClientAsyncConnectData *data)
+{
+  ConnectionAttempt *attempt;
+  const gchar *protocol;
+  GProxy *proxy;
+
+  if (data->connection_in_progress)
+    return FALSE;
+
+  g_assert (data->successful_connections != NULL);
+  attempt = data->successful_connections->data;
+  g_assert (attempt != NULL);
+  data->successful_connections = g_slist_remove (data->successful_connections, attempt);
+  data->connection_in_progress = TRUE;
+
+  g_debug ("GSocketClient: Starting application layer connection");
+
+  if (!attempt->proxy_addr)
+    {
+      g_socket_client_tls_handshake (g_steal_pointer (&attempt));
+      return TRUE;
+    }
+
+  protocol = g_proxy_address_get_protocol (attempt->proxy_addr);
+
+  /* The connection should not be anything other than TCP,
+   * but let's put a safety guard in case
+   */
+  if (!G_IS_TCP_CONNECTION (attempt->connection))
+    {
+      g_critical ("Trying to proxy over non-TCP connection, this is "
+          "most likely a bug in GLib IO library.");
+
+      g_set_error_literal (&data->last_error,
+          G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+          _("Proxying over a non-TCP connection is not supported."));
+    }
+  else if (g_hash_table_contains (data->client->priv->app_proxies, protocol))
+    {
+      /* Simply complete the connection, we don't want to do TLS handshake
+       * as the application proxy handling may need proxy handshake first */
+      g_socket_client_async_connect_complete (g_steal_pointer (&attempt));
+      return TRUE;
+    }
+  else if ((proxy = g_proxy_get_default_for_protocol (protocol)))
+    {
+      GIOStream *connection = attempt->connection;
+      GProxyAddress *proxy_addr = attempt->proxy_addr;
+
+      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_PROXY_NEGOTIATING, data->connectable, attempt->connection);
+      g_debug ("GSocketClient: Starting proxy connection");
+      g_proxy_connect_async (proxy,
+                             connection,
+                             proxy_addr,
+                             g_task_get_cancellable (data->task),
+                             g_socket_client_proxy_connect_callback,
+                             g_steal_pointer (&attempt));
+      g_object_unref (proxy);
+      return TRUE;
+    }
+  else
+    {
+      g_clear_error (&data->last_error);
+
+      g_set_error (&data->last_error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+          _("Proxy protocol “%s” is not supported."),
+          protocol);
+    }
+
+  data->connection_in_progress = FALSE;
+  g_clear_pointer (&attempt, connection_attempt_unref);
+  return FALSE; /* All non-return paths are failures */
+}
+
+static void
+try_next_connection_or_finish (GSocketClientAsyncConnectData *data,
+                               gboolean                       end_current_connection)
+{
+  if (end_current_connection)
+    data->connection_in_progress = FALSE;
+
+  if (data->connection_in_progress)
+    return;
+
+  /* Keep trying successful connections until one works, each iteration pops one */
+  while (data->successful_connections)
+    {
+      if (try_next_successful_connection (data))
+        return;
+    }
+
+  if (!data->enumeration_completed)
+    {
+      enumerator_next_async (data, FALSE);
+      return;
+    }
+
+  complete_connection_with_error (data, data->last_error);
+}
+
 static void
 g_socket_client_connected_callback (GObject      *source,
                                    GAsyncResult *result,
@@ -1593,10 +1737,7 @@ g_socket_client_connected_callback (GObject      *source,
 {
   ConnectionAttempt *attempt = user_data;
   GSocketClientAsyncConnectData *data = attempt->data;
-  GSList *l;
   GError *error = NULL;
-  GProxy *proxy;
-  const gchar *protocol;
 
   if (task_completed_or_cancelled (data) || g_cancellable_is_cancelled (attempt->cancellable))
     {
@@ -1618,11 +1759,12 @@ g_socket_client_connected_callback (GObject      *source,
         {
           clarify_connect_error (error, data->connectable, attempt->address);
           set_last_error (data, error);
+          g_debug ("GSocketClient: Connection attempt failed: %s", error->message);
           connection_attempt_remove (attempt);
-          enumerator_next_async (data, FALSE);
           connection_attempt_unref (attempt);
+          try_next_connection_or_finish (data, FALSE);
         }
-      else
+      else /* Silently ignore cancelled attempts */
         {
           g_clear_error (&error);
           g_object_unref (data->task);
@@ -1632,74 +1774,21 @@ g_socket_client_connected_callback (GObject      *source,
       return;
     }
 
-  data->socket = g_steal_pointer (&attempt->socket);
-  data->connection = g_steal_pointer (&attempt->connection);
-
-  for (l = data->connection_attempts; l; l = g_slist_next (l))
-    {
-      ConnectionAttempt *attempt_entry = l->data;
-      g_cancellable_cancel (attempt_entry->cancellable);
-      connection_attempt_unref (attempt_entry);
-    }
-  g_slist_free (data->connection_attempts);
-  data->connection_attempts = NULL;
-  connection_attempt_unref (attempt);
-
-  g_socket_connection_set_cached_remote_address ((GSocketConnection*)data->connection, NULL);
-  g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_CONNECTED, data->connectable, data->connection);
+  g_socket_connection_set_cached_remote_address ((GSocketConnection*)attempt->connection, NULL);
+  g_debug ("GSocketClient: TCP connection successful");
+  g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_CONNECTED, data->connectable, attempt->connection);
 
   /* wrong, but backward compatible */
-  g_socket_set_blocking (data->socket, TRUE);
+  g_socket_set_blocking (attempt->socket, TRUE);
 
-  if (!data->proxy_addr)
-    {
-      g_socket_client_tls_handshake (data);
-      return;
-    }
-
-  protocol = g_proxy_address_get_protocol (data->proxy_addr);
-
-  /* The connection should not be anything other than TCP,
-   * but let's put a safety guard in case
+  /* This ends the parallel "happy eyeballs" portion of connecting.
+     Now that we have a successful tcp connection we will attempt to connect
+     at the TLS/Proxy layer. If those layers fail we will move on to the next
+     connection.
    */
-  if (!G_IS_TCP_CONNECTION (data->connection))
-    {
-      g_critical ("Trying to proxy over non-TCP connection, this is "
-          "most likely a bug in GLib IO library.");
-
-      g_set_error_literal (&data->last_error,
-          G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
-          _("Proxying over a non-TCP connection is not supported."));
-
-      enumerator_next_async (data, FALSE);
-    }
-  else if (g_hash_table_contains (data->client->priv->app_proxies, protocol))
-    {
-      /* Simply complete the connection, we don't want to do TLS handshake
-       * as the application proxy handling may need proxy handshake first */
-      g_socket_client_async_connect_complete (data);
-    }
-  else if ((proxy = g_proxy_get_default_for_protocol (protocol)))
-    {
-      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_PROXY_NEGOTIATING, data->connectable, data->connection);
-      g_proxy_connect_async (proxy,
-                             data->connection,
-                             data->proxy_addr,
-                             g_task_get_cancellable (data->task),
-                             g_socket_client_proxy_connect_callback,
-                             data);
-      g_object_unref (proxy);
-    }
-  else
-    {
-      g_clear_error (&data->last_error);
-
-      g_set_error (&data->last_error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
-          _("Proxy protocol “%s” is not supported."),
-          protocol);
-
-      enumerator_next_async (data, FALSE);
-    }
+  connection_attempt_remove (attempt);
+  data->successful_connections = g_slist_append (data->successful_connections, g_steal_pointer (&attempt));
+  try_next_connection_or_finish (data, FALSE);
 }
 
 static gboolean
@@ -1707,7 +1796,11 @@ on_connection_attempt_timeout (gpointer data)
 {
   ConnectionAttempt *attempt = data;
 
-  enumerator_next_async (attempt->data, TRUE);
+  if (!attempt->data->enumeration_completed)
+    {
+      g_debug ("GSocketClient: Timeout reached, trying another enumeration");
+      enumerator_next_async (attempt->data, TRUE);
+    }
 
   g_clear_pointer (&attempt->timeout_source, g_source_unref);
   return G_SOURCE_REMOVE;
@@ -1717,9 +1810,9 @@ static void
 on_connection_cancelled (GCancellable *cancellable,
                          gpointer      data)
 {
-  GCancellable *attempt_cancellable = data;
+  GCancellable *linked_cancellable = G_CANCELLABLE (data);
 
-  g_cancellable_cancel (attempt_cancellable);
+  g_cancellable_cancel (linked_cancellable);
 }
 
 static void
@@ -1743,39 +1836,49 @@ g_socket_client_enumerator_callback (GObject      *object,
                                                     result, &error);
   if (address == NULL)
     {
-      if (data->connection_attempts)
+      if (G_UNLIKELY (data->enumeration_completed))
+        return;
+
+      data->enumeration_completed = TRUE;
+      g_debug ("GSocketClient: Address enumeration completed (out of addresses)");
+
+      /* As per API docs: We only care about error if its the first call,
+         after that the enumerator is done.
+
+         Note that we don't care about cancellation errors because
+         task_completed_or_cancelled() above should handle that.
+
+         If this fails and nothing is in progress then we will complete task here.
+       */
+      if ((data->enumerated_at_least_once && !data->connection_attempts && !data->connection_in_progress) ||
+          !data->enumerated_at_least_once)
         {
-          g_object_unref (data->task);
-          return;
+          g_debug ("GSocketClient: Address enumeration failed: %s", error ? error->message : NULL);
+          if (data->last_error)
+            {
+              g_clear_error (&error);
+              error = data->last_error;
+              data->last_error = NULL;
+            }
+          else if (!error)
+            {
+              g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                _("Unknown error on connect"));
+            }
+
+          complete_connection_with_error (data, error);
         }
 
-      g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_COMPLETE, data->connectable, NULL);
-      data->completed = TRUE;
-      if (!error)
-       {
-         if (data->last_error)
-           {
-             error = data->last_error;
-             data->last_error = NULL;
-           }
-         else
-           {
-             g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                                  _("Unknown error on connect"));
-           }
-       }
-      g_task_return_error (data->task, error);
+      /* Enumeration should never trigger again, drop our ref */
       g_object_unref (data->task);
       return;
     }
 
+  data->enumerated_at_least_once = TRUE;
+  g_debug ("GSocketClient: Address enumeration succeeded");
   g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_RESOLVED,
                              data->connectable, NULL);
 
-  if (G_IS_PROXY_ADDRESS (address) &&
-      data->client->priv->enable_proxy)
-    data->proxy_addr = g_object_ref (G_PROXY_ADDRESS (address));
-
   g_clear_error (&data->last_error);
 
   socket = create_socket (data->client, address, &data->last_error);
@@ -1793,8 +1896,12 @@ g_socket_client_enumerator_callback (GObject      *object,
   attempt->cancellable = g_cancellable_new ();
   attempt->connection = (GIOStream *)g_socket_connection_factory_create_connection (socket);
   attempt->timeout_source = g_timeout_source_new (HAPPY_EYEBALLS_CONNECTION_ATTEMPT_TIMEOUT_MS);
+
+  if (G_IS_PROXY_ADDRESS (address) && data->client->priv->enable_proxy)
+    attempt->proxy_addr = g_object_ref (G_PROXY_ADDRESS (address));
+
   g_source_set_callback (attempt->timeout_source, on_connection_attempt_timeout, attempt, NULL);
-  g_source_attach (attempt->timeout_source, g_main_context_get_thread_default ());
+  g_source_attach (attempt->timeout_source, g_task_get_context (data->task));
   data->connection_attempts = g_slist_append (data->connection_attempts, attempt);
 
   if (g_task_get_cancellable (data->task))
@@ -1802,6 +1909,7 @@ g_socket_client_enumerator_callback (GObject      *object,
                            g_object_ref (attempt->cancellable), g_object_unref);
 
   g_socket_connection_set_cached_remote_address ((GSocketConnection *)attempt->connection, address);
+  g_debug ("GSocketClient: Starting TCP connection attempt");
   g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_CONNECTING, data->connectable, attempt->connection);
   g_socket_connection_connect_async (G_SOCKET_CONNECTION (attempt->connection),
                                     address,
@@ -1854,24 +1962,48 @@ g_socket_client_connect_async (GSocketClient       *client,
   else
     data->enumerator = g_socket_connectable_enumerate (connectable);
 
-  /* The flow and ownership here isn't quite obvious:
-    - The task starts an async attempt to connect.
-      - Each attempt holds a single ref on task.
-      - Each attempt may create new attempts by timing out (not a failure) so
-        there are multiple attempts happening in parallel.
-      - Upon failure an attempt will start a new attempt that steals its ref
-        until there are no more attempts left and it drops its ref.
-      - Upon success it will cancel all other attempts and continue on
-        to the rest of the connection (tls, proxies, etc) which do not
-        happen in parallel and at the very end drop its ref.
-      - Upon cancellation an attempt drops its ref.
-   */
+  /* This function tries to match the behavior of g_socket_client_connect ()
+     which is simple enough but much of it is done in parallel to be as responsive
+     as possible as per Happy Eyeballs (RFC 8305). This complicates flow quite a
+     bit but we can describe it in 3 sections:
+
+     Firstly we have address enumeration (DNS):
+       - This may be triggered multiple times by enumerator_next_async().
+       - It also has its own cancellable (data->enumeration_cancellable).
+       - Enumeration is done lazily because GNetworkAddressAddressEnumerator
+         also does work in parallel and may lazily add new addresses.
+       - If the first enumeration errors then the task errors. Otherwise all enumerations
+         will potentially be used (until task or enumeration is cancelled).
+
+      Then we start attempting connections (TCP):
+        - Each connection is independent and kept in a ConnectionAttempt object.
+          - They each hold a ref on the main task and have their own cancellable.
+        - Multiple attempts may happen in parallel as per Happy Eyeballs.
+        - Upon failure or timeouts more connection attempts are made.
+          - If no connections succeed the task errors.
+        - Upon success they are kept in a list of successful connections.
+
+      Lastly we connect at the application layer (TLS, Proxies):
+        - These are done in serial.
+          - The reasoning here is that Happy Eyeballs is about making bad connections responsive
+            at the IP/TCP layers. Issues at the application layer are generally not due to
+            connectivity issues but rather misconfiguration.
+        - Upon failure it will try the next TCP connection until it runs out and
+          the task errors.
+        - Upon success it cancels everything remaining (enumeration and connections)
+          and returns the connection.
+  */
 
   data->task = g_task_new (client, cancellable, callback, user_data);
   g_task_set_check_cancellable (data->task, FALSE); /* We handle this manually */
   g_task_set_source_tag (data->task, g_socket_client_connect_async);
   g_task_set_task_data (data->task, data, (GDestroyNotify)g_socket_client_async_connect_data_free);
 
+  data->enumeration_cancellable = g_cancellable_new ();
+  if (cancellable)
+    g_cancellable_connect (cancellable, G_CALLBACK (on_connection_cancelled),
+                           g_object_ref (data->enumeration_cancellable), g_object_unref);
+
   enumerator_next_async (data, FALSE);
 }
 
@@ -1990,6 +2122,7 @@ g_socket_client_connect_to_uri_async (GSocketClient        *client,
     }
   else
     {
+      g_debug("g_socket_client_connect_to_uri_async");
       g_socket_client_connect_async (client,
                                     connectable, cancellable,
                                     callback, user_data);
index c58be83..a6544df 100644 (file)
@@ -170,8 +170,22 @@ parse_nego_reply (const guint8 *data,
        *must_auth = TRUE;
        break;
 
-      case SOCKS5_AUTH_GSSAPI:
       case SOCKS5_AUTH_NO_ACCEPT:
+        if (!has_auth)
+          {
+            /* The server has said it accepts none of our authentication methods,
+             * but given the slightly odd implementation of set_nego_msg(), we
+             * actually only gave it the choice of %SOCKS5_AUTH_NONE, since the
+             * caller specified no username or password.
+             * Return %G_IO_ERROR_PROXY_NEED_AUTH so the caller knows that if
+             * they specify a username and password and try again, authentication
+             * might succeed (since we’ll send %SOCKS5_AUTH_USR_PASS next time). */
+            g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_NEED_AUTH,
+                                 _("The SOCKSv5 proxy requires authentication."));
+            return FALSE;
+          }
+        G_GNUC_FALLTHROUGH;
+      case SOCKS5_AUTH_GSSAPI:
       default:
        g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_AUTH_FAILED,
                             _("The SOCKSv5 proxy requires an authentication "
@@ -229,7 +243,7 @@ set_auth_msg (guint8          *msg,
 static gboolean
 check_auth_status (const guint8 *data, GError **error)
 {
-  if (data[0] != SOCKS5_VERSION
+  if (data[0] != SOCKS5_AUTH_VERSION
       || data[1] != SOCKS5_REP_SUCCEEDED)
     {
       g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_AUTH_FAILED,
index b5515c7..8cc9354 100644 (file)
@@ -1595,6 +1595,23 @@ g_subprocess_communicate_internal (GSubprocess         *subprocess,
   if (subprocess->stdin_pipe)
     {
       g_assert (stdin_buf != NULL);
+
+#ifdef G_OS_UNIX
+      /* We're doing async writes to the pipe, and the async write mechanism assumes
+       * that streams polling as writable do SOME progress (possibly partial) and then
+       * stop, but never block.
+       *
+       * However, for blocking pipes, unix will return writable if there is *any* space left
+       * but still block until the full buffer size is available before returning from write.
+       * So, to avoid async blocking on the main loop we make this non-blocking here.
+       *
+       * It should be safe to change the fd because we're the only user at this point as
+       * per the g_subprocess_communicate() docs, and all the code called by this function
+       * properly handles non-blocking fds.
+       */
+      g_unix_set_fd_nonblocking (g_unix_output_stream_get_fd (G_UNIX_OUTPUT_STREAM (subprocess->stdin_pipe)), TRUE, NULL);
+#endif
+
       state->stdin_buf = g_memory_input_stream_new_from_bytes (stdin_buf);
       g_output_stream_splice_async (subprocess->stdin_pipe, (GInputStream*)state->stdin_buf,
                                     G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE | G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET,
index 9950bb3..2059e51 100644 (file)
@@ -27,6 +27,8 @@
 
 #include "glibintl.h"
 
+#include <string.h>
+
 /**
  * SECTION:gtask
  * @short_description: Cancellable synchronous or asynchronous task
@@ -1497,7 +1499,7 @@ g_task_start_task_thread (GTask           *task,
 /**
  * g_task_run_in_thread:
  * @task: a #GTask
- * @task_func: a #GTaskThreadFunc
+ * @task_func: (scope async): a #GTaskThreadFunc
  *
  * Runs @task_func in another thread. When @task_func returns, @task's
  * #GAsyncReadyCallback will be invoked in @task's #GMainContext.
@@ -1540,7 +1542,7 @@ g_task_run_in_thread (GTask           *task,
 /**
  * g_task_run_in_thread_sync:
  * @task: a #GTask
- * @task_func: a #GTaskThreadFunc
+ * @task_func: (scope async): a #GTaskThreadFunc
  *
  * Runs @task_func in another thread, and waits for it to return or be
  * cancelled. You can use g_task_propagate_pointer(), etc, afterward
@@ -1959,6 +1961,100 @@ g_task_had_error (GTask *task)
   return FALSE;
 }
 
+static void
+value_free (gpointer value)
+{
+  g_value_unset (value);
+  g_free (value);
+}
+
+/**
+ * g_task_return_value:
+ * @task: a #GTask
+ * @result: (nullable) (transfer none): the #GValue result of
+ *                                      a task function
+ *
+ * Sets @task's result to @result (by copying it) and completes the task.
+ *
+ * If @result is %NULL then a #GValue of type #G_TYPE_POINTER
+ * with a value of %NULL will be used for the result.
+ *
+ * This is a very generic low-level method intended primarily for use
+ * by language bindings; for C code, g_task_return_pointer() and the
+ * like will normally be much easier to use.
+ *
+ * Since: 2.64
+ */
+void
+g_task_return_value (GTask  *task,
+                     GValue *result)
+{
+  GValue *value;
+
+  g_return_if_fail (G_IS_TASK (task));
+  g_return_if_fail (!task->ever_returned);
+
+  value = g_new0 (GValue, 1);
+
+  if (result == NULL)
+    {
+      g_value_init (value, G_TYPE_POINTER);
+      g_value_set_pointer (value, NULL);
+    }
+  else
+    {
+      g_value_init (value, G_VALUE_TYPE (result));
+      g_value_copy (result, value);
+    }
+
+  g_task_return_pointer (task, value, value_free);
+}
+
+/**
+ * g_task_propagate_value:
+ * @task: a #GTask
+ * @value: (out caller-allocates): return location for the #GValue
+ * @error: return location for a #GError
+ *
+ * Gets the result of @task as a #GValue, and transfers ownership of
+ * that value to the caller. As with g_task_return_value(), this is
+ * a generic low-level method; g_task_propagate_pointer() and the like
+ * will usually be more useful for C code.
+ *
+ * If the task resulted in an error, or was cancelled, then this will
+ * instead set @error and return %FALSE.
+ *
+ * Since this method transfers ownership of the return value (or
+ * error) to the caller, you may only call it once.
+ *
+ * Returns: %TRUE if @task succeeded, %FALSE on error.
+ *
+ * Since: 2.64
+ */
+gboolean
+g_task_propagate_value (GTask   *task,
+                        GValue  *value,
+                        GError **error)
+{
+  g_return_val_if_fail (G_IS_TASK (task), FALSE);
+  g_return_val_if_fail (value != NULL, FALSE);
+  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+  if (g_task_propagate_error (task, error))
+    return FALSE;
+
+  g_return_val_if_fail (task->result_set, FALSE);
+  g_return_val_if_fail (task->result_destroy == value_free, FALSE);
+
+  memcpy (value, task->result.pointer, sizeof (GValue));
+  g_free (task->result.pointer);
+
+  task->result_destroy = NULL;
+  task->result_set = FALSE;
+
+  return TRUE;
+}
+
 /**
  * g_task_get_completed:
  * @task: a #GTask.
index 4fc1c85..73a31e1 100644 (file)
@@ -142,6 +142,9 @@ void          g_task_return_new_error          (GTask           *task,
                                                 gint             code,
                                                 const char      *format,
                                                 ...) G_GNUC_PRINTF (4, 5);
+GLIB_AVAILABLE_IN_2_64
+void          g_task_return_value              (GTask           *task,
+                                                GValue          *result);
 
 GLIB_AVAILABLE_IN_2_36
 gboolean      g_task_return_error_if_cancelled (GTask           *task);
@@ -155,6 +158,10 @@ gboolean      g_task_propagate_boolean         (GTask           *task,
 GLIB_AVAILABLE_IN_2_36
 gssize        g_task_propagate_int             (GTask           *task,
                                                 GError         **error);
+GLIB_AVAILABLE_IN_2_64
+gboolean      g_task_propagate_value           (GTask           *task,
+                                                GValue          *value,
+                                                GError         **error);
 GLIB_AVAILABLE_IN_2_36
 gboolean      g_task_had_error                 (GTask           *task);
 GLIB_AVAILABLE_IN_2_44
index 11cf029..633c935 100644 (file)
@@ -604,11 +604,12 @@ start_daemon (GTestDBus *self)
   g_spawn_async_with_pipes (NULL,
                             (gchar **) argv,
                             NULL,
-#ifdef G_OS_WIN32
                             /* We Need this to get the pid returned on win32 */
                             G_SPAWN_DO_NOT_REAP_CHILD |
-#endif
-                            G_SPAWN_SEARCH_PATH,
+                            G_SPAWN_SEARCH_PATH |
+                            /* dbus-daemon will not abuse our descriptors, and
+                             * passing this means we can use posix_spawn() for speed */
+                            G_SPAWN_LEAVE_DESCRIPTORS_OPEN,
                             NULL,
                             NULL,
                             &self->priv->bus_pid,
index b38fad6..d41d0c2 100644 (file)
@@ -103,14 +103,12 @@ g_tls_client_connection_default_init (GTlsClientConnectionInterface *iface)
   /**
    * GTlsClientConnection:use-ssl3:
    *
-   * If %TRUE, forces the connection to use a fallback version of TLS
-   * or SSL, rather than trying to negotiate the best version of TLS
-   * to use. See g_tls_client_connection_set_use_ssl3().
+   * SSL 3.0 is no longer supported. See
+   * g_tls_client_connection_set_use_ssl3() for details.
    *
    * Since: 2.28
    *
-   * Deprecated: 2.56: SSL 3.0 is insecure, and this property does not
-   * generally enable or disable it, despite its name.
+   * Deprecated: 2.56: SSL 3.0 is insecure.
    */
   g_object_interface_install_property (iface,
                                       g_param_spec_boolean ("use-ssl3",
@@ -270,16 +268,14 @@ g_tls_client_connection_set_server_identity (GTlsClientConnection *conn,
  * g_tls_client_connection_get_use_ssl3:
  * @conn: the #GTlsClientConnection
  *
- * Gets whether @conn will force the lowest-supported TLS protocol
- * version rather than attempt to negotiate the highest mutually-
- * supported version of TLS; see g_tls_client_connection_set_use_ssl3().
+ * SSL 3.0 is no longer supported. See
+ * g_tls_client_connection_set_use_ssl3() for details.
  *
- * Returns: whether @conn will use the lowest-supported TLS protocol version
+ * Returns: %FALSE
  *
  * Since: 2.28
  *
- * Deprecated: 2.56: SSL 3.0 is insecure, and this function does not
- * actually indicate whether it is enabled.
+ * Deprecated: 2.56: SSL 3.0 is insecure.
  */
 gboolean
 g_tls_client_connection_get_use_ssl3 (GTlsClientConnection *conn)
@@ -289,32 +285,28 @@ g_tls_client_connection_get_use_ssl3 (GTlsClientConnection *conn)
   g_return_val_if_fail (G_IS_TLS_CLIENT_CONNECTION (conn), 0);
 
   g_object_get (G_OBJECT (conn), "use-ssl3", &use_ssl3, NULL);
-  return use_ssl3;
+  return FALSE;
 }
 
 /**
  * g_tls_client_connection_set_use_ssl3:
  * @conn: the #GTlsClientConnection
- * @use_ssl3: whether to use the lowest-supported protocol version
- *
- * Since 2.42.1, if @use_ssl3 is %TRUE, this forces @conn to use the
- * lowest-supported TLS protocol version rather than trying to properly
- * negotiate the highest mutually-supported protocol version with the
- * peer. Be aware that SSL 3.0 is generally disabled by the
- * #GTlsBackend, so the lowest-supported protocol version is probably
- * not SSL 3.0.
- *
- * Since 2.58, this may additionally cause an RFC 7507 fallback SCSV to
- * be sent to the server, causing modern TLS servers to immediately
- * terminate the connection. You should generally only use this function
- * if you need to connect to broken servers that exhibit TLS protocol
- * version intolerance, and when an initial attempt to connect to a
- * server normally has already failed.
+ * @use_ssl3: a #gboolean, ignored
+ *
+ * Since GLib 2.42.1, SSL 3.0 is no longer supported.
+ *
+ * From GLib 2.42.1 through GLib 2.62, this function could be used to
+ * force use of TLS 1.0, the lowest-supported TLS protocol version at
+ * the time. In the past, this was needed to connect to broken TLS
+ * servers that exhibited protocol version intolerance. Such servers
+ * are no longer common, and using TLS 1.0 is no longer considered
+ * acceptable.
+ *
+ * Since GLib 2.64, this function does nothing.
  *
  * Since: 2.28
  *
- * Deprecated: 2.56: SSL 3.0 is insecure, and this function does not
- * generally enable or disable it, despite its name.
+ * Deprecated: 2.56: SSL 3.0 is insecure.
  */
 void
 g_tls_client_connection_set_use_ssl3 (GTlsClientConnection *conn,
@@ -322,7 +314,7 @@ g_tls_client_connection_set_use_ssl3 (GTlsClientConnection *conn,
 {
   g_return_if_fail (G_IS_TLS_CLIENT_CONNECTION (conn));
 
-  g_object_set (G_OBJECT (conn), "use-ssl3", use_ssl3, NULL);
+  g_object_set (G_OBJECT (conn), "use-ssl3", FALSE, NULL);
 }
 
 /**
@@ -359,12 +351,34 @@ g_tls_client_connection_get_accepted_cas (GTlsClientConnection *conn)
  * @conn: a #GTlsClientConnection
  * @source: a #GTlsClientConnection
  *
- * Copies session state from one connection to another. This is
- * not normally needed, but may be used when the same session
- * needs to be used between different endpoints as is required
- * by some protocols such as FTP over TLS. @source should have
- * already completed a handshake, and @conn should not have
- * completed a handshake.
+ * Possibly copies session state from one connection to another, for use
+ * in TLS session resumption. This is not normally needed, but may be
+ * used when the same session needs to be used between different
+ * endpoints, as is required by some protocols, such as FTP over TLS.
+ * @source should have already completed a handshake and, since TLS 1.3,
+ * it should have been used to read data at least once. @conn should not
+ * have completed a handshake.
+ *
+ * It is not possible to know whether a call to this function will
+ * actually do anything. Because session resumption is normally used
+ * only for performance benefit, the TLS backend might not implement
+ * this function. Even if implemented, it may not actually succeed in
+ * allowing @conn to resume @source's TLS session, because the server
+ * may not have sent a session resumption token to @source, or it may
+ * refuse to accept the token from @conn. There is no way to know
+ * whether a call to this function is actually successful.
+ *
+ * Using this function is not required to benefit from session
+ * resumption. If the TLS backend supports session resumption, the
+ * session will be resumed automatically if it is possible to do so
+ * without weakening the privacy guarantees normally provided by TLS,
+ * without need to call this function. For example, with TLS 1.3,
+ * a session ticket will be automatically copied from any
+ * #GTlsClientConnection that has previously received session tickets
+ * from the server, provided a ticket is available that has not
+ * previously been used for session resumption, since session ticket
+ * reuse would be a privacy weakness. Using this function causes the
+ * ticket to be copied without regard for privacy considerations.
  *
  * Since: 2.46
  */
index 2e431ae..cc9a183 100644 (file)
@@ -139,7 +139,8 @@ g_tls_connection_class_init (GTlsConnectionClass *klass)
                                                         TRUE,
                                                         G_PARAM_READWRITE |
                                                         G_PARAM_CONSTRUCT |
-                                                        G_PARAM_STATIC_STRINGS));
+                                                        G_PARAM_STATIC_STRINGS |
+                                                        G_PARAM_DEPRECATED));
   /**
    * GTlsConnection:database:
    *
@@ -195,6 +196,8 @@ g_tls_connection_class_init (GTlsConnectionClass *klass)
    * g_tls_connection_set_rehandshake_mode().
    *
    * Since: 2.28
+   *
+   * Deprecated: 2.60: The rehandshake mode is ignored.
    */
   g_object_class_install_property (gobject_class, PROP_REHANDSHAKE_MODE,
                                   g_param_spec_enum ("rehandshake-mode",
@@ -730,27 +733,10 @@ g_tls_connection_get_require_close_notify (GTlsConnection *conn)
  * @conn: a #GTlsConnection
  * @mode: the rehandshaking mode
  *
- * Sets how @conn behaves with respect to rehandshaking requests, when
- * TLS 1.2 or older is in use.
- *
- * %G_TLS_REHANDSHAKE_NEVER means that it will never agree to
- * rehandshake after the initial handshake is complete. (For a client,
- * this means it will refuse rehandshake requests from the server, and
- * for a server, this means it will close the connection with an error
- * if the client attempts to rehandshake.)
- *
- * %G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a
- * rehandshake only if the other end of the connection supports the
- * TLS `renegotiation_info` extension. This is the default behavior,
- * but means that rehandshaking will not work against older
- * implementations that do not support that extension.
- *
- * %G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow
- * rehandshaking even without the `renegotiation_info` extension. On
- * the server side in particular, this is not recommended, since it
- * leaves the server open to certain attacks. However, this mode is
- * necessary if you need to allow renegotiation with older client
- * software.
+ * Since GLib 2.64, changing the rehandshake mode is no longer supported
+ * and will have no effect. With TLS 1.3, rehandshaking has been removed from
+ * the TLS protocol, replaced by separate post-handshake authentication and
+ * rekey operations.
  *
  * Since: 2.28
  *
@@ -766,7 +752,7 @@ g_tls_connection_set_rehandshake_mode (GTlsConnection       *conn,
   g_return_if_fail (G_IS_TLS_CONNECTION (conn));
 
   g_object_set (G_OBJECT (conn),
-               "rehandshake-mode", mode,
+               "rehandshake-mode", G_TLS_REHANDSHAKE_SAFELY,
                NULL);
 }
 G_GNUC_END_IGNORE_DEPRECATIONS
@@ -778,7 +764,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
  * Gets @conn rehandshaking mode. See
  * g_tls_connection_set_rehandshake_mode() for details.
  *
- * Returns: @conn's rehandshaking mode
+ * Returns: %G_TLS_REHANDSHAKE_SAFELY
  *
  * Since: 2.28
  *
@@ -792,12 +778,15 @@ g_tls_connection_get_rehandshake_mode (GTlsConnection       *conn)
 {
   GTlsRehandshakeMode mode;
 
-  g_return_val_if_fail (G_IS_TLS_CONNECTION (conn), G_TLS_REHANDSHAKE_NEVER);
+  g_return_val_if_fail (G_IS_TLS_CONNECTION (conn), G_TLS_REHANDSHAKE_SAFELY);
 
+  /* Continue to call g_object_get(), even though the return value is
+   * ignored, so that behavior doesn’t change for derived classes.
+   */
   g_object_get (G_OBJECT (conn),
                "rehandshake-mode", &mode,
                NULL);
-  return mode;
+  return G_TLS_REHANDSHAKE_SAFELY;
 }
 G_GNUC_END_IGNORE_DEPRECATIONS
 
@@ -887,28 +876,30 @@ g_tls_connection_get_negotiated_protocol (GTlsConnection *conn)
  *
  * On the client side, it is never necessary to call this method;
  * although the connection needs to perform a handshake after
- * connecting (or after sending a "STARTTLS"-type command) and may
- * need to rehandshake later if the server requests it,
+ * connecting (or after sending a "STARTTLS"-type command),
  * #GTlsConnection will handle this for you automatically when you try
- * to send or receive data on the connection. However, you can call
- * g_tls_connection_handshake() manually if you want to know for sure
- * whether the initial handshake succeeded or failed (as opposed to
- * just immediately trying to write to @conn's output stream, in which
- * case if it fails, it may not be possible to tell if it failed
- * before or after completing the handshake).
+ * to send or receive data on the connection. You can call
+ * g_tls_connection_handshake() manually if you want to know whether
+ * the initial handshake succeeded or failed (as opposed to just
+ * immediately trying to use @conn to read or write, in which case,
+ * if it fails, it may not be possible to tell if it failed before or
+ * after completing the handshake), but beware that servers may reject
+ * client authentication after the handshake has completed, so a
+ * successful handshake does not indicate the connection will be usable.
  *
  * Likewise, on the server side, although a handshake is necessary at
  * the beginning of the communication, you do not need to call this
  * function explicitly unless you want clearer error reporting.
  *
- * If TLS 1.2 or older is in use, you may call
- * g_tls_connection_handshake() after the initial handshake to
- * rehandshake; however, this usage is deprecated because rehandshaking
- * is no longer part of the TLS protocol in TLS 1.3. Accordingly, the
- * behavior of calling this function after the initial handshake is now
- * undefined, except it is guaranteed to be reasonable and
- * nondestructive so as to preserve compatibility with code written for
- * older versions of GLib.
+ * Previously, calling g_tls_connection_handshake() after the initial
+ * handshake would trigger a rehandshake; however, this usage was
+ * deprecated in GLib 2.60 because rehandshaking was removed from the
+ * TLS protocol in TLS 1.3. Since GLib 2.64, calling this function after
+ * the initial handshake will no longer do anything.
+ *
+ * When using a #GTlsConnection created by #GSocketClient, the
+ * #GSocketClient performs the initial handshake, so calling this
+ * function manually is not recommended.
  *
  * #GTlsConnection::accept_certificate may be emitted during the
  * handshake.
index b6aca37..9922be2 100644 (file)
@@ -86,10 +86,10 @@ g_trash_portal_trash_file (GFile   *file,
 
   path = g_file_get_path (file);
 
-  fd = g_open (path, O_RDWR | O_CLOEXEC);
+  fd = g_open (path, O_RDWR | O_CLOEXEC | O_NOFOLLOW);
   if (fd == -1 && errno == EISDIR)
     /* If it is a directory, fall back to O_PATH */
-    fd = g_open (path, O_PATH | O_CLOEXEC | O_RDONLY);
+    fd = g_open (path, O_PATH | O_CLOEXEC | O_RDONLY | O_NOFOLLOW);
 
   errsv = errno;
 
index cbf2ee9..1880d99 100644 (file)
@@ -152,7 +152,11 @@ static GList *_g_get_unix_mounts (void);
 static GList *_g_get_unix_mount_points (void);
 static gboolean proc_mounts_watch_is_running (void);
 
+G_LOCK_DEFINE_STATIC (proc_mounts_source);
+
+/* Protected by proc_mounts_source lock */
 static guint64 mount_poller_time = 0;
+static GSource *proc_mounts_watch_source;
 
 #ifdef HAVE_SYS_MNTTAB_H
 #define MNTOPT_RO      "ro"
@@ -1485,18 +1489,21 @@ get_mounts_timestamp (void)
 {
   const char *monitor_file;
   struct stat buf;
+  guint64 timestamp = 0;
+
+  G_LOCK (proc_mounts_source);
 
   monitor_file = get_mtab_monitor_file ();
   /* Don't return mtime for /proc/ files */
   if (monitor_file && !g_str_has_prefix (monitor_file, "/proc/"))
     {
       if (stat (monitor_file, &buf) == 0)
-        return (guint64)buf.st_mtime;
+        timestamp = buf.st_mtime;
     }
   else if (proc_mounts_watch_is_running ())
     {
       /* it's being monitored by poll, so return mount_poller_time */
-      return mount_poller_time;
+      timestamp = mount_poller_time;
     }
   else
     {
@@ -1505,9 +1512,12 @@ get_mounts_timestamp (void)
        * return TRUE so any application caches depending on it (like eg.
        * the one in GIO) get invalidated and don't hold possibly outdated
        * data - see Bug 787731 */
-     return (guint64) g_get_monotonic_time ();
+     timestamp = g_get_monotonic_time ();
     }
-  return 0;
+
+  G_UNLOCK (proc_mounts_source);
+
+  return timestamp;
 }
 
 static guint64
@@ -1704,10 +1714,10 @@ G_DEFINE_TYPE (GUnixMountMonitor, g_unix_mount_monitor, G_TYPE_OBJECT)
 static GContextSpecificGroup  mount_monitor_group;
 static GFileMonitor          *fstab_monitor;
 static GFileMonitor          *mtab_monitor;
-static GSource               *proc_mounts_watch_source;
 static GList                 *mount_poller_mounts;
 static guint                  mtab_file_changed_id;
 
+/* Called with proc_mounts_source lock held. */
 static gboolean
 proc_mounts_watch_is_running (void)
 {
@@ -1746,6 +1756,9 @@ mtab_file_changed (GFileMonitor      *monitor,
                    GFileMonitorEvent  event_type,
                    gpointer           user_data)
 {
+  GMainContext *context;
+  GSource *source;
+
   if (event_type != G_FILE_MONITOR_EVENT_CHANGED &&
       event_type != G_FILE_MONITOR_EVENT_CREATED &&
       event_type != G_FILE_MONITOR_EVENT_DELETED)
@@ -1758,7 +1771,16 @@ mtab_file_changed (GFileMonitor      *monitor,
   if (mtab_file_changed_id > 0)
     return;
 
-  mtab_file_changed_id = g_idle_add (mtab_file_changed_cb, NULL);
+  context = g_main_context_get_thread_default ();
+  if (!context)
+    context = g_main_context_default ();
+
+  source = g_idle_source_new ();
+  g_source_set_priority (source, G_PRIORITY_DEFAULT);
+  g_source_set_callback (source, mtab_file_changed_cb, NULL, NULL);
+  g_source_set_name (source, "[gio] mtab_file_changed_cb");
+  g_source_attach (source, context);
+  g_source_unref (source);
 }
 
 static gboolean
@@ -1768,7 +1790,10 @@ proc_mounts_changed (GIOChannel   *channel,
 {
   if (cond & G_IO_ERR)
     {
+      G_LOCK (proc_mounts_source);
       mount_poller_time = (guint64) g_get_monotonic_time ();
+      G_UNLOCK (proc_mounts_source);
+
       g_context_specific_group_emit (&mount_monitor_group, signals[MOUNTS_CHANGED]);
     }
 
@@ -1802,7 +1827,10 @@ mount_change_poller (gpointer user_data)
 
   if (has_changed)
     {
+      G_LOCK (proc_mounts_source);
       mount_poller_time = (guint64) g_get_monotonic_time ();
+      G_UNLOCK (proc_mounts_source);
+
       g_context_specific_group_emit (&mount_monitor_group, signals[MOUNTPOINTS_CHANGED]);
     }
 
@@ -1819,11 +1847,13 @@ mount_monitor_stop (void)
       g_object_unref (fstab_monitor);
     }
 
+  G_LOCK (proc_mounts_source);
   if (proc_mounts_watch_source != NULL)
     {
       g_source_destroy (proc_mounts_watch_source);
       proc_mounts_watch_source = NULL;
     }
+  G_UNLOCK (proc_mounts_source);
 
   if (mtab_monitor)
     {
@@ -1831,6 +1861,12 @@ mount_monitor_stop (void)
       g_object_unref (mtab_monitor);
     }
 
+  if (mtab_file_changed_id)
+    {
+      g_source_remove (mtab_file_changed_id);
+      mtab_file_changed_id = 0;
+    }
+
   g_list_free_full (mount_poller_mounts, (GDestroyNotify) g_unix_mount_free);
 }
 
@@ -1869,7 +1905,10 @@ mount_monitor_start (void)
             }
           else
             {
+              G_LOCK (proc_mounts_source);
+
               proc_mounts_watch_source = g_io_create_watch (proc_mounts_channel, G_IO_ERR);
+              mount_poller_time = (guint64) g_get_monotonic_time ();
               g_source_set_callback (proc_mounts_watch_source,
                                      (GSourceFunc) proc_mounts_changed,
                                      NULL, NULL);
@@ -1877,6 +1916,8 @@ mount_monitor_start (void)
                                g_main_context_get_thread_default ());
               g_source_unref (proc_mounts_watch_source);
               g_io_channel_unref (proc_mounts_channel);
+
+              G_UNLOCK (proc_mounts_source);
             }
         }
       else
@@ -1889,6 +1930,8 @@ mount_monitor_start (void)
     }
   else
     {
+      G_LOCK (proc_mounts_source);
+
       proc_mounts_watch_source = g_timeout_source_new_seconds (3);
       mount_poller_mounts = _g_get_unix_mounts ();
       mount_poller_time = (guint64)g_get_monotonic_time ();
@@ -1898,6 +1941,8 @@ mount_monitor_start (void)
       g_source_attach (proc_mounts_watch_source,
                        g_main_context_get_thread_default ());
       g_source_unref (proc_mounts_watch_source);
+
+      G_UNLOCK (proc_mounts_source);
     }
 }
 
index 506e09a..1af0b44 100644 (file)
@@ -403,9 +403,9 @@ g_unix_output_stream_write (GOutputStream  *stream,
 
 /* Macro to check if struct iovec and GOutputVector have the same ABI */
 #define G_OUTPUT_VECTOR_IS_IOVEC (sizeof (struct iovec) == sizeof (GOutputVector) && \
-      sizeof ((struct iovec *) 0)->iov_base == sizeof ((GOutputVector *) 0)->buffer && \
+      G_SIZEOF_MEMBER (struct iovec, iov_base) == G_SIZEOF_MEMBER (GOutputVector, buffer) && \
       G_STRUCT_OFFSET (struct iovec, iov_base) == G_STRUCT_OFFSET (GOutputVector, buffer) && \
-      sizeof ((struct iovec *) 0)->iov_len == sizeof((GOutputVector *) 0)->size && \
+      G_SIZEOF_MEMBER (struct iovec, iov_len) == G_SIZEOF_MEMBER (GOutputVector, size) && \
       G_STRUCT_OFFSET (struct iovec, iov_len) == G_STRUCT_OFFSET (GOutputVector, size))
 
 static gboolean
index 27e195e..0ab1a62 100644 (file)
@@ -67,7 +67,7 @@ enum
 };
 
 #ifndef UNIX_PATH_MAX
-#define UNIX_PATH_MAX sizeof (((struct sockaddr_un *) 0)->sun_path)
+#define UNIX_PATH_MAX G_SIZEOF_MEMBER (struct sockaddr_un, sun_path)
 #endif
 
 struct _GUnixSocketAddressPrivate
index 9f335b3..446d88e 100644 (file)
@@ -139,6 +139,13 @@ struct _GWin32AppInfoHandler {
   /* Pointer to a location within @executable */
   gchar *executable_basename;
 
+  /* If not NULL, then @executable and its derived fields contain the name
+   * of a DLL file (without the name of the function that rundll32.exe should
+   * invoke), and this field contains the name of the function to be invoked.
+   * The application is then invoked as 'rundll32.exe "dll_path",dll_function other_arguments...'.
+   */
+  gchar *dll_function;
+
   /* Icon of the application for this handler */
   GIcon *icon;
 
@@ -213,6 +220,13 @@ struct _GWin32AppInfoApplication {
   /* Pointer to a location within @executable */
   gchar *executable_basename;
 
+  /* If not NULL, then @executable and its derived fields contain the name
+   * of a DLL file (without the name of the function that rundll32.exe should
+   * invoke), and this field contains the name of the function to be invoked.
+   * The application is then invoked as 'rundll32.exe "dll_path",dll_function other_arguments...'.
+   */
+  gchar *dll_function;
+
   /* Explicitly supported URLs, hashmap from map-owned gchar ptr (schema,
    * UTF-8, folded) -> a GWin32AppInfoHandler
    * Schema can be used as a key in the urls hashmap.
@@ -294,6 +308,7 @@ g_win32_appinfo_handler_dispose (GObject *object)
   g_clear_pointer (&handler->proxy_command, g_free);
   g_clear_pointer (&handler->executable_folded, g_free);
   g_clear_pointer (&handler->executable, g_free);
+  g_clear_pointer (&handler->dll_function, g_free);
   g_clear_object (&handler->key);
   g_clear_object (&handler->proxy_key);
   g_clear_object (&handler->icon);
@@ -332,6 +347,7 @@ g_win32_appinfo_application_dispose (GObject *object)
   g_clear_pointer (&app->command_u8, g_free);
   g_clear_pointer (&app->executable_folded, g_free);
   g_clear_pointer (&app->executable, g_free);
+  g_clear_pointer (&app->dll_function, g_free);
   g_clear_pointer (&app->supported_urls, g_hash_table_destroy);
   g_clear_pointer (&app->supported_exts, g_hash_table_destroy);
   g_clear_object (&app->icon);
@@ -464,17 +480,6 @@ static GWin32RegistryKey *applications_key;
 /* Watch this key */
 static GWin32RegistryKey *classes_root_key;
 
-static gunichar2 *
-g_wcsdup (const gunichar2 *str, gssize str_size)
-{
-  if (str_size == -1)
-    {
-      str_size = wcslen (str) + 1;
-      str_size *= sizeof (gunichar2);
-    }
-  return g_memdup (str, str_size);
-}
-
 #define URL_ASSOCIATIONS L"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\"
 #define USER_CHOICE L"\\UserChoice"
 #define OPEN_WITH_PROGIDS L"\\OpenWithProgids"
@@ -486,6 +491,12 @@ g_wcsdup (const gunichar2 *str, gssize str_size)
 #define REG_PATH_MAX 256
 #define REG_PATH_MAX_SIZE (REG_PATH_MAX * sizeof (gunichar2))
 
+/* for g_wcsdup(),
+ *     _g_win32_extract_executable(),
+ *     _g_win32_fixup_broken_microsoft_rundll_commandline()
+ */
+#include "giowin32-private.c"
+
 static gunichar2 *
 read_resource_string (gunichar2 *res)
 {
@@ -694,41 +705,29 @@ _g_win32_registry_key_build_and_new_w (GError **error, ...)
   return key;
 }
 
-
+/* Slow and dirty validator for UTF-16 strings */
 static gboolean
-utf8_and_fold (const gunichar2  *str,
-               gchar           **str_u8,
-               gchar           **str_u8_folded)
+g_utf16_validate (const gunichar2  *str,
+                 glong             len)
 {
-  gchar *u8;
-  gchar *folded;
-  u8 = g_utf16_to_utf8 (str, -1, NULL, NULL, NULL);
+  gchar *tmp;
 
-  if (u8 == NULL)
+  if (str == NULL)
     return FALSE;
 
-  folded = g_utf8_casefold (u8, -1);
+  tmp = g_utf16_to_utf8 (str, len, NULL, NULL, NULL);
 
-  if (folded == NULL)
-    {
-      g_free (u8);
-      return FALSE;
-    }
-
-  if (str_u8)
-    *str_u8 = u8;
-  else
-    g_free (u8);
+  if (tmp == NULL)
+    return FALSE;
 
-  if (str_u8_folded)
-    *str_u8_folded = folded;
-  else
-    g_free (folded);
+  g_free (tmp);
 
   return TRUE;
 }
 
-
+/* Does a UTF-16 validity check on *proxy_command and/or *program_command.
+ * Fails if that check doesn't pass.
+ */
 static gboolean
 follow_class_chain_to_handler (const gunichar2    *program_id,
                                gsize               program_id_size,
@@ -772,8 +771,9 @@ follow_class_chain_to_handler (const gunichar2    *program_id,
                                                     NULL);
       if (got_value && val_type == G_WIN32_REGISTRY_VALUE_STR)
         {
-          if ((program_id_u8 != NULL || program_id_folded != NULL) &&
-              !utf8_and_fold (program_id, program_id_u8, program_id_folded))
+          if (((program_id_u8 != NULL || program_id_folded != NULL) &&
+               !g_utf16_to_utf8_and_fold (program_id, -1, program_id_u8, program_id_folded)) ||
+              !g_utf16_validate (*program_command, -1))
             {
               g_object_unref (key);
               g_free (program_command);
@@ -805,27 +805,23 @@ follow_class_chain_to_handler (const gunichar2    *program_id,
                                                 (void **) proxy_id,
                                                 &proxy_id_size,
                                                 NULL);
+  g_object_unref (key);
+
   if (!got_value ||
       (val_type != G_WIN32_REGISTRY_VALUE_STR))
     {
-      g_object_unref (key);
       g_clear_pointer (proxy_id, g_free);
+
       return FALSE;
     }
 
-  if (proxy_key)
-    *proxy_key = key;
-  else
-    g_object_unref (key);
-
   key = _g_win32_registry_key_build_and_new_w (NULL, HKCR, *proxy_id,
                                                SHELL_OPEN_COMMAND, NULL);
 
   if (key == NULL)
     {
       g_clear_pointer (proxy_id, g_free);
-      if (proxy_key)
-        g_clear_object (proxy_key);
+
       return FALSE;
     }
 
@@ -836,12 +832,17 @@ follow_class_chain_to_handler (const gunichar2    *program_id,
                                                 (void **) proxy_command,
                                                 NULL,
                                                 NULL);
-  g_object_unref (key);
+
+  if (proxy_key)
+    *proxy_key = key;
+  else
+    g_object_unref (key);
 
   if (!got_value ||
       val_type != G_WIN32_REGISTRY_VALUE_STR ||
       ((program_id_u8 != NULL || program_id_folded != NULL) &&
-       !utf8_and_fold (program_id, program_id_u8, program_id_folded)))
+       !g_utf16_to_utf8_and_fold (program_id, -1, program_id_u8, program_id_folded)) ||
+      !g_utf16_validate (*proxy_command, -1))
     {
       g_clear_pointer (proxy_id, g_free);
       g_clear_pointer (proxy_command, g_free);
@@ -853,124 +854,6 @@ follow_class_chain_to_handler (const gunichar2    *program_id,
   return TRUE;
 }
 
-
-static void
-extract_executable (gunichar2  *commandline,
-                    gchar     **ex_out,
-                    gchar     **ex_basename_out,
-                    gchar     **ex_folded_out,
-                    gchar     **ex_folded_basename_out)
-{
-  gchar *ex;
-  gchar *ex_folded;
-  gunichar2 *p;
-  gboolean quoted;
-  size_t len;
-  size_t execlen;
-  gunichar2 *exepart;
-  gboolean found;
-
-  quoted = FALSE;
-  execlen = 0;
-  found = FALSE;
-  len = wcslen (commandline);
-  p = commandline;
-
-  while (p < &commandline[len])
-    {
-      switch (p[0])
-        {
-        case L'"':
-          quoted = !quoted;
-          break;
-        case L' ':
-          if (!quoted)
-            {
-              execlen = p - commandline;
-              p = &commandline[len];
-              found = TRUE;
-            }
-          break;
-        default:
-          break;
-        }
-      p += 1;
-    }
-
-  if (!found)
-    execlen = len;
-
-  exepart = g_wcsdup (commandline, (execlen + 1) * sizeof (gunichar2));
-  exepart[execlen] = L'\0';
-
-  p = &exepart[0];
-
-  while (execlen > 0 && exepart[0] == L'"' && exepart[execlen - 1] == L'"')
-    {
-      p = &exepart[1];
-      exepart[execlen - 1] = L'\0';
-      execlen -= 2;
-    }
-
-  if (!utf8_and_fold (p, &ex, &ex_folded))
-    /* Currently no code to handle this case. It shouldn't happen though... */
-    g_assert_not_reached ();
-
-  g_free (exepart);
-
-  if (ex_out)
-    {
-      *ex_out = ex;
-
-      if (ex_basename_out)
-        {
-          *ex_basename_out = &ex[strlen (ex) - 1];
-
-          while (*ex_basename_out > ex)
-            {
-              if ((*ex_basename_out)[0] == '/' ||
-                  (*ex_basename_out)[0] == '\\')
-                {
-                  *ex_basename_out += 1;
-                  break;
-                }
-
-              *ex_basename_out -= 1;
-            }
-        }
-    }
-  else
-    {
-      g_free (ex);
-    }
-
-  if (ex_folded_out)
-    {
-      *ex_folded_out = ex_folded;
-
-      if (ex_folded_basename_out)
-        {
-          *ex_folded_basename_out = &ex_folded[strlen (ex_folded) - 1];
-
-          while (*ex_folded_basename_out > ex_folded)
-            {
-              if ((*ex_folded_basename_out)[0] == '/' ||
-                  (*ex_folded_basename_out)[0] == '\\')
-                {
-                  *ex_folded_basename_out += 1;
-                  break;
-                }
-
-              *ex_folded_basename_out -= 1;
-            }
-        }
-    }
-  else
-    {
-      g_free (ex_folded);
-    }
-}
-
 static void
 get_url_association (const gunichar2 *schema)
 {
@@ -998,7 +881,7 @@ get_url_association (const gunichar2 *schema)
   if (user_choice == NULL)
     return;
 
-  if (!utf8_and_fold (schema, &schema_u8, &schema_folded))
+  if (!g_utf16_to_utf8_and_fold (schema, -1, &schema_u8, &schema_folded))
     {
       g_object_unref (user_choice);
       return;
@@ -1065,11 +948,14 @@ get_url_association (const gunichar2 *schema)
       handler_rec->proxy_id = proxy_id ? g_wcsdup (proxy_id, -1) : NULL;
       handler_rec->proxy_command =
           proxy_command ? g_wcsdup (proxy_command, -1) : NULL;
-      extract_executable (proxy_command ? proxy_command : program_command,
-                          &handler_rec->executable,
-                          &handler_rec->executable_basename,
-                          &handler_rec->executable_folded,
-                          NULL);
+      _g_win32_extract_executable (proxy_command ? proxy_command : program_command,
+                                   &handler_rec->executable,
+                                   &handler_rec->executable_basename,
+                                   &handler_rec->executable_folded,
+                                   NULL,
+                                   &handler_rec->dll_function);
+      if (handler_rec->dll_function != NULL)
+        _g_win32_fixup_broken_microsoft_rundll_commandline (handler_rec->handler_command ? handler_rec->handler_command : handler_rec->proxy_command);
       read_handler_icon (proxy_key, program_key, &handler_rec->icon);
       g_hash_table_insert (handlers,
                            g_strdup (program_id_folded),
@@ -1147,7 +1033,7 @@ get_file_ext (const gunichar2 *ext)
   if (user_choice == NULL && open_with_progids == NULL)
     return;
 
-  if (!utf8_and_fold (ext, &ext_u8, &ext_folded))
+  if (!g_utf16_to_utf8_and_fold (ext, -1, &ext_u8, &ext_folded))
     {
       g_clear_object (&user_choice);
       g_clear_object (&open_with_progids);
@@ -1207,11 +1093,14 @@ get_file_ext (const gunichar2 *ext)
                       proxy_id ? g_wcsdup (proxy_id, -1) : NULL;
                   handler_rec->proxy_command =
                       proxy_command ? g_wcsdup (proxy_command, -1) : NULL;
-                  extract_executable (proxy_command ? proxy_command : program_command,
-                                      &handler_rec->executable,
-                                      &handler_rec->executable_basename,
-                                      &handler_rec->executable_folded,
-                                      NULL);
+                  _g_win32_extract_executable (proxy_command ? proxy_command : program_command,
+                                               &handler_rec->executable,
+                                               &handler_rec->executable_basename,
+                                               &handler_rec->executable_folded,
+                                               NULL,
+                                               &handler_rec->dll_function);
+                  if (handler_rec->dll_function != NULL)
+                    _g_win32_fixup_broken_microsoft_rundll_commandline (handler_rec->handler_command ? handler_rec->handler_command : handler_rec->proxy_command);
                   read_handler_icon (proxy_key,
                                      program_key,
                                      &handler_rec->icon);
@@ -1325,11 +1214,14 @@ get_file_ext (const gunichar2 *ext)
                       proxy_id ? g_wcsdup (proxy_id, -1) : NULL;
                   handler_rec->proxy_command =
                       proxy_command ? g_wcsdup (proxy_command, -1) : NULL;
-                  extract_executable (proxy_command ? proxy_command : program_command,
-                                      &handler_rec->executable,
-                                      &handler_rec->executable_basename,
-                                      &handler_rec->executable_folded,
-                                      NULL);
+                  _g_win32_extract_executable (proxy_command ? proxy_command : program_command,
+                                               &handler_rec->executable,
+                                               &handler_rec->executable_basename,
+                                               &handler_rec->executable_folded,
+                                               NULL,
+                                               &handler_rec->dll_function);
+                  if (handler_rec->dll_function != NULL)
+                    _g_win32_fixup_broken_microsoft_rundll_commandline (handler_rec->handler_command ? handler_rec->handler_command : handler_rec->proxy_command);
                   read_handler_icon (proxy_key,
                                      program_key,
                                      &handler_rec->icon);
@@ -1637,6 +1529,7 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
   gchar *app_executable_basename;
   gchar *app_executable_folded;
   gchar *app_executable_folded_basename;
+  gchar *app_dll_function;
   GWin32RegistryKey *associations;
 
   app_key_path = g_wcsdup (input_app_key_path, -1);
@@ -1652,7 +1545,7 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
 
   canonical_name += 1;
 
-  if (!utf8_and_fold (canonical_name, &canonical_name_u8, &canonical_name_folded))
+  if (!g_utf16_to_utf8_and_fold (canonical_name, -1, &canonical_name_u8, &canonical_name_folded))
     {
       g_free (app_key_path);
       return;
@@ -1705,7 +1598,9 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
                                               NULL,
                                               NULL);
 
-  if (success && vtype != G_WIN32_REGISTRY_VALUE_STR)
+  if (success &&
+      (vtype != G_WIN32_REGISTRY_VALUE_STR ||
+       !g_utf16_validate (shell_open_command, -1)))
     {
       /* Must have a command */
       g_clear_pointer (&shell_open_command, g_free);
@@ -1717,11 +1612,14 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
       return;
     }
 
-  extract_executable (shell_open_command,
-                      &app_executable,
-                      &app_executable_basename,
-                      &app_executable_folded,
-                      &app_executable_folded_basename);
+  _g_win32_extract_executable (shell_open_command,
+                               &app_executable,
+                               &app_executable_basename,
+                               &app_executable_folded,
+                               &app_executable_folded_basename,
+                               &app_dll_function);
+  if (app_dll_function != NULL)
+    _g_win32_fixup_broken_microsoft_rundll_commandline (shell_open_command);
 
   app = g_hash_table_lookup (apps_by_id, canonical_name_folded);
 
@@ -1748,6 +1646,8 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
       app->user_specific = user_specific;
       app->default_app = default_app;
 
+      app->dll_function = g_strdup (app_dll_function);
+
       g_hash_table_insert (apps_by_id,
                            g_strdup (canonical_name_folded),
                            app);
@@ -1966,11 +1866,14 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
                       proxy_id ? g_wcsdup (proxy_id, -1) : NULL;
                   handler_rec->proxy_command =
                       proxy_command ? g_wcsdup (proxy_command, -1) : NULL;
-                  extract_executable (proxy_command ? proxy_command : program_command,
-                                      &handler_rec->executable,
-                                      &handler_rec->executable_basename,
-                                      &handler_rec->executable_folded,
-                                      NULL);
+                  _g_win32_extract_executable (proxy_command ? proxy_command : program_command,
+                                               &handler_rec->executable,
+                                               &handler_rec->executable_basename,
+                                               &handler_rec->executable_folded,
+                                               NULL,
+                                               &handler_rec->dll_function);
+                  if (handler_rec->dll_function != NULL)
+                    _g_win32_fixup_broken_microsoft_rundll_commandline (handler_rec->handler_command ? handler_rec->handler_command : handler_rec->proxy_command);
                   read_handler_icon (proxy_key,
                                      program_key,
                                      &handler_rec->icon);
@@ -1984,9 +1887,10 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
                   g_clear_object (&proxy_key);
                 }
 
-                if (utf8_and_fold (file_extension,
-                                   &file_extension_u8,
-                                   &file_extension_folded))
+                if (g_utf16_to_utf8_and_fold (file_extension,
+                                              -1,
+                                              &file_extension_u8,
+                                              &file_extension_folded))
                   {
                     ext = g_hash_table_lookup (extensions,
                                                file_extension_folded);
@@ -2122,11 +2026,14 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
                       proxy_id ? g_wcsdup (proxy_id, -1) : NULL;
                   handler_rec->proxy_command =
                       proxy_command ? g_wcsdup (proxy_command, -1) : NULL;
-                  extract_executable (proxy_command ? proxy_command : program_command,
-                                      &handler_rec->executable,
-                                      &handler_rec->executable_basename,
-                                      &handler_rec->executable_folded,
-                                      NULL);
+                  _g_win32_extract_executable (proxy_command ? proxy_command : program_command,
+                                               &handler_rec->executable,
+                                               &handler_rec->executable_basename,
+                                               &handler_rec->executable_folded,
+                                               NULL,
+                                               &handler_rec->dll_function);
+                  if (handler_rec->dll_function != NULL)
+                    _g_win32_fixup_broken_microsoft_rundll_commandline (handler_rec->handler_command ? handler_rec->handler_command : handler_rec->proxy_command);
                   read_handler_icon (proxy_key,
                                      program_key,
                                      &handler_rec->icon);
@@ -2140,9 +2047,10 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
                   g_clear_object (&proxy_key);
                 }
 
-                if (utf8_and_fold (url_schema,
-                                   &schema_u8,
-                                   &schema_folded))
+                if (g_utf16_to_utf8_and_fold (url_schema,
+                                              -1,
+                                              &schema_u8,
+                                              &schema_folded))
                   {
                     schema = g_hash_table_lookup (urls,
                                                   schema_folded);
@@ -2197,6 +2105,7 @@ read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolea
 
   g_clear_pointer (&app_executable, g_free);
   g_clear_pointer (&app_executable_folded, g_free);
+  g_clear_pointer (&app_dll_function, g_free);
   g_clear_pointer (&fallback_friendly_name, g_free);
   g_clear_pointer (&description, g_free);
   g_clear_pointer (&icon_source, g_free);
@@ -2243,8 +2152,6 @@ read_exeapps (void)
 {
   GWin32RegistryKey *applications_key;
   GWin32RegistrySubkeyIter app_iter;
-  gunichar2 *app_exe_basename;
-  gsize app_exe_basename_len;
 
   applications_key =
       g_win32_registry_key_new_w (L"HKEY_CLASSES_ROOT\\Applications", NULL);
@@ -2260,6 +2167,8 @@ read_exeapps (void)
 
   while (g_win32_registry_subkey_iter_next (&app_iter, TRUE, NULL))
     {
+      gunichar2 *app_exe_basename;
+      gsize app_exe_basename_len;
       GWin32RegistryKey *incapable_app;
       gunichar2 *friendly_app_name;
       gboolean success;
@@ -2280,7 +2189,8 @@ read_exeapps (void)
       if (!g_win32_registry_subkey_iter_get_name_w (&app_iter,
                                                     &app_exe_basename,
                                                     &app_exe_basename_len,
-                                                    NULL))
+                                                    NULL) ||
+          !g_utf16_validate (app_exe_basename, app_exe_basename_len))
         continue;
 
       incapable_app =
@@ -2291,11 +2201,12 @@ read_exeapps (void)
       if (incapable_app == NULL)
         continue;
 
-      extract_executable (app_exe_basename,
-                          &appexe,
-                          &appexe_basename,
-                          &appexe_folded,
-                          &appexe_folded_basename);
+      _g_win32_extract_executable (app_exe_basename,
+                                   &appexe,
+                                   &appexe_basename,
+                                   &appexe_folded,
+                                   &appexe_folded_basename,
+                                   NULL);
 
       shell_open_command_key =
           g_win32_registry_key_get_child_w (incapable_app,
@@ -2314,7 +2225,9 @@ read_exeapps (void)
                                                       NULL,
                                                       NULL);
 
-          if (success && vtype != G_WIN32_REGISTRY_VALUE_STR)
+          if (success &&
+              (vtype != G_WIN32_REGISTRY_VALUE_STR ||
+               !g_utf16_validate (shell_open_command, -1)))
             {
               g_clear_pointer (&shell_open_command, g_free);
             }
@@ -2385,6 +2298,21 @@ read_exeapps (void)
         {
           app = g_object_new (G_TYPE_WIN32_APPINFO_APPLICATION, NULL);
 
+          if (shell_open_command)
+            {
+              gchar *dll_function;
+
+              _g_win32_extract_executable (shell_open_command,
+                                           NULL,
+                                           NULL,
+                                           NULL,
+                                           NULL,
+                                           &dll_function);
+              if (dll_function != NULL)
+                _g_win32_fixup_broken_microsoft_rundll_commandline (shell_open_command);
+              g_clear_pointer (&dll_function, g_free);
+            }
+
           app->command =
               shell_open_command ? g_wcsdup (shell_open_command, -1) : NULL;
 
@@ -2442,9 +2370,10 @@ read_exeapps (void)
                                                                 NULL)) ||
                       (ext_name_len <= 0) ||
                       (ext_name[0] != L'.') ||
-                      (!utf8_and_fold (ext_name,
-                                       &ext_u8,
-                                       &ext_folded)))
+                      (!g_utf16_to_utf8_and_fold (ext_name,
+                                                  -1,
+                                                  &ext_u8,
+                                                  &ext_folded)))
                     continue;
 
                   file_extn = NULL;
@@ -2590,11 +2519,14 @@ read_class_extension (GWin32RegistryKey *classes_root,
       handler_rec->proxy_id = proxy_id ? g_wcsdup (proxy_id, -1) : NULL;
       handler_rec->proxy_command =
           proxy_command ? g_wcsdup (proxy_command, -1) : NULL;
-      extract_executable (proxy_command ? proxy_command : program_command,
-                          &handler_rec->executable,
-                          &handler_rec->executable_basename,
-                          &handler_rec->executable_folded,
-                          NULL);
+      _g_win32_extract_executable (proxy_command ? proxy_command : program_command,
+                                   &handler_rec->executable,
+                                   &handler_rec->executable_basename,
+                                   &handler_rec->executable_folded,
+                                   NULL,
+                                   &handler_rec->dll_function);
+      if (handler_rec->dll_function != NULL)
+        _g_win32_fixup_broken_microsoft_rundll_commandline (handler_rec->handler_command ? handler_rec->handler_command : handler_rec->proxy_command);
       read_handler_icon (proxy_key, program_key, &handler_rec->icon);
       g_hash_table_insert (handlers,
                            g_strdup (ext_folded),
@@ -2708,11 +2640,14 @@ read_class_url (GWin32RegistryKey *classes_root,
       handler_rec->proxy_id = proxy_id ? g_wcsdup (proxy_id, -1) : NULL;
       handler_rec->proxy_command =
           proxy_command ? g_wcsdup (proxy_command, -1) : NULL;
-      extract_executable (proxy_command ? proxy_command : program_command,
-                          &handler_rec->executable,
-                          &handler_rec->executable_basename,
-                          &handler_rec->executable_folded,
-                          NULL);
+      _g_win32_extract_executable (proxy_command ? proxy_command : program_command,
+                                   &handler_rec->executable,
+                                   &handler_rec->executable_basename,
+                                   &handler_rec->executable_folded,
+                                   NULL,
+                                   &handler_rec->dll_function);
+      if (handler_rec->dll_function != NULL)
+        _g_win32_fixup_broken_microsoft_rundll_commandline (handler_rec->handler_command ? handler_rec->handler_command : handler_rec->proxy_command);
       read_handler_icon (proxy_key, program_key, &handler_rec->icon);
       g_hash_table_insert (handlers,
                            g_strdup (program_id_folded),
@@ -2832,9 +2767,10 @@ link_chosen_handlers (void)
 
           if (handler->proxy_command &&
               handler->proxy_id &&
-              utf8_and_fold (handler->proxy_id,
-                             NULL,
-                             &proxy_id_folded))
+              g_utf16_to_utf8_and_fold (handler->proxy_id,
+                                        -1,
+                                        NULL,
+                                        &proxy_id_folded))
             {
               GWin32AppInfoHandler *proxy;
 
@@ -2890,9 +2826,10 @@ link_chosen_handlers (void)
 
           if (handler->proxy_command &&
               handler->proxy_id &&
-              utf8_and_fold (handler->proxy_id,
-                             NULL,
-                             &proxy_id_folded))
+              g_utf16_to_utf8_and_fold (handler->proxy_id,
+                                        -1,
+                                        NULL,
+                                        &proxy_id_folded))
             {
               GWin32AppInfoHandler *proxy;
 
@@ -3134,11 +3071,6 @@ link_handlers_to_unregistered_apps (void)
           (handler->executable_folded == NULL))
         continue;
 
-      hndexe_fc_basename = g_utf8_casefold (handler->executable_basename, -1);
-
-      if (hndexe_fc_basename == NULL)
-        continue;
-
       g_hash_table_iter_init (&app_iter, apps_by_id);
 
       while (g_hash_table_iter_next (&app_iter,
@@ -3159,6 +3091,11 @@ link_handlers_to_unregistered_apps (void)
       if (handler->app != NULL)
         continue;
 
+      hndexe_fc_basename = g_utf8_casefold (handler->executable_basename, -1);
+
+      if (hndexe_fc_basename == NULL)
+        continue;
+
       g_hash_table_iter_init (&app_iter, apps_by_exe);
 
       while ((hndexe_fc_basename != NULL) &&
@@ -4379,13 +4316,20 @@ g_app_info_create_from_commandline (const char           *commandline,
 {
   GWin32AppInfo *info;
   GWin32AppInfoApplication *app;
+  gunichar2 *app_command;
 
   g_return_val_if_fail (commandline, NULL);
 
-  info = g_object_new (G_TYPE_WIN32_APP_INFO, NULL);
+  app_command = g_utf8_to_utf16 (commandline, -1, NULL, NULL, NULL);
 
+  if (app_command == NULL)
+    return NULL;
+
+  info = g_object_new (G_TYPE_WIN32_APP_INFO, NULL);
   app = g_object_new (G_TYPE_WIN32_APPINFO_APPLICATION, NULL);
 
+  app->command = g_steal_pointer (&app_command);
+
   if (application_name)
     {
       app->canonical_name = g_utf8_to_utf16 (application_name,
@@ -4397,14 +4341,16 @@ g_app_info_create_from_commandline (const char           *commandline,
       app->canonical_name_folded = g_utf8_casefold (application_name, -1);
     }
 
-  app->command = g_utf8_to_utf16 (commandline, -1, NULL, NULL, NULL);
-  app->command_u8 = g_strdup (commandline);
+  _g_win32_extract_executable (app->command,
+                               &app->executable,
+                               &app->executable_basename,
+                               &app->executable_folded,
+                               NULL,
+                               &app->dll_function);
+  if (app->dll_function != NULL)
+    _g_win32_fixup_broken_microsoft_rundll_commandline (app->command);
 
-  extract_executable (app->command,
-                      &app->executable,
-                      &app->executable_basename,
-                      &app->executable_folded,
-                      NULL);
+  app->command_u8 = g_utf16_to_utf8 (app->command, -1, NULL, NULL, NULL);
 
   app->no_open_with = FALSE;
   app->user_specific = FALSE;
index c19fede..aa78192 100644 (file)
@@ -2334,8 +2334,6 @@ g_win32_registry_key_set_property (GObject      *object,
   switch (prop_id)
     {
     case PROP_PATH:
-      g_assert (priv->absolute_path_w == NULL);
-      g_assert (priv->absolute_path == NULL);
       path = g_value_get_string (value);
 
       if (path == NULL)
@@ -2346,20 +2344,21 @@ g_win32_registry_key_set_property (GObject      *object,
       if (path_w == NULL)
         break;
 
-      g_free (priv->absolute_path_w);
-      g_free (priv->absolute_path);
+      /* Construct only */
+      g_assert (priv->absolute_path_w == NULL);
+      g_assert (priv->absolute_path == NULL);
       priv->absolute_path_w = path_w;
       priv->absolute_path = g_value_dup_string (value);
       break;
 
     case PROP_PATH_UTF16:
-      g_assert (priv->absolute_path_w == NULL);
-      g_assert (priv->absolute_path == NULL);
       path_w = (gunichar2 *) g_value_get_pointer (value);
 
       if (path_w == NULL)
         break;
 
+      /* Construct only */
+      g_assert (priv->absolute_path_w == NULL);
       priv->absolute_path_w = g_wcsdup (path_w, -1);
       break;
 
index d944587..c2b98b1 100644 (file)
@@ -193,7 +193,7 @@ ih_event_callback (ik_event_t  *event,
            * properly. If not, the assumption we have made about event->mask
            * only ever having a single bit set (apart from IN_ISDIR) is false.
            * The kernel documentation is lacking here. */
-          g_assert (event_flags != -1);
+          g_assert ((int) event_flags != -1);
           interesting = g_file_monitor_source_handle_event (sub->user_data, event_flags,
                                                             event->name, NULL, other, event->timestamp);
 
@@ -201,7 +201,7 @@ ih_event_callback (ik_event_t  *event,
             g_object_unref (other);
         }
     }
-  else if (event_flags != -1)
+  else if ((int) event_flags != -1)
     /* unpaired event -- no 'other' field */
     interesting = g_file_monitor_source_handle_event (sub->user_data, event_flags,
                                                       event->name, NULL, NULL, event->timestamp);
index fd0db4e..c6e4ec4 100644 (file)
@@ -122,7 +122,7 @@ static gboolean g_kqueue_file_monitor_is_supported (void);
 
 static kqueue_sub      *_kqsub_new (gchar *, gchar *, GKqueueFileMonitor *, GFileMonitorSource *);
 static void             _kqsub_free (kqueue_sub *);
-static gboolean                 _kqsub_cancel (kqueue_sub *);
+static void             _kqsub_cancel (kqueue_sub *);
 
 
 #ifndef O_EVTONLY
@@ -547,7 +547,7 @@ _kqsub_free (kqueue_sub *sub)
   g_slice_free (kqueue_sub, sub);
 }
 
-static gboolean
+static void
 _kqsub_cancel (kqueue_sub *sub)
 {
   /* WARNING: Before calling this function, you must hold a lock on kq_lock
@@ -563,7 +563,6 @@ _kqsub_cancel (kqueue_sub *sub)
       if (kevent (kq_queue, &ev, 1, NULL, 0, NULL) == -1)
         {
           g_warning ("Unable to remove event for %s: %s", sub->filename, g_strerror (errno));
-          return FALSE;
         }
       close (sub->fd);
       sub->fd = -1;
@@ -576,8 +575,6 @@ _kqsub_cancel (kqueue_sub *sub)
       dl_free (sub->deps);
       sub->deps = NULL;
     }
-
-  return TRUE;
 }
 
 gboolean
index 173000f..2ef60ed 100644 (file)
@@ -247,16 +247,6 @@ xdp_dbus_generated = custom_target('xdp-dbus',
                '--output-directory', '@OUTDIR@',
                '--generate-c-code', 'xdp-dbus',
                '--c-namespace', 'GXdp',
-               '--annotate', 'org.freedesktop.portal.Documents.Add()',
-                             'org.gtk.GDBus.C.UnixFD', 'true',
-               '--annotate', 'org.freedesktop.portal.Documents.AddNamed()',
-                             'org.gtk.GDBus.C.UnixFD', 'true',
-               '--annotate', 'org.freedesktop.portal.Documents.AddFull()',
-                             'org.gtk.GDBus.C.UnixFD', 'true',
-               '--annotate', 'org.freedesktop.portal.OpenURI.OpenFile()',
-                             'org.gtk.GDBus.C.UnixFD', 'true',
-               '--annotate', 'org.freedesktop.portal.Trash.TrashFile()',
-                             'org.gtk.GDBus.C.UnixFD', 'true',
                '@INPUT@'])
 
 # Generate gdbus-generated.{c,h}
@@ -393,6 +383,7 @@ if host_system != 'windows'
   portal_sources = [files(
     'gdocumentportal.c',
     'gopenuriportal.c',
+    'gmemorymonitorportal.c',
     'gnetworkmonitorportal.c',
     'gproxyresolverportal.c',
     'gtrashportal.c',
@@ -425,12 +416,6 @@ if host_system != 'windows'
     contenttype_sources += files('gcontenttype.c')
     appinfo_sources += files('gdesktopappinfo.c')
     gio_unix_include_headers += files('gdesktopappinfo.h')
-
-    executable('gio-launch-desktop', 'gio-launch-desktop.c',
-      install : true,
-      c_args : gio_c_args,
-      # intl.lib is not compatible with SAFESEH
-      link_args : noseh_link_args)
   endif
 
   subdir('xdgmime')
@@ -528,6 +513,8 @@ gio_sources = files(
   'gloadableicon.c',
   'gmarshal-internal.c',
   'gmount.c',
+  'gmemorymonitor.c',
+  'gmemorymonitordbus.c',
   'gmemoryinputstream.c',
   'gmemoryoutputstream.c',
   'gmountoperation.c',
@@ -670,6 +657,7 @@ gio_headers = files(
   'gloadableicon.h',
   'gmount.h',
   'gmemoryinputstream.h',
+  'gmemorymonitor.h',
   'gmemoryoutputstream.h',
   'gmountoperation.h',
   'gnativesocketaddress.h',
@@ -817,9 +805,10 @@ libgio = library('gio-2.0',
   link_args : [noseh_link_args, glib_link_flags],
 )
 
-giomodulesdir = get_option('gio_module_dir')
-if giomodulesdir == ''
-  giomodulesdir = join_paths('${libdir}', 'gio', 'modules')
+if get_option('gio_module_dir') != ''
+  pkgconfig_giomodulesdir = join_paths('${prefix}', get_option('gio_module_dir'))
+else
+  pkgconfig_giomodulesdir = join_paths('${libdir}', 'gio', 'modules')
 endif
 
 schemas_subdir = join_paths('glib-2.0', 'schemas')
@@ -830,7 +819,7 @@ pkg.generate(libgio,
   variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')),
                'schemasdir=' + join_paths('${datadir}', schemas_subdir),
                'bindir=' + join_paths('${prefix}', get_option('bindir')),
-               'giomoduledir=' + giomodulesdir,
+               'giomoduledir=' + pkgconfig_giomodulesdir,
                'gio=' + join_paths('${bindir}', 'gio'),
                'gio_querymodules=' + join_paths('${bindir}', 'gio-querymodules'),
                'glib_compile_schemas=' + join_paths('${bindir}', 'glib-compile-schemas'),
index d1cb739..da28630 100644 (file)
@@ -8,7 +8,7 @@
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ 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
       The permissions that the application has for a document store entry
       (see org.freedesktop.portal.Documents.GrantPermissions()) are reflected
       in the POSIX mode bits in the fuse filesystem.
+
+      The D-Bus interface for the document portal is available under the
+      bus name org.freedesktop.portal.Documents and the object path
+      /org/freedesktop/portal/documents.
+      This documentation describes version 3 of this interface.
   -->
   <interface name='org.freedesktop.portal.Documents'>
     <property name="version" type="u" access="read"/>
@@ -72,6 +78,7 @@
         access to the file.
     -->
     <method name="Add">
+      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
       <arg type='h' name='o_path_fd' direction='in'/>
       <arg type='b' name='reuse_existing' direction='in'/>
       <arg type='b' name='persistent' direction='in'/>
@@ -89,6 +96,7 @@
         Creates an entry in the document store for writing a new file.
     -->
     <method name="AddNamed">
+      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
       <arg type='h' name='o_path_parent_fd' direction='in'/>
       <arg type='ay' name='filename' direction='in'/>
       <arg type='b' name='reuse_existing' direction='in'/>
     <!--
         AddFull:
         @o_path_fds: open file descriptors for the files to export
-        @flags: flags, 1 == reuse_existing, 2 == persistent
+        @flags: flags, 1 == reuse_existing, 2 == persistent, 4 == as-needed-by-app
         @app_id: an application ID, or empty string
         @permissions: the permissions to grant, possible values are 'read', 'write', 'grant-permissions' and 'delete'
         @doc_ids: the IDs of the files in the document store
         form of an open file descriptor to prove that the caller has
         access to the file.
 
+        If the as-needed-by-app flag is given, files will only be added to
+        the document store if the application does not already have access to them.
+        For files that are not added to the document store, the doc_ids array will
+        contain an empty string.
+
         Additionally, if app_id is specified, it will be given the permissions
         listed in GrantPermission.
 
         This method was added in version 2 of the org.freedesktop.portal.Documents interface.
     -->
     <method name="AddFull">
+      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
       <arg type='ah' name='o_path_fds' direction='in'/>
       <arg type='u' name='flags' direction='in'/>
       <arg type='s' name='app_id' direction='in'/>
     </method>
 
     <!--
+        AddNamedFull:
+        @o_path_fds: open file descriptor for the parent directory
+        @filename: the basename for the file
+        @flags: flags, 1 == reuse_existing, 2 == persistent, 4 == as-needed-by-app
+        @app_id: an application ID, or empty string
+        @permissions: the permissions to grant, possible values are 'read', 'write', 'grant-permissions' and 'delete'
+        @doc_id: the ID of the file in the document store
+        @extra_info: Extra info returned
+
+        Creates an entry in the document store for writing a new file.
+
+        If the as-needed-by-app flag is given, file will only be added to
+        the document store if the application does not already have access to it.
+        For file that is not added to the document store, the doc_id will
+        contain an empty string.
+
+        Additionally, if app_id is specified, it will be given the permissions
+        listed in GrantPermission.
+
+        The method also returns some extra info that can be used to avoid
+        multiple roundtrips. For now it only contains as "mountpoint", the
+        fuse mountpoint of the document portal.
+
+        This method was added in version 3 of the org.freedesktop.portal.Documents interface.
+    -->
+    <method name="AddNamedFull">
+      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
+      <arg type='h' name='o_path_fd' direction='in'/>
+      <arg type='ay' name='filename' direction='in'/>
+      <arg type='u' name='flags' direction='in'/>
+      <arg type='s' name='app_id' direction='in'/>
+      <arg type='as' name='permissions' direction='in'/>
+      <arg type='s' name='doc_id' direction='out'/>
+      <arg type='a{sv}' name='extra_out' direction='out'/>
+    </method>
+
+    <!--
         GrantPermissions:
         @doc_id: the ID of the file in the document store
         @app_id: the ID of the application to which permissions are granted
     <!--
         RevokePermissions:
         @doc_id: the ID of the file in the document store
-        @app_id: the ID of the application to which permissions are granted
-        @permissions: the permissions to grant, possible values are 'read', 'write', 'grant-permissions' and 'delete'
+        @app_id: the ID of the application from which permissions are revoked
+        @permissions: the permissions to revoke, possible values are 'read', 'write', 'grant-permissions' and 'delete'
 
         Revokes access permissions for a file in the document store
         from an application.
 
         Looks up the document ID for a file.
 
-        This call is no not available inside the sandbox.
+        This call is not available inside the sandbox.
     -->
     <method name="Lookup">
       <arg type='ay' name='filename' direction='in'/>
index 0cc79d1..5ed054c 100644 (file)
@@ -5,7 +5,7 @@
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ 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
        The OpenURI portal allows sandboxed applications to open
        URIs (e.g. a http: link to the applications homepage)
        under the control of the user.
+
+       This documentation describes version 3 of this interface.
   -->
   <interface name="org.freedesktop.portal.OpenURI">
     <!--
         OpenURI:
-        @parent_window: Identifier for the application window
+        @parent_window: Identifier for the application window, see <link linkend="parent_window">Common Conventions</link>
         @uri: The uri to open
         @options: Vardict with optional further onformation
         @handle: Object path for the #org.freedesktop.portal.Request object representing this call
 
         Asks to open a uri.
 
-        The @parent_window identifier must be of the form "x11:$XID" for an X11
-        window. Support for other window systems may be added in the future.
-
         Note that file:// uris are explicitly not supported by this method.
-        To request opening local files, use org.freedesktop.portal.OpenFile().
+        To request opening local files, use org.freedesktop.portal.OpenURI.OpenFile().
 
         Supported keys in the @options vardict include:
         <variablelist>
           <varlistentry>
+            <term>handle_token s</term>
+            <listitem><para>
+              A string that will be used as the last element of the @handle. Must be a valid
+              object path element. See the #org.freedesktop.portal.Request documentation for
+              more information about the @handle.
+            </para></listitem>
+          </varlistentry>
+          <varlistentry>
             <term>writable b</term>
             <listitem><para>
               Whether to allow the chosen application to write to the file.
               is sandboxed itself.
             </para></listitem>
           </varlistentry>
+          <varlistentry>
+            <term>ask b</term>
+            <listitem><para>
+              Whether to ask the user to choose an app. If this is not passed, or false,
+              the portal may use a default or pick the last choice.
+            </para><para>
+              The ask option was introduced in version 3 of the interface.
+            </para></listitem>
+          </varlistentry>
         </variablelist>
 
     -->
 
     <!--
         OpenFile:
-        @parent_window: Identifier for the application window
+        @parent_window: Identifier for the application window, see <link linkend="parent_window">Common Conventions</link>
         @fd: File descriptor for the file to open
         @options: Vardict with optional further onformation
         @handle: Object path for the #org.freedesktop.portal.Request object representing this call
 
         Asks to open a local file.
 
-        The @parent_window identifier must be of the form "x11:$XID" for an X11
-        window. Support for other window systems may be added in the future.
-
         Supported keys in the @options vardict include:
         <variablelist>
           <varlistentry>
+            <term>handle_token s</term>
+            <listitem><para>
+              A string that will be used as the last element of the @handle. Must be a valid
+              object path element. See the #org.freedesktop.portal.Request documentation for
+              more information about the @handle.
+            </para></listitem>
+          </varlistentry>
+          <varlistentry>
             <term>writable b</term>
             <listitem><para>
               Whether to allow the chosen application to write to the file.
               is sandboxed itself.
             </para></listitem>
           </varlistentry>
+          <varlistentry>
+            <term>ask b</term>
+            <listitem><para>
+              Whether to ask the user to choose an app. If this is not passed, or false,
+              the portal may use a default or pick the last choice.
+            </para><para>
+              The ask option was introduced in version 3 of the interface.
+            </para></listitem>
+          </varlistentry>
         </variablelist>
 
         The OpenFile method was introduced in version 2 of the OpenURI portal API.
     -->
     <method name="OpenFile">
+      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
+      <arg type="s" name="parent_window" direction="in"/>
+      <arg type="h" name="fd" direction="in"/>
+      <arg type="a{sv}" name="options" direction="in"/>
+      <arg type="o" name="handle" direction="out"/>
+    </method>
+
+    <!--
+        OpenDirectory:
+        @parent_window: Identifier for the application window, see <link linkend="parent_window">Common Conventions</link>
+        @fd: File descriptor for a file
+        @options: Vardict with optional further onformation
+        @handle: Object path for the #org.freedesktop.portal.Request object representing this call
+
+        Asks to open the directory containing a local file in the file browser.
+
+        Supported keys in the @options vardict include:
+        <variablelist>
+          <varlistentry>
+            <term>handle_token s</term>
+            <listitem><para>
+              A string that will be used as the last element of the @handle. Must be a valid
+              object path element. See the #org.freedesktop.portal.Request documentation for
+              more information about the @handle.
+            </para></listitem>
+          </varlistentry>
+        </variablelist>
+
+        The OpenDirectory method was introduced in version 3 of the OpenURI portal API.
+    -->
+    <method name="OpenDirectory">
+      <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/>
       <arg type="s" name="parent_window" direction="in"/>
       <arg type="h" name="fd" direction="in"/>
       <arg type="a{sv}" name="options" direction="in"/>
index c6e9ce9..4b39fc0 100644 (file)
@@ -5,23 +5,45 @@
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ 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, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
 
  Author: Matthias Clasen <mclasen@redhat.com>
 -->
-<node xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd" name="/">
+<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
+  <!--
+      org.freedesktop.portal.ProxyResolver:
+      @short_description: Proxy information
+
+      The ProxyResolver interface provides network proxy information to sandboxed
+      applications. It is not a portal in the strict sense, since it does not involve
+      user interaction. Applications are expected to use this interface indirectly,
+      via a library API such as the GLib GProxyResolver interface.
+
+      This documentation describes version 1 of this interface.
+  -->
   <interface name="org.freedesktop.portal.ProxyResolver">
+    <!--
+        Lookup:
+        @uri: Destination to connect to
+        @proxies: List of proxy uris
+
+        Looks up which proxy to use to connect to @uri. The returned
+        proxy uri are of the form 'protocol://[user[:password]@host:port'.
+        The protocol can be http, rtsp, socks or another proxying protocol.
+        'direct://' is used when no proxy is needed.
+    -->
     <method name="Lookup">
       <arg type="s" name="uri" direction="in"/>
       <arg type="as" name="proxies" direction="out"/>
     </method>
+    <property name="version" type="u" access="read"/>
   </interface>
 </node>
index 3d438fc..c183c7a 100644 (file)
@@ -890,7 +890,7 @@ do_export (gpointer data)
   bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
   path = g_strdup_printf("/%p", data);
 
-  for (i = 0; i < 100000; i++)
+  for (i = 0; i < 10000; i++)
     {
       id = g_dbus_connection_export_action_group (bus, path, G_ACTION_GROUP (group), &error);
       g_assert_no_error (error);
index 0446282..cd349a8 100644 (file)
@@ -188,6 +188,12 @@ test_cancel_multiple_concurrent (void)
   GCancellable *cancellable;
   guint i, iterations;
 
+  if (!g_test_thorough ())
+    {
+      g_test_skip ("Not running timing heavy test");
+      return;
+    }
+
   cancellable = g_cancellable_new ();
   loop = g_main_loop_new (NULL, FALSE);
 
diff --git a/gio/tests/codegen.py b/gio/tests/codegen.py
new file mode 100644 (file)
index 0000000..51de0ed
--- /dev/null
@@ -0,0 +1,540 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+#
+# Copyright © 2018, 2019 Endless Mobile, 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.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA  02110-1301  USA
+
+"""Integration tests for gdbus-codegen utility."""
+
+import collections
+import os
+import shutil
+import subprocess
+import sys
+import tempfile
+import textwrap
+import unittest
+
+import taptestrunner
+
+
+Result = collections.namedtuple('Result', ('info', 'out', 'err', 'subs'))
+
+
+class TestCodegen(unittest.TestCase):
+    """Integration test for running gdbus-codegen.
+
+    This can be run when installed or uninstalled. When uninstalled, it
+    requires G_TEST_BUILDDIR and G_TEST_SRCDIR to be set.
+
+    The idea with this test harness is to test the gdbus-codegen utility, its
+    handling of command line arguments, its exit statuses, and its handling of
+    various C source codes. In future we could split out tests for the core
+    parsing and generation code of gdbus-codegen into separate unit tests, and
+    just test command line behaviour in this integration test.
+    """
+    # Track the cwd, we want to back out to that to clean up our tempdir
+    cwd = ''
+
+    def setUp(self):
+        self.timeout_seconds = 10  # seconds per test
+        self.tmpdir = tempfile.TemporaryDirectory()
+        self.cwd = os.getcwd()
+        os.chdir(self.tmpdir.name)
+        print('tmpdir:', self.tmpdir.name)
+        if 'G_TEST_BUILDDIR' in os.environ:
+            self.__codegen = \
+                os.path.join(os.environ['G_TEST_BUILDDIR'], '..',
+                             'gdbus-2.0', 'codegen', 'gdbus-codegen')
+        else:
+            self.__codegen = shutil.which('gdbus-codegen')
+        print('codegen:', self.__codegen)
+
+    def tearDown(self):
+        os.chdir(self.cwd)
+        self.tmpdir.cleanup()
+
+    def runCodegen(self, *args):
+        argv = [self.__codegen]
+
+        # shebang lines are not supported on native
+        # Windows consoles
+        if os.name == 'nt':
+            argv.insert(0, sys.executable)
+
+        argv.extend(args)
+        print('Running:', argv)
+
+        env = os.environ.copy()
+        env['LC_ALL'] = 'C.UTF-8'
+        print('Environment:', env)
+
+        # We want to ensure consistent line endings...
+        info = subprocess.run(argv, timeout=self.timeout_seconds,
+                              stdout=subprocess.PIPE,
+                              stderr=subprocess.PIPE,
+                              env=env,
+                              universal_newlines=True)
+        info.check_returncode()
+        out = info.stdout.strip()
+        err = info.stderr.strip()
+
+        # Known substitutions for standard boilerplate
+        subs = {
+            'standard_top_comment':
+                '/*\n'
+                ' * This file is generated by gdbus-codegen, do not modify it.\n'
+                ' *\n'
+                ' * The license of this code is the same as for the D-Bus interface description\n'
+                ' * it was derived from. Note that it links to GLib, so must comply with the\n'
+                ' * LGPL linking clauses.\n'
+                ' */',
+            'standard_config_h_include':
+                '#ifdef HAVE_CONFIG_H\n'
+                '#  include "config.h"\n'
+                '#endif',
+            'standard_header_includes':
+                '#include <string.h>\n'
+                '#ifdef G_OS_UNIX\n'
+                '#  include <gio/gunixfdlist.h>\n'
+                '#endif',
+            'standard_typedefs_and_helpers':
+                'typedef struct\n'
+                '{\n'
+                '  GDBusArgInfo parent_struct;\n'
+                '  gboolean use_gvariant;\n'
+                '} _ExtendedGDBusArgInfo;\n'
+                '\n'
+                'typedef struct\n'
+                '{\n'
+                '  GDBusMethodInfo parent_struct;\n'
+                '  const gchar *signal_name;\n'
+                '  gboolean pass_fdlist;\n'
+                '} _ExtendedGDBusMethodInfo;\n'
+                '\n'
+                'typedef struct\n'
+                '{\n'
+                '  GDBusSignalInfo parent_struct;\n'
+                '  const gchar *signal_name;\n'
+                '} _ExtendedGDBusSignalInfo;\n'
+                '\n'
+                'typedef struct\n'
+                '{\n'
+                '  GDBusPropertyInfo parent_struct;\n'
+                '  const gchar *hyphen_name;\n'
+                '  guint use_gvariant : 1;\n'
+                '  guint emits_changed_signal : 1;\n'
+                '} _ExtendedGDBusPropertyInfo;\n'
+                '\n'
+                'typedef struct\n'
+                '{\n'
+                '  GDBusInterfaceInfo parent_struct;\n'
+                '  const gchar *hyphen_name;\n'
+                '} _ExtendedGDBusInterfaceInfo;\n'
+                '\n'
+                'typedef struct\n'
+                '{\n'
+                '  const _ExtendedGDBusPropertyInfo *info;\n'
+                '  guint prop_id;\n'
+                '  GValue orig_value; /* the value before the change */\n'
+                '} ChangedProperty;\n'
+                '\n'
+                'static void\n'
+                '_changed_property_free (ChangedProperty *data)\n'
+                '{\n'
+                '  g_value_unset (&data->orig_value);\n'
+                '  g_free (data);\n'
+                '}\n'
+                '\n'
+                'static gboolean\n'
+                '_g_strv_equal0 (gchar **a, gchar **b)\n'
+                '{\n'
+                '  gboolean ret = FALSE;\n'
+                '  guint n;\n'
+                '  if (a == NULL && b == NULL)\n'
+                '    {\n'
+                '      ret = TRUE;\n'
+                '      goto out;\n'
+                '    }\n'
+                '  if (a == NULL || b == NULL)\n'
+                '    goto out;\n'
+                '  if (g_strv_length (a) != g_strv_length (b))\n'
+                '    goto out;\n'
+                '  for (n = 0; a[n] != NULL; n++)\n'
+                '    if (g_strcmp0 (a[n], b[n]) != 0)\n'
+                '      goto out;\n'
+                '  ret = TRUE;\n'
+                'out:\n'
+                '  return ret;\n'
+                '}\n'
+                '\n'
+                'static gboolean\n'
+                '_g_variant_equal0 (GVariant *a, GVariant *b)\n'
+                '{\n'
+                '  gboolean ret = FALSE;\n'
+                '  if (a == NULL && b == NULL)\n'
+                '    {\n'
+                '      ret = TRUE;\n'
+                '      goto out;\n'
+                '    }\n'
+                '  if (a == NULL || b == NULL)\n'
+                '    goto out;\n'
+                '  ret = g_variant_equal (a, b);\n'
+                'out:\n'
+                '  return ret;\n'
+                '}\n'
+                '\n'
+                'G_GNUC_UNUSED static gboolean\n'
+                '_g_value_equal (const GValue *a, const GValue *b)\n'
+                '{\n'
+                '  gboolean ret = FALSE;\n'
+                '  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));\n'
+                '  switch (G_VALUE_TYPE (a))\n'
+                '    {\n'
+                '      case G_TYPE_BOOLEAN:\n'
+                '        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));\n'
+                '        break;\n'
+                '      case G_TYPE_UCHAR:\n'
+                '        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));\n'
+                '        break;\n'
+                '      case G_TYPE_INT:\n'
+                '        ret = (g_value_get_int (a) == g_value_get_int (b));\n'
+                '        break;\n'
+                '      case G_TYPE_UINT:\n'
+                '        ret = (g_value_get_uint (a) == g_value_get_uint (b));\n'
+                '        break;\n'
+                '      case G_TYPE_INT64:\n'
+                '        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));\n'
+                '        break;\n'
+                '      case G_TYPE_UINT64:\n'
+                '        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));\n'
+                '        break;\n'
+                '      case G_TYPE_DOUBLE:\n'
+                '        {\n'
+                '          /* Avoid -Wfloat-equal warnings by doing a direct bit compare */\n'
+                '          gdouble da = g_value_get_double (a);\n'
+                '          gdouble db = g_value_get_double (b);\n'
+                '          ret = memcmp (&da, &db, sizeof (gdouble)) == 0;\n'
+                '        }\n'
+                '        break;\n'
+                '      case G_TYPE_STRING:\n'
+                '        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);\n'
+                '        break;\n'
+                '      case G_TYPE_VARIANT:\n'
+                '        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));\n'
+                '        break;\n'
+                '      default:\n'
+                '        if (G_VALUE_TYPE (a) == G_TYPE_STRV)\n'
+                '          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));\n'
+                '        else\n'
+                '          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));\n'
+                '        break;\n'
+                '    }\n'
+                '  return ret;\n'
+                '}',
+        }
+
+        result = Result(info, out, err, subs)
+
+        print('Output:', result.out)
+        return result
+
+    def runCodegenWithInterface(self, interface_contents, *args):
+        with tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
+                                         suffix='.xml',
+                                         delete=False) as interface_file:
+            # Write out the interface.
+            interface_file.write(interface_contents.encode('utf-8'))
+            print(interface_file.name + ':', interface_contents)
+            interface_file.flush()
+
+            return self.runCodegen(interface_file.name, *args)
+
+    def test_help(self):
+        """Test the --help argument."""
+        result = self.runCodegen('--help')
+        self.assertIn('usage: gdbus-codegen', result.out)
+
+    def test_no_args(self):
+        """Test running with no arguments at all."""
+        with self.assertRaises(subprocess.CalledProcessError):
+            self.runCodegen()
+
+    def test_empty_interface_header(self):
+        """Test generating a header with an empty interface file."""
+        result = self.runCodegenWithInterface('',
+                                              '--output', '/dev/stdout',
+                                              '--header')
+        self.assertEqual('', result.err)
+        self.assertEqual('''{standard_top_comment}
+
+#ifndef __STDOUT__
+#define __STDOUT__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+G_END_DECLS
+
+#endif /* __STDOUT__ */'''.format(**result.subs),
+                         result.out.strip())
+
+    def test_empty_interface_body(self):
+        """Test generating a body with an empty interface file."""
+        result = self.runCodegenWithInterface('',
+                                              '--output', '/dev/stdout',
+                                              '--body')
+        self.assertEqual('', result.err)
+        self.assertEqual('''{standard_top_comment}
+
+{standard_config_h_include}
+
+#include "stdout.h"
+
+{standard_header_includes}
+
+{standard_typedefs_and_helpers}'''.format(**result.subs),
+                         result.out.strip())
+
+    def test_reproducible(self):
+        """Test builds are reproducible regardless of file ordering."""
+        xml_contents1 = '''
+        <node>
+          <interface name="com.acme.Coyote">
+            <method name="Run"/>
+            <method name="Sleep"/>
+            <method name="Attack"/>
+            <signal name="Surprised"/>
+            <property name="Mood" type="s" access="read"/>
+          </interface>
+        </node>
+        '''
+
+        xml_contents2 = '''
+        <node>
+          <interface name="org.project.Bar.Frobnicator">
+            <method name="RandomMethod"/>
+          </interface>
+        </node>
+        '''
+
+        with tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
+                                         suffix='1.xml', delete=False) as xml_file1, \
+             tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
+                                         suffix='2.xml', delete=False) as xml_file2:
+            # Write out the interfaces.
+            xml_file1.write(xml_contents1.encode('utf-8'))
+            xml_file2.write(xml_contents2.encode('utf-8'))
+
+            xml_file1.flush()
+            xml_file2.flush()
+
+            # Repeat this for headers and bodies.
+            for header_or_body in ['--header', '--body']:
+                # Run gdbus-codegen with the interfaces in one order, and then
+                # again in another order.
+                result1 = self.runCodegen(xml_file1.name, xml_file2.name,
+                                          '--output', '/dev/stdout',
+                                          header_or_body)
+                self.assertEqual('', result1.err)
+
+                result2 = self.runCodegen(xml_file2.name, xml_file1.name,
+                                          '--output', '/dev/stdout',
+                                          header_or_body)
+                self.assertEqual('', result2.err)
+
+                # The output should be the same.
+                self.assertEqual(result1.out, result2.out)
+
+    def test_glib_min_required_invalid(self):
+        """Test running with an invalid --glib-min-required."""
+        with self.assertRaises(subprocess.CalledProcessError):
+            self.runCodegenWithInterface('',
+                                         '--output', '/dev/stdout',
+                                         '--body',
+                                         '--glib-min-required', 'hello mum')
+
+    def test_glib_min_required_too_low(self):
+        """Test running with a --glib-min-required which is too low (and hence
+        probably a typo)."""
+        with self.assertRaises(subprocess.CalledProcessError):
+            self.runCodegenWithInterface('',
+                                         '--output', '/dev/stdout',
+                                         '--body',
+                                         '--glib-min-required', '2.6')
+
+    def test_glib_min_required_major_only(self):
+        """Test running with a --glib-min-required which contains only a major version."""
+        result = self.runCodegenWithInterface('',
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-min-required', '3',
+                                              '--glib-max-allowed', '3.2')
+        self.assertEqual('', result.err)
+        self.assertNotEqual('', result.out.strip())
+
+    def test_glib_min_required_with_micro(self):
+        """Test running with a --glib-min-required which contains a micro version."""
+        result = self.runCodegenWithInterface('',
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-min-required', '2.46.2')
+        self.assertEqual('', result.err)
+        self.assertNotEqual('', result.out.strip())
+
+    def test_glib_max_allowed_too_low(self):
+        """Test running with a --glib-max-allowed which is too low (and hence
+        probably a typo)."""
+        with self.assertRaises(subprocess.CalledProcessError):
+            self.runCodegenWithInterface('',
+                                         '--output', '/dev/stdout',
+                                         '--body',
+                                         '--glib-max-allowed', '2.6')
+
+    def test_glib_max_allowed_major_only(self):
+        """Test running with a --glib-max-allowed which contains only a major version."""
+        result = self.runCodegenWithInterface('',
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-max-allowed', '3')
+        self.assertEqual('', result.err)
+        self.assertNotEqual('', result.out.strip())
+
+    def test_glib_max_allowed_with_micro(self):
+        """Test running with a --glib-max-allowed which contains a micro version."""
+        result = self.runCodegenWithInterface('',
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-max-allowed', '2.46.2')
+        self.assertEqual('', result.err)
+        self.assertNotEqual('', result.out.strip())
+
+    def test_glib_max_allowed_unstable(self):
+        """Test running with a --glib-max-allowed which is unstable. It should
+        be rounded up to the next stable version number, and hence should not
+        end up less than --glib-min-required."""
+        result = self.runCodegenWithInterface('',
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-max-allowed', '2.63',
+                                              '--glib-min-required', '2.64')
+        self.assertEqual('', result.err)
+        self.assertNotEqual('', result.out.strip())
+
+    def test_glib_max_allowed_less_than_min_required(self):
+        """Test running with a --glib-max-allowed which is less than
+        --glib-min-required."""
+        with self.assertRaises(subprocess.CalledProcessError):
+            self.runCodegenWithInterface('',
+                                         '--output', '/dev/stdout',
+                                         '--body',
+                                         '--glib-max-allowed', '2.62',
+                                         '--glib-min-required', '2.64')
+
+    def test_unix_fd_types_and_annotations(self):
+        """Test an interface with `h` arguments, no annotation, and GLib < 2.64.
+
+        See issue #1726.
+        """
+        interface_xml = '''
+            <node>
+              <interface name="FDPassing">
+                <method name="HelloFD">
+                  <annotation name="org.gtk.GDBus.C.UnixFD" value="1"/>
+                  <arg name="greeting" direction="in" type="s"/>
+                  <arg name="response" direction="out" type="s"/>
+                </method>
+                <method name="NoAnnotation">
+                  <arg name="greeting" direction="in" type="h"/>
+                  <arg name="greeting_locale" direction="in" type="s"/>
+                  <arg name="response" direction="out" type="h"/>
+                  <arg name="response_locale" direction="out" type="s"/>
+                </method>
+                <method name="NoAnnotationNested">
+                  <arg name="files" type="a{sh}" direction="in"/>
+                </method>
+              </interface>
+            </node>'''
+
+        # Try without specifying --glib-min-required.
+        result = self.runCodegenWithInterface(interface_xml,
+                                              '--output', '/dev/stdout',
+                                              '--header')
+        self.assertEqual('', result.err)
+        self.assertEqual(result.out.strip().count('GUnixFDList'), 6)
+
+        # Specify an old --glib-min-required.
+        result = self.runCodegenWithInterface(interface_xml,
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-min-required', '2.32')
+        self.assertEqual('', result.err)
+        self.assertEqual(result.out.strip().count('GUnixFDList'), 6)
+
+        # Specify a --glib-min-required ≥ 2.64. There should be more
+        # mentions of `GUnixFDList` now, since the annotation is not needed to
+        # trigger its use.
+        result = self.runCodegenWithInterface(interface_xml,
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-min-required', '2.64')
+        self.assertEqual('', result.err)
+        self.assertEqual(result.out.strip().count('GUnixFDList'), 18)
+
+    def test_call_flags_and_timeout_method_args(self):
+        """Test that generated method call functions have @call_flags and
+        @timeout_msec args if and only if GLib >= 2.64.
+        """
+        interface_xml = '''
+            <node>
+              <interface name="org.project.UsefulInterface">
+                <method name="UsefulMethod"/>
+              </interface>
+            </node>'''
+
+        # Try without specifying --glib-min-required.
+        result = self.runCodegenWithInterface(interface_xml,
+                                              '--output', '/dev/stdout',
+                                              '--header')
+        self.assertEqual('', result.err)
+        self.assertEqual(result.out.strip().count('GDBusCallFlags call_flags,'), 0)
+        self.assertEqual(result.out.strip().count('gint timeout_msec,'), 0)
+
+        # Specify an old --glib-min-required.
+        result = self.runCodegenWithInterface(interface_xml,
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-min-required', '2.32')
+        self.assertEqual('', result.err)
+        self.assertEqual(result.out.strip().count('GDBusCallFlags call_flags,'), 0)
+        self.assertEqual(result.out.strip().count('gint timeout_msec,'), 0)
+
+        # Specify a --glib-min-required ≥ 2.64. The two arguments should be
+        # present for both the async and sync method call functions.
+        result = self.runCodegenWithInterface(interface_xml,
+                                              '--output', '/dev/stdout',
+                                              '--header',
+                                              '--glib-min-required', '2.64')
+        self.assertEqual('', result.err)
+        self.assertEqual(result.out.strip().count('GDBusCallFlags call_flags,'), 2)
+        self.assertEqual(result.out.strip().count('gint timeout_msec,'), 2)
+
+
+if __name__ == '__main__':
+    unittest.main(testRunner=taptestrunner.TAPTestRunner())
index 8961a54..7e2fc4d 100644 (file)
@@ -276,12 +276,95 @@ test_dbus_appinfo (void)
   g_object_unref (app);
 }
 
+static void
+on_flatpak_launch_uris_finish (GObject *object,
+                               GAsyncResult *result,
+                               gpointer user_data)
+{
+  GApplication *app = user_data;
+  GError *error = NULL;
+
+  g_app_info_launch_uris_finish (G_APP_INFO (object), result, &error);
+  g_assert_no_error (error);
+
+  g_application_release (app);
+}
+
+static void
+on_flatpak_activate (GApplication *app,
+                     gpointer user_data)
+{
+  GDesktopAppInfo *flatpak_appinfo = user_data;
+  char *uri;
+  GList *uris;
+
+  /* The app will be released in on_flatpak_launch_uris_finish */
+  g_application_hold (app);
+
+  uri = g_filename_to_uri (g_desktop_app_info_get_filename (flatpak_appinfo), NULL, NULL);
+  g_assert_nonnull (uri);
+  uris = g_list_prepend (NULL, uri);
+  g_app_info_launch_uris_async (G_APP_INFO (flatpak_appinfo), uris, NULL,
+                                NULL, on_flatpak_launch_uris_finish, app);
+  g_list_free (uris);
+  g_free (uri);
+}
+
+static void
+on_flatpak_open (GApplication  *app,
+                 GFile        **files,
+                 gint           n_files,
+                 const char    *hint)
+{
+  GFile *f;
+
+  g_assert_cmpint (n_files, ==, 1);
+  g_test_message ("on_flatpak_open received file '%s'", g_file_peek_path (files[0]));
+
+  /* The file has been exported via the document portal */
+  f = g_file_new_for_uri ("file:///document-portal/document-id/org.gtk.test.dbusappinfo.flatpak.desktop");
+  g_assert_true (g_file_equal (files[0], f));
+  g_object_unref (f);
+}
+
+static void
+test_flatpak_doc_export (void)
+{
+  const gchar *argv[] = { "myapp", NULL };
+  gchar *desktop_file = NULL;
+  GDesktopAppInfo *flatpak_appinfo;
+  GApplication *app;
+  int status;
+
+  g_test_summary ("Test that files launched via Flatpak apps are made available via the document portal.");
+
+  desktop_file = g_test_build_filename (G_TEST_DIST,
+                                        "org.gtk.test.dbusappinfo.flatpak.desktop",
+                                        NULL);
+  flatpak_appinfo = g_desktop_app_info_new_from_filename (desktop_file);
+  g_assert_nonnull (flatpak_appinfo);
+  g_free (desktop_file);
+
+  app = g_application_new ("org.gtk.test.dbusappinfo.flatpak",
+                           G_APPLICATION_HANDLES_OPEN);
+  g_signal_connect (app, "activate", G_CALLBACK (on_flatpak_activate),
+                    flatpak_appinfo);
+  g_signal_connect (app, "open", G_CALLBACK (on_flatpak_open), NULL);
+
+  status = g_application_run (app, 1, (gchar **) argv);
+  g_assert_cmpint (status, ==, 0);
+
+  g_object_unref (app);
+  g_object_unref (flatpak_appinfo);
+}
+
 int
 main (int argc, char **argv)
 {
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/appinfo/dbusappinfo", test_dbus_appinfo);
+  g_test_add_func ("/appinfo/flatpak-doc-export", test_flatpak_doc_export);
 
   return session_bus_run ();
 }
index 84a8635..de0e9b1 100644 (file)
@@ -29,7 +29,6 @@ check_property (const char *output,
   if (g_param_value_defaults (pspec, value))
       return;
 
-  g_value_init (&default_value, G_PARAM_SPEC_VALUE_TYPE (pspec));
   g_param_value_set_default (pspec, &default_value);
 
   v = g_strdup_value_contents (value);
diff --git a/gio/tests/fake-document-portal.c b/gio/tests/fake-document-portal.c
new file mode 100644 (file)
index 0000000..c9bb795
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2019 Canonical 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors: James Henstridge <james.henstridge@canonical.com>
+ */
+
+/* A stub implementation of xdg-document-portal covering enough to
+ * support g_document_portal_add_documents */
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <gio/gunixfdlist.h>
+
+#include "fake-document-portal-generated.h"
+
+static gboolean
+on_handle_get_mount_point (FakeDocuments         *object,
+                           GDBusMethodInvocation *invocation,
+                           gpointer               user_data)
+{
+  fake_documents_complete_get_mount_point (object,
+                                           invocation,
+                                           "/document-portal");
+  return TRUE;
+}
+
+static gboolean
+on_handle_add_full (FakeDocuments         *object,
+                    GDBusMethodInvocation *invocation,
+                    GUnixFDList           *o_path_fds,
+                    guint                  flags,
+                    const gchar           *app_id,
+                    const gchar * const   *permissions,
+                    gpointer               user_data)
+{
+  const gchar **doc_ids = NULL;
+  GVariant *extra_out = NULL;
+  gsize length, i;
+
+  if (o_path_fds != NULL)
+    length = g_unix_fd_list_get_length (o_path_fds);
+  else
+    length = 0;
+
+  doc_ids = g_new0 (const gchar *, length + 1  /* NULL terminator */);
+  for (i = 0; i < length; i++)
+    {
+      doc_ids[i] = "document-id";
+    }
+  extra_out = g_variant_new_array (G_VARIANT_TYPE ("{sv}"), NULL, 0);
+
+  fake_documents_complete_add_full (object,
+                                    invocation,
+                                    NULL,
+                                    doc_ids,
+                                    extra_out);
+
+  g_free (doc_ids);
+
+  return TRUE;
+}
+
+static void
+on_bus_acquired (GDBusConnection *connection,
+                 const gchar     *name,
+                 gpointer         user_data)
+{
+  FakeDocuments *interface;
+  GError *error = NULL;
+
+  g_test_message ("Acquired a message bus connection");
+
+  interface = fake_documents_skeleton_new ();
+  g_signal_connect (interface,
+                    "handle-get-mount-point",
+                    G_CALLBACK (on_handle_get_mount_point),
+                    NULL);
+  g_signal_connect (interface,
+                    "handle-add-full",
+                    G_CALLBACK (on_handle_add_full),
+                    NULL);
+
+  g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (interface),
+                                    connection,
+                                    "/org/freedesktop/portal/documents",
+                                    &error);
+  g_assert_no_error (error);
+}
+
+static void
+on_name_acquired (GDBusConnection *connection,
+                  const gchar     *name,
+                  gpointer         user_data)
+{
+  g_test_message ("Acquired the name %s", name);
+}
+
+static void
+on_name_lost (GDBusConnection *connection,
+              const gchar     *name,
+              gpointer         user_data)
+{
+  g_test_message ("Lost the name %s", name);
+}
+
+
+gint
+main (gint argc, gchar *argv[])
+{
+  GMainLoop *loop;
+  guint id;
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  id = g_bus_own_name (G_BUS_TYPE_SESSION,
+                       "org.freedesktop.portal.Documents",
+                       G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
+                       G_BUS_NAME_OWNER_FLAGS_REPLACE,
+                       on_bus_acquired,
+                       on_name_acquired,
+                       on_name_lost,
+                       loop,
+                       NULL);
+
+  g_main_loop_run (loop);
+
+  g_bus_unown_name (id);
+  g_main_loop_unref (loop);
+
+  return 0;
+}
index efb2eaa..8d3aafa 100644 (file)
@@ -846,58 +846,103 @@ test_async_delete (void)
   g_object_unref (file);
 }
 
-#ifdef G_OS_UNIX
 static void
 test_copy_preserve_mode (void)
 {
-  GFile *tmpfile;
-  GFile *dest_tmpfile;
-  GFileInfo *dest_info;
-  GFileIOStream *iostream;
-  GError *local_error = NULL;
-  GError **error = &local_error;
-  guint32 romode = S_IFREG | 0600;
-  guint32 dest_mode;
-
-  tmpfile = g_file_new_tmp ("tmp-copy-preserve-modeXXXXXX",
-                            &iostream, error);
-  g_assert_no_error (local_error);
-  g_io_stream_close ((GIOStream*)iostream, NULL, error);
-  g_assert_no_error (local_error);
-  g_clear_object (&iostream);
-
-  g_file_set_attribute (tmpfile, G_FILE_ATTRIBUTE_UNIX_MODE, G_FILE_ATTRIBUTE_TYPE_UINT32,
-                        &romode, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
-                        NULL, error);
-  g_assert_no_error (local_error);
-
-  dest_tmpfile = g_file_new_tmp ("tmp-copy-preserve-modeXXXXXX",
-                                 &iostream, error);
-  g_assert_no_error (local_error);
-  g_io_stream_close ((GIOStream*)iostream, NULL, error);
-  g_assert_no_error (local_error);
-  g_clear_object (&iostream);
-
-  g_file_copy (tmpfile, dest_tmpfile, G_FILE_COPY_OVERWRITE | G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA,
-               NULL, NULL, NULL, error);
-  g_assert_no_error (local_error);
-
-  dest_info = g_file_query_info (dest_tmpfile, G_FILE_ATTRIBUTE_UNIX_MODE, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
-                                 NULL, error);
-  g_assert_no_error (local_error);
-
-  dest_mode = g_file_info_get_attribute_uint32 (dest_info, G_FILE_ATTRIBUTE_UNIX_MODE);
-  
-  g_assert_cmpint (dest_mode, ==, romode);
-
-  (void) g_file_delete (tmpfile, NULL, NULL);
-  (void) g_file_delete (dest_tmpfile, NULL, NULL);
-  
-  g_clear_object (&tmpfile);
-  g_clear_object (&dest_tmpfile);
-  g_clear_object (&dest_info);
-}
+#ifdef G_OS_UNIX
+  mode_t current_umask = umask (0);
+  const struct
+    {
+      guint32 source_mode;
+      guint32 expected_destination_mode;
+      gboolean create_destination_before_copy;
+      GFileCopyFlags copy_flags;
+    }
+  vectors[] =
+    {
+      /* Overwriting the destination file should copy the permissions from the
+       * source file, even if %G_FILE_COPY_ALL_METADATA is set: */
+      { 0600, 0600, TRUE, G_FILE_COPY_OVERWRITE | G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA },
+      { 0600, 0600, TRUE, G_FILE_COPY_OVERWRITE | G_FILE_COPY_NOFOLLOW_SYMLINKS },
+      /* The same behaviour should hold if the destination file is not being
+       * overwritten because it doesn’t already exist: */
+      { 0600, 0600, FALSE, G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA },
+      { 0600, 0600, FALSE, G_FILE_COPY_NOFOLLOW_SYMLINKS },
+      /* Anything with %G_FILE_COPY_TARGET_DEFAULT_PERMS should use the current
+       * umask for the destination file: */
+      { 0600, 0666 & ~current_umask, TRUE, G_FILE_COPY_TARGET_DEFAULT_PERMS | G_FILE_COPY_OVERWRITE | G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA },
+      { 0600, 0666 & ~current_umask, TRUE, G_FILE_COPY_TARGET_DEFAULT_PERMS | G_FILE_COPY_OVERWRITE | G_FILE_COPY_NOFOLLOW_SYMLINKS },
+      { 0600, 0666 & ~current_umask, FALSE, G_FILE_COPY_TARGET_DEFAULT_PERMS | G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA },
+      { 0600, 0666 & ~current_umask, FALSE, G_FILE_COPY_TARGET_DEFAULT_PERMS | G_FILE_COPY_NOFOLLOW_SYMLINKS },
+    };
+  gsize i;
+
+  /* Reset the umask after querying it above. There’s no way to query it without
+   * changing it. */
+  umask (current_umask);
+  g_test_message ("Current umask: %u", current_umask);
+
+  for (i = 0; i < G_N_ELEMENTS (vectors); i++)
+    {
+      GFile *tmpfile;
+      GFile *dest_tmpfile;
+      GFileInfo *dest_info;
+      GFileIOStream *iostream;
+      GError *local_error = NULL;
+      guint32 romode = vectors[i].source_mode;
+      guint32 dest_mode;
+
+      g_test_message ("Vector %" G_GSIZE_FORMAT, i);
+
+      tmpfile = g_file_new_tmp ("tmp-copy-preserve-modeXXXXXX",
+                                &iostream, &local_error);
+      g_assert_no_error (local_error);
+      g_io_stream_close ((GIOStream*)iostream, NULL, &local_error);
+      g_assert_no_error (local_error);
+      g_clear_object (&iostream);
+
+      g_file_set_attribute (tmpfile, G_FILE_ATTRIBUTE_UNIX_MODE, G_FILE_ATTRIBUTE_TYPE_UINT32,
+                            &romode, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+                            NULL, &local_error);
+      g_assert_no_error (local_error);
+
+      dest_tmpfile = g_file_new_tmp ("tmp-copy-preserve-modeXXXXXX",
+                                     &iostream, &local_error);
+      g_assert_no_error (local_error);
+      g_io_stream_close ((GIOStream*)iostream, NULL, &local_error);
+      g_assert_no_error (local_error);
+      g_clear_object (&iostream);
+
+      if (!vectors[i].create_destination_before_copy)
+        {
+          g_file_delete (dest_tmpfile, NULL, &local_error);
+          g_assert_no_error (local_error);
+        }
+
+      g_file_copy (tmpfile, dest_tmpfile, vectors[i].copy_flags,
+                   NULL, NULL, NULL, &local_error);
+      g_assert_no_error (local_error);
+
+      dest_info = g_file_query_info (dest_tmpfile, G_FILE_ATTRIBUTE_UNIX_MODE, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+                                     NULL, &local_error);
+      g_assert_no_error (local_error);
+
+      dest_mode = g_file_info_get_attribute_uint32 (dest_info, G_FILE_ATTRIBUTE_UNIX_MODE);
+
+      g_assert_cmpint (dest_mode & ~S_IFMT, ==, vectors[i].expected_destination_mode);
+      g_assert_cmpint (dest_mode & S_IFMT, ==, S_IFREG);
+
+      (void) g_file_delete (tmpfile, NULL, NULL);
+      (void) g_file_delete (dest_tmpfile, NULL, NULL);
+
+      g_clear_object (&tmpfile);
+      g_clear_object (&dest_tmpfile);
+      g_clear_object (&dest_info);
+    }
+#else  /* if !G_OS_UNIX */
+  g_test_skip ("File permissions tests can only be run on Unix")
 #endif
+}
 
 static gchar *
 splice_to_string (GInputStream   *stream,
@@ -1755,9 +1800,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/file/replace-load", test_replace_load);
   g_test_add_func ("/file/replace-cancel", test_replace_cancel);
   g_test_add_func ("/file/async-delete", test_async_delete);
-#ifdef G_OS_UNIX
   g_test_add_func ("/file/copy-preserve-mode", test_copy_preserve_mode);
-#endif
   g_test_add_func ("/file/measure", test_measure);
   g_test_add_func ("/file/measure-async", test_measure_async);
   g_test_add_func ("/file/load-bytes", test_load_bytes);
index a715ef8..16fa83e 100644 (file)
@@ -25,7 +25,7 @@
 #include <gio/gio.h>
 #include <gio/gunixmounts.h>
 
-static void
+static gboolean
 run (GError **error,
      const gchar *argv0,
      ...)
@@ -34,6 +34,8 @@ run (GError **error,
   const gchar *arg;
   va_list ap;
   GSubprocess *subprocess;
+  gchar *command_line = NULL;
+  gboolean success;
 
   args = g_ptr_array_new ();
 
@@ -44,14 +46,20 @@ run (GError **error,
   g_ptr_array_add (args, NULL);
   va_end (ap);
 
+  command_line = g_strjoinv (" ", (gchar **) args->pdata);
+  g_test_message ("Running command `%s`", command_line);
+  g_free (command_line);
+
   subprocess = g_subprocess_newv ((const gchar * const *) args->pdata, G_SUBPROCESS_FLAGS_NONE, error);
   g_ptr_array_free (args, TRUE);
 
   if (subprocess == NULL)
-    return;
+    return FALSE;
 
-  g_subprocess_wait_check (subprocess, NULL, error);
+  success = g_subprocess_wait_check (subprocess, NULL, error);
   g_object_unref (subprocess);
+
+  return success;
 }
 
 static void
@@ -61,6 +69,24 @@ assert_remove (const gchar *file)
     g_error ("failed to remove %s: %s", file, g_strerror (errno));
 }
 
+static gboolean
+fuse_module_loaded (void)
+{
+  char *contents = NULL;
+  gboolean ret;
+
+  if (!g_file_get_contents ("/proc/modules", &contents, NULL, NULL) ||
+      contents == NULL)
+    {
+      g_free (contents);
+      return FALSE;
+    }
+
+  ret = (strstr (contents, "\nfuse ") != NULL);
+  g_free (contents);
+  return ret;
+}
+
 static void
 test_filesystem_readonly (gconstpointer with_mount_monitor)
 {
@@ -87,6 +113,18 @@ test_filesystem_readonly (gconstpointer with_mount_monitor)
       return;
     }
 
+  /* If the fuse module is loaded but there's no /dev/fuse, then we're
+   * we're probably in a rootless container and won't be able to
+   * use bindfs to run our tests */
+  if (fuse_module_loaded () &&
+      !g_file_test ("/dev/fuse", G_FILE_TEST_EXISTS))
+    {
+      g_test_skip ("fuse support is needed to run this test (rootless container?)");
+      g_free (fusermount);
+      g_free (bindfs);
+      return;
+    }
+
   curdir = g_get_current_dir ();
   dir_to_mount = g_strdup_printf ("%s/dir_bindfs_to_mount", curdir);
   file_in_mount = g_strdup_printf ("%s/example.txt", dir_to_mount);
@@ -105,8 +143,14 @@ test_filesystem_readonly (gconstpointer with_mount_monitor)
 
   /* Use bindfs, which does not need root privileges, to mount the contents of one dir
    * into another dir (and do the mount as readonly as per passed '-o ro' option) */
-  run (&error, bindfs, "-n", "-o", "ro", dir_to_mount, dir_mountpoint, NULL);
-  g_assert_no_error (error);
+  if (!run (&error, bindfs, "-n", "-o", "ro", dir_to_mount, dir_mountpoint, NULL))
+    {
+      gchar *skip_message = g_strdup_printf ("Failed to run bindfs to set up test: %s", error->message);
+      g_test_skip (skip_message);
+      g_free (skip_message);
+      g_clear_error (&error);
+      return;
+    }
 
   /* Let's check now, that the file is in indeed in a readonly filesystem */
   file_in_mountpoint = g_strdup_printf ("%s/example.txt", dir_mountpoint);
index 173383d..26c21ee 100644 (file)
@@ -146,6 +146,7 @@ test_nonce_tcp_address (void)
   assert_not_supported_address ("nonce-tcp:host=localhost,port=420000");
   assert_not_supported_address ("nonce-tcp:host=localhost,port=42x");
   assert_not_supported_address ("nonce-tcp:host=localhost,port=");
+  assert_not_supported_address ("nonce-tcp:host=localhost,port=42,noncefile=");
 }
 
 static void
index 39f08e8..73a034b 100644 (file)
@@ -368,6 +368,9 @@ main (int   argc,
 {
   gint ret;
 
+  /* FIXME: Add debug for https://gitlab.gnome.org/GNOME/glib/issues/1929 */
+  g_setenv ("G_DBUS_DEBUG", "authentication", TRUE);
+
   g_test_init (&argc, &argv, NULL);
 
   g_test_add ("/gdbus/connection/flush/busy", Fixture, NULL,
index 8f7023f..a34a992 100644 (file)
@@ -124,14 +124,14 @@ main (int   argc,
   g_assert (g_spawn_command_line_async (path, NULL));
   g_free (path);
 
-  ensure_gdbus_testserver_up ();
-
   /* Create the connection in the main thread */
   error = NULL;
   c = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
   g_assert_no_error (error);
   g_assert (c != NULL);
 
+  ensure_gdbus_testserver_up (c, NULL);
+
   g_test_add_func ("/gdbus/connection-loss", test_connection_loss);
 
   ret = g_test_run();
index 6e4c7eb..4690185 100644 (file)
@@ -1256,6 +1256,10 @@ main (int   argc,
       char *argv[])
 {
   int ret;
+
+  /* FIXME: Add debug for https://gitlab.gnome.org/GNOME/glib/issues/1957 */
+  g_setenv ("G_DBUS_DEBUG", "all", TRUE);
+
   g_test_init (&argc, &argv, NULL);
 
   /* all the tests rely on a shared main loop */
index 506c745..fda654c 100644 (file)
@@ -189,7 +189,7 @@ foo_set_property (GDBusConnection       *connection,
                G_DBUS_ERROR,
                G_DBUS_ERROR_SPAWN_FILE_INVALID,
                "Returning some error instead of writing the value '%s' to the property '%s'",
-               property_name, s);
+               s, property_name);
   g_free (s);
   return FALSE;
 }
@@ -927,7 +927,7 @@ test_dispatch_thread_func (gpointer user_data)
     {
       /* _with_closures variant doesn't support customizing error data. */
       g_assert_error (error, G_DBUS_ERROR, G_DBUS_ERROR_SPAWN_FILE_INVALID);
-      g_assert_cmpstr (error->message, ==, "GDBus.Error:org.freedesktop.DBus.Error.Spawn.FileInvalid: Returning some error instead of writing the value 'NotReadable' to the property ''But Writable you are!''");
+      g_assert_cmpstr (error->message, ==, "GDBus.Error:org.freedesktop.DBus.Error.Spawn.FileInvalid: Returning some error instead of writing the value ''But Writable you are!'' to the property 'NotReadable'");
     }
   g_assert (error != NULL && error->domain == G_DBUS_ERROR);
   g_error_free (error);
index 4f95b45..20f429e 100644 (file)
@@ -189,6 +189,7 @@ test_bus_own_name (void)
    * Stop owning the name - this should invoke our free func
    */
   g_bus_unown_name (id);
+  g_main_loop_run (loop);
   g_assert_cmpint (data.num_free_func, ==, 2);
 
   /*
@@ -296,6 +297,7 @@ test_bus_own_name (void)
   g_assert_cmpint (data2.num_acquired, ==, 0);
   g_assert_cmpint (data2.num_lost,     ==, 1);
   g_bus_unown_name (id2);
+  g_main_loop_run (loop);
   g_assert_cmpint (data2.num_bus_acquired, ==, 1);
   g_assert_cmpint (data2.num_acquired, ==, 0);
   g_assert_cmpint (data2.num_lost,     ==, 1);
@@ -330,6 +332,7 @@ test_bus_own_name (void)
   g_assert_cmpint (data2.num_acquired, ==, 0);
   g_assert_cmpint (data2.num_lost,     ==, 1);
   g_bus_unown_name (id2);
+  g_main_loop_run (loop);
   g_assert_cmpint (data2.num_bus_acquired, ==, 0);
   g_assert_cmpint (data2.num_acquired, ==, 0);
   g_assert_cmpint (data2.num_lost,     ==, 1);
@@ -355,6 +358,7 @@ test_bus_own_name (void)
   g_assert_cmpint (data2.num_acquired, ==, 0);
   g_assert_cmpint (data2.num_lost,     ==, 1);
   g_bus_unown_name (id2);
+  g_main_loop_run (loop);
   g_assert_cmpint (data2.num_bus_acquired, ==, 0);
   g_assert_cmpint (data2.num_acquired, ==, 0);
   g_assert_cmpint (data2.num_lost,     ==, 1);
@@ -365,6 +369,7 @@ test_bus_own_name (void)
    */
   data.expect_null_connection = FALSE;
   g_bus_unown_name (id);
+  g_main_loop_run (loop);
   g_assert_cmpint (data.num_bus_acquired, ==, 1);
   g_assert_cmpint (data.num_acquired, ==, 1);
   g_assert_cmpint (data.num_free_func, ==, 4);
@@ -418,6 +423,7 @@ test_bus_own_name (void)
   g_assert_cmpint (data2.num_acquired, ==, 0);
   g_assert_cmpint (data2.num_lost,     ==, 1);
   g_bus_unown_name (id2);
+  g_main_loop_run (loop);
   g_assert_cmpint (data2.num_bus_acquired, ==, 0);
   g_assert_cmpint (data2.num_acquired, ==, 0);
   g_assert_cmpint (data2.num_lost,     ==, 1);
@@ -450,8 +456,9 @@ test_bus_own_name (void)
   g_assert_cmpint (data2.num_bus_acquired, ==, 0);
   /* ok, make owner2 release the name - then wait for owner to automagically reacquire it */
   g_bus_unown_name (id2);
-  g_assert_cmpint (data2.num_free_func, ==, 1);
   g_main_loop_run (loop);
+  g_main_loop_run (loop);
+  g_assert_cmpint (data2.num_free_func, ==, 1);
   g_assert_cmpint (data.num_acquired, ==, 2);
   g_assert_cmpint (data.num_lost,     ==, 1);
 
@@ -466,6 +473,7 @@ test_bus_own_name (void)
   g_assert_cmpint (data.num_acquired, ==, 2);
   g_assert_cmpint (data.num_lost,     ==, 2);
   g_bus_unown_name (id);
+  g_main_loop_run (loop);
   g_assert_cmpint (data.num_free_func, ==, 5);
 
   g_object_unref (c);
@@ -645,6 +653,7 @@ test_bus_watch_name (void)
 
   /* unown the name */
   g_bus_unown_name (owner_id);
+  g_main_loop_run (loop);
   g_assert_cmpint (data.num_acquired, ==, 1);
   g_assert_cmpint (data.num_free_func, ==, 2);
 
@@ -704,6 +713,7 @@ test_bus_watch_name (void)
   g_assert_cmpint (data.num_free_func, ==, 1);
 
   g_bus_unown_name (owner_id);
+  g_main_loop_run (loop);
   g_assert_cmpint (data.num_free_func, ==, 2);
 
   session_bus_down ();
index 404c377..4cfb848 100644 (file)
@@ -1,6 +1,7 @@
 # FIXME: set UNINSTALLED_GLIB_{SRC|BUILD}DIR=top_{src|build}dir ?
+gdbus_example_objectmanager_xml = files('gdbus-example-objectmanager.xml')
 gdbus_example_objectmanager_generated = custom_target('objectmanager-gen',
-  input  : ['gdbus-example-objectmanager.xml'],
+  input  : gdbus_example_objectmanager_xml,
   output : ['objectmanager-gen.h',
             'objectmanager-gen.c',
             'objectmanager-gen-org.gtk.GDBus.Example.ObjectManager.Animal.xml',
@@ -23,4 +24,5 @@ libgdbus_example_objectmanager = library('gdbus-example-objectmanager',
 
 libgdbus_example_objectmanager_dep = declare_dependency(
   sources : gdbus_example_objectmanager_generated[0],
-  link_with : libgdbus_example_objectmanager)
+  link_with : libgdbus_example_objectmanager,
+  dependencies : [libgio_dep])
index 89a2e97..2ca28d9 100644 (file)
@@ -514,9 +514,8 @@ get_body_signature (GVariant *value)
 }
 
 /* If @value is floating, this assumes ownership. */
-static void
-check_serialization (GVariant *value,
-                     const gchar *expected_dbus_1_output)
+static gchar *
+get_and_check_serialization (GVariant *value)
 {
   guchar *blob;
   gsize blob_size;
@@ -525,7 +524,7 @@ check_serialization (GVariant *value,
   GDBusMessage *recovered_message;
   GError *error;
   DBusError dbus_error;
-  gchar *s;
+  gchar *s = NULL;
   guint n;
 
   message = g_dbus_message_new ();
@@ -597,9 +596,6 @@ check_serialization (GVariant *value,
       s = dbus_1_message_print (dbus_1_message);
       dbus_message_unref (dbus_1_message);
 
-      g_assert_cmpstr (s, ==, expected_dbus_1_output);
-      g_free (s);
-
       /* Then serialize back and check that the body is identical */
 
       error = NULL;
@@ -624,10 +620,22 @@ check_serialization (GVariant *value,
     }
 
   g_object_unref (message);
+
+  return g_steal_pointer (&s);
+}
+
+/* If @value is floating, this assumes ownership. */
+static void
+check_serialization (GVariant *value,
+                     const gchar *expected_dbus_1_output)
+{
+  gchar *s = get_and_check_serialization (value);
+  g_assert_cmpstr (s, ==, expected_dbus_1_output);
+  g_free (s);
 }
 
 static void
-message_serialize_basic (void)
+test_message_serialize_basic (void)
 {
   check_serialization (NULL, "");
 
@@ -661,10 +669,12 @@ message_serialize_basic (void)
 /* ---------------------------------------------------------------------------------------------------- */
 
 static void
-message_serialize_complex (void)
+test_message_serialize_complex (void)
 {
   GError *error;
   GVariant *value;
+  guint i;
+  gchar *serialization = NULL;
 
   error = NULL;
 
@@ -724,6 +734,37 @@ message_serialize_complex (void)
                        "    unix-fd: (not extracted)\n");
   g_variant_unref (value);
 #endif
+
+  /* Deep nesting of variants (just below the recursion limit). */
+  value = g_variant_new_string ("buried");
+  for (i = 0; i < 64; i++)
+    value = g_variant_new_variant (value);
+  value = g_variant_new_tuple (&value, 1);
+
+  serialization = get_and_check_serialization (value);
+  g_assert_nonnull (serialization);
+  g_assert_true (g_str_has_prefix (serialization,
+                                   "value 0:   variant:\n"
+                                   "    variant:\n"
+                                   "      variant:\n"));
+  g_free (serialization);
+
+  /* Deep nesting of arrays and structs (just below the recursion limit).
+   * See https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-marshaling-signature */
+  value = g_variant_new_string ("hello");
+  for (i = 0; i < 32; i++)
+    value = g_variant_new_tuple (&value, 1);
+  for (i = 0; i < 32; i++)
+    value = g_variant_new_array (NULL, &value, 1);
+  value = g_variant_new_tuple (&value, 1);
+
+  serialization = get_and_check_serialization (value);
+  g_assert_nonnull (serialization);
+  g_assert_true (g_str_has_prefix (serialization,
+                                   "value 0:   array:\n"
+                                   "    array:\n"
+                                   "      array:\n"));
+  g_free (serialization);
 }
 
 
@@ -749,7 +790,7 @@ replace (char       *blob,
 }
 
 static void
-message_serialize_invalid (void)
+test_message_serialize_invalid (void)
 {
   guint n;
 
@@ -842,7 +883,7 @@ message_serialize_invalid (void)
 /* ---------------------------------------------------------------------------------------------------- */
 
 static void
-message_serialize_header_checks (void)
+test_message_serialize_header_checks (void)
 {
   GDBusMessage *message;
   GDBusMessage *reply;
@@ -996,7 +1037,7 @@ message_serialize_header_checks (void)
 /* ---------------------------------------------------------------------------------------------------- */
 
 static void
-message_parse_empty_arrays_of_arrays (void)
+test_message_parse_empty_arrays_of_arrays (void)
 {
   GVariant *body;
   GError *error = NULL;
@@ -1052,7 +1093,7 @@ message_parse_empty_arrays_of_arrays (void)
 /* ---------------------------------------------------------------------------------------------------- */
 
 static void
-test_double_array (void)
+test_message_serialize_double_array (void)
 {
   GVariantBuilder builder;
   GVariant *body;
@@ -1252,6 +1293,126 @@ test_message_parse_over_long_signature_header (void)
 
 /* ---------------------------------------------------------------------------------------------------- */
 
+/* Test that an invalid header in a D-Bus message (specifically, containing too
+ * many levels of nested variant) is gracefully handled with an error rather
+ * than a crash. The set of bytes here come almost directly from fuzzer output. */
+static void
+test_message_parse_deep_header_nesting (void)
+{
+  const guint8 data[] = {
+    'l',  /* little-endian byte order */
+    0x20,  /* message type */
+    0x20,  /* message flags */
+    0x01,  /* major protocol version */
+    0x20, 0x20, 0x20, 0x00,  /* body length (invalid) */
+    0x20, 0x20, 0x20, 0x20,  /* message serial */
+    /* a{yv} of header fields:
+     * (things start to be even more invalid below here) */
+    0x20, 0x20, 0x20, 0x00,  /* array length (in bytes) */
+      0x20,  /* array key (this is not currently a valid header field) */
+      /* Variant array value: */
+      0x01,  /* signature length */
+      'v',  /* one complete type */
+      0x00,  /* nul terminator */
+      /* (Variant array value payload) */
+      /* Critically, this contains 64 nested variants (minus two for the
+       * ‘arbitrary valid content’ below, but ignoring two for the `a{yv}`
+       * above), which in total exceeds %G_DBUS_MAX_TYPE_DEPTH. */
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      0x01, 'v', 0x00, 0x01, 'v', 0x00,
+      /* Some arbitrary valid content inside the innermost variant: */
+      0x01, 'y', 0x00, 0xcc,
+    /* (message body length missing) */
+  };
+  gsize size = sizeof (data);
+  GDBusMessage *message = NULL;
+  GError *local_error = NULL;
+
+  message = g_dbus_message_new_from_blob ((guchar *) data, size,
+                                          G_DBUS_CAPABILITY_FLAGS_NONE,
+                                          &local_error);
+  g_assert_error (local_error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT);
+  g_assert_null (message);
+
+  g_clear_error (&local_error);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+/* Test that an invalid body in a D-Bus message (specifically, containing too
+ * many levels of nested variant) is gracefully handled with an error rather
+ * than a crash. The set of bytes here are a modified version of the bytes from
+ * test_message_parse_deep_header_nesting(). */
+static void
+test_message_parse_deep_body_nesting (void)
+{
+  const guint8 data[] = {
+    'l',  /* little-endian byte order */
+    0x20,  /* message type */
+    0x20,  /* message flags */
+    0x01,  /* major protocol version */
+    0x20, 0x20, 0x20, 0x00,  /* body length (invalid) */
+    0x20, 0x20, 0x20, 0x20,  /* message serial */
+    /* a{yv} of header fields: */
+    0x07, 0x00, 0x00, 0x00,  /* array length (in bytes) */
+      0x08,  /* array key (signature field) */
+      /* Variant array value: */
+      0x01,  /* signature length */
+      'g',  /* one complete type */
+      0x00,  /* nul terminator */
+      /* (Variant array value payload) */
+      0x01, 'v', 0x00,
+    /* End-of-header padding to reach an 8-byte boundary: */
+    0x00,
+    /* Message body: over 64 levels of nested variant, which is not valid: */
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00, 0x01, 'v', 0x00,
+    /* Some arbitrary valid content inside the innermost variant: */
+    0x01, 'y', 0x00, 0xcc,
+  };
+  gsize size = sizeof (data);
+  GDBusMessage *message = NULL;
+  GError *local_error = NULL;
+
+  message = g_dbus_message_new_from_blob ((guchar *) data, size,
+                                          G_DBUS_CAPABILITY_FLAGS_NONE,
+                                          &local_error);
+  g_assert_error (local_error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT);
+  g_assert_null (message);
+
+  g_clear_error (&local_error);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
 int
 main (int   argc,
       char *argv[])
@@ -1262,15 +1423,19 @@ main (int   argc,
   g_test_init (&argc, &argv, NULL);
   g_test_bug_base ("https://bugzilla.gnome.org/show_bug.cgi?id=");
 
-  g_test_add_func ("/gdbus/message-serialize-basic", message_serialize_basic);
-  g_test_add_func ("/gdbus/message-serialize-complex", message_serialize_complex);
-  g_test_add_func ("/gdbus/message-serialize-invalid", message_serialize_invalid);
-  g_test_add_func ("/gdbus/message-serialize-header-checks", message_serialize_header_checks);
-
-  g_test_add_func ("/gdbus/message-parse-empty-arrays-of-arrays",
-      message_parse_empty_arrays_of_arrays);
-
-  g_test_add_func ("/gdbus/message-serialize/double-array", test_double_array);
+  g_test_add_func ("/gdbus/message-serialize/basic",
+                   test_message_serialize_basic);
+  g_test_add_func ("/gdbus/message-serialize/complex",
+                   test_message_serialize_complex);
+  g_test_add_func ("/gdbus/message-serialize/invalid",
+                   test_message_serialize_invalid);
+  g_test_add_func ("/gdbus/message-serialize/header-checks",
+                   test_message_serialize_header_checks);
+  g_test_add_func ("/gdbus/message-serialize/double-array",
+                   test_message_serialize_double_array);
+
+  g_test_add_func ("/gdbus/message-parse/empty-arrays-of-arrays",
+                   test_message_parse_empty_arrays_of_arrays);
   g_test_add_func ("/gdbus/message-parse/non-signature-header",
                    test_message_parse_non_signature_header);
   g_test_add_func ("/gdbus/message-parse/empty-signature-header",
@@ -1279,6 +1444,10 @@ main (int   argc,
                    test_message_parse_multiple_signature_header);
   g_test_add_func ("/gdbus/message-parse/over-long-signature-header",
                    test_message_parse_over_long_signature_header);
+  g_test_add_func ("/gdbus/message-parse/deep-header-nesting",
+                   test_message_parse_deep_header_nesting);
+  g_test_add_func ("/gdbus/message-parse/deep-body-nesting",
+                   test_message_parse_deep_body_nesting);
 
   return g_test_run();
 }
diff --git a/gio/tests/gdbus-server-auth.c b/gio/tests/gdbus-server-auth.c
new file mode 100644 (file)
index 0000000..2554ad6
--- /dev/null
@@ -0,0 +1,539 @@
+/*
+ * Copyright 2019 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <errno.h>
+
+#include <glib/gstdio.h>
+#include <gio/gio.h>
+
+/* For G_CREDENTIALS_*_SUPPORTED */
+#include <gio/gcredentialsprivate.h>
+
+#ifdef HAVE_DBUS1
+#include <dbus/dbus.h>
+#endif
+
+typedef enum
+{
+  INTEROP_FLAGS_EXTERNAL = (1 << 0),
+  INTEROP_FLAGS_ANONYMOUS = (1 << 1),
+  INTEROP_FLAGS_SHA1 = (1 << 2),
+  INTEROP_FLAGS_TCP = (1 << 3),
+  INTEROP_FLAGS_LIBDBUS = (1 << 4),
+  INTEROP_FLAGS_ABSTRACT = (1 << 5),
+  INTEROP_FLAGS_NONE = 0
+} InteropFlags;
+
+static gboolean
+allow_external_cb (G_GNUC_UNUSED GDBusAuthObserver *observer,
+                   const char *mechanism,
+                   G_GNUC_UNUSED gpointer user_data)
+{
+  if (g_strcmp0 (mechanism, "EXTERNAL") == 0)
+    {
+      g_debug ("Accepting EXTERNAL authentication");
+      return TRUE;
+    }
+  else
+    {
+      g_debug ("Rejecting \"%s\" authentication: not EXTERNAL", mechanism);
+      return FALSE;
+    }
+}
+
+static gboolean
+allow_anonymous_cb (G_GNUC_UNUSED GDBusAuthObserver *observer,
+                    const char *mechanism,
+                    G_GNUC_UNUSED gpointer user_data)
+{
+  if (g_strcmp0 (mechanism, "ANONYMOUS") == 0)
+    {
+      g_debug ("Accepting ANONYMOUS authentication");
+      return TRUE;
+    }
+  else
+    {
+      g_debug ("Rejecting \"%s\" authentication: not ANONYMOUS", mechanism);
+      return FALSE;
+    }
+}
+
+static gboolean
+allow_sha1_cb (G_GNUC_UNUSED GDBusAuthObserver *observer,
+               const char *mechanism,
+               G_GNUC_UNUSED gpointer user_data)
+{
+  if (g_strcmp0 (mechanism, "DBUS_COOKIE_SHA1") == 0)
+    {
+      g_debug ("Accepting DBUS_COOKIE_SHA1 authentication");
+      return TRUE;
+    }
+  else
+    {
+      g_debug ("Rejecting \"%s\" authentication: not DBUS_COOKIE_SHA1",
+               mechanism);
+      return FALSE;
+    }
+}
+
+static gboolean
+allow_any_mechanism_cb (G_GNUC_UNUSED GDBusAuthObserver *observer,
+                        const char *mechanism,
+                        G_GNUC_UNUSED gpointer user_data)
+{
+  g_debug ("Accepting \"%s\" authentication", mechanism);
+  return TRUE;
+}
+
+static gboolean
+authorize_any_authenticated_peer_cb (G_GNUC_UNUSED GDBusAuthObserver *observer,
+                                     G_GNUC_UNUSED GIOStream *stream,
+                                     GCredentials *credentials,
+                                     G_GNUC_UNUSED gpointer user_data)
+{
+  if (credentials == NULL)
+    {
+      g_debug ("Authorizing peer with no credentials");
+    }
+  else
+    {
+      gchar *str = g_credentials_to_string (credentials);
+
+      g_debug ("Authorizing peer with credentials: %s", str);
+      g_free (str);
+    }
+
+  return TRUE;
+}
+
+static GDBusMessage *
+whoami_filter_cb (GDBusConnection *connection,
+                  GDBusMessage *message,
+                  gboolean incoming,
+                  G_GNUC_UNUSED gpointer user_data)
+{
+  if (!incoming)
+    return message;
+
+  if (g_dbus_message_get_message_type (message) == G_DBUS_MESSAGE_TYPE_METHOD_CALL &&
+      g_strcmp0 (g_dbus_message_get_member (message), "WhoAmI") == 0)
+    {
+      GDBusMessage *reply = g_dbus_message_new_method_reply (message);
+      gint64 uid = -1;
+      gint64 pid = -1;
+#ifdef G_OS_UNIX
+      GCredentials *credentials = g_dbus_connection_get_peer_credentials (connection);
+
+      if (credentials != NULL)
+        {
+          uid = (gint64) g_credentials_get_unix_user (credentials, NULL);
+          pid = (gint64) g_credentials_get_unix_pid (credentials, NULL);
+        }
+#endif
+
+      g_dbus_message_set_body (reply,
+                               g_variant_new ("(xx)", uid, pid));
+      g_dbus_connection_send_message (connection, reply,
+                                      G_DBUS_SEND_MESSAGE_FLAGS_NONE,
+                                      NULL, NULL);
+      g_object_unref (reply);
+
+      /* handled */
+      g_object_unref (message);
+      return NULL;
+    }
+
+  return message;
+}
+
+static gboolean
+new_connection_cb (G_GNUC_UNUSED GDBusServer *server,
+                   GDBusConnection *connection,
+                   G_GNUC_UNUSED gpointer user_data)
+{
+  GCredentials *credentials = g_dbus_connection_get_peer_credentials (connection);
+
+  if (credentials == NULL)
+    {
+      g_debug ("New connection from peer with no credentials");
+    }
+  else
+    {
+      gchar *str = g_credentials_to_string (credentials);
+
+      g_debug ("New connection from peer with credentials: %s", str);
+      g_free (str);
+    }
+
+  g_object_ref (connection);
+  g_dbus_connection_add_filter (connection, whoami_filter_cb, NULL, NULL);
+  return TRUE;
+}
+
+#ifdef HAVE_DBUS1
+typedef struct
+{
+  DBusError error;
+  DBusConnection *conn;
+  DBusMessage *call;
+  DBusMessage *reply;
+} LibdbusCall;
+
+static void
+libdbus_call_task_cb (GTask *task,
+                      G_GNUC_UNUSED gpointer source_object,
+                      gpointer task_data,
+                      G_GNUC_UNUSED GCancellable *cancellable)
+{
+  LibdbusCall *libdbus_call = task_data;
+
+  libdbus_call->reply = dbus_connection_send_with_reply_and_block (libdbus_call->conn,
+                                                                   libdbus_call->call,
+                                                                   -1,
+                                                                   &libdbus_call->error);
+}
+#endif /* HAVE_DBUS1 */
+
+static void
+store_result_cb (G_GNUC_UNUSED GObject *source_object,
+                 GAsyncResult *res,
+                 gpointer user_data)
+{
+  GAsyncResult **result = user_data;
+
+  g_assert_nonnull (result);
+  g_assert_null (*result);
+  *result = g_object_ref (res);
+}
+
+static void
+assert_expected_uid_pid (InteropFlags flags,
+                         gint64 uid,
+                         gint64 pid)
+{
+#ifdef G_OS_UNIX
+  if (flags & (INTEROP_FLAGS_ANONYMOUS | INTEROP_FLAGS_SHA1 | INTEROP_FLAGS_TCP))
+    {
+      /* No assertion. There is no guarantee whether credentials will be
+       * passed even though we didn't send them. Conversely, if
+       * credentials were not passed,
+       * g_dbus_connection_get_peer_credentials() always returns the
+       * credentials of the socket, and not the uid that a
+       * client might have proved it has by using DBUS_COOKIE_SHA1. */
+    }
+  else    /* We should prefer EXTERNAL whenever it is allowed. */
+    {
+#ifdef __linux__
+      /* We know that both GDBus and libdbus support full credentials-passing
+       * on Linux. */
+      g_assert_cmpint (uid, ==, getuid ());
+      g_assert_cmpint (pid, ==, getpid ());
+#else
+      g_test_message ("Please open a merge request to add appropriate "
+                      "assertions for your platform");
+#endif
+    }
+#endif /* G_OS_UNIX */
+}
+
+static void
+do_test_server_auth (InteropFlags flags)
+{
+  GError *error = NULL;
+  gchar *tmpdir = NULL;
+  gchar *listenable_address = NULL;
+  GDBusServer *server = NULL;
+  GDBusAuthObserver *observer = NULL;
+  GDBusServerFlags server_flags = G_DBUS_SERVER_FLAGS_RUN_IN_THREAD;
+  gchar *guid = NULL;
+  const char *connectable_address;
+  GDBusConnection *client = NULL;
+  GAsyncResult *result = NULL;
+  GVariant *tuple = NULL;
+  gint64 uid, pid;
+#ifdef HAVE_DBUS1
+  /* GNOME/glib#1831 seems to involve a race condition, so try a few times
+   * to see if we can trigger it. */
+  gsize i;
+  gsize n = 20;
+#endif
+
+  if (flags & INTEROP_FLAGS_TCP)
+    {
+      listenable_address = g_strdup ("tcp:host=127.0.0.1");
+    }
+  else
+    {
+#ifdef G_OS_UNIX
+      gchar *escaped;
+
+      tmpdir = g_dir_make_tmp ("gdbus-server-auth-XXXXXX", &error);
+      g_assert_no_error (error);
+      escaped = g_dbus_address_escape_value (tmpdir);
+      listenable_address = g_strdup_printf ("unix:%s=%s",
+                                            (flags & INTEROP_FLAGS_ABSTRACT) ? "tmpdir" : "dir",
+                                            escaped);
+      g_free (escaped);
+#else
+      g_test_skip ("unix: addresses only work on Unix");
+      goto out;
+#endif
+    }
+
+  g_test_message ("Testing GDBus server at %s / libdbus client, with flags: "
+                  "external:%s "
+                  "anonymous:%s "
+                  "sha1:%s "
+                  "abstract:%s "
+                  "tcp:%s",
+                  listenable_address,
+                  (flags & INTEROP_FLAGS_EXTERNAL) ? "true" : "false",
+                  (flags & INTEROP_FLAGS_ANONYMOUS) ? "true" : "false",
+                  (flags & INTEROP_FLAGS_SHA1) ? "true" : "false",
+                  (flags & INTEROP_FLAGS_ABSTRACT) ? "true" : "false",
+                  (flags & INTEROP_FLAGS_TCP) ? "true" : "false");
+
+#if !defined(G_CREDENTIALS_UNIX_CREDENTIALS_MESSAGE_SUPPORTED) \
+  && !defined(G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED)
+  if (flags & INTEROP_FLAGS_EXTERNAL)
+    {
+      g_test_skip ("EXTERNAL authentication not implemented on this platform");
+      goto out;
+    }
+#endif
+
+  if (flags & INTEROP_FLAGS_ANONYMOUS)
+    server_flags |= G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS;
+
+  observer = g_dbus_auth_observer_new ();
+
+  if (flags & INTEROP_FLAGS_EXTERNAL)
+    g_signal_connect (observer, "allow-mechanism",
+                      G_CALLBACK (allow_external_cb), NULL);
+  else if (flags & INTEROP_FLAGS_ANONYMOUS)
+    g_signal_connect (observer, "allow-mechanism",
+                      G_CALLBACK (allow_anonymous_cb), NULL);
+  else if (flags & INTEROP_FLAGS_SHA1)
+    g_signal_connect (observer, "allow-mechanism",
+                      G_CALLBACK (allow_sha1_cb), NULL);
+  else
+    g_signal_connect (observer, "allow-mechanism",
+                      G_CALLBACK (allow_any_mechanism_cb), NULL);
+
+  g_signal_connect (observer, "authorize-authenticated-peer",
+                    G_CALLBACK (authorize_any_authenticated_peer_cb),
+                    NULL);
+
+  guid = g_dbus_generate_guid ();
+  server = g_dbus_server_new_sync (listenable_address,
+                                   server_flags,
+                                   guid,
+                                   observer,
+                                   NULL,
+                                   &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (server);
+  g_signal_connect (server, "new-connection", G_CALLBACK (new_connection_cb), NULL);
+  g_dbus_server_start (server);
+  connectable_address = g_dbus_server_get_client_address (server);
+  g_test_message ("Connectable address: %s", connectable_address);
+
+  result = NULL;
+  g_dbus_connection_new_for_address (connectable_address,
+                                     G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT,
+                                     NULL, NULL, store_result_cb, &result);
+
+  while (result == NULL)
+    g_main_context_iteration (NULL, TRUE);
+
+  client = g_dbus_connection_new_for_address_finish (result, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (client);
+  g_clear_object (&result);
+
+  g_dbus_connection_call (client, NULL, "/", "com.example.Test", "WhoAmI",
+                          NULL, G_VARIANT_TYPE ("(xx)"),
+                          G_DBUS_CALL_FLAGS_NONE, -1, NULL, store_result_cb,
+                          &result);
+
+  while (result == NULL)
+    g_main_context_iteration (NULL, TRUE);
+
+  tuple = g_dbus_connection_call_finish (client, result, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (tuple);
+  g_clear_object (&result);
+  g_clear_object (&client);
+
+  uid = -2;
+  pid = -2;
+  g_variant_get (tuple, "(xx)", &uid, &pid);
+
+  g_debug ("Server says GDBus client is uid %" G_GINT64_FORMAT ", pid %" G_GINT64_FORMAT,
+           uid, pid);
+
+  assert_expected_uid_pid (flags, uid, pid);
+
+  g_clear_pointer (&tuple, g_variant_unref);
+
+#ifdef HAVE_DBUS1
+  for (i = 0; i < n; i++)
+    {
+      LibdbusCall libdbus_call = { DBUS_ERROR_INIT, NULL, NULL, NULL };
+      GTask *task;
+
+      /* The test suite uses %G_TEST_OPTION_ISOLATE_DIRS, which sets
+       * `HOME=/dev/null` and leaves g_get_home_dir() pointing to the per-test
+       * temp home directory. Unfortunately, libdbus doesn’t allow the home dir
+       * to be overridden except using the environment, so copy the per-test
+       * temp home directory back there so that libdbus uses the same
+       * `$HOME/.dbus-keyrings` path as GLib. This is not thread-safe. */
+      g_setenv ("HOME", g_get_home_dir (), TRUE);
+
+      libdbus_call.conn = dbus_connection_open_private (connectable_address,
+                                                        &libdbus_call.error);
+      g_assert_cmpstr (libdbus_call.error.name, ==, NULL);
+      g_assert_nonnull (libdbus_call.conn);
+
+      libdbus_call.call = dbus_message_new_method_call (NULL, "/",
+                                                        "com.example.Test",
+                                                        "WhoAmI");
+
+      if (libdbus_call.call == NULL)
+        g_error ("Out of memory");
+
+      result = NULL;
+      task = g_task_new (NULL, NULL, store_result_cb, &result);
+      g_task_set_task_data (task, &libdbus_call, NULL);
+      g_task_run_in_thread (task, libdbus_call_task_cb);
+
+      while (result == NULL)
+        g_main_context_iteration (NULL, TRUE);
+
+      g_clear_object (&result);
+
+      g_assert_cmpstr (libdbus_call.error.name, ==, NULL);
+      g_assert_nonnull (libdbus_call.reply);
+
+      uid = -2;
+      pid = -2;
+      dbus_message_get_args (libdbus_call.reply, &libdbus_call.error,
+                             DBUS_TYPE_INT64, &uid,
+                             DBUS_TYPE_INT64, &pid,
+                             DBUS_TYPE_INVALID);
+      g_assert_cmpstr (libdbus_call.error.name, ==, NULL);
+
+      g_debug ("Server says libdbus client %" G_GSIZE_FORMAT " is uid %" G_GINT64_FORMAT ", pid %" G_GINT64_FORMAT,
+               i, uid, pid);
+      assert_expected_uid_pid (flags | INTEROP_FLAGS_LIBDBUS, uid, pid);
+
+      dbus_connection_close (libdbus_call.conn);
+      dbus_connection_unref (libdbus_call.conn);
+      dbus_message_unref (libdbus_call.call);
+      dbus_message_unref (libdbus_call.reply);
+      g_clear_object (&task);
+    }
+#else /* !HAVE_DBUS1 */
+  g_test_skip ("Testing interop with libdbus not supported");
+#endif /* !HAVE_DBUS1 */
+
+  /* No practical effect, just to avoid -Wunused-label under some
+   * combinations of #ifdefs */
+  goto out;
+
+out:
+  if (server != NULL)
+    g_dbus_server_stop (server);
+
+  if (tmpdir != NULL)
+    g_assert_cmpstr (g_rmdir (tmpdir) == 0 ? "OK" : g_strerror (errno),
+                     ==, "OK");
+
+  g_clear_object (&server);
+  g_clear_object (&observer);
+  g_free (guid);
+  g_free (listenable_address);
+  g_free (tmpdir);
+}
+
+static void
+test_server_auth (void)
+{
+  do_test_server_auth (INTEROP_FLAGS_NONE);
+}
+
+static void
+test_server_auth_abstract (void)
+{
+  do_test_server_auth (INTEROP_FLAGS_ABSTRACT);
+}
+
+static void
+test_server_auth_tcp (void)
+{
+  do_test_server_auth (INTEROP_FLAGS_TCP);
+}
+
+static void
+test_server_auth_anonymous (void)
+{
+  do_test_server_auth (INTEROP_FLAGS_ANONYMOUS);
+}
+
+static void
+test_server_auth_anonymous_tcp (void)
+{
+  do_test_server_auth (INTEROP_FLAGS_ANONYMOUS | INTEROP_FLAGS_TCP);
+}
+
+static void
+test_server_auth_external (void)
+{
+  do_test_server_auth (INTEROP_FLAGS_EXTERNAL);
+}
+
+static void
+test_server_auth_sha1 (void)
+{
+  do_test_server_auth (INTEROP_FLAGS_SHA1);
+}
+
+static void
+test_server_auth_sha1_tcp (void)
+{
+  do_test_server_auth (INTEROP_FLAGS_SHA1 | INTEROP_FLAGS_TCP);
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL);
+
+  g_test_add_func ("/gdbus/server-auth", test_server_auth);
+  g_test_add_func ("/gdbus/server-auth/abstract", test_server_auth_abstract);
+  g_test_add_func ("/gdbus/server-auth/tcp", test_server_auth_tcp);
+  g_test_add_func ("/gdbus/server-auth/anonymous", test_server_auth_anonymous);
+  g_test_add_func ("/gdbus/server-auth/anonymous/tcp", test_server_auth_anonymous_tcp);
+  g_test_add_func ("/gdbus/server-auth/external", test_server_auth_external);
+  g_test_add_func ("/gdbus/server-auth/sha1", test_server_auth_sha1);
+  g_test_add_func ("/gdbus/server-auth/sha1/tcp", test_server_auth_sha1_tcp);
+
+  return g_test_run();
+}
index e900969..29f05d4 100644 (file)
@@ -25,8 +25,21 @@ static GTestDBus *singleton = NULL;
 void
 session_bus_up (void)
 {
+  gchar *relative, *servicesdir;
   g_assert (singleton == NULL);
   singleton = g_test_dbus_new (G_TEST_DBUS_NONE);
+
+  /* We ignore deprecations here so that gdbus-test-codegen-old can
+   * build successfully despite these two functions not being
+   * available in GLib 2.36 */
+  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+  relative = g_test_build_filename (G_TEST_BUILT, "services", NULL);
+  servicesdir = g_canonicalize_filename (relative, NULL);
+  G_GNUC_END_IGNORE_DEPRECATIONS
+  g_free (relative);
+
+  g_test_dbus_add_service_dir (singleton, servicesdir);
+  g_free (servicesdir);
   g_test_dbus_up (singleton);
 }
 
index 985cb10..691506f 100644 (file)
 
 #include "gdbus-tests.h"
 
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+#include "gdbus-test-codegen-generated-min-required-2-64.h"
+#else
 #include "gdbus-test-codegen-generated.h"
+#endif
+
 #include "gdbus-test-codegen-generated-interface-info.h"
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -878,6 +883,10 @@ check_bar_proxy (FooiGenBar *proxy,
                                                      "/a/path",
                                                      "asig",
                                                      "bytestring\xff",
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+                                                     G_DBUS_CALL_FLAGS_NONE,
+                                                     -1,
+#endif
                                                      &ret_val_byte,
                                                      &ret_val_boolean,
                                                      &ret_val_int16,
@@ -913,6 +922,10 @@ check_bar_proxy (FooiGenBar *proxy,
                                                          array_of_objpaths,
                                                          array_of_signatures,
                                                          array_of_bytestrings,
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+                                                         G_DBUS_CALL_FLAGS_NONE,
+                                                         -1,
+#endif
                                                          &ret_array_of_strings,
                                                          &ret_array_of_objpaths,
                                                          &ret_array_of_signatures,
@@ -946,7 +959,11 @@ check_bar_proxy (FooiGenBar *proxy,
    * unimplemented methods.
    */
   error = NULL;
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+  ret = foo_igen_bar_call_unimplemented_method_sync (proxy, G_DBUS_CALL_FLAGS_NONE, -1, NULL /* GCancellable */, &error);
+#else
   ret = foo_igen_bar_call_unimplemented_method_sync (proxy, NULL /* GCancellable */, &error);
+#endif
   g_assert_error (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD);
   g_error_free (error);
   error = NULL;
@@ -957,7 +974,11 @@ check_bar_proxy (FooiGenBar *proxy,
                     G_CALLBACK (on_test_signal),
                     data);
   error = NULL;
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+  ret = foo_igen_bar_call_request_signal_emission_sync (proxy, 0, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+#else
   ret = foo_igen_bar_call_request_signal_emission_sync (proxy, 0, NULL, &error);
+#endif
   g_assert_no_error (error);
   g_assert (ret);
 
@@ -1011,7 +1032,11 @@ check_bar_proxy (FooiGenBar *proxy,
                     G_CALLBACK (on_g_properties_changed),
                     data);
   error = NULL;
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+  ret = foo_igen_bar_call_request_multi_property_mods_sync (proxy, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+#else
   ret = foo_igen_bar_call_request_multi_property_mods_sync (proxy, NULL, &error);
+#endif
   g_assert_no_error (error);
   g_assert (ret);
   g_main_loop_run (thread_loop);
@@ -1077,6 +1102,10 @@ check_bar_proxy (FooiGenBar *proxy,
    */
   error = NULL;
   foo_igen_bar_call_property_cancellation (proxy,
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+                                           G_DBUS_CALL_FLAGS_NONE,
+                                           -1,
+#endif
                                            NULL, /* GCancellable */
                                            (GAsyncReadyCallback) on_property_cancellation_cb,
                                            data);
@@ -1159,6 +1188,10 @@ check_bat_proxy (FooiGenBat *proxy,
                                        g_variant_new_string ("a string"),
                                        g_variant_new_bytestring ("a bytestring\xff"),
                                        g_variant_new ("(i)", 4200),
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+                                       G_DBUS_CALL_FLAGS_NONE,
+                                       -1,
+#endif
                                        &ret_i,
                                        &ret_s,
                                        &ret_ay,
@@ -1191,18 +1224,30 @@ check_authorize_proxy (FooiGenAuthorize *proxy,
   /* Check that g-authorize-method works as intended */
 
   error = NULL;
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+  ret = foo_igen_authorize_call_check_not_authorized_sync (proxy, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+#else
   ret = foo_igen_authorize_call_check_not_authorized_sync (proxy, NULL, &error);
+#endif
   g_assert_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED);
   g_error_free (error);
   g_assert (!ret);
 
   error = NULL;
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+  ret = foo_igen_authorize_call_check_authorized_sync (proxy, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+#else
   ret = foo_igen_authorize_call_check_authorized_sync (proxy, NULL, &error);
+#endif
   g_assert_no_error (error);
   g_assert (ret);
 
   error = NULL;
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+  ret = foo_igen_authorize_call_check_not_authorized_from_object_sync (proxy, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+#else
   ret = foo_igen_authorize_call_check_not_authorized_from_object_sync (proxy, NULL, &error);
+#endif
   g_assert_error (error, G_IO_ERROR, G_IO_ERROR_PENDING);
   g_error_free (error);
   g_assert (!ret);
@@ -1219,7 +1264,11 @@ get_self_via_proxy (FooiGenMethodThreads *proxy_1)
   gpointer self;
 
   error = NULL;
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+  ret = foo_igen_method_threads_call_get_self_sync (proxy_1, G_DBUS_CALL_FLAGS_NONE, -1, &self_str, NULL, &error);
+#else
   ret = foo_igen_method_threads_call_get_self_sync (proxy_1, &self_str, NULL, &error);
+#endif
   g_assert_no_error (error);
   g_assert (ret);
 
@@ -2589,6 +2638,86 @@ test_standalone_interface_info (void)
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
+static gboolean
+handle_hello_fd (FooiGenFDPassing *object,
+                 GDBusMethodInvocation *invocation,
+                 GUnixFDList *fd_list,
+                 const gchar *arg_greeting)
+{
+  foo_igen_fdpassing_complete_hello_fd (object, invocation, fd_list, arg_greeting);
+  return TRUE;
+}
+
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+static gboolean
+handle_no_annotation (FooiGenFDPassing *object,
+                      GDBusMethodInvocation *invocation,
+                      GUnixFDList *fd_list,
+                      GVariant *arg_greeting,
+                      const gchar *arg_greeting_locale)
+{
+  foo_igen_fdpassing_complete_no_annotation (object, invocation, fd_list, arg_greeting, arg_greeting_locale);
+  return TRUE;
+}
+
+static gboolean
+handle_no_annotation_nested (FooiGenFDPassing *object,
+                             GDBusMethodInvocation *invocation,
+                             GUnixFDList *fd_list,
+                             GVariant *arg_files)
+{
+  foo_igen_fdpassing_complete_no_annotation_nested (object, invocation, fd_list);
+  return TRUE;
+}
+#else
+static gboolean
+handle_no_annotation (FooiGenFDPassing *object,
+                      GDBusMethodInvocation *invocation,
+                      GVariant *arg_greeting,
+                      const gchar *arg_greeting_locale)
+{
+  foo_igen_fdpassing_complete_no_annotation (object, invocation, arg_greeting, arg_greeting_locale);
+  return TRUE;
+}
+
+static gboolean
+handle_no_annotation_nested (FooiGenFDPassing *object,
+                             GDBusMethodInvocation *invocation,
+                             GVariant *arg_files)
+{
+  foo_igen_fdpassing_complete_no_annotation_nested (object, invocation);
+  return TRUE;
+}
+#endif
+
+/* Test that generated code for methods includes GUnixFDList arguments
+ * unconditionally if the method is explicitly annotated as C.UnixFD, and only
+ * emits GUnixFDList arguments when there's merely an 'h' parameter if
+ * --glib-min-required=2.64 or greater.
+ */
+static void
+test_unix_fd_list (void)
+{
+  FooiGenFDPassingIface iface;
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/issues/1726");
+
+  /* This method is explicitly annotated. */
+  iface.handle_hello_fd = handle_hello_fd;
+
+  /* This one is not annotated; even though it's got an in and out 'h'
+   * parameter, for backwards compatibility we cannot emit GUnixFDList
+   * arguments unless --glib-min-required >= 2.64 was used.
+   */
+  iface.handle_no_annotation = handle_no_annotation;
+
+  /* This method has an 'h' inside a complex type. */
+  iface.handle_no_annotation_nested = handle_no_annotation_nested;
+
+  (void) iface;
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
 
 int
 main (int   argc,
@@ -2603,6 +2732,7 @@ main (int   argc,
   g_test_add_func ("/gdbus/codegen/autocleanups", test_autocleanups);
   g_test_add_func ("/gdbus/codegen/deprecations", test_deprecations);
   g_test_add_func ("/gdbus/codegen/standalone-interface-info", test_standalone_interface_info);
+  g_test_add_func ("/gdbus/codegen/unix-fd-list", test_unix_fd_list);
 
   return session_bus_run ();
 }
index f8b9b93..2071bba 100644 (file)
@@ -15,16 +15,20 @@ static void
 fixture_setup (TestFixture *fixture, gconstpointer unused)
 {
   GError *error = NULL;
+  gchar *relative, *servicesdir;
 
   /* Create the global dbus-daemon for this test suite
    */
   fixture->dbus = g_test_dbus_new (G_TEST_DBUS_NONE);
 
-  /* Add the private directory with our in-tree service files, 
-   * TEST_SERVICES is defined by the build system to point
-   * to the right directory.
+  /* Add the private directory with our in-tree service files.
    */
-  g_test_dbus_add_service_dir (fixture->dbus, TEST_SERVICES);
+  relative = g_test_build_filename (G_TEST_BUILT, "services", NULL);
+  servicesdir = g_canonicalize_filename (relative, NULL);
+  g_free (relative);
+
+  g_test_dbus_add_service_dir (fixture->dbus, servicesdir);
+  g_free (servicesdir);
 
   /* Start the private D-Bus daemon
    */
index 35e379b..bed0d24 100644 (file)
@@ -86,49 +86,72 @@ _give_up (gpointer data)
   g_return_val_if_reached (TRUE);
 }
 
+typedef struct
+{
+  GMainContext *context;
+  gboolean name_appeared;
+  gboolean unwatch_complete;
+} WatchData;
+
+static void
+name_appeared_cb (GDBusConnection *connection,
+                  const gchar     *name,
+                  const gchar     *name_owner,
+                  gpointer         user_data)
+{
+  WatchData *data = user_data;
+
+  g_assert (name_owner != NULL);
+  data->name_appeared = TRUE;
+  g_main_context_wakeup (data->context);
+}
+
+static void
+watch_free_cb (gpointer user_data)
+{
+  WatchData *data = user_data;
+
+  data->unwatch_complete = TRUE;
+  g_main_context_wakeup (data->context);
+}
+
 void
-ensure_gdbus_testserver_up (void)
+ensure_gdbus_testserver_up (GDBusConnection *connection,
+                            GMainContext    *context)
 {
-  guint id;
-  gchar *name_owner;
-  GDBusConnection *connection;
-  GDBusProxy *proxy;
-  GError *error = NULL;
-
-  connection = g_bus_get_sync (G_BUS_TYPE_SESSION,
-                               NULL,
-                               &error);
-
-  g_assert_no_error (error);
-  error = NULL;
-
-  proxy = g_dbus_proxy_new_sync (connection,
-                                 G_DBUS_PROXY_FLAGS_NONE,
-                                 NULL,                      /* GDBusInterfaceInfo */
-                                 "com.example.TestService", /* name */
-                                 "/com/example/TestObject", /* object path */
-                                 "com.example.Frob",        /* interface */
-                                 NULL, /* GCancellable */
-                                 &error);
-  g_assert_no_error (error);
-
-  id = g_timeout_add_seconds (60, _give_up,
-      "waited more than ~ 60s for gdbus-testserver to take its bus name");
-
-  while (TRUE)
-    {
-      name_owner = g_dbus_proxy_get_name_owner (proxy);
-
-      if (name_owner != NULL)
-        break;
-
-      g_main_context_iteration (NULL, TRUE);
-    }
-
-  g_source_remove (id);
-  g_free (name_owner);
-  g_object_unref (proxy);
-  g_object_unref (connection);
+  GSource *timeout_source = NULL;
+  guint watch_id;
+  WatchData data = { context, FALSE, FALSE };
+
+  g_main_context_push_thread_default (context);
+
+  watch_id = g_bus_watch_name_on_connection (connection,
+                                             "com.example.TestService",
+                                             G_BUS_NAME_WATCHER_FLAGS_NONE,
+                                             name_appeared_cb,
+                                             NULL,
+                                             &data,
+                                             watch_free_cb);
+
+  timeout_source = g_timeout_source_new_seconds (60);
+  g_source_set_callback (timeout_source, _give_up,
+                         "waited more than ~ 60s for gdbus-testserver to take its bus name",
+                         NULL);
+  g_source_attach (timeout_source, context);
+
+  while (!data.name_appeared)
+    g_main_context_iteration (context, TRUE);
+
+  g_bus_unwatch_name (watch_id);
+  watch_id = 0;
+
+  while (!data.unwatch_complete)
+    g_main_context_iteration (context, TRUE);
+
+  g_source_destroy (timeout_source);
+  g_source_unref (timeout_source);
+
+  g_main_context_pop_thread_default (context);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
index 00cda37..eaef234 100644 (file)
@@ -114,7 +114,8 @@ GDBusConnection *_g_bus_get_priv (GBusType            bus_type,
                                   GCancellable       *cancellable,
                                   GError            **error);
 
-void ensure_gdbus_testserver_up (void);
+void ensure_gdbus_testserver_up (GDBusConnection *connection,
+                                 GMainContext    *context);
 
 G_END_DECLS
 
index ffca6f3..2b89fb0 100644 (file)
 /* all tests rely on a global connection */
 static GDBusConnection *c = NULL;
 
-/* ---------------------------------------------------------------------------------------------------- */
-/* Ensure that signal and method replies are delivered in the right thread */
-/* ---------------------------------------------------------------------------------------------------- */
+typedef struct
+{
+  GMainContext *context;
+  gboolean timed_out;
+} TimeoutData;
 
-typedef struct {
-  GThread *thread;
-  GMainLoop *thread_loop;
-  guint signal_count;
-} DeliveryData;
+static gboolean
+timeout_cb (gpointer user_data)
+{
+  TimeoutData *data = user_data;
+
+  data->timed_out = TRUE;
+  g_main_context_wakeup (data->context);
 
+  return G_SOURCE_REMOVE;
+}
+
+/* Check that the given @connection has only one ref, waiting to let any pending
+ * unrefs complete first. This is typically used on the shared connection, to
+ * ensure it’s in a correct state before beginning the next test. */
 static void
-msg_cb_expect_success (GDBusConnection *connection,
-                       GAsyncResult    *res,
-                       gpointer         user_data)
+assert_connection_has_one_ref (GDBusConnection *connection,
+                               GMainContext    *context)
 {
-  DeliveryData *data = user_data;
-  GError *error;
-  GVariant *result;
+  GSource *timeout_source = NULL;
+  TimeoutData data = { context, FALSE };
 
-  error = NULL;
-  result = g_dbus_connection_call_finish (connection,
-                                          res,
-                                          &error);
-  g_assert_no_error (error);
-  g_assert (result != NULL);
-  g_variant_unref (result);
+  if (g_atomic_int_get (&G_OBJECT (connection)->ref_count) == 1)
+    return;
 
-  g_assert (g_thread_self () == data->thread);
+  timeout_source = g_timeout_source_new_seconds (3);
+  g_source_set_callback (timeout_source, timeout_cb, &data, NULL);
+  g_source_attach (timeout_source, context);
 
-  g_main_loop_quit (data->thread_loop);
+  while (g_atomic_int_get (&G_OBJECT (connection)->ref_count) != 1 && !data.timed_out)
+    {
+      g_debug ("refcount of %p is not right, sleeping", connection);
+      g_main_context_iteration (NULL, TRUE);
+    }
+
+  g_source_destroy (timeout_source);
+  g_source_unref (timeout_source);
+
+  if (g_atomic_int_get (&G_OBJECT (connection)->ref_count) != 1)
+    g_error ("connection %p had too many refs", connection);
 }
 
+/* ---------------------------------------------------------------------------------------------------- */
+/* Ensure that signal and method replies are delivered in the right thread */
+/* ---------------------------------------------------------------------------------------------------- */
+
+typedef struct {
+  GThread *thread;
+  GMainContext *context;
+  guint signal_count;
+  gboolean unsubscribe_complete;
+  GAsyncResult *async_result;
+} DeliveryData;
+
 static void
-msg_cb_expect_error_cancelled (GDBusConnection *connection,
-                               GAsyncResult    *res,
-                               gpointer         user_data)
+async_result_cb (GDBusConnection *connection,
+                 GAsyncResult    *res,
+                 gpointer         user_data)
 {
   DeliveryData *data = user_data;
-  GError *error;
-  GVariant *result;
 
-  error = NULL;
-  result = g_dbus_connection_call_finish (connection,
-                                          res,
-                                          &error);
-  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
-  g_assert (!g_dbus_error_is_remote_error (error));
-  g_error_free (error);
-  g_assert (result == NULL);
+  data->async_result = g_object_ref (res);
 
-  g_assert (g_thread_self () == data->thread);
+  g_assert_true (g_thread_self () == data->thread);
 
-  g_main_loop_quit (data->thread_loop);
+  g_main_context_wakeup (data->context);
 }
 
 static void
@@ -93,33 +111,43 @@ signal_handler (GDBusConnection *connection,
 {
   DeliveryData *data = user_data;
 
-  g_assert (g_thread_self () == data->thread);
+  g_assert_true (g_thread_self () == data->thread);
 
   data->signal_count++;
 
-  g_main_loop_quit (data->thread_loop);
+  g_main_context_wakeup (data->context);
+}
+
+static void
+signal_data_free_cb (gpointer user_data)
+{
+  DeliveryData *data = user_data;
+
+  g_assert_true (g_thread_self () == data->thread);
+
+  data->unsubscribe_complete = TRUE;
+
+  g_main_context_wakeup (data->context);
 }
 
 static gpointer
 test_delivery_in_thread_func (gpointer _data)
 {
-  GMainLoop *thread_loop;
   GMainContext *thread_context;
   DeliveryData data;
   GCancellable *ca;
   guint subscription_id;
-  GDBusConnection *priv_c;
-  GError *error;
-
-  error = NULL;
+  GError *error = NULL;
+  GVariant *result_variant = NULL;
 
   thread_context = g_main_context_new ();
-  thread_loop = g_main_loop_new (thread_context, FALSE);
   g_main_context_push_thread_default (thread_context);
 
   data.thread = g_thread_self ();
-  data.thread_loop = thread_loop;
+  data.context = thread_context;
   data.signal_count = 0;
+  data.unsubscribe_complete = FALSE;
+  data.async_result = NULL;
 
   /* ---------------------------------------------------------------------------------------------------- */
 
@@ -135,9 +163,16 @@ test_delivery_in_thread_func (gpointer _data)
                           G_DBUS_CALL_FLAGS_NONE,
                           -1,
                           NULL,
-                          (GAsyncReadyCallback) msg_cb_expect_success,
+                          (GAsyncReadyCallback) async_result_cb,
                           &data);
-  g_main_loop_run (thread_loop);
+  while (data.async_result == NULL)
+    g_main_context_iteration (thread_context, TRUE);
+
+  result_variant = g_dbus_connection_call_finish (c, data.async_result, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (result_variant);
+  g_clear_pointer (&result_variant, g_variant_unref);
+  g_clear_object (&data.async_result);
 
   /*
    * Check that we never actually send a message if the GCancellable
@@ -155,9 +190,18 @@ test_delivery_in_thread_func (gpointer _data)
                           G_DBUS_CALL_FLAGS_NONE,
                           -1,
                           ca,
-                          (GAsyncReadyCallback) msg_cb_expect_error_cancelled,
+                          (GAsyncReadyCallback) async_result_cb,
                           &data);
-  g_main_loop_run (thread_loop);
+  while (data.async_result == NULL)
+    g_main_context_iteration (thread_context, TRUE);
+
+  result_variant = g_dbus_connection_call_finish (c, data.async_result, &error);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
+  g_assert_false (g_dbus_error_is_remote_error (error));
+  g_clear_error (&error);
+  g_assert_null (result_variant);
+  g_clear_object (&data.async_result);
+
   g_object_unref (ca);
 
   /*
@@ -173,47 +217,74 @@ test_delivery_in_thread_func (gpointer _data)
                           G_DBUS_CALL_FLAGS_NONE,
                           -1,
                           ca,
-                          (GAsyncReadyCallback) msg_cb_expect_error_cancelled,
+                          (GAsyncReadyCallback) async_result_cb,
                           &data);
   g_cancellable_cancel (ca);
-  g_main_loop_run (thread_loop);
+
+  while (data.async_result == NULL)
+    g_main_context_iteration (thread_context, TRUE);
+
+  result_variant = g_dbus_connection_call_finish (c, data.async_result, &error);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
+  g_assert_false (g_dbus_error_is_remote_error (error));
+  g_clear_error (&error);
+  g_assert_null (result_variant);
+  g_clear_object (&data.async_result);
+
   g_object_unref (ca);
 
   /*
    * Check that signals are delivered to the correct thread.
    *
-   * First we subscribe to the signal, then we create a a private
-   * connection. This should cause a NameOwnerChanged message from
-   * the message bus.
+   * First we subscribe to the signal, then we call EmitSignal(). This should
+   * cause a TestSignal emission from the testserver.
    */
   subscription_id = g_dbus_connection_signal_subscribe (c,
-                                                        "org.freedesktop.DBus",  /* sender */
-                                                        "org.freedesktop.DBus",  /* interface */
-                                                        "NameOwnerChanged",      /* member */
-                                                        "/org/freedesktop/DBus", /* path */
+                                                        "com.example.TestService", /* sender */
+                                                        "com.example.Frob",        /* interface */
+                                                        "TestSignal",              /* member */
+                                                        "/com/example/TestObject", /* path */
                                                         NULL,
                                                         G_DBUS_SIGNAL_FLAGS_NONE,
                                                         signal_handler,
                                                         &data,
-                                                        NULL);
-  g_assert (subscription_id != 0);
-  g_assert (data.signal_count == 0);
+                                                        signal_data_free_cb);
+  g_assert_cmpuint (subscription_id, !=, 0);
+  g_assert_cmpuint (data.signal_count, ==, 0);
 
-  priv_c = _g_bus_get_priv (G_BUS_TYPE_SESSION, NULL, &error);
-  g_assert_no_error (error);
-  g_assert (priv_c != NULL);
+  g_dbus_connection_call (c,
+                          "com.example.TestService", /* bus_name */
+                          "/com/example/TestObject", /* object path */
+                          "com.example.Frob",        /* interface name */
+                          "EmitSignal",              /* method name */
+                          g_variant_new_parsed ("('hello', @o '/com/example/TestObject')"),
+                          NULL,
+                          G_DBUS_CALL_FLAGS_NONE,
+                          -1,
+                          NULL,
+                          (GAsyncReadyCallback) async_result_cb,
+                          &data);
+  while (data.async_result == NULL || data.signal_count < 1)
+    g_main_context_iteration (thread_context, TRUE);
 
-  g_main_loop_run (thread_loop);
-  g_assert (data.signal_count == 1);
+  result_variant = g_dbus_connection_call_finish (c, data.async_result, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (result_variant);
+  g_clear_pointer (&result_variant, g_variant_unref);
+  g_clear_object (&data.async_result);
 
-  g_object_unref (priv_c);
+  g_assert_cmpuint (data.signal_count, ==, 1);
 
   g_dbus_connection_signal_unsubscribe (c, subscription_id);
+  subscription_id = 0;
+
+  while (!data.unsubscribe_complete)
+    g_main_context_iteration (thread_context, TRUE);
+  g_assert_true (data.unsubscribe_complete);
 
   /* ---------------------------------------------------------------------------------------------------- */
 
   g_main_context_pop_thread_default (thread_context);
-  g_main_loop_unref (thread_loop);
   g_main_context_unref (thread_context);
 
   return NULL;
@@ -229,6 +300,8 @@ test_delivery_in_thread (void)
                          NULL);
 
   g_thread_join (thread);
+
+  assert_connection_has_one_ref (c, NULL);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -257,11 +330,11 @@ sleep_cb (GDBusProxy   *proxy,
                                      res,
                                      &error);
   g_assert_no_error (error);
-  g_assert (result != NULL);
+  g_assert_nonnull (result);
   g_assert_cmpstr (g_variant_get_type_string (result), ==, "()");
   g_variant_unref (result);
 
-  g_assert (data->thread == g_thread_self ());
+  g_assert_true (data->thread == g_thread_self ());
 
   g_main_loop_quit (data->thread_loop);
 
@@ -317,7 +390,7 @@ test_sleep_in_thread_func (gpointer _data)
             g_printerr ("S");
           //g_debug ("done invoking sync (%p)", g_thread_self ());
           g_assert_no_error (error);
-          g_assert (result != NULL);
+          g_assert_nonnull (result);
           g_assert_cmpstr (g_variant_get_type_string (result), ==, "()");
           g_variant_unref (result);
         }
@@ -333,7 +406,7 @@ test_sleep_in_thread_func (gpointer _data)
 static void
 test_method_calls_on_proxy (GDBusProxy *proxy)
 {
-  guint n;
+  guint n, divisor;
 
   /*
    * Check that multiple threads can do calls without interferring with
@@ -352,6 +425,11 @@ test_method_calls_on_proxy (GDBusProxy *proxy)
    * again with sync calls
    */
 
+  if (g_test_thorough ())
+    divisor = 1;
+  else
+    divisor = 10;
+
   for (n = 0; n < 2; n++)
     {
       gboolean do_async;
@@ -370,7 +448,7 @@ test_method_calls_on_proxy (GDBusProxy *proxy)
 
       data1.proxy = proxy;
       data1.msec = 40;
-      data1.num = 100;
+      data1.num = 100 / divisor;
       data1.async = do_async;
       thread1 = g_thread_new ("sleep",
                               test_sleep_in_thread_func,
@@ -378,7 +456,7 @@ test_method_calls_on_proxy (GDBusProxy *proxy)
 
       data2.proxy = proxy;
       data2.msec = 20;
-      data2.num = 200;
+      data2.num = 200 / divisor;
       data2.async = do_async;
       thread2 = g_thread_new ("sleep2",
                               test_sleep_in_thread_func,
@@ -386,7 +464,7 @@ test_method_calls_on_proxy (GDBusProxy *proxy)
 
       data3.proxy = proxy;
       data3.msec = 100;
-      data3.num = 40;
+      data3.num = 40 / divisor;
       data3.async = do_async;
       thread3 = g_thread_new ("sleep3",
                               test_sleep_in_thread_func,
@@ -403,8 +481,8 @@ test_method_calls_on_proxy (GDBusProxy *proxy)
       //g_debug ("Elapsed time for %s = %d msec", n == 0 ? "async" : "sync", elapsed_msec);
 
       /* elapsed_msec should be 4000 msec +/- change for overhead/inaccuracy */
-      g_assert_cmpint (elapsed_msec, >=, 3950);
-      g_assert_cmpint (elapsed_msec,  <, 30000);
+      g_assert_cmpint (elapsed_msec, >=, 3950 / divisor);
+      g_assert_cmpint (elapsed_msec,  <, 30000 / divisor);
 
       if (g_test_verbose ())
         g_printerr (" ");
@@ -441,6 +519,8 @@ test_method_calls_in_thread (void)
 
   if (g_test_verbose ())
     g_printerr ("\n");
+
+  assert_connection_has_one_ref (c, NULL);
 }
 
 #define SLEEP_MIN_USEC 1
@@ -457,8 +537,8 @@ ensure_connection_works (GDBusConnection *conn)
       "/org/freedesktop/DBus", "org.freedesktop.DBus", "GetId", NULL, NULL, 0, -1,
       NULL, &error);
   g_assert_no_error (error);
-  g_assert (v != NULL);
-  g_assert (g_variant_is_of_type (v, G_VARIANT_TYPE ("(s)")));
+  g_assert_nonnull (v);
+  g_assert_true (g_variant_is_of_type (v, G_VARIANT_TYPE ("(s)")));
   g_variant_unref (v);
 }
 
@@ -500,29 +580,16 @@ test_threaded_singleton (void)
   if (g_test_thorough ())
     n = 100000;
   else
-    n = 5000;
+    n = 1000;
 
   for (i = 0; i < n; i++)
     {
       GThread *thread;
-      guint j;
       guint unref_delay, get_delay;
       GDBusConnection *new_conn;
 
       /* We want to be the last ref, so let it finish setting up */
-      for (j = 0; j < 100; j++)
-        {
-          guint r = g_atomic_int_get (&G_OBJECT (c)->ref_count);
-
-          if (r == 1)
-            break;
-
-          g_debug ("run %u: refcount is %u, sleeping", i, r);
-          g_usleep (1000);
-        }
-
-      if (j == 100)
-        g_error ("connection had too many refs");
+      assert_connection_has_one_ref (c, NULL);
 
       if (g_test_verbose () && (i % (n/50)) == 0)
         g_printerr ("%u%%\n", ((i * 100) / n));
@@ -586,16 +653,16 @@ main (int   argc,
 
   /* this is safe; testserver will exit once the bus goes away */
   path = g_test_build_filename (G_TEST_BUILT, "gdbus-testserver", NULL);
-  g_assert (g_spawn_command_line_async (path, NULL));
+  g_assert_true (g_spawn_command_line_async (path, NULL));
   g_free (path);
 
-  ensure_gdbus_testserver_up ();
-
   /* Create the connection in the main thread */
   error = NULL;
   c = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
   g_assert_no_error (error);
-  g_assert (c != NULL);
+  g_assert_nonnull (c);
+
+  ensure_gdbus_testserver_up (c, NULL);
 
   g_test_add_func ("/gdbus/delivery-in-thread", test_delivery_in_thread);
   g_test_add_func ("/gdbus/method-calls-in-thread", test_method_calls_in_thread);
index 562037f..5ecf45f 100644 (file)
@@ -805,6 +805,72 @@ test_store_past_end (void)
   g_object_unref (store);
 }
 
+static gboolean
+list_model_casecmp_action_by_name (gconstpointer a,
+                                   gconstpointer b)
+{
+  return g_ascii_strcasecmp (g_action_get_name (G_ACTION (a)),
+                             g_action_get_name (G_ACTION (b))) == 0;
+}
+
+/* Test if find() and find_with_equal_func() works */
+static void
+test_store_find (void)
+{
+  GListStore *store;
+  guint position = 100;
+  const gchar *item_strs[4] = { "aaa", "bbb", "xxx", "ccc" };
+  GSimpleAction *items[4] = { NULL, };
+  GSimpleAction *other_item;
+  guint i;
+
+  store = g_list_store_new (G_TYPE_SIMPLE_ACTION);
+
+  for (i = 0; i < G_N_ELEMENTS (item_strs); i++)
+    items[i] = g_simple_action_new (item_strs[i], NULL);
+
+  /* Shouldn't crash on an empty list, or change the position pointer */
+  g_assert_false (g_list_store_find (store, items[0], NULL));
+  g_assert_false (g_list_store_find (store, items[0], &position));
+  g_assert_cmpint (position, ==, 100);
+
+  for (i = 0; i < G_N_ELEMENTS (item_strs); i++)
+    g_list_store_append (store, items[i]);
+
+  /* Check whether it could still find the the elements */
+  for (i = 0; i < G_N_ELEMENTS (item_strs); i++)
+    {
+      g_assert_true (g_list_store_find (store, items[i], &position));
+      g_assert_cmpint (position, ==, i);
+      /* Shouldn't try to write to position pointer if NULL given */
+      g_assert_true (g_list_store_find (store, items[i], NULL));
+    }
+
+  /* try to find element not part of the list */
+  other_item = g_simple_action_new ("111", NULL);
+  g_assert_false (g_list_store_find (store, other_item, NULL));
+  g_clear_object (&other_item);
+
+  /* Re-add item; find() should only return the first position */
+  g_list_store_append (store, items[0]);
+  g_assert_true (g_list_store_find (store, items[0], &position));
+  g_assert_cmpint (position, ==, 0);
+
+  /* try to find element which should only work with custom equality check */
+  other_item = g_simple_action_new ("XXX", NULL);
+  g_assert_false (g_list_store_find (store, other_item, NULL));
+  g_assert_true (g_list_store_find_with_equal_func (store,
+                                                    other_item,
+                                                    list_model_casecmp_action_by_name,
+                                                    &position));
+  g_assert_cmpint (position, ==, 2);
+  g_clear_object (&other_item);
+
+  for (i = 0; i < G_N_ELEMENTS (item_strs); i++)
+    g_clear_object(&items[i]);
+  g_clear_object (&store);
+}
+
 int main (int argc, char *argv[])
 {
   g_test_init (&argc, &argv, NULL);
@@ -837,6 +903,7 @@ int main (int argc, char *argv[])
   g_test_add_func ("/glistmodel/store/items-changed",
                    test_store_signal_items_changed);
   g_test_add_func ("/glistmodel/store/past-end", test_store_past_end);
+  g_test_add_func ("/glistmodel/store/find", test_store_find);
 
   return g_test_run ();
 }
index 240fa8b..2ede210 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <glib/glib.h>
 #include <gio/gio.h>
+#include <errno.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <unistd.h>
@@ -115,6 +116,65 @@ static gboolean write_test;
 static gboolean verbose;
 static gboolean posix_compat;
 
+#ifdef G_OS_UNIX
+/*
+ * check_cap_dac_override:
+ * @tmpdir: A temporary directory in which we can create and delete files
+ *
+ * Check whether the current process can bypass DAC permissions.
+ *
+ * Traditionally, "privileged" processes (those with effective uid 0)
+ * could do this (and bypass many other checks), and "unprivileged"
+ * processes could not.
+ *
+ * In Linux, the special powers of euid 0 are divided into many
+ * capabilities: see `capabilities(7)`. The one we are interested in
+ * here is `CAP_DAC_OVERRIDE`.
+ *
+ * We do this generically instead of actually looking at the capability
+ * bits, so that the right thing will happen on non-Linux Unix
+ * implementations, in particular if they have something equivalent to
+ * but not identical to Linux permissions.
+ *
+ * Returns: %TRUE if we have Linux `CAP_DAC_OVERRIDE` or equivalent
+ *  privileges
+ */
+static gboolean
+check_cap_dac_override (const char *tmpdir)
+{
+  gchar *dac_denies_write;
+  gchar *inside;
+  gboolean have_cap;
+
+  dac_denies_write = g_build_filename (tmpdir, "dac-denies-write", NULL);
+  inside = g_build_filename (dac_denies_write, "inside", NULL);
+
+  g_assert_cmpint (mkdir (dac_denies_write, S_IRWXU) == 0 ? 0 : errno, ==, 0);
+  g_assert_cmpint (chmod (dac_denies_write, 0) == 0 ? 0 : errno, ==, 0);
+
+  if (mkdir (inside, S_IRWXU) == 0)
+    {
+      g_test_message ("Looks like we have CAP_DAC_OVERRIDE or equivalent");
+      g_assert_cmpint (rmdir (inside) == 0 ? 0 : errno, ==, 0);
+      have_cap = TRUE;
+    }
+  else
+    {
+      int saved_errno = errno;
+
+      g_test_message ("We do not have CAP_DAC_OVERRIDE or equivalent");
+      g_assert_cmpint (saved_errno, ==, EACCES);
+      have_cap = FALSE;
+    }
+
+  g_assert_cmpint (chmod (dac_denies_write, S_IRWXU) == 0 ? 0 : errno, ==, 0);
+  g_assert_cmpint (rmdir (dac_denies_write) == 0 ? 0 : errno, ==, 0);
+  g_free (dac_denies_write);
+  g_free (inside);
+  return have_cap;
+}
+#endif
+
 #ifdef G_HAVE_ISO_VARARGS
 #define log(...) if (verbose)  g_printerr (__VA_ARGS__)
 #elif defined(G_HAVE_GNUC_VARARGS)
@@ -138,12 +198,12 @@ create_empty_file (GFile * parent, const char *filename,
   GFileOutputStream *outs;
 
   child = g_file_get_child (parent, filename);
-  g_assert (child != NULL);
+  g_assert_nonnull (child);
 
   error = NULL;
   outs = g_file_replace (child, NULL, FALSE, create_flags, NULL, &error);
   g_assert_no_error (error);
-  g_assert (outs != NULL);
+  g_assert_nonnull (outs);
   error = NULL;
   g_output_stream_close (G_OUTPUT_STREAM (outs), NULL, &error);
   g_object_unref (outs);
@@ -158,10 +218,10 @@ create_empty_dir (GFile * parent, const char *filename)
   GError *error;
 
   child = g_file_get_child (parent, filename);
-  g_assert (child != NULL);
+  g_assert_nonnull (child);
   error = NULL;
   res = g_file_make_directory (child, NULL, &error);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
   g_assert_no_error (error);
   return child;
 }
@@ -174,10 +234,10 @@ create_symlink (GFile * parent, const char *filename, const char *points_to)
   GError *error;
 
   child = g_file_get_child (parent, filename);
-  g_assert (child != NULL);
+  g_assert_nonnull (child);
   error = NULL;
   res = g_file_make_symbolic_link (child, points_to, NULL, &error);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
   g_assert_no_error (error);
   return child;
 }
@@ -188,22 +248,22 @@ test_create_structure (gconstpointer test_data)
   GFile *root;
   GFile *child;
   gboolean res;
-  GError *error;
+  GError *error = NULL;
   GFileOutputStream *outs;
   GDataOutputStream *outds;
   guint i;
   struct StructureItem item;
 
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   log ("\n  Going to create testing structure in '%s'...\n",
        (char *) test_data);
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
 
   /*  create root directory  */
-  res = g_file_make_directory (root, NULL, NULL);
-  /*  don't care about errors here  */
+  g_file_make_directory (root, NULL, &error);
+  g_assert_no_error (error);
 
   /*  create any other items  */
   for (i = 0; i < G_N_ELEMENTS (sample_struct); i++)
@@ -237,17 +297,16 @@ test_create_structure (gconstpointer test_data)
        default:
          break;
        }
-      g_assert (child != NULL);
+      g_assert_nonnull (child);
 
       if ((item.mode > 0) && (posix_compat))
        {
-         error = NULL;
          res =
            g_file_set_attribute_uint32 (child, G_FILE_ATTRIBUTE_UNIX_MODE,
                                         item.mode,
                                         G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
                                         NULL, &error);
-         g_assert_cmpint (res, ==, TRUE);
+         g_assert_true (res);
          g_assert_no_error (error);
        }
 
@@ -275,24 +334,22 @@ test_create_structure (gconstpointer test_data)
   /*  create a pattern file  */
   log ("    Creating pattern file...");
   child = g_file_get_child (root, "pattern_file");
-  g_assert (child != NULL);
+  g_assert_nonnull (child);
 
-  error = NULL;
   outs =
     g_file_replace (child, NULL, FALSE, G_FILE_CREATE_NONE, NULL, &error);
   g_assert_no_error (error);
 
-  g_assert (outs != NULL);
+  g_assert_nonnull (outs);
   outds = g_data_output_stream_new (G_OUTPUT_STREAM (outs));
-  g_assert (outds != NULL);
+  g_assert_nonnull (outds);
   for (i = 0; i < PATTERN_FILE_SIZE; i++)
     {
-      error = NULL;
-      res = g_data_output_stream_put_byte (outds, i % 256, NULL, &error);
+      g_data_output_stream_put_byte (outds, i % 256, NULL, &error);
       g_assert_no_error (error);
     }
-  error = NULL;
-  res = g_output_stream_close (G_OUTPUT_STREAM (outs), NULL, &error);
+
+  g_output_stream_close (G_OUTPUT_STREAM (outs), NULL, &error);
   g_assert_no_error (error);
   g_object_unref (outds);
   g_object_unref (outs);
@@ -312,7 +369,7 @@ file_exists (GFile * parent, const char *filename, gboolean * result)
     *result = FALSE;
 
   child = g_file_get_child (parent, filename);
-  g_assert (child != NULL);
+  g_assert_nonnull (child);
   res = g_file_query_exists (child, NULL);
   if (result)
     *result = res;
@@ -334,7 +391,7 @@ test_attributes (struct StructureItem item, GFileInfo * info)
 
   /*  standard::type  */
   has_attr = g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_TYPE);
-  g_assert_cmpint (has_attr, ==, TRUE);
+  g_assert_true (has_attr);
   ftype = g_file_info_get_file_type (info);
   g_assert_cmpint (ftype, !=, G_FILE_TYPE_UNKNOWN);
   g_assert_cmpint (ftype, ==, item.file_type);
@@ -354,7 +411,7 @@ test_attributes (struct StructureItem item, GFileInfo * info)
       can_read =
        g_file_info_get_attribute_boolean (info,
                                           G_FILE_ATTRIBUTE_ACCESS_CAN_READ);
-      g_assert_cmpint (can_read, ==, TRUE);
+      g_assert_true (can_read);
     }
 
   /*  access::can-write  */
@@ -363,25 +420,25 @@ test_attributes (struct StructureItem item, GFileInfo * info)
       can_write =
        g_file_info_get_attribute_boolean (info,
                                           G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE);
-      g_assert_cmpint (can_write, ==, TRUE);
+      g_assert_true (can_write);
     }
 
   /*  standard::name  */
   name = g_file_info_get_name (info);
-  g_assert (name != NULL);
+  g_assert_nonnull (name);
 
   /*  standard::display-name  */
   display_name = g_file_info_get_display_name (info);
-  g_assert (display_name != NULL);
+  g_assert_nonnull (display_name);
   utf8_valid = g_utf8_validate (display_name, -1, NULL);
-  g_assert_cmpint (utf8_valid, ==, TRUE);
+  g_assert_true (utf8_valid);
 
   /*  standard::edit-name  */
   edit_name = g_file_info_get_edit_name (info);
   if (edit_name)
     {
       utf8_valid = g_utf8_validate (edit_name, -1, NULL);
-      g_assert_cmpint (utf8_valid, ==, TRUE);
+      g_assert_true (utf8_valid);
     }
 
   /*  standard::copy-name  */
@@ -391,7 +448,7 @@ test_attributes (struct StructureItem item, GFileInfo * info)
   if (copy_name)
     {
       utf8_valid = g_utf8_validate (copy_name, -1, NULL);
-      g_assert_cmpint (utf8_valid, ==, TRUE);
+      g_assert_true (utf8_valid);
     }
 
   /*  standard::is-symlink  */
@@ -415,7 +472,7 @@ test_attributes (struct StructureItem item, GFileInfo * info)
       is_hidden =
        g_file_info_get_attribute_boolean (info,
                                           G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN);
-      g_assert_cmpint (is_hidden, ==, TRUE);
+      g_assert_true (is_hidden);
     }
 
   /* unix::is-mountpoint */
@@ -443,14 +500,13 @@ test_initial_structure (gconstpointer test_data)
   gssize read, total_read;
   struct StructureItem item;
 
-
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   log ("\n  Testing sample structure in '%s'...\n", (char *) test_data);
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   res = g_file_query_exists (root, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   /*  test the structure  */
   for (i = 0; i < G_N_ELEMENTS (sample_struct); i++)
@@ -463,15 +519,15 @@ test_initial_structure (gconstpointer test_data)
       log ("    Testing file '%s'...\n", item.filename);
 
       child = file_exists (root, item.filename, &res);
-      g_assert (child != NULL);
-      g_assert_cmpint (res, ==, TRUE);
+      g_assert_nonnull (child);
+      g_assert_true (res);
 
       error = NULL;
       info =
        g_file_query_info (child, "*", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
                           NULL, &error);
       g_assert_no_error (error);
-      g_assert (info != NULL);
+      g_assert_nonnull (info);
 
       test_attributes (item, info);
 
@@ -482,22 +538,22 @@ test_initial_structure (gconstpointer test_data)
   /*  read and test the pattern file  */
   log ("    Testing pattern file...\n");
   child = file_exists (root, "pattern_file", &res);
-  g_assert (child != NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_nonnull (child);
+  g_assert_true (res);
 
   error = NULL;
   info =
     g_file_query_info (child, "*", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL,
                       &error);
   g_assert_no_error (error);
-  g_assert (info != NULL);
+  g_assert_nonnull (info);
   size = g_file_info_get_size (info);
   g_assert_cmpint (size, ==, PATTERN_FILE_SIZE);
   g_object_unref (info);
 
   error = NULL;
   ins = g_file_read (child, NULL, &error);
-  g_assert (ins != NULL);
+  g_assert_nonnull (ins);
   g_assert_no_error (error);
 
   buffer = g_malloc (PATTERN_FILE_SIZE);
@@ -519,7 +575,7 @@ test_initial_structure (gconstpointer test_data)
   error = NULL;
   res = g_input_stream_close (G_INPUT_STREAM (ins), NULL, &error);
   g_assert_no_error (error);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   for (i = 0; i < PATTERN_FILE_SIZE; i++)
     g_assert_cmpint (*(buffer + i), ==, i % 256);
@@ -542,26 +598,26 @@ traverse_recurse_dirs (GFile * parent, GFile * root)
   guint i;
   gboolean found;
 
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
 
   error = NULL;
   enumerator =
     g_file_enumerate_children (parent, "*",
                               G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL,
                               &error);
-  g_assert (enumerator != NULL);
+  g_assert_nonnull (enumerator);
   g_assert_no_error (error);
 
-  g_assert (g_file_enumerator_get_container (enumerator) == parent);
+  g_assert_true (g_file_enumerator_get_container (enumerator) == parent);
 
   error = NULL;
   info = g_file_enumerator_next_file (enumerator, NULL, &error);
   while ((info) && (!error))
     {
       descend = g_file_enumerator_get_child (enumerator, info);
-      g_assert (descend != NULL);
+      g_assert_nonnull (descend);
       relative_path = g_file_get_relative_path (root, descend);
-      g_assert (relative_path != NULL);
+      g_assert_nonnull (relative_path);
 
       found = FALSE;
       for (i = 0; i < G_N_ELEMENTS (sample_struct); i++)
@@ -575,7 +631,7 @@ traverse_recurse_dirs (GFile * parent, GFile * root)
              break;
            }
        }
-      g_assert_cmpint (found, ==, TRUE);
+      g_assert_true (found);
 
       log ("  Found file %s, relative to root: %s\n",
           g_file_info_get_display_name (info), relative_path);
@@ -594,9 +650,9 @@ traverse_recurse_dirs (GFile * parent, GFile * root)
 
   error = NULL;
   res = g_file_enumerator_close (enumerator, NULL, &error);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
   g_assert_no_error (error);
-  g_assert (g_file_enumerator_is_closed (enumerator));
+  g_assert_true (g_file_enumerator_is_closed (enumerator));
 
   g_object_unref (enumerator);
 }
@@ -607,14 +663,14 @@ test_traverse_structure (gconstpointer test_data)
   GFile *root;
   gboolean res;
 
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   log ("\n  Traversing through the sample structure in '%s'...\n",
        (char *) test_data);
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   res = g_file_query_exists (root, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   traverse_recurse_dirs (root, root);
 
@@ -636,13 +692,13 @@ test_enumerate (gconstpointer test_data)
   struct StructureItem item;
 
 
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   log ("\n  Test enumerate '%s'...\n", (char *) test_data);
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   res = g_file_query_exists (root, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
 
   for (i = 0; i < G_N_ELEMENTS (sample_struct); i++)
@@ -659,7 +715,7 @@ test_enumerate (gconstpointer test_data)
        {
          log ("    Testing file '%s'\n", item.filename);
          child = g_file_get_child (root, item.filename);
-         g_assert (child != NULL);
+         g_assert_nonnull (child);
          error = NULL;
          enumerator =
            g_file_enumerate_children (child, "*",
@@ -668,21 +724,21 @@ test_enumerate (gconstpointer test_data)
 
          if ((item.extra_flags & TEST_NOT_EXISTS) == TEST_NOT_EXISTS)
            {
-             g_assert (enumerator == NULL);
+             g_assert_null (enumerator);
              g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND);
            }
          if ((item.extra_flags & TEST_ENUMERATE_FILE) == TEST_ENUMERATE_FILE)
            {
-             g_assert (enumerator == NULL);
+             g_assert_null (enumerator);
              g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_DIRECTORY);
            }
          if ((item.extra_flags & TEST_NO_ACCESS) == TEST_NO_ACCESS)
            {
-             g_assert (enumerator != NULL);
+             g_assert_nonnull (enumerator);
 
              error = NULL;
              info = g_file_enumerator_next_file (enumerator, NULL, &error);
-             g_assert (info == NULL);
+             g_assert_null (info);
              g_assert_no_error (error);
              /*  no items should be found, no error should be logged  */
            }
@@ -694,7 +750,7 @@ test_enumerate (gconstpointer test_data)
            {
              error = NULL;
              res = g_file_enumerator_close (enumerator, NULL, &error);
-             g_assert_cmpint (res, ==, TRUE);
+             g_assert_true (res);
              g_assert_no_error (error);
 
               g_object_unref (enumerator);
@@ -712,15 +768,18 @@ do_copy_move (GFile * root, struct StructureItem item, const char *target_dir,
   GFile *dst_dir, *src_file, *dst_file;
   gboolean res;
   GError *error;
+#ifdef G_OS_UNIX
+  gboolean have_cap_dac_override = check_cap_dac_override (g_file_peek_path (root));
+#endif
 
   log ("    do_copy_move: '%s' --> '%s'\n", item.filename, target_dir);
 
   dst_dir = g_file_get_child (root, target_dir);
-  g_assert (dst_dir != NULL);
+  g_assert_nonnull (dst_dir);
   src_file = g_file_get_child (root, item.filename);
-  g_assert (src_file != NULL);
+  g_assert_nonnull (src_file);
   dst_file = g_file_get_child (dst_dir, item.filename);
-  g_assert (dst_file != NULL);
+  g_assert_nonnull (dst_file);
 
   error = NULL;
   if ((item.extra_flags & TEST_COPY) == TEST_COPY)
@@ -743,28 +802,28 @@ do_copy_move (GFile * root, struct StructureItem item, const char *target_dir,
   if (((item.extra_flags & TEST_NOT_EXISTS) != TEST_NOT_EXISTS) &&
       (extra_flags == TEST_ALREADY_EXISTS))
     {
-      g_assert_cmpint (res, ==, FALSE);
+      g_assert_false (res);
       g_assert_error (error, G_IO_ERROR, G_IO_ERROR_EXISTS);
     }
   /*  target file is a file, overwrite is not set  */
   else if (((item.extra_flags & TEST_NOT_EXISTS) != TEST_NOT_EXISTS) &&
           (extra_flags == TEST_TARGET_IS_FILE))
     {
-      g_assert_cmpint (res, ==, FALSE);
+      g_assert_false (res);
       g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_DIRECTORY);
     }
   /*  source file is directory  */
   else if ((item.extra_flags & TEST_COPY_ERROR_RECURSE) ==
           TEST_COPY_ERROR_RECURSE)
     {
-      g_assert_cmpint (res, ==, FALSE);
+      g_assert_false (res);
       g_assert_error (error, G_IO_ERROR, G_IO_ERROR_WOULD_RECURSE);
     }
   /*  source or target path doesn't exist  */
   else if (((item.extra_flags & TEST_NOT_EXISTS) == TEST_NOT_EXISTS) ||
           (extra_flags == TEST_NOT_EXISTS))
     {
-      g_assert_cmpint (res, ==, FALSE);
+      g_assert_false (res);
       g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND);
     }
   /*  source or target path permission denied  */
@@ -772,21 +831,26 @@ do_copy_move (GFile * root, struct StructureItem item, const char *target_dir,
           (extra_flags == TEST_NO_ACCESS))
     {
       /* This works for root, see bug #552912 */
-      if (test_suite && getuid () == 0)
+#ifdef G_OS_UNIX
+      if (have_cap_dac_override)
        {
-         g_assert_cmpint (res, ==, TRUE);
+         g_test_message ("Unable to exercise g_file_copy() or g_file_move() "
+                         "failing with EACCES: we probably have "
+                         "CAP_DAC_OVERRIDE");
+         g_assert_true (res);
          g_assert_no_error (error);
        }
       else
+#endif
        {
-         g_assert_cmpint (res, ==, FALSE);
+         g_assert_false (res);
          g_assert_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED);
        }
     }
   /*  no error should be found, all exceptions defined above  */
   else
     {
-      g_assert_cmpint (res, ==, TRUE);
+      g_assert_true (res);
       g_assert_no_error (error);
     }
 
@@ -809,11 +873,11 @@ test_copy_move (gconstpointer test_data)
 
   log ("\n");
 
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   res = g_file_query_exists (root, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
 
   for (i = 0; i < G_N_ELEMENTS (sample_struct); i++)
@@ -899,13 +963,13 @@ test_create (gconstpointer test_data)
   struct StructureItem item;
   GFileOutputStream *os;
 
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   log ("\n");
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   res = g_file_query_exists (root, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   for (i = 0; i < G_N_ELEMENTS (sample_struct); i++)
     {
@@ -918,7 +982,7 @@ test_create (gconstpointer test_data)
          log ("  test_create: '%s'\n", item.filename);
 
          child = g_file_get_child (root, item.filename);
-         g_assert (child != NULL);
+         g_assert_nonnull (child);
          error = NULL;
          os = NULL;
 
@@ -938,12 +1002,12 @@ test_create (gconstpointer test_data)
          if (((item.extra_flags & TEST_NOT_EXISTS) == 0) &&
              ((item.extra_flags & TEST_CREATE) == TEST_CREATE))
            {
-             g_assert (os == NULL);
+             g_assert_null (os);
              g_assert_error (error, G_IO_ERROR, G_IO_ERROR_EXISTS);
            }
          else if (item.file_type == G_FILE_TYPE_DIRECTORY)
            {
-             g_assert (os == NULL);
+             g_assert_null (os);
              if ((item.extra_flags & TEST_CREATE) == TEST_CREATE)
                g_assert_error (error, G_IO_ERROR, G_IO_ERROR_EXISTS);
              else
@@ -951,7 +1015,7 @@ test_create (gconstpointer test_data)
            }
          else
            {
-             g_assert (os != NULL);
+             g_assert_nonnull (os);
              g_assert_no_error (error);
            }
 
@@ -966,7 +1030,7 @@ test_create (gconstpointer test_data)
              if (error)
                log ("         g_output_stream_close: error %d = %s\n",
                     error->code, error->message);
-             g_assert_cmpint (res, ==, TRUE);
+             g_assert_true (res);
              g_assert_no_error (error);
               g_object_unref (os);
            }
@@ -986,13 +1050,13 @@ test_open (gconstpointer test_data)
   struct StructureItem item;
   GFileInputStream *input_stream;
 
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   log ("\n");
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   res = g_file_query_exists (root, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   for (i = 0; i < G_N_ELEMENTS (sample_struct); i++)
     {
@@ -1006,7 +1070,7 @@ test_open (gconstpointer test_data)
          log ("  test_open: '%s'\n", item.filename);
 
          child = g_file_get_child (root, item.filename);
-         g_assert (child != NULL);
+         g_assert_nonnull (child);
          error = NULL;
          input_stream = g_file_read (child, NULL, &error);
 
@@ -1014,17 +1078,17 @@ test_open (gconstpointer test_data)
              ((item.extra_flags & TEST_INVALID_SYMLINK) ==
               TEST_INVALID_SYMLINK))
            {
-             g_assert (input_stream == NULL);
+             g_assert_null (input_stream);
              g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND);
            }
          else if (item.file_type == G_FILE_TYPE_DIRECTORY)
            {
-             g_assert (input_stream == NULL);
+             g_assert_null (input_stream);
              g_assert_error (error, G_IO_ERROR, G_IO_ERROR_IS_DIRECTORY);
            }
          else
            {
-             g_assert (input_stream != NULL);
+             g_assert_nonnull (input_stream);
              g_assert_no_error (error);
            }
 
@@ -1037,7 +1101,7 @@ test_open (gconstpointer test_data)
              res =
                g_input_stream_close (G_INPUT_STREAM (input_stream), NULL,
                                      &error);
-             g_assert_cmpint (res, ==, TRUE);
+             g_assert_true (res);
              g_assert_no_error (error);
               g_object_unref (input_stream);
            }
@@ -1058,13 +1122,13 @@ test_delete (gconstpointer test_data)
   struct StructureItem item;
   gchar *path;
 
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   log ("\n");
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   res = g_file_query_exists (root, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   for (i = 0; i < G_N_ELEMENTS (sample_struct); i++)
     {
@@ -1077,7 +1141,7 @@ test_delete (gconstpointer test_data)
          ((item.extra_flags & TEST_DELETE_TRASH) == TEST_DELETE_TRASH))
        {
          child = file_exists (root, item.filename, &res);
-         g_assert (child != NULL);
+         g_assert_nonnull (child);
          /*  we don't care about result here  */
 
           path = g_file_get_path (child);
@@ -1093,17 +1157,17 @@ test_delete (gconstpointer test_data)
          if ((item.extra_flags & TEST_DELETE_NON_EMPTY) ==
              TEST_DELETE_NON_EMPTY)
            {
-             g_assert_cmpint (res, ==, FALSE);
+             g_assert_false (res);
              g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_EMPTY);
            }
          if ((item.extra_flags & TEST_DELETE_FAILURE) == TEST_DELETE_FAILURE)
            {
-             g_assert_cmpint (res, ==, FALSE);
+             g_assert_false (res);
              g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND);
            }
          if ((item.extra_flags & TEST_NOT_EXISTS) == TEST_NOT_EXISTS)
            {
-             g_assert_cmpint (res, ==, FALSE);
+             g_assert_false (res);
              g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND);
            }
 
@@ -1125,13 +1189,16 @@ test_make_directory_with_parents (gconstpointer test_data)
   GFile *root, *child, *grandchild, *greatgrandchild;
   gboolean res;
   GError *error = NULL;
+#ifdef G_OS_UNIX
+  gboolean have_cap_dac_override = check_cap_dac_override (test_data);
+#endif
 
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   res = g_file_query_exists (root, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   child = g_file_get_child (root, "a");
   grandchild = g_file_get_child (child, "b");
@@ -1141,27 +1208,27 @@ test_make_directory_with_parents (gconstpointer test_data)
    * depth 1, 2, or 3
    */
   res = g_file_make_directory_with_parents (child, NULL, &error);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
   g_assert_no_error (error);
   res = g_file_query_exists (child, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   g_file_delete (child, NULL, NULL);
 
   res = g_file_make_directory_with_parents (grandchild, NULL, &error);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
   g_assert_no_error (error);
   res = g_file_query_exists (grandchild, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   g_file_delete (grandchild, NULL, NULL);
   g_file_delete (child, NULL, NULL);
 
   res = g_file_make_directory_with_parents (greatgrandchild, NULL, &error);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
   g_assert_no_error (error);
   res = g_file_query_exists (greatgrandchild, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   g_file_delete (greatgrandchild, NULL, NULL);
   g_file_delete (grandchild, NULL, NULL);
@@ -1175,28 +1242,35 @@ test_make_directory_with_parents (gconstpointer test_data)
   if (!posix_compat)
     goto out;
 
-#ifndef G_PLATFORM_WIN32
-  if (getuid() == 0) /* permissions are ignored for root */
-    goto out;
+#ifdef G_OS_UNIX
+  /* Permissions are ignored if we have CAP_DAC_OVERRIDE or equivalent,
+   * and in particular if we're root */
+  if (have_cap_dac_override)
+    {
+      g_test_skip ("Unable to exercise g_file_make_directory_with_parents "
+                   "failing with EACCES: we probably have "
+                   "CAP_DAC_OVERRIDE");
+      goto out;
+    }
 #endif
 
   g_file_make_directory (child, NULL, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   res = g_file_set_attribute_uint32 (child,
                                      G_FILE_ATTRIBUTE_UNIX_MODE,
                                      S_IRUSR + S_IXUSR, /* -r-x------ */
                                      G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
                                      NULL, NULL);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
 
   res = g_file_make_directory_with_parents (grandchild, NULL, &error);
-  g_assert_cmpint (res, ==, FALSE);
+  g_assert_false (res);
   g_assert_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED);
   g_clear_error (&error);
 
   res = g_file_make_directory_with_parents (greatgrandchild, NULL, &error);
-  g_assert_cmpint (res, ==, FALSE);
+  g_assert_false (res);
   g_assert_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED);
   g_clear_error (&error);
 
@@ -1218,7 +1292,7 @@ cleanup_dir_recurse (GFile *parent, GFile *root)
   GFile *descend;
   char *relative_path;
 
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
 
   enumerator =
     g_file_enumerate_children (parent, "*",
@@ -1232,9 +1306,9 @@ cleanup_dir_recurse (GFile *parent, GFile *root)
   while ((info) && (!error))
     {
       descend = g_file_enumerator_get_child (enumerator, info);
-      g_assert (descend != NULL);
+      g_assert_nonnull (descend);
       relative_path = g_file_get_relative_path (root, descend);
-      g_assert (relative_path != NULL);
+      g_assert_nonnull (relative_path);
       g_free (relative_path);
 
       log ("    deleting '%s'\n", g_file_info_get_display_name (info));
@@ -1244,7 +1318,7 @@ cleanup_dir_recurse (GFile *parent, GFile *root)
       
       error = NULL;
       res = g_file_delete (descend, NULL, &error);
-      g_assert_cmpint (res, ==, TRUE);
+      g_assert_true (res);
 
       g_object_unref (descend);
       error = NULL;
@@ -1256,7 +1330,7 @@ cleanup_dir_recurse (GFile *parent, GFile *root)
 
   error = NULL;
   res = g_file_enumerator_close (enumerator, NULL, &error);
-  g_assert_cmpint (res, ==, TRUE);
+  g_assert_true (res);
   g_assert_no_error (error);
 
   g_object_unref (enumerator);
@@ -1267,12 +1341,12 @@ prep_clean_structure (gconstpointer test_data)
 {
   GFile *root;
   
-  g_assert (test_data != NULL);
+  g_assert_nonnull (test_data);
   log ("\n  Cleaning target testing structure in '%s'...\n",
        (char *) test_data);
 
   root = g_file_new_for_commandline_arg ((char *) test_data);
-  g_assert (root != NULL);
+  g_assert_nonnull (root);
   
   cleanup_dir_recurse (root, root);
 
@@ -1347,7 +1421,7 @@ main (int argc, char *argv[])
     }
 
   g_option_context_free (context);
-  
+
   /*  Write test - clean target directory first  */
   /*    this can be also considered as a test - enumerate + delete  */ 
   if (write_test || only_create_struct)
diff --git a/gio/tests/memory-monitor-dbus.py.in b/gio/tests/memory-monitor-dbus.py.in
new file mode 100755 (executable)
index 0000000..cd16cf4
--- /dev/null
@@ -0,0 +1,111 @@
+#!/usr/bin/python3
+
+# This program 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 3 of the License, or (at your option) any
+# later version.  See http://www.gnu.org/copyleft/lgpl.html for the full text
+# of the license.
+
+__author__ = 'Bastien Nocera'
+__email__ = 'hadess@hadess.net'
+__copyright__ = '(c) 2019 Red Hat Inc.'
+__license__ = 'LGPL 3+'
+
+import unittest
+import sys
+import subprocess
+import fcntl
+import os
+import time
+
+import taptestrunner
+
+try:
+    # Do all non-standard imports here so we can skip the tests if any
+    # needed packages are not available.
+    import dbus
+    import dbus.mainloop.glib
+    import dbusmock
+    from gi.repository import GLib
+    from gi.repository import Gio
+
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+    # XDG_DESKTOP_PORTAL_PATH = os.path.expanduser("~/.cache/jhbuild/build/xdg-desktop-portal/xdg-desktop-portal")
+    XDG_DESKTOP_PORTAL_PATH = "@libexecdir@/xdg-desktop-portal"
+
+    class TestLowMemoryMonitor(dbusmock.DBusTestCase):
+        '''Test GMemoryMonitorDBus'''
+
+        @classmethod
+        def setUpClass(klass):
+            klass.start_system_bus()
+            klass.dbus_con = klass.get_dbus(True)
+
+        def setUp(self):
+            try:
+                Gio.MemoryMonitor
+            except AttributeError:
+                raise unittest.SkipTest('Low memory monitor not in '
+                                        'introspection data. Requires '
+                                        'GObject-Introspection ≥ 1.63.2')
+            try:
+                (self.p_mock, self.obj_lmm) = self.spawn_server_template(
+                    'low_memory_monitor', {}, stdout=subprocess.PIPE)
+            except ModuleNotFoundError:
+                raise unittest.SkipTest("Low memory monitor dbusmock template not "
+                                        "found. Requires dbusmock ≥ 0.18.4.")
+            # set log to nonblocking
+            flags = fcntl.fcntl(self.p_mock.stdout, fcntl.F_GETFL)
+            fcntl.fcntl(self.p_mock.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)
+            self.last_warning = -1
+            self.dbusmock = dbus.Interface(self.obj_lmm, dbusmock.MOCK_IFACE)
+            self.memory_monitor = Gio.MemoryMonitor.dup_default()
+            self.memory_monitor.connect("low-memory-warning", self.memory_warning_cb)
+            self.mainloop = GLib.MainLoop()
+            self.main_context = self.mainloop.get_context()
+
+        def tearDown(self):
+            self.p_mock.terminate()
+            self.p_mock.wait()
+
+        def memory_warning_cb(self, monitor, level):
+            self.last_warning = level
+            self.main_context.wakeup()
+
+        def test_low_memory_warning_signal(self):
+            '''LowMemoryWarning signal'''
+
+            # Wait 2 seconds
+            timeout = 2
+            while timeout > 0:
+                time.sleep(0.5)
+                timeout -= 0.5
+                self.main_context.iteration(False)
+
+            self.dbusmock.EmitWarning(100)
+            # Wait 2 seconds or until warning
+            timeout = 2
+            while timeout > 0 and self.last_warning != 100:
+                time.sleep(0.5)
+                timeout -= 0.5
+                self.main_context.iteration(False)
+            self.assertEqual(self.last_warning, 100)
+
+            self.dbusmock.EmitWarning(255)
+            # Wait 2 seconds or until warning
+            timeout = 2
+            while timeout > 0 and self.last_warning != 255:
+                time.sleep(0.5)
+                timeout -= 0.5
+                self.main_context.iteration(False)
+            self.assertEqual(self.last_warning, 255)
+
+except ImportError as e:
+    @unittest.skip("Cannot import %s" % e.name)
+    class TestLowMemoryMonitor(unittest.TestCase):
+        def test_low_memory_warning_signal(self):
+            pass
+
+if __name__ == '__main__':
+    unittest.main(testRunner=taptestrunner.TAPTestRunner())
diff --git a/gio/tests/memory-monitor-portal.py.in b/gio/tests/memory-monitor-portal.py.in
new file mode 100755 (executable)
index 0000000..cb4a960
--- /dev/null
@@ -0,0 +1,127 @@
+#!/usr/bin/python3
+
+# This program 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 3 of the License, or (at your option) any
+# later version.  See http://www.gnu.org/copyleft/lgpl.html for the full text
+# of the license.
+
+__author__ = 'Bastien Nocera'
+__email__ = 'hadess@hadess.net'
+__copyright__ = '(c) 2019 Red Hat Inc.'
+__license__ = 'LGPL 3+'
+
+import unittest
+import sys
+import subprocess
+import fcntl
+import os
+import time
+
+import taptestrunner
+
+try:
+    # Do all non-standard imports here so we can skip the tests if any
+    # needed packages are not available.
+    import dbus
+    import dbus.mainloop.glib
+    import dbusmock
+    from gi.repository import GLib
+    from gi.repository import Gio
+
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+    # XDG_DESKTOP_PORTAL_PATH = os.path.expanduser("~/.cache/jhbuild/build/xdg-desktop-portal/xdg-desktop-portal")
+    XDG_DESKTOP_PORTAL_PATH = "@libexecdir@/xdg-desktop-portal"
+
+    class TestLowMemoryMonitorPortal(dbusmock.DBusTestCase):
+        '''Test GMemoryMonitorPortal'''
+
+        @classmethod
+        def setUpClass(klass):
+            klass.start_system_bus()
+            klass.dbus_con = klass.get_dbus(True)
+            # Start session bus so that xdg-desktop-portal can run on it
+            klass.start_session_bus()
+
+        def setUp(self):
+            try:
+                Gio.MemoryMonitor
+            except AttributeError:
+                raise unittest.SkipTest('Low memory monitor not in '
+                                        'introspection data. Requires '
+                                        'GObject-Introspection ≥ 1.63.2')
+            try:
+                (self.p_mock, self.obj_lmm) = self.spawn_server_template(
+                    'low_memory_monitor', {}, stdout=subprocess.PIPE)
+            except ModuleNotFoundError:
+                raise unittest.SkipTest("Low memory monitor dbusmock template not "
+                                        "found. Requires dbusmock ≥ 0.18.4.")
+            # set log to nonblocking
+            flags = fcntl.fcntl(self.p_mock.stdout, fcntl.F_GETFL)
+            fcntl.fcntl(self.p_mock.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)
+            self.last_warning = -1
+            self.dbusmock = dbus.Interface(self.obj_lmm, dbusmock.MOCK_IFACE)
+            try:
+                self.xdp = subprocess.Popen([XDG_DESKTOP_PORTAL_PATH])
+            except FileNotFoundError:
+                raise unittest.SkipTest("xdg-desktop-portal not available")
+
+            try:
+                self.wait_for_bus_object('org.freedesktop.portal.Desktop',
+                                        '/org/freedesktop/portal/desktop')
+            except:
+                raise
+            # subprocess.Popen(['gdbus', 'monitor', '--session', '--dest', 'org.freedesktop.portal.Desktop'])
+
+            os.environ['GTK_USE_PORTAL'] = "1"
+            self.memory_monitor = Gio.MemoryMonitor.dup_default()
+            assert("GMemoryMonitorPortal" in str(self.memory_monitor))
+            self.memory_monitor.connect("low-memory-warning", self.portal_memory_warning_cb)
+            self.mainloop = GLib.MainLoop()
+            self.main_context = self.mainloop.get_context()
+
+        def tearDown(self):
+            self.p_mock.terminate()
+            self.p_mock.wait()
+
+        def portal_memory_warning_cb(self, monitor, level):
+            self.last_warning = level
+            self.main_context.wakeup()
+
+        def test_low_memory_warning_portal_signal(self):
+            '''LowMemoryWarning signal'''
+
+            # Wait 2 seconds
+            timeout = 2
+            while timeout > 0:
+                time.sleep(0.5)
+                timeout -= 0.5
+                self.main_context.iteration(False)
+
+            self.dbusmock.EmitWarning(100)
+            # Wait 2 seconds or until warning
+            timeout = 2
+            while timeout > 0 and self.last_warning != 100:
+                time.sleep(0.5)
+                timeout -= 0.5
+                self.main_context.iteration(False)
+            self.assertEqual(self.last_warning, 100)
+
+            self.dbusmock.EmitWarning(255)
+            # Wait 2 seconds or until warning
+            timeout = 2
+            while timeout > 0 and self.last_warning != 255:
+                time.sleep(0.5)
+                timeout -= 0.5
+                self.main_context.iteration(False)
+            self.assertEqual(self.last_warning, 255)
+
+except ImportError as e:
+    @unittest.skip("Cannot import %s" % e.name)
+    class TestLowMemoryMonitorPortal(unittest.TestCase):
+        def test_low_memory_warning_portal_signal(self):
+            pass
+
+if __name__ == '__main__':
+    unittest.main(testRunner=taptestrunner.TAPTestRunner())
diff --git a/gio/tests/memory-monitor.c b/gio/tests/memory-monitor.c
new file mode 100644 (file)
index 0000000..06eabef
--- /dev/null
@@ -0,0 +1,88 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2019 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gio/gio.h>
+
+static const char *
+get_level_string (GMemoryMonitorWarningLevel level)
+{
+  GEnumClass *eclass;
+  GEnumValue *value;
+
+  eclass = G_ENUM_CLASS (g_type_class_peek (G_TYPE_MEMORY_MONITOR_WARNING_LEVEL));
+  value = g_enum_get_value (eclass, level);
+
+  if (value == NULL)
+    return "unknown";
+
+  return value->value_nick;
+}
+
+static void
+test_dup_default (void)
+{
+  GMemoryMonitor *monitor;
+
+  monitor = g_memory_monitor_dup_default ();
+  g_assert_nonnull (monitor);
+  g_object_unref (monitor);
+}
+
+static void
+warning_cb (GMemoryMonitor *m,
+           GMemoryMonitorWarningLevel level)
+{
+  const char *str;
+
+  str = get_level_string (level);
+  g_debug ("Warning level: %s (%d)", str , level);
+}
+
+static void
+do_watch_memory (void)
+{
+  GMemoryMonitor *m;
+  GMainLoop *loop;
+
+  m = g_memory_monitor_dup_default ();
+  g_signal_connect (G_OBJECT (m), "low-memory-warning",
+                   G_CALLBACK (warning_cb), NULL);
+
+  loop = g_main_loop_new (NULL, TRUE);
+  g_main_loop_run (loop);
+}
+
+int
+main (int argc, char **argv)
+{
+  int ret;
+
+  if (argc == 2 && !strcmp (argv[1], "--watch"))
+    {
+      do_watch_memory ();
+      return 0;
+    }
+
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/memory-monitor/default", test_dup_default);
+
+  ret = g_test_run ();
+
+  return ret;
+}
index 382dfcc..48891b0 100644 (file)
@@ -7,7 +7,6 @@ common_gio_tests_deps = [
 
 test_c_args = [
   '-DG_LOG_DOMAIN="GLib-GIO"',
-  '-DTEST_SERVICES="@0@/gio/tests/services"'.format(meson.build_root()),
   '-DGLIB_MKENUMS="@0@"'.format(glib_mkenums),
   '-DGLIB_COMPILE_SCHEMAS="@0@"'.format(glib_compile_schemas.full_path()),
   '-UG_DISABLE_ASSERT',
@@ -53,6 +52,7 @@ gio_tests = {
   'inet-address' : {},
   'io-stream' : {},
   'memory-input-stream' : {},
+  'memory-monitor' : {},
   'memory-output-stream' : {},
   'mount-operation' : {},
   'network-address' : {'extra_sources': ['mock-resolver.c']},
@@ -79,6 +79,7 @@ gio_tests = {
   'tls-interaction' : {'extra_sources' : ['gtesttlsbackend.c']},
   'tls-database' : {'extra_sources' : ['gtesttlsbackend.c']},
   'gdbus-address-get-session' : {},
+  'win32-appinfo' : {},
 }
 
 test_extra_programs = {
@@ -87,11 +88,14 @@ test_extra_programs = {
   'gsubprocess-testprog' : {},
 }
 
+python_tests = [
+  'codegen.py',
+]
+
 test_env = environment()
 test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
 test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
 test_env.set('GIO_MODULE_DIR', '')
-test_env.set('GIO_LAUNCH_DESKTOP', meson.build_root() + '/gio/gio-launch-desktop')
 
 # Check for libdbus1 - Optional - is only used in the GDBus test cases
 # 1.2.14 required for dbus_message_set_serial
@@ -115,7 +119,15 @@ if dbus1_dep.found()
     'gdbus-serialization' : {
       'extra_sources' : ['gdbus-tests.c'],
       'dependencies' : [dbus1_dep],
-    }
+    },
+    'gdbus-server-auth' : {
+      'dependencies' : [dbus1_dep],
+    },
+  }
+else
+  # We can build a cut-down version of this test without libdbus
+  gio_tests += {
+    'gdbus-server-auth' : {},
   }
 endif
 
@@ -218,7 +230,23 @@ if host_machine.system() != 'windows'
                    '--generate-docbook', 'gdbus-test-codegen-generated-doc',
                    annotate_args,
                    '@INPUT@'])
-
+    # Generate gdbus-test-codegen-generated-min-required-2-64.{c,h}
+    gdbus_test_codegen_generated_min_required_2_64 = custom_target('gdbus-test-codegen-generated-min-required-2-64',
+        input :   ['test-codegen.xml'],
+        output :  ['gdbus-test-codegen-generated-min-required-2-64.h',
+                   'gdbus-test-codegen-generated-min-required-2-64.c'],
+        depend_files : gdbus_codegen_built_files,
+        command : [python, gdbus_codegen,
+                   '--glib-min-required', '2.64',
+                   '--interface-prefix', 'org.project.',
+                   '--output-directory', '@OUTDIR@',
+                   '--generate-c-code', 'gdbus-test-codegen-generated-min-required-2-64',
+                   '--c-generate-object-manager',
+                   '--c-generate-autocleanup', 'all',
+                   '--c-namespace', 'Foo_iGen',
+                   '--generate-docbook', 'gdbus-test-codegen-generated-doc',
+                   annotate_args,
+                   '@INPUT@'])
     gdbus_test_codegen_generated_interface_info = [
       custom_target('gdbus-test-codegen-generated-interface-info-h',
           input :   ['test-codegen.xml'],
@@ -270,10 +298,11 @@ if host_machine.system() != 'windows'
       'gdbus-proxy-well-known-name' : {'extra_sources' : extra_sources},
       'gdbus-test-codegen' : {
         'extra_sources' : [extra_sources, gdbus_test_codegen_generated, gdbus_test_codegen_generated_interface_info],
+        'c_args' : ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_32'],
       },
       'gdbus-threading' : {
         'extra_sources' : extra_sources,
-        'suite' : ['slow', 'flaky'],
+        'suite' : ['slow'],
       },
       'gmenumodel' : {
         'extra_sources' : extra_sources,
@@ -288,6 +317,11 @@ if host_machine.system() != 'windows'
         'c_args' : ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36',
                     '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36'],
       },
+      'gdbus-test-codegen-min-required-2-64' : {
+        'source' : 'gdbus-test-codegen.c',
+        'extra_sources' : [extra_sources, gdbus_test_codegen_generated_min_required_2_64, gdbus_test_codegen_generated_interface_info],
+        'c_args' : ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_64'],
+      },
       'gapplication' : {'extra_sources' : extra_sources},
     }
 
@@ -298,6 +332,24 @@ if host_machine.system() != 'windows'
         },
       }
     endif
+
+    fake_document_portal_generated = custom_target('fake-document-portal-generated',
+        input :   ['../org.freedesktop.portal.Documents.xml'],
+        output :  ['fake-document-portal-generated.h',
+                   'fake-document-portal-generated.c'],
+        depend_files : gdbus_codegen_built_files,
+        command : [python, gdbus_codegen,
+                   '--interface-prefix', 'org.freedesktop.portal.',
+                   '--output-directory', '@OUTDIR@',
+                   '--generate-c-code', 'fake-document-portal-generated',
+                   '--c-namespace', 'Fake',
+                   '@INPUT@'])
+
+    test_extra_programs += {
+      'fake-document-portal' : {
+        'extra_sources': fake_document_portal_generated,
+      },
+    }
   endif # have_dbus_daemon
 
   # This test is currently unreliable
@@ -378,6 +430,11 @@ test_extra_programs += {
   },
 }
 
+gdbus_example_objectmanager_sources = files(
+  'gdbus-example-objectmanager-client.c',
+  'gdbus-example-objectmanager-server.c',
+)
+
 if cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl'
   test_extra_programs += {
     # These three are manual-run tests because they need a session bus but don't bring one up themselves
@@ -444,6 +501,7 @@ if installed_tests_enabled
     'appinfo-test-static.desktop',
     'file.c',
     'org.gtk.test.dbusappinfo.desktop',
+    'org.gtk.test.dbusappinfo.flatpak.desktop',
     'test1.overlay',
     install_dir : installed_tests_execdir,
   )
@@ -463,6 +521,32 @@ if installed_tests_enabled
   )
   install_subdir('static-link', install_dir : installed_tests_execdir)
   install_data('static-link.py', install_dir : installed_tests_execdir)
+
+  memory_monitor_tests = [
+    'memory-monitor-dbus',
+    'memory-monitor-portal',
+  ]
+
+  foreach memory_monitor_test : memory_monitor_tests
+    cdata = configuration_data()
+    cdata.set('installed_tests_dir', installed_tests_execdir)
+    cdata.set('program', memory_monitor_test + '.py')
+    cdata.set('env', '')
+    configure_file(
+      input: installed_tests_template_tap,
+      output: memory_monitor_test + '.test',
+      install_dir: installed_tests_metadir,
+      configuration: cdata
+    )
+    cdata = configuration_data()
+    cdata.set('libexecdir', join_paths(glib_prefix, get_option('libexecdir')))
+    configure_file(
+      input: memory_monitor_test + '.py.in',
+      output: memory_monitor_test + '.py',
+      install_dir : installed_tests_execdir,
+      configuration: cdata,
+    )
+  endforeach
 endif
 
 if not meson.is_cross_build() or meson.has_exe_wrapper()
@@ -577,9 +661,15 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
   # Support for --add-symbol was added to LLVM objcopy in 2019
   # (https://reviews.llvm.org/D58234). FIXME: This test could be enabled for
   # LLVM once that support is in a stable release.
+  objcopy_supports_add_symbol = false
   objcopy = find_program('objcopy', required : false)
+  if objcopy.found()
+    objcopy_supports_add_symbol = run_command(objcopy, '--help').stdout().contains('--add-symbol')
+  endif
+
+  ld = find_program('ld', required : false)
 
-  if build_machine.system() == 'linux' and cc.get_id() == 'gcc' and objcopy.found()
+  if build_machine.system() == 'linux' and cc.get_id() == 'gcc' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
     test_gresource_binary = custom_target('test5.gresource',
       input : 'test5.gresource.xml',
       output : 'test5.gresource',
@@ -608,7 +698,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     test_resources_binary = custom_target('test_resources.o',
       input : test_gresource_binary,
       output : 'test_resources.o',
-      command : ['ld',
+      command : [ld,
                  '-r',
                  '-b','binary',
                  '@INPUT@',
@@ -700,5 +790,42 @@ foreach program_name, extra_args : test_extra_programs
   )
 endforeach
 
-# FIXME: subdir('services')
+foreach test_name : python_tests
+  test(
+    test_name,
+    python,
+    args: ['-B', files(test_name)],
+    env: test_env,
+    suite: ['gio', 'no-valgrind'],
+  )
+
+  if installed_tests_enabled
+    install_data(
+      files(test_name),
+      install_dir: installed_tests_execdir,
+      install_mode: 'rwxr-xr-x',
+    )
+
+    test_conf = configuration_data()
+    test_conf.set('installed_tests_dir', installed_tests_execdir)
+    test_conf.set('program', test_name)
+    test_conf.set('env', '')
+    configure_file(
+      input: installed_tests_template_tap,
+      output: test_name + '.test',
+      install_dir: installed_tests_metadir,
+      configuration: test_conf,
+    )
+  endif
+endforeach
+
+# TAP test runner for Python tests
+if installed_tests_enabled
+  install_data(
+    files('taptestrunner.py'),
+    install_dir: installed_tests_execdir,
+  )
+endif
+
+subdir('services')
 subdir('modules')
index 271aa2c..3a75321 100644 (file)
@@ -112,6 +112,12 @@ do_lookup_by_name (GTask         *task,
       else
         g_task_return_pointer (task, g_list_copy_deep (self->ipv6_results, copy_object, NULL), NULL);
     }
+  else if (flags == G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT)
+    {
+      /* This is only the minimal implementation needed for some tests */
+      g_assert (self->ipv4_error == NULL && self->ipv6_error == NULL && self->ipv6_results == NULL);
+      g_task_return_pointer (task, g_list_copy_deep (self->ipv4_results, copy_object, NULL), NULL);
+    }
   else
     g_assert_not_reached ();
 }
@@ -131,6 +137,22 @@ lookup_by_name_with_flags_async (GResolver                *resolver,
 }
 
 static GList *
+lookup_by_name (GResolver    *resolver,
+                const gchar  *hostname,
+                GCancellable *cancellable,
+                GError       **error)
+{
+  GList *result = NULL;
+  GTask *task = g_task_new (resolver, cancellable, NULL, NULL);
+  g_task_set_task_data (task, GUINT_TO_POINTER (G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT), NULL);
+  g_task_run_in_thread_sync (task, do_lookup_by_name);
+  result = g_task_propagate_pointer (task, error);
+  g_object_unref (task);
+  return result;
+}
+
+
+static GList *
 lookup_by_name_with_flags_finish (GResolver     *resolver,
                                   GAsyncResult  *result,
                                   GError       **error)
@@ -160,6 +182,7 @@ mock_resolver_class_init (MockResolverClass *klass)
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
   resolver_class->lookup_by_name_with_flags_async  = lookup_by_name_with_flags_async;
   resolver_class->lookup_by_name_with_flags_finish = lookup_by_name_with_flags_finish;
+  resolver_class->lookup_by_name = lookup_by_name;
   object_class->finalize = mock_resolver_finalize;
 }
 
index bda7605..f06cd75 100644 (file)
@@ -418,13 +418,150 @@ test_loopback_sync (void)
   g_object_unref (addr);
 }
 
+static void
+test_localhost_sync (void)
+{
+  GSocketConnectable *addr;  /* owned */
+  GSocketAddressEnumerator *enumerator;  /* owned */
+  GSocketAddress *a;  /* owned */
+  GError *error = NULL;
+  GResolver *original_resolver; /* owned */
+  MockResolver *mock_resolver; /* owned */
+  GList *ipv4_results = NULL; /* owned */
+
+  /* This test ensures that variations of the "localhost" hostname always resolve to a loopback address */
+
+  /* Set up a DNS resolver that returns nonsense for "localhost" */
+  original_resolver = g_resolver_get_default ();
+  mock_resolver = mock_resolver_new ();
+  g_resolver_set_default (G_RESOLVER (mock_resolver));
+  ipv4_results = g_list_append (ipv4_results, g_inet_address_new_from_string ("123.123.123.123"));
+  mock_resolver_set_ipv4_results (mock_resolver, ipv4_results);
+
+  addr = g_network_address_new ("localhost.", 616);
+  enumerator = g_socket_connectable_enumerate (addr);
+
+  /* IPv6 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "::1", 616);
+  g_object_unref (a);
+
+  /* IPv4 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "127.0.0.1", 616);
+  g_object_unref (a);
+
+  /* End of results. */
+  g_assert_null (g_socket_address_enumerator_next (enumerator, NULL, &error));
+  g_assert_no_error (error);
+  g_object_unref (enumerator);
+  g_object_unref (addr);
+
+  addr = g_network_address_new (".localhost", 616);
+  enumerator = g_socket_connectable_enumerate (addr);
+
+  /* IPv6 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "::1", 616);
+  g_object_unref (a);
+
+  /* IPv4 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "127.0.0.1", 616);
+  g_object_unref (a);
+
+  /* End of results. */
+  g_assert_null (g_socket_address_enumerator_next (enumerator, NULL, &error));
+  g_assert_no_error (error);
+  g_object_unref (enumerator);
+  g_object_unref (addr);
+
+  addr = g_network_address_new ("foo.localhost", 616);
+  enumerator = g_socket_connectable_enumerate (addr);
+
+  /* IPv6 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "::1", 616);
+  g_object_unref (a);
+
+  /* IPv4 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "127.0.0.1", 616);
+  g_object_unref (a);
+
+  /* End of results. */
+  g_assert_null (g_socket_address_enumerator_next (enumerator, NULL, &error));
+  g_assert_no_error (error);
+  g_object_unref (enumerator);
+  g_object_unref (addr);
+
+  addr = g_network_address_new (".localhost.", 616);
+  enumerator = g_socket_connectable_enumerate (addr);
+
+  /* IPv6 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "::1", 616);
+  g_object_unref (a);
+
+  /* IPv4 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "127.0.0.1", 616);
+  g_object_unref (a);
+
+  /* End of results. */
+  g_assert_null (g_socket_address_enumerator_next (enumerator, NULL, &error));
+  g_assert_no_error (error);
+  g_object_unref (enumerator);
+  g_object_unref (addr);
+
+  addr = g_network_address_new ("invalid", 616);
+  enumerator = g_socket_connectable_enumerate (addr);
+
+  /* IPv4 address. */
+  a = g_socket_address_enumerator_next (enumerator, NULL, &error);
+  g_assert_no_error (error);
+  assert_socket_address_matches (a, "123.123.123.123", 616);
+  g_object_unref (a);
+
+  /* End of results. */
+  g_assert_null (g_socket_address_enumerator_next (enumerator, NULL, &error));
+  g_assert_no_error (error);
+  g_object_unref (enumerator);
+  g_object_unref (addr);
+
+  g_resolver_set_default (original_resolver);
+  g_list_free_full (ipv4_results, (GDestroyNotify) g_object_unref);
+  g_object_unref (original_resolver);
+  g_object_unref (mock_resolver);
+}
+
 typedef struct {
   GList/*<owned GSocketAddress> */ *addrs;  /* owned */
   GMainLoop *loop;  /* owned */
+  GSocketAddressEnumerator *enumerator; /* unowned */
   guint delay_ms;
   gint expected_error_code;
 } AsyncData;
 
+static void got_addr (GObject *source_object, GAsyncResult *result, gpointer user_data);
+
+static int
+on_delayed_get_addr (gpointer user_data)
+{
+  AsyncData *data = user_data;
+  g_socket_address_enumerator_next_async (data->enumerator, NULL,
+                                          got_addr, user_data);
+  return G_SOURCE_REMOVE;
+}
+
 static void
 got_addr (GObject      *source_object,
           GAsyncResult *result,
@@ -459,11 +596,14 @@ got_addr (GObject      *source_object,
       g_assert (G_IS_INET_SOCKET_ADDRESS (a));
       data->addrs = g_list_prepend (data->addrs, a);
 
-      if (data->delay_ms)
-        g_usleep (data->delay_ms * 1000);
-
-      g_socket_address_enumerator_next_async (enumerator, NULL,
-                                              got_addr, user_data);
+      if (!data->delay_ms)
+        g_socket_address_enumerator_next_async (enumerator, NULL,
+                                                got_addr, user_data);
+      else
+        {
+          data->enumerator = enumerator;
+          g_timeout_add (data->delay_ms, on_delayed_get_addr, data);
+        }
     }
 }
 
@@ -522,6 +662,51 @@ test_loopback_async (void)
 }
 
 static void
+test_localhost_async (void)
+{
+  GSocketConnectable *addr;  /* owned */
+  GSocketAddressEnumerator *enumerator;  /* owned */
+  AsyncData data = { 0, };
+  GResolver *original_resolver; /* owned */
+  MockResolver *mock_resolver; /* owned */
+  GList *ipv4_results = NULL; /* owned */
+
+  /* This test ensures that variations of the "localhost" hostname always resolve to a loopback address */
+
+  /* Set up a DNS resolver that returns nonsense for "localhost" */
+  original_resolver = g_resolver_get_default ();
+  mock_resolver = mock_resolver_new ();
+  g_resolver_set_default (G_RESOLVER (mock_resolver));
+  ipv4_results = g_list_append (ipv4_results, g_inet_address_new_from_string ("123.123.123.123"));
+  mock_resolver_set_ipv4_results (mock_resolver, ipv4_results);
+
+  addr = g_network_address_new ("localhost", 610);
+  enumerator = g_socket_connectable_enumerate (addr);
+
+  /* Get all the addresses. */
+  data.addrs = NULL;
+  data.delay_ms = 1;
+  data.loop = g_main_loop_new (NULL, FALSE);
+
+  g_socket_address_enumerator_next_async (enumerator, NULL, got_addr, &data);
+  g_main_loop_run (data.loop);
+
+  /* Check results. */
+  g_assert_cmpuint (g_list_length (data.addrs), ==, 2);
+  assert_socket_address_matches (data.addrs->data, "::1", 610);
+  assert_socket_address_matches (data.addrs->next->data, "127.0.0.1", 610);
+
+  g_resolver_set_default (original_resolver);
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
+  g_list_free_full (ipv4_results, (GDestroyNotify) g_object_unref);
+  g_object_unref (original_resolver);
+  g_object_unref (mock_resolver);
+  g_object_unref (enumerator);
+  g_object_unref (addr);
+  g_main_loop_unref (data.loop);
+}
+
+static void
 test_to_string (void)
 {
   GSocketConnectable *addr = NULL;
@@ -1039,6 +1224,8 @@ main (int argc, char *argv[])
   g_test_add_func ("/network-address/loopback/basic", test_loopback_basic);
   g_test_add_func ("/network-address/loopback/sync", test_loopback_sync);
   g_test_add_func ("/network-address/loopback/async", test_loopback_async);
+  g_test_add_func ("/network-address/localhost/async", test_localhost_async);
+  g_test_add_func ("/network-address/localhost/sync", test_localhost_sync);
   g_test_add_func ("/network-address/to-string", test_to_string);
 
   g_test_add ("/network-address/happy-eyeballs/basic", HappyEyeballsFixture, NULL,
diff --git a/gio/tests/org.gtk.test.dbusappinfo.flatpak.desktop b/gio/tests/org.gtk.test.dbusappinfo.flatpak.desktop
new file mode 100644 (file)
index 0000000..9ef248a
--- /dev/null
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Type=Application
+Name=Test
+DBusActivatable=true
+X-Flatpak=org.gtk.test.dbusappinfo.flatpak
diff --git a/gio/tests/services/meson.build b/gio/tests/services/meson.build
new file mode 100644 (file)
index 0000000..059eeb6
--- /dev/null
@@ -0,0 +1,30 @@
+dbus_service_files = [
+  'org.freedesktop.portal.Documents.service',
+]
+
+srcdir_cdata = configuration_data()
+srcdir_cdata.set('installed_tests_dir', meson.current_build_dir() / '..')
+
+installed_cdata = configuration_data()
+installed_cdata.set('installed_tests_dir', installed_tests_execdir)
+
+foreach service_file : dbus_service_files
+  configure_file(
+    input: service_file + '.in',
+    output: service_file,
+    configuration: srcdir_cdata,
+  )
+  if installed_tests_enabled
+    # Build a second copy of the service file for the installed
+    # version of the tests.
+    configure_file(
+      input: service_file + '.in',
+      output: service_file + '.to-install',
+      configuration: installed_cdata,
+    )
+    install_data(meson.current_build_dir() / service_file + '.to-install',
+      install_dir: installed_tests_execdir / 'services',
+      rename: [service_file],
+    )
+  endif
+endforeach
diff --git a/gio/tests/services/org.freedesktop.portal.Documents.service.in b/gio/tests/services/org.freedesktop.portal.Documents.service.in
new file mode 100644 (file)
index 0000000..2769ff7
--- /dev/null
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.freedesktop.portal.Documents
+Exec=@installed_tests_dir@/fake-document-portal
index eeebddd..e095d01 100644 (file)
@@ -140,7 +140,11 @@ create_server_full (GSocketFamily   family,
     {
       g_socket_set_option (data->server, IPPROTO_IPV6, IPV6_V6ONLY, FALSE, NULL);
       if (!g_socket_speaks_ipv4 (data->server))
-        goto error;
+        {
+          g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+                               "IPv6-only server cannot speak IPv4");
+          goto error;
+        }
     }
 #endif
 
@@ -342,6 +346,7 @@ test_ip_async (GSocketFamily family)
       g_clear_error (&error);
       return;
     }
+  g_assert_nonnull (data);
 
   addr = g_socket_get_local_address (data->server, &error);
   g_assert_no_error (error);
@@ -1130,6 +1135,12 @@ test_timed_wait (void)
   gint64 start_time;
   gint poll_duration;
 
+  if (!g_test_thorough ())
+    {
+      g_test_skip ("Not running timing heavy test");
+      return;
+    }
+
   data = create_server (G_SOCKET_FAMILY_IPV4, echo_server_thread, FALSE, &error);
   if (error != NULL)
     {
index 0af9b1a..e0a064a 100755 (executable)
@@ -28,7 +28,7 @@ if not 'GLIB_TEST_COMPILATION' in os.environ:
 If you wish to run this test, set GLIB_TEST_COMPILATION=1 in the env,
 and make sure you have glib build dependencies installed, including
 meson.''')
-  sys.exit(0)
+  sys.exit(77)
 
 if len(sys.argv) != 2:
   print('Usage: {} <gio-2.0.pc dir>'.format(os.path.basename(sys.argv[0])))
diff --git a/gio/tests/taptestrunner.py b/gio/tests/taptestrunner.py
new file mode 100644 (file)
index 0000000..2614961
--- /dev/null
@@ -0,0 +1,176 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+# Copyright (c) 2015 Remko Tronçon (https://el-tramo.be)
+# Copied from https://github.com/remko/pycotap/
+#
+# Released under the MIT license
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
+import unittest
+import sys
+import base64
+from io import StringIO
+
+# Log modes
+class LogMode(object) :
+  LogToError, LogToDiagnostics, LogToYAML, LogToAttachment = range(4)
+
+
+class TAPTestResult(unittest.TestResult):
+  def __init__(self, output_stream, error_stream, message_log, test_output_log):
+    super(TAPTestResult, self).__init__(self, output_stream)
+    self.output_stream = output_stream
+    self.error_stream = error_stream
+    self.orig_stdout = None
+    self.orig_stderr = None
+    self.message = None
+    self.test_output = None
+    self.message_log = message_log
+    self.test_output_log = test_output_log
+    self.output_stream.write("TAP version 13\n")
+    self._set_streams()
+
+  def printErrors(self):
+    self.print_raw("1..%d\n" % self.testsRun)
+    self._reset_streams()
+
+  def _set_streams(self):
+    self.orig_stdout = sys.stdout
+    self.orig_stderr = sys.stderr
+    if self.message_log == LogMode.LogToError:
+      self.message = self.error_stream
+    else:
+      self.message = StringIO()
+    if self.test_output_log == LogMode.LogToError:
+      self.test_output = self.error_stream
+    else:
+      self.test_output = StringIO()
+
+    if self.message_log == self.test_output_log:
+      self.test_output = self.message
+    sys.stdout = sys.stderr = self.test_output
+
+  def _reset_streams(self):
+    sys.stdout = self.orig_stdout
+    sys.stderr = self.orig_stderr
+
+
+  def print_raw(self, text):
+    self.output_stream.write(text)
+    self.output_stream.flush()
+
+  def print_result(self, result, test, directive = None):
+    self.output_stream.write("%s %d %s" % (result, self.testsRun, test.id()))
+    if directive:
+      self.output_stream.write(" # " + directive)
+    self.output_stream.write("\n")
+    self.output_stream.flush()
+
+  def ok(self, test, directive = None):
+    self.print_result("ok", test, directive)
+
+  def not_ok(self, test):
+    self.print_result("not ok", test)
+
+  def startTest(self, test):
+    super(TAPTestResult, self).startTest(test)
+
+  def stopTest(self, test):
+    super(TAPTestResult, self).stopTest(test)
+    if self.message_log == self.test_output_log:
+      logs = [(self.message_log, self.message, "output")]
+    else:
+      logs = [
+          (self.test_output_log, self.test_output, "test_output"),
+          (self.message_log, self.message, "message")
+      ]
+    for log_mode, log, log_name in logs:
+      if log_mode != LogMode.LogToError:
+        output = log.getvalue()
+        if len(output):
+          if log_mode == LogMode.LogToYAML:
+            self.print_raw("  ---\n")
+            self.print_raw("    " + log_name + ": |\n")
+            self.print_raw("      " + output.rstrip().replace("\n", "\n      ") + "\n")
+            self.print_raw("  ...\n")
+          elif log_mode == LogMode.LogToAttachment:
+            self.print_raw("  ---\n")
+            self.print_raw("    " + log_name + ":\n")
+            self.print_raw("      File-Name: " + log_name + ".txt\n")
+            self.print_raw("      File-Type: text/plain\n")
+            self.print_raw("      File-Content: " + base64.b64encode(output) + "\n")
+            self.print_raw("  ...\n")
+          else:
+            self.print_raw("# " + output.rstrip().replace("\n", "\n# ") + "\n")
+        # Truncate doesn't change the current stream position.
+        # Seek to the beginning to avoid extensions on subsequent writes.
+        log.seek(0)
+        log.truncate(0)
+
+  def addSuccess(self, test):
+    super(TAPTestResult, self).addSuccess(test)
+    self.ok(test)
+
+  def addError(self, test, err):
+    super(TAPTestResult, self).addError(test, err)
+    self.message.write(self.errors[-1][1] + "\n")
+    self.not_ok(test)
+
+  def addFailure(self, test, err):
+    super(TAPTestResult, self).addFailure(test, err)
+    self.message.write(self.failures[-1][1] + "\n")
+    self.not_ok(test)
+
+  def addSkip(self, test, reason):
+    super(TAPTestResult, self).addSkip(test, reason)
+    self.ok(test, "SKIP " + reason)
+
+  def addExpectedFailure(self, test, err):
+    super(TAPTestResult, self).addExpectedFailure(test, err)
+    self.ok(test)
+
+  def addUnexpectedSuccess(self, test):
+    super(TAPTestResult, self).addUnexpectedSuccess(test)
+    self.message.write("Unexpected success" + "\n")
+    self.not_ok(test)
+
+
+class TAPTestRunner(object):
+  def __init__(self,
+      message_log = LogMode.LogToYAML,
+      test_output_log = LogMode.LogToDiagnostics,
+      output_stream = sys.stdout, error_stream = sys.stderr):
+    self.output_stream = output_stream
+    self.error_stream = error_stream
+    self.message_log = message_log
+    self.test_output_log = test_output_log
+
+  def run(self, test):
+    result = TAPTestResult(
+        self.output_stream,
+        self.error_stream,
+        self.message_log,
+        self.test_output_log)
+    test(result)
+    result.printErrors()
+
+    return result
index 0caed44..cca05ce 100644 (file)
@@ -2009,6 +2009,47 @@ test_return_pointer (void)
   g_assert_null (task);
 }
 
+static void
+test_return_value (void)
+{
+  GObject *object;
+  GValue value = G_VALUE_INIT;
+  GValue ret = G_VALUE_INIT;
+  GTask *task;
+  GError *error = NULL;
+
+  object = (GObject *)g_dummy_object_new ();
+  g_assert_cmpint (object->ref_count, ==, 1);
+  g_object_add_weak_pointer (object, (gpointer *)&object);
+
+  g_value_init (&value, G_TYPE_OBJECT);
+  g_value_set_object (&value, object);
+  g_assert_cmpint (object->ref_count, ==, 2);
+
+  task = g_task_new (NULL, NULL, NULL, NULL);
+  g_object_add_weak_pointer (G_OBJECT (task), (gpointer *)&task);
+  g_task_return_value (task, &value);
+  g_assert_cmpint (object->ref_count, ==, 3);
+
+  g_assert_true (g_task_propagate_value (task, &ret, &error));
+  g_assert_no_error (error);
+  g_assert_true (g_value_get_object (&ret) == object);
+  g_assert_cmpint (object->ref_count, ==, 3);
+
+  g_object_unref (task);
+  g_assert_nonnull (task);
+  wait_for_completed_notification (task);
+  g_assert_null (task);
+
+  g_assert_cmpint (object->ref_count, ==, 3);
+  g_value_unset (&ret);
+  g_assert_cmpint (object->ref_count, ==, 2);
+  g_value_unset (&value);
+  g_assert_cmpint (object->ref_count, ==, 1);
+  g_object_unref (object);
+  g_assert_null (object);
+}
+
 /* test_object_keepalive: GTask takes a ref on its source object */
 
 static GObject *keepalive_object;
@@ -2348,6 +2389,7 @@ main (int argc, char **argv)
   g_test_add_func ("/gtask/return-on-cancel-sync", test_return_on_cancel_sync);
   g_test_add_func ("/gtask/return-on-cancel-atomic", test_return_on_cancel_atomic);
   g_test_add_func ("/gtask/return-pointer", test_return_pointer);
+  g_test_add_func ("/gtask/return-value", test_return_value);
   g_test_add_func ("/gtask/object-keepalive", test_object_keepalive);
   g_test_add_func ("/gtask/legacy-error", test_legacy_error);
   g_test_add_func ("/gtask/return/in-idle/error-first", test_return_in_idle_error_first);
index 39d8769..3090cad 100644 (file)
       <arg name="greeting" direction="in" type="s"/>
       <arg name="response" direction="out" type="s"/>
     </method>
+    <method name="NoAnnotation">
+      <arg name="greeting" direction="in" type="h"/>
+      <arg name="greeting_locale" direction="in" type="s"/>
+      <arg name="response" direction="out" type="h"/>
+      <arg name="response_locale" direction="out" type="s"/>
+    </method>
+    <method name="NoAnnotationNested">
+      <arg name="files" type="a{sh}" direction="in"/>
+    </method>
   </interface>
 
   <interface name="Naming">
index 6057958..b74dc2b 100644 (file)
@@ -27,6 +27,8 @@ setup (Fixture       *fixture,
   fixture->tmp_dir = g_file_new_for_path (path);
 
   g_test_message ("Using temporary directory: %s", path);
+
+  g_free (path);
 }
 
 static void
index 65eedb3..5ec8299 100644 (file)
@@ -22,6 +22,7 @@
 #include <gio/gio.h>
 #include <gio/gunixinputstream.h>
 #include <gio/gunixoutputstream.h>
+#include <glib.h>
 #include <glib/glib-unix.h>
 #include <signal.h>
 #include <stdlib.h>
@@ -29,7 +30,8 @@
 #include <unistd.h>
 #include <fcntl.h>
 
-#define DATA "abcdefghijklmnopqrstuvwxyz"
+/* sizeof(DATA) will give the number of bytes in the array, plus the terminating nul */
+static const gchar DATA[] = "abcdefghijklmnopqrstuvwxyz";
 
 int writer_pipe[2], reader_pipe[2];
 GCancellable *writer_cancel, *reader_cancel, *main_cancel;
@@ -118,8 +120,8 @@ reader_thread (gpointer user_data)
   g_assert_not_reached ();
 }
 
-char main_buf[sizeof (DATA)];
-gssize main_len, main_offset;
+static char main_buf[sizeof (DATA)];
+static gssize main_len, main_offset;
 
 static void main_thread_read (GObject *source, GAsyncResult *res, gpointer user_data);
 static void main_thread_skipped (GObject *source, GAsyncResult *res, gpointer user_data);
diff --git a/gio/tests/win32-appinfo.c b/gio/tests/win32-appinfo.c
new file mode 100644 (file)
index 0000000..78052c3
--- /dev/null
@@ -0,0 +1,470 @@
+/* GLib testing framework examples and tests
+ * Copyright (C) 2019 Руслан Ижбулатов <lrn1986@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 "../giowin32-private.c"
+
+static int
+g_utf16_cmp0 (const gunichar2 *str1,
+              const gunichar2 *str2)
+{
+  if (!str1)
+    return -(str1 != str2);
+  if (!str2)
+    return str1 != str2;
+
+  while (TRUE)
+    {
+      if (str1[0] > str2[0])
+        return 1;
+      else if (str1[0] < str2[0])
+        return -1;
+      else if (str1[0] == 0 && str2[0] == 0)
+        return 0;
+
+      str1++;
+      str2++;
+    }
+}
+
+#define g_assert_cmputf16(s1, cmp, s2, s1u8, s2u8) \
+G_STMT_START { \
+  const gunichar2 *__s1 = (s1), *__s2 = (s2); \
+  if (g_utf16_cmp0 (__s1, __s2) cmp 0) ; else \
+    g_assertion_message_cmpstr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                #s1u8 " " #cmp " " #s2u8, s1u8, #cmp, s2u8); \
+} G_STMT_END
+
+static void
+test_utf16_strfuncs (void)
+{
+  gsize i;
+
+  struct {
+    gsize len;
+    const gunichar2 utf16[10];
+    const gchar *utf8;
+    const gchar *utf8_folded;
+  } string_cases[] = {
+    {
+      0,
+      { 0x0000 },
+      "",
+      "",
+    },
+    {
+      1,
+      { 0x0020, 0x0000 },
+      " ",
+      " ",
+    },
+    {
+      2,
+      { 0x0020, 0xd800, 0x0000 },
+      NULL,
+      NULL,
+    },
+  };
+
+  for (i = 0; i < G_N_ELEMENTS (string_cases); i++)
+    {
+      gsize len;
+      gunichar2 *str;
+      gboolean success;
+      gchar *utf8;
+      gchar *utf8_folded;
+
+      len = g_utf16_len (string_cases[i].utf16);
+      g_assert_cmpuint (len, ==, string_cases[i].len);
+
+      str = (gunichar2 *) g_utf16_find_basename (string_cases[i].utf16, -1);
+      /* This only works because all testcases lack separators */
+      g_assert_true (string_cases[i].utf16 == str);
+
+      str = g_wcsdup (string_cases[i].utf16, string_cases[i].len);
+      g_assert_cmpmem (string_cases[i].utf16, len, str, len);
+      g_free (str);
+
+      str = g_wcsdup (string_cases[i].utf16, -1);
+      g_assert_cmpmem (string_cases[i].utf16, len, str, len);
+      g_free (str);
+
+      success = g_utf16_to_utf8_and_fold (string_cases[i].utf16, -1, NULL, NULL);
+
+      if (string_cases[i].utf8 == NULL)
+        g_assert_false (success);
+      else
+        g_assert_true (success);
+
+      utf8 = NULL;
+      success = g_utf16_to_utf8_and_fold (string_cases[i].utf16, -1, &utf8, NULL);
+
+      if (string_cases[i].utf8 != NULL)
+        {
+          g_assert_true (success);
+          g_assert_cmpstr (string_cases[i].utf8, ==, utf8);
+          /* This only works because all testcases lack separators */
+          g_assert_true (utf8 == g_utf8_find_basename (utf8, len));
+        }
+
+      g_free (utf8);
+
+      utf8 = NULL;
+      utf8_folded = NULL;
+      success = g_utf16_to_utf8_and_fold (string_cases[i].utf16, -1, &utf8, &utf8_folded);
+
+      if (string_cases[i].utf8 != NULL)
+        {
+          g_assert_true (success);
+          g_assert_cmpstr (string_cases[i].utf8_folded, ==, utf8_folded);
+        }
+
+      g_free (utf8);
+      g_free (utf8_folded);
+    }
+}
+
+struct {
+  const char *orig;
+  const char *executable;
+  const char *executable_basename;
+  gboolean    is_rundll32;
+  const char *fixed;
+} rundll32_commandlines[] = {
+  {
+    "%SystemRoot%\\System32\\rundll32.exe \"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll\", ImageView_Fullscreen %1",
+    "%SystemRoot%\\System32\\rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "%SystemRoot%\\System32\\rundll32.exe \"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll\"  ImageView_Fullscreen %1",
+  },
+  {
+    "%SystemRoot%/System32/rundll32.exe \"%ProgramFiles%/Windows Photo Viewer/PhotoViewer.dll\", ImageView_Fullscreen %1",
+    "%SystemRoot%/System32/rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "%SystemRoot%/System32/rundll32.exe \"%ProgramFiles%/Windows Photo Viewer/PhotoViewer.dll\"  ImageView_Fullscreen %1",
+  },
+  {
+    "%SystemRoot%\\System32/rundll32.exe \"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll\", ImageView_Fullscreen %1",
+    "%SystemRoot%\\System32/rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "%SystemRoot%\\System32/rundll32.exe \"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll\"  ImageView_Fullscreen %1",
+  },
+  {
+    "\"some path with spaces\\rundll32.exe\" \"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll\", ImageView_Fullscreen %1",
+    "some path with spaces\\rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "\"some path with spaces\\rundll32.exe\" \"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll\"  ImageView_Fullscreen %1",
+  },
+  {
+    "    \"some path with spaces\\rundll32.exe\"\"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll\",ImageView_Fullscreen %1",
+    "some path with spaces\\rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "    \"some path with spaces\\rundll32.exe\"\"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll\" ImageView_Fullscreen %1",
+  },
+  {
+    "rundll32.exe foo.bar,baz",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "rundll32.exe foo.bar baz",
+  },
+  {
+    "  rundll32.exe foo.bar,baz",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "  rundll32.exe foo.bar baz",
+  },
+  {
+    "rundll32.exe",
+    "rundll32.exe",
+    "rundll32.exe",
+    FALSE,
+    NULL,
+  },
+  {
+    "rundll32.exe ,foobar",
+    "rundll32.exe",
+    "rundll32.exe",
+    FALSE,
+    NULL,
+  },
+  {
+    "rundll32.exe   ,foobar",
+    "rundll32.exe",
+    "rundll32.exe",
+    FALSE,
+    NULL,
+  },
+  {
+    "rundll32.exe foo.dll",
+    "rundll32.exe",
+    "rundll32.exe",
+    FALSE,
+    NULL,
+  },
+  {
+    "rundll32.exe \"foo bar\",baz",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "rundll32.exe \"foo bar\" baz",
+  },
+  {
+    "\"rundll32.exe\" \"foo bar\",baz",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "\"rundll32.exe\" \"foo bar\" baz",
+  },
+  {
+    "\"rundll32.exe\" \"foo bar\",, , ,,, , ,,baz",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "\"rundll32.exe\" \"foo bar\" , , ,,, , ,,baz",
+  },
+  {
+    "\"rundll32.exe\" foo.bar,,,,,,,,,baz",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "\"rundll32.exe\" foo.bar ,,,,,,,,baz",
+  },
+  {
+    "\"rundll32.exe\" foo.bar baz",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "\"rundll32.exe\" foo.bar baz",
+  },
+  {
+    "\"RuNdlL32.exe\" foo.bar baz",
+    "RuNdlL32.exe",
+    "RuNdlL32.exe",
+    TRUE,
+    "\"RuNdlL32.exe\" foo.bar baz",
+  },
+  {
+    "%SystemRoot%\\System32\\rundll32.exe \"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll,\" ImageView_Fullscreen %1",
+    "%SystemRoot%\\System32\\rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "%SystemRoot%\\System32\\rundll32.exe \"%ProgramFiles%\\Windows Photo Viewer\\PhotoViewer.dll,\" ImageView_Fullscreen %1",
+  },
+  {
+    "\"rundll32.exe\" \"foo bar,\"baz",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "\"rundll32.exe\" \"foo bar,\"baz",
+  },
+  {
+    "\"rundll32.exe\" some,thing",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "\"rundll32.exe\" some thing",
+  },
+  {
+    "\"rundll32.exe\" some,",
+    "rundll32.exe",
+    "rundll32.exe",
+    FALSE,
+    "\"rundll32.exe\" some,",
+  },
+  /* These filenames are not allowed on Windows, but our function doesn't care about that */
+  {
+    "run\"dll32.exe foo\".bar,baz",
+    "run\"dll32.exe",
+    "run\"dll32.exe",
+    FALSE,
+    NULL,
+  },
+  {
+    "run,dll32.exe foo.bar,baz",
+    "run,dll32.exe",
+    "run,dll32.exe",
+    FALSE,
+    NULL,
+  },
+  {
+    "\"rundll32.exe\" some, thing",
+    "rundll32.exe",
+    "rundll32.exe",
+    TRUE,
+    "\"rundll32.exe\" some  thing",
+  },
+  /* Commands with "rundll32" (without the .exe suffix) do exist,
+   * but GLib currently does not recognize them, so there's no point
+   * in testing these.
+   */
+};
+
+static void
+test_win32_rundll32_fixup (void)
+{
+  gsize i;
+
+  for (i = 0; i < G_N_ELEMENTS (rundll32_commandlines); i++)
+    {
+      gunichar2 *argument;
+      gunichar2 *expected;
+
+      if (!rundll32_commandlines[i].is_rundll32)
+        continue;
+
+      argument = g_utf8_to_utf16 (rundll32_commandlines[i].orig, -1, NULL, NULL, NULL);
+      expected = g_utf8_to_utf16 (rundll32_commandlines[i].fixed, -1, NULL, NULL, NULL);
+
+      g_assert_nonnull (argument);
+      g_assert_nonnull (expected);
+      _g_win32_fixup_broken_microsoft_rundll_commandline (argument);
+
+      g_assert_cmputf16 (argument, ==, expected, rundll32_commandlines[i].orig, rundll32_commandlines[i].fixed);
+
+      g_free (argument);
+      g_free (expected);
+    }
+}
+
+static void
+test_win32_extract_executable (void)
+{
+  gsize i;
+
+  for (i = 0; i < G_N_ELEMENTS (rundll32_commandlines); i++)
+    {
+      gunichar2 *argument;
+      gchar *dll_function;
+      gchar *executable;
+      gchar *executable_basename;
+      gchar *executable_folded;
+      gchar *executable_folded_basename;
+
+      argument = g_utf8_to_utf16 (rundll32_commandlines[i].orig, -1, NULL, NULL, NULL);
+
+      _g_win32_extract_executable (argument, NULL, NULL, NULL, NULL, &dll_function);
+
+      if (rundll32_commandlines[i].is_rundll32)
+        g_assert_nonnull (dll_function);
+      else
+        g_assert_null (dll_function);
+
+      g_free (dll_function);
+
+      executable = NULL;
+      executable_basename = NULL;
+      executable_folded = NULL;
+      executable_folded_basename = NULL;
+      _g_win32_extract_executable (argument, &executable, &executable_basename, &executable_folded, &executable_folded_basename, NULL);
+
+      g_assert_cmpstr (rundll32_commandlines[i].executable, ==, executable);
+      g_assert_cmpstr (rundll32_commandlines[i].executable_basename, ==, executable_basename);
+      g_assert_nonnull (executable_folded);
+
+      g_free (executable);
+      g_free (executable_folded);
+
+      /* Check the corner-case where we don't want to know where basename is */
+      executable = NULL;
+      executable_folded = NULL;
+      _g_win32_extract_executable (argument, &executable, NULL, &executable_folded, NULL, NULL);
+
+      g_assert_cmpstr (rundll32_commandlines[i].executable, ==, executable);
+      g_assert_nonnull (executable_folded);
+
+      g_free (executable);
+      g_free (executable_folded);
+
+      g_free (argument);
+    }
+}
+
+static void
+test_win32_parse_filename (void)
+{
+  gsize i;
+
+  for (i = 0; i < G_N_ELEMENTS (rundll32_commandlines); i++)
+    {
+      gunichar2 *argument;
+      argument = g_utf8_to_utf16 (rundll32_commandlines[i].orig, -1, NULL, NULL, NULL);
+      /* Just checking that it doesn't blow up on various (sometimes incorrect) strings */
+      _g_win32_parse_filename (argument, FALSE, NULL, NULL, NULL, NULL);
+      g_free (argument);
+    }
+}
+
+static void
+do_fail_on_broken_utf16_1 (void)
+{
+  const gunichar2 utf16[] = { 0xd800, 0x0000 };
+  _g_win32_extract_executable (utf16, NULL, NULL, NULL, NULL, NULL);
+}
+
+static void
+do_fail_on_broken_utf16_2 (void)
+{
+  /* "rundll32.exe <invalid utf16> r" */
+  gchar *dll_function;
+  const gunichar2 utf16[] = { 0x0072, 0x0075, 0x006E, 0x0064, 0x006C, 0x006C, 0x0033, 0x0032,
+                              0x002E, 0x0065, 0x0078, 0x0065, 0x0020, 0xd800, 0x0020, 0x0072, 0x0000 };
+  _g_win32_extract_executable (utf16, NULL, NULL, NULL, NULL, &dll_function);
+}
+
+static void
+test_fail_on_broken_utf16 (void)
+{
+  g_test_trap_subprocess ("/appinfo/subprocess/win32-assert-broken-utf16_1", 0, 0);
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*GLib-GIO:ERROR:*giowin32-private.c:*:_g_win32_extract_executable: assertion failed: (folded)*");
+  g_test_trap_subprocess ("/appinfo/subprocess/win32-assert-broken-utf16_2", 0, 0);
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*GLib-GIO:ERROR:*giowin32-private.c:*:_g_win32_extract_executable: assertion failed: (folded)*");
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/appinfo/utf16-strfuncs", test_utf16_strfuncs);
+  g_test_add_func ("/appinfo/win32-extract-executable", test_win32_extract_executable);
+  g_test_add_func ("/appinfo/win32-rundll32-fixup", test_win32_rundll32_fixup);
+  g_test_add_func ("/appinfo/win32-parse-filename", test_win32_parse_filename);
+  g_test_add_func ("/appinfo/win32-utf16-conversion-fail", test_fail_on_broken_utf16);
+
+  g_test_add_func ("/appinfo/subprocess/win32-assert-broken-utf16_1", do_fail_on_broken_utf16_1);
+  g_test_add_func ("/appinfo/subprocess/win32-assert-broken-utf16_2", do_fail_on_broken_utf16_2);
+
+  return g_test_run ();
+}
+
index 3f7b53e..a732aa5 100644 (file)
--- a/glib.supp
+++ b/glib.supp
 }
 
 {
+       g-task-thread-pool-init
+       Memcheck:Leak
+       match-leak-kinds:possible,reachable,definite
+       fun:malloc
+       ...
+       fun:g_thread_new
+       ...
+       fun:g_task_thread_pool_init
+}
+
+{
        g-io-module-default-proxy-resolver-gnome
        Memcheck:Leak
        match-leak-kinds:reachable
 {
        g-threaded-resolver-getaddrinfo-config
        Memcheck:Leak
-       match-leak-kinds:reachable
+       match-leak-kinds:reachable,definite
        fun:malloc
        ...
        fun:__resolv_conf_allocate
 {
        g_private_set_alloc0
        Memcheck:Leak
-       match-leak-kinds:reachable
+       match-leak-kinds:definite,reachable
        fun:malloc
        ...
        fun:g_private_set_alloc0
 {
        g_private_set_alloc0-calloc
        Memcheck:Leak
-       match-leak-kinds:reachable
+       match-leak-kinds:definite,reachable
        fun:calloc
        ...
        fun:g_private_set_alloc0
 {
        g_main_context_push_thread_default
        Memcheck:Leak
-       match-leak-kinds:reachable
+       match-leak-kinds:definite,reachable
        fun:malloc
        ...
        fun:g_queue_new
index b0d67df..8ca255c 100644 (file)
@@ -372,7 +372,7 @@ g_thread_create_full (GThreadFunc       func,
   GThread *thread;
 
   thread = g_thread_new_internal (NULL, g_deprecated_thread_proxy,
-                                  func, data, stack_size, error);
+                                  func, data, stack_size, NULL, error);
 
   if (thread && !joinable)
     {
@@ -669,7 +669,7 @@ g_static_rec_mutex_get_rec_mutex_impl (GStaticRecMutex* mutex)
   if (!g_thread_supported ())
     return NULL;
 
-  result = g_atomic_pointer_get (&mutex->mutex.mutex);
+  result = (GRecMutex *) g_atomic_pointer_get (&mutex->mutex.mutex);
 
   if (!result)
     {
@@ -680,7 +680,7 @@ g_static_rec_mutex_get_rec_mutex_impl (GStaticRecMutex* mutex)
         {
           result = g_slice_new (GRecMutex);
           g_rec_mutex_init (result);
-          g_atomic_pointer_set (&mutex->mutex.mutex, result);
+          g_atomic_pointer_set (&mutex->mutex.mutex, (GMutex *) result);
         }
 
       G_UNLOCK (g_static_mutex);
index 38f64b8..abae3a2 100644 (file)
@@ -166,6 +166,57 @@ g_array_new (gboolean zero_terminated,
 }
 
 /**
+ * g_array_steal:
+ * @array: a #GArray.
+ * @len: (optional) (out caller-allocates): pointer to retrieve the number of
+ *    elements of the original array
+ *
+ * Frees the data in the array and resets the size to zero, while
+ * the underlying array is preserved for use elsewhere and returned
+ * to the caller.
+ *
+ * If the array was created with the @zero_terminate property
+ * set to %TRUE, the returned data is zero terminated too.
+ *
+ * If array elements contain dynamically-allocated memory,
+ * the array elements should also be freed by the caller.
+ *
+ * A short example of use:
+ * |[<!-- language="C" -->
+ * ...
+ * gpointer data;
+ * gsize data_len;
+ * data = g_array_steal (some_array, &data_len);
+ * ...
+ * ]|
+
+ * Returns: (transfer full): the element data, which should be
+ *     freed using g_free().
+ *
+ * Since: 2.64
+ */
+gpointer
+g_array_steal (GArray *array,
+               gsize *len)
+{
+  GRealArray *rarray;
+  gpointer segment;
+
+  g_return_val_if_fail (array != NULL, NULL);
+
+  rarray = (GRealArray *) array;
+  segment = (gpointer) rarray->data;
+
+  if (len != NULL)
+    *len = rarray->len;
+
+  rarray->data  = NULL;
+  rarray->len   = 0;
+  rarray->alloc = 0;
+  return segment;
+}
+
+/**
  * g_array_sized_new:
  * @zero_terminated: %TRUE if the array should have an extra element at
  *     the end with all bits cleared
@@ -1014,6 +1065,79 @@ g_ptr_array_new (void)
 }
 
 /**
+ * g_ptr_array_steal:
+ * @array: a #GPtrArray.
+ * @len: (optional) (out caller-allocates): pointer to retrieve the number of
+ *    elements of the original array
+ *
+ * Frees the data in the array and resets the size to zero, while
+ * the underlying array is preserved for use elsewhere and returned
+ * to the caller.
+ *
+ * Even if set, the #GDestroyNotify function will never be called
+ * on the current contents of the array and the caller is
+ * responsible for freeing the array elements.
+ *
+ * An example of use:
+ * |[<!-- language="C" -->
+ * g_autoptr(GPtrArray) chunk_buffer = g_ptr_array_new_with_free_func (g_bytes_unref);
+ *
+ * // Some part of your application appends a number of chunks to the pointer array.
+ * g_ptr_array_add (chunk_buffer, g_bytes_new_static ("hello", 5));
+ * g_ptr_array_add (chunk_buffer, g_bytes_new_static ("world", 5));
+ *
+ * …
+ *
+ * // Periodically, the chunks need to be sent as an array-and-length to some
+ * // other part of the program.
+ * GBytes **chunks;
+ * gsize n_chunks;
+ *
+ * chunks = g_ptr_array_steal (chunk_buffer, &n_chunks);
+ * for (gsize i = 0; i < n_chunks; i++)
+ *   {
+ *     // Do something with each chunk here, and then free them, since
+ *     // g_ptr_array_steal() transfers ownership of all the elements and the
+ *     // array to the caller.
+ *     …
+ *
+ *     g_bytes_unref (chunks[i]);
+ *   }
+ *
+ * g_free (chunks);
+ *
+ * // After calling g_ptr_array_steal(), the pointer array can be reused for the
+ * // next set of chunks.
+ * g_assert (chunk_buffer->len == 0);
+ * ]|
+ *
+ * Returns: (transfer full): the element data, which should be
+ *     freed using g_free().
+ *
+ * Since: 2.64
+ */
+gpointer *
+g_ptr_array_steal (GPtrArray *array,
+                   gsize *len)
+{
+  GRealPtrArray *rarray;
+  gpointer *segment;
+
+  g_return_val_if_fail (array != NULL, NULL);
+
+  rarray = (GRealPtrArray *) array;
+  segment = (gpointer *) rarray->pdata;
+
+  if (len != NULL)
+    *len = rarray->len;
+
+  rarray->pdata = NULL;
+  rarray->len   = 0;
+  rarray->alloc = 0;
+  return segment;
+}
+
+/**
  * g_ptr_array_copy:
  * @array: #GPtrArray to duplicate
  * @func: (nullable): a copy function used to copy every element in the array
@@ -1055,7 +1179,7 @@ g_ptr_array_copy (GPtrArray *array,
       for (i = 0; i < array->len; i++)
         new_array->pdata[i] = func (array->pdata[i], user_data);
     }
-  else
+  else if (array->len > 0)
     {
       memcpy (new_array->pdata, array->pdata,
               array->len * sizeof (*array->pdata));
@@ -1118,9 +1242,12 @@ g_array_copy (GArray *array)
 
   new_rarray =
     (GRealArray *) g_array_sized_new (rarray->zero_terminated, rarray->clear,
-                                      rarray->elt_size, rarray->len);
+                                      rarray->elt_size, rarray->alloc / rarray->elt_size);
   new_rarray->len = rarray->len;
-  memcpy (new_rarray->data, rarray->data, rarray->alloc);
+  if (rarray->len > 0)
+    memcpy (new_rarray->data, rarray->data, rarray->len * rarray->elt_size);
+
+  g_array_zero_terminate (new_rarray);
 
   return (GArray *) new_rarray;
 }
@@ -1706,7 +1833,7 @@ g_ptr_array_extend (GPtrArray  *array_to_extend,
         rarray_to_extend->pdata[i + rarray_to_extend->len] =
           func (array->pdata[i], user_data);
     }
-  else
+  else if (array->len > 0)
     {
       memcpy (rarray_to_extend->pdata + rarray_to_extend->len, array->pdata,
               array->len * sizeof (*array->pdata));
@@ -1743,6 +1870,7 @@ g_ptr_array_extend_and_steal (GPtrArray  *array_to_extend,
    * to the elements moved from @array to @array_to_extend. */
   pdata = g_steal_pointer (&array->pdata);
   array->len = 0;
+  ((GRealPtrArray *) array)->alloc = 0;
   g_ptr_array_unref (array);
   g_free (pdata);
 }
@@ -1783,6 +1911,8 @@ g_ptr_array_insert (GPtrArray *array,
   rarray->pdata[index_] = data;
 }
 
+/* Please keep this doc-comment in sync with pointer_array_sort_example()
+ * in glib/tests/array-test.c */
 /**
  * g_ptr_array_sort:
  * @array: a #GPtrArray
@@ -1795,7 +1925,32 @@ g_ptr_array_insert (GPtrArray *array,
  *
  * Note that the comparison function for g_ptr_array_sort() doesn't
  * take the pointers from the array as arguments, it takes pointers to
- * the pointers in the array.
+ * the pointers in the array. Here is a full example of usage:
+ *
+ * |[<!-- language="C" -->
+ * typedef struct
+ * {
+ *   gchar *name;
+ *   gint size;
+ * } FileListEntry;
+ *
+ * static gint
+ * sort_filelist (gconstpointer a, gconstpointer b)
+ * {
+ *   const FileListEntry *entry1 = *((FileListEntry **) a);
+ *   const FileListEntry *entry2 = *((FileListEntry **) b);
+ *
+ *   return g_ascii_strcasecmp (entry1->name, entry2->name);
+ * }
+ *
+ * …
+ * g_autoptr (GPtrArray) file_list = NULL;
+ *
+ * // initialize file_list array and load with many FileListEntry entries
+ * ...
+ * // now sort it with
+ * g_ptr_array_sort (file_list, sort_filelist);
+ * ]|
  *
  * This is guaranteed to be a stable sort since version 2.32.
  */
@@ -1813,6 +1968,8 @@ g_ptr_array_sort (GPtrArray    *array,
                      NULL);
 }
 
+/* Please keep this doc-comment in sync with
+ * pointer_array_sort_with_data_example() in glib/tests/array-test.c */
 /**
  * g_ptr_array_sort_with_data:
  * @array: a #GPtrArray
@@ -1824,7 +1981,52 @@ g_ptr_array_sort (GPtrArray    *array,
  *
  * Note that the comparison function for g_ptr_array_sort_with_data()
  * doesn't take the pointers from the array as arguments, it takes
- * pointers to the pointers in the array.
+ * pointers to the pointers in the array. Here is a full example of use:
+ *
+ * |[<!-- language="C" -->
+ * typedef enum { SORT_NAME, SORT_SIZE } SortMode;
+ *
+ * typedef struct
+ * {
+ *   gchar *name;
+ *   gint size;
+ * } FileListEntry;
+ *
+ * static gint
+ * sort_filelist (gconstpointer a, gconstpointer b, gpointer user_data)
+ * {
+ *   gint order;
+ *   const SortMode sort_mode = GPOINTER_TO_INT (user_data);
+ *   const FileListEntry *entry1 = *((FileListEntry **) a);
+ *   const FileListEntry *entry2 = *((FileListEntry **) b);
+ *
+ *   switch (sort_mode)
+ *     {
+ *     case SORT_NAME:
+ *       order = g_ascii_strcasecmp (entry1->name, entry2->name);
+ *       break;
+ *     case SORT_SIZE:
+ *       order = entry1->size - entry2->size;
+ *       break;
+ *     default:
+ *       order = 0;
+ *       break;
+ *     }
+ *   return order;
+ * }
+ *
+ * ...
+ * g_autoptr (GPtrArray) file_list = NULL;
+ * SortMode sort_mode;
+ *
+ * // initialize file_list array and load with many FileListEntry entries
+ * ...
+ * // now sort it with
+ * sort_mode = SORT_NAME;
+ * g_ptr_array_sort_with_data (file_list,
+ *                             sort_filelist,
+ *                             GINT_TO_POINTER (sort_mode));
+ * ]|
  *
  * This is guaranteed to be a stable sort since version 2.32.
  */
@@ -2003,6 +2205,28 @@ g_byte_array_new (void)
 }
 
 /**
+ * g_byte_array_steal:
+ * @array: a #GByteArray.
+ * @len: (optional) (out caller-allocates): pointer to retrieve the number of
+ *    elements of the original array
+ *
+ * Frees the data in the array and resets the size to zero, while
+ * the underlying array is preserved for use elsewhere and returned
+ * to the caller.
+ *
+ * Returns: (transfer full): the element data, which should be
+ *     freed using g_free().
+ *
+ * Since: 2.64
+ */
+guint8 *
+g_byte_array_steal (GByteArray *array,
+                    gsize *len)
+{
+  return (guint8 *) g_array_steal ((GArray *) array, len);
+}
+
+/**
  * g_byte_array_new_take:
  * @data: (transfer full) (array length=len): byte data for the array
  * @len: length of @data
index 3e7ce77..67131b5 100644 (file)
@@ -70,6 +70,9 @@ GLIB_AVAILABLE_IN_ALL
 GArray* g_array_new               (gboolean          zero_terminated,
                                   gboolean          clear_,
                                   guint             element_size);
+GLIB_AVAILABLE_IN_2_64
+gpointer g_array_steal            (GArray           *array,
+                                   gsize            *len);
 GLIB_AVAILABLE_IN_ALL
 GArray* g_array_sized_new         (gboolean          zero_terminated,
                                   gboolean          clear_,
@@ -137,6 +140,9 @@ GLIB_AVAILABLE_IN_ALL
 GPtrArray* g_ptr_array_new                (void);
 GLIB_AVAILABLE_IN_ALL
 GPtrArray* g_ptr_array_new_with_free_func (GDestroyNotify    element_free_func);
+GLIB_AVAILABLE_IN_2_64
+gpointer*   g_ptr_array_steal              (GPtrArray        *array,
+                                            gsize            *len);
 GLIB_AVAILABLE_IN_2_62
 GPtrArray *g_ptr_array_copy               (GPtrArray        *array,
                                            GCopyFunc         func,
@@ -227,6 +233,9 @@ GByteArray* g_byte_array_new               (void);
 GLIB_AVAILABLE_IN_ALL
 GByteArray* g_byte_array_new_take          (guint8           *data,
                                             gsize             len);
+GLIB_AVAILABLE_IN_2_64
+guint8*     g_byte_array_steal             (GByteArray       *array,
+                                            gsize            *len);
 GLIB_AVAILABLE_IN_ALL
 GByteArray* g_byte_array_sized_new         (guint             reserved_size);
 GLIB_AVAILABLE_IN_ALL
index c52aaad..8b8c645 100644 (file)
 
 #if defined (__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
 
-#if defined(__ATOMIC_SEQ_CST) && !defined(__clang__)
-/* The implementation used in this code path in gatomic.h assumes
- * 4-byte int */
-G_STATIC_ASSERT (sizeof (gint) == 4);
-
-/* The implementations in gatomic.h assume 4- or 8-byte pointers */
-G_STATIC_ASSERT (sizeof (void *) == 4 || sizeof (void *) == 8);
-#endif
-
 /**
  * g_atomic_int_get:
  * @atomic: a pointer to a #gint or #guint
index 971176e..6bf41bb 100644 (file)
@@ -85,93 +85,213 @@ G_END_DECLS
 #if defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
 
 /* We prefer the new C11-style atomic extension of GCC if available */
-#if defined(__ATOMIC_SEQ_CST) && !defined(__clang__)
-
-/* This assumes sizeof(int) is 4: gatomic.c statically
- * asserts that (using G_STATIC_ASSERT at top-level in a header was
- * problematic, see #730932) */
+#if defined(__ATOMIC_SEQ_CST)
 
 #define g_atomic_int_get(atomic) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    gint gaig_temp;                                                          \
     (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
-    (gint) __atomic_load_4 ((atomic), __ATOMIC_SEQ_CST);                     \
+    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
+    (gint) gaig_temp;                                                        \
   }))
 #define g_atomic_int_set(atomic, newval) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    gint gais_temp = (gint) (newval);                                        \
     (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
-    __atomic_store_4 ((atomic), (newval), __ATOMIC_SEQ_CST);                 \
+    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
   }))
 
-#if GLIB_SIZEOF_VOID_P == 8
-
+#if defined(g_has_typeof)
 #define g_atomic_pointer_get(atomic) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
-    guint64 gapg_temp = __atomic_load_8 ((atomic), __ATOMIC_SEQ_CST);        \
-    (gpointer) gapg_temp;                                                    \
+    __typeof__(*(atomic)) gapg_temp_newval;                                  \
+    __typeof__((atomic)) gapg_temp_atomic = (atomic);                        \
+    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST);   \
+    gapg_temp_newval;                                                        \
   }))
 #define g_atomic_pointer_set(atomic, newval) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    __typeof__((atomic)) gaps_temp_atomic = (atomic);                        \
+    __typeof__(*(atomic)) gaps_temp_newval = (newval);                       \
     (void) (0 ? (gpointer) *(atomic) : NULL);                                \
-    __atomic_store_8 ((atomic), (gsize) (newval), __ATOMIC_SEQ_CST);         \
+    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST);  \
   }))
-
-#else /* GLIB_SIZEOF_VOID_P == 8 */
-
-/* This assumes that if sizeof(void *) is not 8, then it is 4:
- * gatomic.c statically asserts that (using G_STATIC_ASSERT
- * at top-level in a header was problematic, see #730932) */
-
+#else  /* if !defined(g_has_typeof) */
 #define g_atomic_pointer_get(atomic) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
-    guint32 gapg_temp = __atomic_load_4 ((atomic), __ATOMIC_SEQ_CST);        \
-    (gpointer) gapg_temp;                                                    \
+    gpointer gapg_temp_newval;                                               \
+    gpointer *gapg_temp_atomic = (gpointer *)(atomic);                       \
+    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST);   \
+    gapg_temp_newval;                                                        \
   }))
 #define g_atomic_pointer_set(atomic, newval) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    gpointer *gaps_temp_atomic = (gpointer *)(atomic);                       \
+    gpointer gaps_temp_newval = (gpointer)(newval);                          \
     (void) (0 ? (gpointer) *(atomic) : NULL);                                \
-    __atomic_store_4 ((atomic), (gsize) (newval), __ATOMIC_SEQ_CST);         \
+    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST);  \
+  }))
+#endif  /* !defined(g_has_typeof) */
+
+#define g_atomic_int_inc(atomic) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
+    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
+  }))
+#define g_atomic_int_dec_and_test(atomic) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
+    __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1;                 \
+  }))
+#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \
+  (G_GNUC_EXTENSION ({                                                       \
+    gint gaicae_oldval = (oldval);                                           \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
+    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
+  }))
+#define g_atomic_int_add(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
+    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
+  }))
+#define g_atomic_int_and(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
+    (guint) __atomic_fetch_and ((atomic), (val), __ATOMIC_SEQ_CST);          \
+  }))
+#define g_atomic_int_or(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
+    (guint) __atomic_fetch_or ((atomic), (val), __ATOMIC_SEQ_CST);           \
+  }))
+#define g_atomic_int_xor(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
+    (guint) __atomic_fetch_xor ((atomic), (val), __ATOMIC_SEQ_CST);          \
   }))
 
-#endif /* GLIB_SIZEOF_VOID_P == 8 */
+#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof (oldval) == sizeof (gpointer));                  \
+    __typeof__ ((oldval)) gapcae_oldval = (oldval);                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
+    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
+  }))
+#define g_atomic_pointer_add(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
+    (void) (0 ? (val) ^ (val) : 1);                                          \
+    (gssize) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);         \
+  }))
+#define g_atomic_pointer_and(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                       \
+    volatile gsize *gapa_atomic = (volatile gsize *) (atomic);               \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
+    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
+    (void) (0 ? (val) ^ (val) : 1);                                          \
+    (gsize) __atomic_fetch_and (gapa_atomic, (val), __ATOMIC_SEQ_CST);       \
+  }))
+#define g_atomic_pointer_or(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                       \
+    volatile gsize *gapo_atomic = (volatile gsize *) (atomic);               \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
+    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
+    (void) (0 ? (val) ^ (val) : 1);                                          \
+    (gsize) __atomic_fetch_or (gapo_atomic, (val), __ATOMIC_SEQ_CST);        \
+  }))
+#define g_atomic_pointer_xor(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                       \
+    volatile gsize *gapx_atomic = (volatile gsize *) (atomic);               \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
+    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
+    (void) (0 ? (val) ^ (val) : 1);                                          \
+    (gsize) __atomic_fetch_xor (gapx_atomic, (val), __ATOMIC_SEQ_CST);       \
+  }))
 
 #else /* defined(__ATOMIC_SEQ_CST) */
 
+/* We want to achieve __ATOMIC_SEQ_CST semantics here. See
+ * https://en.cppreference.com/w/c/atomic/memory_order#Constants. For load
+ * operations, that means performing an *acquire*:
+ * > A load operation with this memory order performs the acquire operation on
+ * > the affected memory location: no reads or writes in the current thread can
+ * > be reordered before this load. All writes in other threads that release
+ * > the same atomic variable are visible in the current thread.
+ *
+ * “no reads or writes in the current thread can be reordered before this load”
+ * is implemented using a compiler barrier (a no-op `__asm__` section) to
+ * prevent instruction reordering. Writes in other threads are synchronised
+ * using `__sync_synchronize()`. It’s unclear from the GCC documentation whether
+ * `__sync_synchronize()` acts as a compiler barrier, hence our explicit use of
+ * one.
+ *
+ * For store operations, `__ATOMIC_SEQ_CST` means performing a *release*:
+ * > A store operation with this memory order performs the release operation:
+ * > no reads or writes in the current thread can be reordered after this store.
+ * > All writes in the current thread are visible in other threads that acquire
+ * > the same atomic variable (see Release-Acquire ordering below) and writes
+ * > that carry a dependency into the atomic variable become visible in other
+ * > threads that consume the same atomic (see Release-Consume ordering below).
+ *
+ * “no reads or writes in the current thread can be reordered after this store”
+ * is implemented using a compiler barrier to prevent instruction reordering.
+ * “All writes in the current thread are visible in other threads” is implemented
+ * using `__sync_synchronize()`; similarly for “writes that carry a dependency”.
+ */
 #define g_atomic_int_get(atomic) \
   (G_GNUC_EXTENSION ({                                                       \
+    gint gaig_result;                                                        \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
     (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
+    gaig_result = (gint) *(atomic);                                          \
     __sync_synchronize ();                                                   \
-    (gint) *(atomic);                                                        \
+    __asm__ __volatile__ ("" : : : "memory");                                \
+    gaig_result;                                                             \
   }))
 #define g_atomic_int_set(atomic, newval) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
     (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
-    *(atomic) = (newval);                                                    \
     __sync_synchronize ();                                                   \
+    __asm__ __volatile__ ("" : : : "memory");                                \
+    *(atomic) = (newval);                                                    \
   }))
 #define g_atomic_pointer_get(atomic) \
   (G_GNUC_EXTENSION ({                                                       \
+    gpointer gapg_result;                                                    \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    gapg_result = (gpointer) *(atomic);                                      \
     __sync_synchronize ();                                                   \
-    (gpointer) *(atomic);                                                    \
+    __asm__ __volatile__ ("" : : : "memory");                                \
+    gapg_result;                                                             \
   }))
 #define g_atomic_pointer_set(atomic, newval) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
     (void) (0 ? (gpointer) *(atomic) : NULL);                                \
-    *(atomic) = (__typeof__ (*(atomic))) (gsize) (newval);                   \
     __sync_synchronize ();                                                   \
+    __asm__ __volatile__ ("" : : : "memory");                                \
+    *(atomic) = (__typeof__ (*(atomic))) (gsize) (newval);                   \
   }))
 
-#endif /* !defined(__ATOMIC_SEQ_CST) */
-
 #define g_atomic_int_inc(atomic) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
@@ -250,6 +370,8 @@ G_END_DECLS
     (gsize) __sync_fetch_and_xor ((atomic), (val));                          \
   }))
 
+#endif /* !defined(__ATOMIC_SEQ_CST) */
+
 #else /* defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) */
 
 #define g_atomic_int_get(atomic) \
index 86f8841..479ae42 100644 (file)
 static void stack_trace (const char * const *args);
 #endif
 
+/* Default to using LLDB for backtraces on macOS. */
+#ifdef __APPLE__
+#define USE_LLDB
+#endif
+
+#ifdef USE_LLDB
+#define DEBUGGER "lldb"
+#else
+#define DEBUGGER "gdb"
+#endif
+
 /* People want to hit this from their debugger... */
 GLIB_AVAILABLE_IN_ALL volatile gboolean glib_on_error_halt;
 volatile gboolean glib_on_error_halt = TRUE;
@@ -231,7 +242,7 @@ g_on_error_stack_trace (const gchar *prg_name)
 #if defined(G_OS_UNIX)
   pid_t pid;
   gchar buf[16];
-  const gchar *args[4] = { "gdb", NULL, NULL, NULL };
+  const gchar *args[5] = { DEBUGGER, NULL, NULL, NULL, NULL };
   int status;
 
   if (!prg_name)
@@ -239,8 +250,14 @@ g_on_error_stack_trace (const gchar *prg_name)
 
   _g_sprintf (buf, "%u", (guint) getpid ());
 
+#ifdef USE_LLDB
+  args[1] = prg_name;
+  args[2] = "-p";
+  args[3] = buf;
+#else
   args[1] = prg_name;
   args[2] = buf;
+#endif
 
   pid = fork ();
   if (pid == 0)
@@ -250,11 +267,19 @@ g_on_error_stack_trace (const gchar *prg_name)
     }
   else if (pid == (pid_t) -1)
     {
-      perror ("unable to fork gdb");
+      perror ("unable to fork " DEBUGGER);
       return;
     }
 
-  waitpid (pid, &status, 0);
+  /* Wait until the child really terminates. On Mac OS X waitpid ()
+   * will also return when the child is being stopped due to tracing.
+   */
+  while (1)
+    {
+      pid_t retval = waitpid (pid, &status, 0);
+      if (WIFEXITED (retval) || WIFSIGNALED (retval))
+        break;
+    }
 #else
   if (IsDebuggerPresent ())
     G_BREAKPOINT ();
@@ -273,6 +298,8 @@ stack_trace_sigchld (int signum)
   stack_trace_done = TRUE;
 }
 
+#define BUFSIZE 1024
+
 static void
 stack_trace (const char * const *args)
 {
@@ -282,8 +309,8 @@ stack_trace (const char * const *args)
   fd_set fdset;
   fd_set readset;
   struct timeval tv;
-  int sel, idx, state;
-  char buffer[256];
+  int sel, idx, state, line_idx;
+  char buffer[BUFSIZE];
   char c;
 
   stack_trace_done = FALSE;
@@ -315,7 +342,7 @@ stack_trace (const char * const *args)
           close (2);
           dup (old_err);
         }
-      perror ("exec gdb failed");
+      perror ("exec " DEBUGGER " failed");
       _exit (0);
     }
   else if (pid == (pid_t) -1)
@@ -327,11 +354,19 @@ stack_trace (const char * const *args)
   FD_ZERO (&fdset);
   FD_SET (out_fd[0], &fdset);
 
+#ifdef USE_LLDB
+  write (in_fd[1], "bt\n", 3);
+  write (in_fd[1], "p x = 0\n", 8);
+  write (in_fd[1], "process detach\n", 15);
+  write (in_fd[1], "quit\n", 5);
+#else
   write (in_fd[1], "backtrace\n", 10);
   write (in_fd[1], "p x = 0\n", 8);
   write (in_fd[1], "quit\n", 5);
+#endif
 
   idx = 0;
+  line_idx = 0;
   state = 0;
 
   while (1)
@@ -348,10 +383,15 @@ stack_trace (const char * const *args)
         {
           if (read (out_fd[0], &c, 1))
             {
+              line_idx += 1;
               switch (state)
                 {
                 case 0:
+#ifdef USE_LLDB
+                  if (c == '*' || (c == ' ' && line_idx == 1))
+#else
                   if (c == '#')
+#endif
                     {
                       state = 1;
                       idx = 0;
@@ -359,13 +399,15 @@ stack_trace (const char * const *args)
                     }
                   break;
                 case 1:
-                  buffer[idx++] = c;
+                  if (idx < BUFSIZE)
+                    buffer[idx++] = c;
                   if ((c == '\n') || (c == '\r'))
                     {
                       buffer[idx] = 0;
                       _g_fprintf (stdout, "%s", buffer);
                       state = 0;
                       idx = 0;
+                      line_idx = 0;
                     }
                   break;
                 default:
index dd7ed20..f2d110e 100644 (file)
@@ -76,10 +76,10 @@ static const char base64_alphabet[] =
  * be written to it. Due to the way base64 encodes you will need
  * at least: (@len / 3 + 1) * 4 + 4 bytes (+ 4 may be needed in case of
  * non-zero state). If you enable line-breaking you will need at least:
- * ((@len / 3 + 1) * 4 + 4) / 72 + 1 bytes of extra space.
+ * ((@len / 3 + 1) * 4 + 4) / 76 + 1 bytes of extra space.
  *
  * @break_lines is typically used when putting base64-encoded data in emails.
- * It breaks the lines at 72 columns instead of putting all of the text on
+ * It breaks the lines at 76 columns instead of putting all of the text on
  * the same line. This avoids problems with long lines in the email system.
  * Note however that it breaks the lines with `LF` characters, not
  * `CR LF` sequences, so the result cannot be passed directly to SMTP
index 46e5f7d..23024d0 100644 (file)
@@ -224,7 +224,7 @@ g_bit_lock (volatile gint *address,
     guint mask = 1u << lock_bit;
     guint v;
 
-    v = g_atomic_int_get (address);
+    v = (guint) g_atomic_int_get (address);
     if (v & mask)
       {
         guint class = ((gsize) address) % G_N_ELEMENTS (g_bit_lock_contended);
index 25f1234..e22f794 100644 (file)
@@ -775,13 +775,22 @@ parse_bookmark_element (GMarkupParseContext  *context,
   item = bookmark_item_new (uri);
 
   if (added != NULL && !timestamp_from_iso8601 (added, &item->added, error))
-    return;
+    {
+      bookmark_item_free (item);
+      return;
+    }
 
   if (modified != NULL && !timestamp_from_iso8601 (modified, &item->modified, error))
-    return;
+    {
+      bookmark_item_free (item);
+      return;
+    }
 
   if (visited != NULL && !timestamp_from_iso8601 (visited, &item->visited, error))
-    return;
+    {
+      bookmark_item_free (item);
+      return;
+    }
 
   add_error = NULL;
   g_bookmark_file_add_item (parse_data->bookmark_file,
index 7b72886..ec69231 100644 (file)
@@ -365,7 +365,7 @@ g_bytes_equal (gconstpointer bytes1,
   g_return_val_if_fail (bytes2 != NULL, FALSE);
 
   return b1->size == b2->size &&
-         memcmp (b1->data, b2->data, b1->size) == 0;
+         (b1->size == 0 || memcmp (b1->data, b2->data, b1->size) == 0);
 }
 
 /**
index 7bce2a1..bb775bd 100644 (file)
@@ -315,7 +315,7 @@ g_get_console_charset (const char **charset)
           g_free (emsg);
         }
     }
-  /* fall-back to UTF-8 if the rest failed (it's a sane and universal default) */
+  /* fall-back to UTF-8 if the rest failed (it's a universal default) */
   if (raw == NULL)
     raw = "UTF-8";
 
@@ -549,10 +549,15 @@ append_locale_variants (GPtrArray *array,
  * 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.
+ * This function handles territory, charset and extra locale modifiers. See
+ * [`setlocale(3)`](man:setlocale) for information about locales and their format.
  *
- * For example, if @locale is "fr_BE", then the returned list
- * is "fr_BE", "fr".
+ * @locale itself is guaranteed to be returned in the output.
+ *
+ * For example, if @locale is `fr_BE`, then the returned list
+ * is `fr_BE`, `fr`. If @locale is `en_GB.UTF-8@euro`, then the returned list
+ * is `en_GB.UTF-8@euro`, `en_GB.UTF-8`, `en_GB@euro`, `en_GB`, `en.UTF-8@euro`,
+ * `en.UTF-8`, `en@euro`, `en`.
  *
  * If you need the list of variants for the current locale,
  * use g_get_language_names().
index 1ad21ff..f8a3f9a 100644 (file)
@@ -1344,6 +1344,7 @@ sha512_sum_close (Sha512sum *sha512)
   memset (pad + pad_len, 0x00, zeros / 8);
   pad_len += zeros / 8;
   zeros = zeros % 8;
+  (void) zeros;  /* don’t care about the dead store */
 
   /* put message bit length at the end of padding */
   PUT_UINT64 (sha512->data_len[1], pad, pad_len);
index 603c2dd..9509e59 100644 (file)
@@ -1,6 +1,6 @@
 /*
   If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
-  destructors, in a sane way, including e.g. on library unload. If not you're on
+  destructors, in a usable way, including e.g. on library unload. If not you're on
   your own.
 
   Some compilers need #pragma to handle this, which does not work with macros,
index 26b3f59..ec7b95b 100644 (file)
@@ -83,8 +83,8 @@
  *
  * #GDate is simple to use. First you need a "blank" date; you can get a
  * dynamically allocated date from g_date_new(), or you can declare an
- * automatic variable or array and initialize it to a sane state by
- * calling g_date_clear(). A cleared date is sane; it's safe to call
+ * automatic variable or array and initialize it by
+ * calling g_date_clear(). A cleared date is safe; it's safe to call
  * g_date_set_dmy() and the other mutator functions to initialize the
  * value of a cleared date. However, a cleared date is initially
  * invalid, meaning that it doesn't represent a day that exists.
  *
  * If it's declared on the stack, it will contain garbage so must be
  * initialized with g_date_clear(). g_date_clear() makes the date invalid
- * but sane. An invalid date doesn't represent a day, it's "empty." A date
+ * but safe. An invalid date doesn't represent a day, it's "empty." A date
  * becomes valid after you set it to a Julian day or you set a day, month,
  * and year.
  */
  * g_date_new:
  *
  * Allocates a #GDate and initializes
- * it to a sane state. The new date will
+ * it to a safe state. The new date will
  * be cleared (as if you'd called g_date_clear()) but invalid (it won't
  * represent an existing day). Free the return value with g_date_free().
  *
@@ -420,7 +420,7 @@ static const guint16 days_in_year[2][14] =
 gboolean     
 g_date_valid_month (GDateMonth m)
 { 
-  return ( (m > G_DATE_BAD_MONTH) && (m < 13) );
+  return (((gint) m > G_DATE_BAD_MONTH) && ((gint) m < 13));
 }
 
 /**
@@ -466,7 +466,7 @@ g_date_valid_day (GDateDay d)
 gboolean     
 g_date_valid_weekday (GDateWeekday w)
 {
-  return ( (w > G_DATE_BAD_WEEKDAY) && (w < 8) );
+  return (((gint) w > G_DATE_BAD_WEEKDAY) && ((gint) w < 8));
 }
 
 /**
@@ -862,7 +862,7 @@ g_date_days_between (const GDate *d1,
  * @date: pointer to one or more dates to clear
  * @n_dates: number of dates to clear
  *
- * Initializes one or more #GDate structs to a sane but invalid
+ * Initializes one or more #GDate structs to a safe but invalid
  * state. The cleared dates will not represent an existing date, but will
  * not contain garbage. Useful to init a date declared on the stack.
  * Validity can be tested with g_date_valid().
@@ -2055,7 +2055,7 @@ g_date_compare (const GDate *lhs,
  * @tm: (not nullable): struct tm to fill
  *
  * Fills in the date-related bits of a struct tm using the @date value.
- * Initializes the non-date parts with something sane but meaningless.
+ * Initializes the non-date parts with something safe but meaningless.
  */
 void        
 g_date_to_struct_tm (const GDate *d, 
index 3bc07bf..65fe811 100644 (file)
@@ -178,7 +178,7 @@ GLIB_AVAILABLE_IN_ALL
 guint        g_date_get_iso8601_week_of_year (const GDate *date);
 
 /* If you create a static date struct you need to clear it to get it
- * in a sane state before use. You can clear a whole array at
+ * in a safe state before use. You can clear a whole array at
  * once with the ndates argument.
  */
 GLIB_AVAILABLE_IN_ALL
index 3be4eba..f93d7d8 100644 (file)
@@ -935,9 +935,8 @@ g_date_time_new_from_unix (GTimeZone *tz,
  * time zone @tz.  The time is as accurate as the system allows, to a
  * maximum accuracy of 1 microsecond.
  *
- * This function will always succeed unless the system clock is set to
- * truly insane values (or unless GLib is still being used after the
- * year 9999).
+ * This function will always succeed unless GLib is still being used after the
+ * year 9999.
  *
  * You should release the return value by calling g_date_time_unref()
  * when you are done with it.
@@ -1194,6 +1193,11 @@ get_iso8601_seconds (const gchar *text, gsize length, gdouble *value)
 
   if (length > 2 && !(text[i] == '.' || text[i] == ','))
     return FALSE;
+
+  /* Ignore leap seconds, see g_date_time_new_from_iso8601() */
+  if (v >= 60.0 && v <= 61.0)
+    v = 59.0;
+
   i++;
   if (i == length)
     return FALSE;
@@ -1429,9 +1433,17 @@ parse_iso8601_time (const gchar *text, gsize length,
  *
  * Creates a #GDateTime corresponding to the given
  * [ISO 8601 formatted string](https://en.wikipedia.org/wiki/ISO_8601)
- * @text. ISO 8601 strings of the form <date><sep><time><tz> are supported.
+ * @text. ISO 8601 strings of the form <date><sep><time><tz> are supported, with
+ * some extensions from [RFC 3339](https://tools.ietf.org/html/rfc3339) as
+ * mentioned below.
+ *
+ * Note that as #GDateTime "is oblivious to leap seconds", leap seconds information
+ * in an ISO-8601 string will be ignored, so a `23:59:60` time would be parsed as
+ * `23:59:59`.
  *
- * <sep> is the separator and can be either 'T', 't' or ' '.
+ * <sep> is the separator and can be either 'T', 't' or ' '. The latter two
+ * separators are an extension from
+ * [RFC 3339](https://tools.ietf.org/html/rfc3339#section-5.6).
  *
  * <date> is in the form:
  *
index c6edb83..55e1e75 100644 (file)
@@ -42,6 +42,7 @@
 #include "gunicode.h"
 #include "gconvert.h"
 #include "gquark.h"
+#include "gthreadprivate.h"
 
 /* Environ array functions {{{1 */
 static gboolean
@@ -299,6 +300,13 @@ g_setenv (const gchar *variable,
   g_return_val_if_fail (strchr (variable, '=') == NULL, FALSE);
   g_return_val_if_fail (value != NULL, FALSE);
 
+#ifndef G_DISABLE_CHECKS
+  /* FIXME: This will be upgraded to a g_warning() in a future release of GLib.
+   * See https://gitlab.gnome.org/GNOME/glib/issues/715 */
+  if (g_thread_n_created () > 0)
+    g_debug ("setenv()/putenv() are not thread-safe and should not be used after threads are created");
+#endif
+
 #ifdef HAVE_SETENV
   result = setenv (variable, value, overwrite);
 #else
@@ -355,6 +363,13 @@ g_unsetenv (const gchar *variable)
   g_return_if_fail (variable != NULL);
   g_return_if_fail (strchr (variable, '=') == NULL);
 
+#ifndef G_DISABLE_CHECKS
+  /* FIXME: This will be upgraded to a g_warning() in a future release of GLib.
+   * See https://gitlab.gnome.org/GNOME/glib/issues/715 */
+  if (g_thread_n_created () > 0)
+    g_debug ("unsetenv() is not thread-safe and should not be used after threads are created");
+#endif
+
 #ifdef HAVE_UNSETENV
   unsetenv (variable);
 #else /* !HAVE_UNSETENV */
index cf20bc8..86167d7 100644 (file)
  *   |[<!-- language="C" -->
  *   #define G_SPAWN_ERROR g_spawn_error_quark ()
  *
- *   GQuark
- *   g_spawn_error_quark (void)
- *   {
- *       return g_quark_from_static_string ("g-spawn-error-quark");
- *   }
+ *   G_DEFINE_QUARK (g-spawn-error-quark, g_spawn_error)
  *   ]|
  *
  * - The quark function for the error domain is called
index e61b037..0f1562a 100644 (file)
@@ -99,7 +99,9 @@
  *
  * To call a function for each key and value pair use
  * g_hash_table_foreach() or use an iterator to iterate over the
- * key/value pairs in the hash table, see #GHashTableIter.
+ * key/value pairs in the hash table, see #GHashTableIter. The iteration order
+ * of a hash table is not defined, and you must not rely on iterating over
+ * keys/values in the same order as they were inserted.
  *
  * To destroy a #GHashTable use g_hash_table_destroy().
  *
  * to iterate over the elements of a #GHashTable. GHashTableIter
  * structures are typically allocated on the stack and then initialized
  * with g_hash_table_iter_init().
+ *
+ * The iteration order of a #GHashTableIter over the keys/values in a hash
+ * table is not defined.
  */
 
 /**
@@ -463,13 +468,6 @@ g_hash_table_lookup_node (GHashTable    *hash_table,
   gboolean have_tombstone = FALSE;
   guint step = 0;
 
-  /* If this happens, then the application is probably doing too much work
-   * from a destroy notifier. The alternative would be to crash any second
-   * (as keys, etc. will be NULL).
-   * Applications need to either use g_hash_table_destroy, or ensure the hash
-   * table is empty prior to removing the last reference using g_hash_table_unref(). */
-  g_assert (!g_atomic_ref_count_compare (&hash_table->ref_count, 0));
-
   hash_value = hash_table->hash_func (key);
   if (G_UNLIKELY (!HASH_IS_REAL (hash_value)))
     hash_value = 2;
@@ -1095,6 +1093,10 @@ g_hash_table_new_full (GHashFunc      hash_func,
  * Initializes a key/value pair iterator and associates it with
  * @hash_table. Modifying the hash table after calling this function
  * invalidates the returned iterator.
+ *
+ * The iteration order of a #GHashTableIter over the keys/values in a hash
+ * table is not defined.
+ *
  * |[<!-- language="C" -->
  * GHashTableIter iter;
  * gpointer key, value;
@@ -1658,12 +1660,16 @@ g_hash_table_replace (GHashTable *hash_table,
 /**
  * g_hash_table_add:
  * @hash_table: a #GHashTable
- * @key: a key to insert
+ * @key: (transfer full): a key to insert
  *
  * This is a convenience function for using a #GHashTable as a set.  It
  * is equivalent to calling g_hash_table_replace() with @key as both the
  * key and the value.
  *
+ * In particular, this means that if @key already exists in the hash table, then
+ * the old copy of @key in the hash table is freed and @key replaces it in the
+ * table.
+ *
  * When a hash table only ever contains keys that have themselves as the
  * corresponding value it is able to be stored more efficiently.  See
  * the discussion in the section description.
@@ -2026,6 +2032,9 @@ g_hash_table_foreach_steal (GHashTable *hash_table,
  * items). To remove all items matching a predicate, use
  * g_hash_table_foreach_remove().
  *
+ * The order in which g_hash_table_foreach() iterates over the keys/values in
+ * the hash table is not defined.
+ *
  * See g_hash_table_find() for performance caveats for linear
  * order searches in contrast to g_hash_table_lookup().
  */
index 1956e9d..d163998 100644 (file)
@@ -596,6 +596,9 @@ g_io_channel_purge (GIOChannel *channel)
  * given @channel. For example, if condition is #G_IO_IN, the source will 
  * be dispatched when there's data available for reading.
  *
+ * The callback function invoked by the #GSource should be added with
+ * g_source_set_callback(), but it has type #GIOFunc (not #GSourceFunc).
+ *
  * g_io_add_watch() is a simpler interface to this same functionality, for 
  * the case where you want to add the source to the default main loop context 
  * at the default priority.
@@ -1666,8 +1669,16 @@ g_io_channel_read_line (GIOChannel  *channel,
 
   if (status == G_IO_STATUS_NORMAL)
     {
+      gchar *line;
+
+      /* Copy the read bytes (including any embedded nuls) and nul-terminate.
+       * `USE_BUF (channel)->str` is guaranteed to be nul-terminated as it’s a
+       * #GString, so it’s safe to call g_memdup() with +1 length to allocate
+       * a nul-terminator. */
       g_assert (USE_BUF (channel));
-      *str_return = g_strndup (USE_BUF (channel)->str, got_length);
+      line = g_memdup (USE_BUF (channel)->str, got_length + 1);
+      line[got_length] = '\0';
+      *str_return = g_steal_pointer (&line);
       g_string_erase (USE_BUF (channel), 0, got_length);
     }
   else
index e486f69..dc80ce5 100644 (file)
@@ -3317,6 +3317,7 @@ g_key_file_set_key_comment (GKeyFile     *key_file,
   pair->value = g_key_file_parse_comment_as_value (key_file, comment);
   
   key_node = g_list_insert (key_node, pair, 1);
+  (void) key_node;
 
   return TRUE;
 }
index efa4a99..acd38a7 100644 (file)
@@ -35,6 +35,10 @@ g_autoptr_cleanup_gstring_free (GString *string)
     g_string_free (string, TRUE);
 }
 
+/* Ignore deprecations in case we refer to a type which was added in a more
+ * recent GLib version than the user’s #GLIB_VERSION_MAX_ALLOWED definition. */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+
 /* If adding a cleanup here, please also add a test case to
  * glib/tests/autoptr.c
  */
@@ -43,6 +47,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBookmarkFile, g_bookmark_file_free)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBytes, g_bytes_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GChecksum, g_checksum_free)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDateTime, g_date_time_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDate, g_date_free)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDir, g_dir_close)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GError, g_error_free)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GHashTable, g_hash_table_unref)
@@ -54,6 +59,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GArray, g_array_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GPtrArray, g_ptr_array_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GByteArray, g_byte_array_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainContext, g_main_context_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainContextPusher, g_main_context_pusher_free)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMainLoop, g_main_loop_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSource, g_source_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMappedFile, g_mapped_file_unref)
@@ -91,3 +97,5 @@ G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GVariantDict, g_variant_dict_clear)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantType, g_variant_type_free)
 G_DEFINE_AUTO_CLEANUP_FREE_FUNC(GStrv, g_strfreev, NULL)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GRefString, g_ref_string_release)
+
+G_GNUC_END_IGNORE_DEPRECATIONS
index 9561a65..fa824f3 100644 (file)
 
 #define __GLIB_GOBJECT_H_INSIDE__
 
-/* topmost include file for GObject header files */
 #include <gobject/gbinding.h>
 #include <gobject/gboxed.h>
 #include <gobject/genums.h>
+#include <gobject/glib-enumtypes.h>
 #include <gobject/gobject.h>
 #include <gobject/gparam.h>
 #include <gobject/gparamspecs.h>
 #include <gobject/gtype.h>
 #include <gobject/gtypemodule.h>
 #include <gobject/gtypeplugin.h>
-#include <gobject/gvalue.h>
 #include <gobject/gvaluearray.h>
+#include <gobject/gvalue.h>
 #include <gobject/gvaluetypes.h>
-#include <gobject/glib-enumtypes.h>
 
 #include <gobject/gobject-autocleanups.h>
 
index 9328e70..608fbd6 100644 (file)
@@ -30,6 +30,8 @@
 #include "gmain-internal.h"
 
 #include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
 
 /**
  * SECTION:gunix
@@ -421,3 +423,122 @@ g_unix_fd_add (gint              fd,
 {
   return g_unix_fd_add_full (G_PRIORITY_DEFAULT, fd, condition, function, user_data, NULL);
 }
+
+/**
+ * g_unix_get_passwd_entry:
+ * @user_name: the username to get the passwd file entry for
+ * @error: return location for a #GError, or %NULL
+ *
+ * Get the `passwd` file entry for the given @user_name using `getpwnam_r()`.
+ * This can fail if the given @user_name doesn’t exist.
+ *
+ * The returned `struct passwd` has been allocated using g_malloc() and should
+ * be freed using g_free(). The strings referenced by the returned struct are
+ * included in the same allocation, so are valid until the `struct passwd` is
+ * freed.
+ *
+ * This function is safe to call from multiple threads concurrently.
+ *
+ * You will need to include `pwd.h` to get the definition of `struct passwd`.
+ *
+ * Returns: (transfer full): passwd entry, or %NULL on error; free the returned
+ *    value with g_free()
+ * Since: 2.64
+ */
+struct passwd *
+g_unix_get_passwd_entry (const gchar  *user_name,
+                         GError      **error)
+{
+  struct passwd *passwd_file_entry;
+  struct
+    {
+      struct passwd pwd;
+      char string_buffer[];
+    } *buffer = NULL;
+  gsize string_buffer_size = 0;
+  GError *local_error = NULL;
+  int errsv = 0;
+
+  g_return_val_if_fail (user_name != NULL, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+#ifdef _SC_GETPW_R_SIZE_MAX
+    {
+      /* Get the recommended buffer size */
+      glong string_buffer_size_long = sysconf (_SC_GETPW_R_SIZE_MAX);
+      if (string_buffer_size_long > 0)
+        string_buffer_size = string_buffer_size_long;
+    }
+#endif /* _SC_GETPW_R_SIZE_MAX */
+
+  /* Default starting size. */
+  if (string_buffer_size == 0)
+    string_buffer_size = 64;
+
+  do
+    {
+      int retval;
+
+      g_free (buffer);
+      /* Allocate space for the `struct passwd`, and then a buffer for all its
+       * strings (whose size is @string_buffer_size, which increases in this
+       * loop until it’s big enough). Add 6 extra bytes to work around a bug in
+       * macOS < 10.3. See #156446.
+       */
+      buffer = g_malloc0 (sizeof (*buffer) + string_buffer_size + 6);
+
+      errno = 0;
+      retval = getpwnam_r (user_name, &buffer->pwd, buffer->string_buffer,
+                           string_buffer_size, &passwd_file_entry);
+      errsv = errno;
+
+      /* Bail out if: the lookup was successful, or if the user id can't be
+       * found (should be pretty rare case actually), or if the buffer should be
+       * big enough and yet lookups are still not successful.
+       */
+      if (passwd_file_entry != NULL)
+        {
+          /* Success. */
+          break;
+        }
+      else if (retval == 0 ||
+          errsv == ENOENT || errsv == ESRCH ||
+          errsv == EBADF || errsv == EPERM)
+        {
+          /* Username not found. */
+          g_unix_set_error_from_errno (&local_error, errsv);
+          break;
+        }
+      else if (errsv == ERANGE)
+        {
+          /* Can’t allocate enough string buffer space. */
+          if (string_buffer_size > 32 * 1024)
+            {
+              g_unix_set_error_from_errno (&local_error, errsv);
+              break;
+            }
+
+          string_buffer_size *= 2;
+          continue;
+        }
+      else
+        {
+          g_unix_set_error_from_errno (&local_error, errsv);
+          break;
+        }
+    }
+  while (passwd_file_entry == NULL);
+
+  g_assert (passwd_file_entry == NULL ||
+            (gpointer) passwd_file_entry == (gpointer) buffer);
+
+  /* Success or error. */
+  if (local_error != NULL)
+    {
+      g_clear_pointer (&buffer, g_free);
+      g_propagate_error (error, g_steal_pointer (&local_error));
+      errno = errsv;
+    }
+
+  return (struct passwd *) g_steal_pointer (&buffer);
+}
index ef8702d..a5ea9a1 100644 (file)
@@ -114,6 +114,10 @@ guint    g_unix_fd_add             (gint              fd,
                                     GUnixFDSourceFunc function,
                                     gpointer          user_data);
 
+GLIB_AVAILABLE_IN_2_64
+struct passwd *g_unix_get_passwd_entry (const gchar  *user_name,
+                                        GError      **error);
+
 G_END_DECLS
 
 #endif  /* __G_UNIX_H__ */
index 5c21b6b..e3b3055 100644 (file)
@@ -80,8 +80,8 @@
 #include <glib/gslist.h>
 #include <glib/gspawn.h>
 #include <glib/gstrfuncs.h>
-#include <glib/gstring.h>
 #include <glib/gstringchunk.h>
+#include <glib/gstring.h>
 #include <glib/gtestutils.h>
 #include <glib/gthread.h>
 #include <glib/gthreadpool.h>
 #include <glib/gurifuncs.h>
 #include <glib/gutils.h>
 #include <glib/guuid.h>
-#include <glib/gvarianttype.h>
 #include <glib/gvariant.h>
+#include <glib/gvarianttype.h>
 #include <glib/gversion.h>
 #include <glib/gversionmacros.h>
+
 #ifdef G_PLATFORM_WIN32
 #include <glib/gwin32.h>
 #endif
index 1876738..fdb8f8c 100644 (file)
@@ -25,7 +25,9 @@
 #error "config.h must be included prior to glib_trace.h"
 #endif
 
-#ifdef HAVE_DTRACE
+/* Ignore probes when doing static analysis, as they do weird things which
+ * confuses the analyser. */
+#if defined(HAVE_DTRACE) && !defined(__clang_analyzer__)
 
 /* include the generated probes header and put markers in code */
 #include "glib_probes.h"
index 39143fa..474331a 100644 (file)
@@ -175,6 +175,13 @@ g_list_alloc (void)
  *
  * If list elements contain dynamically-allocated memory, you should
  * either use g_list_free_full() or free them manually first.
+ *
+ * It can be combined with g_steal_pointer() to ensure the list head pointer
+ * is not left dangling:
+ * |[<!-- language="C" -->
+ * GList *list_of_borrowed_things = …;  /<!-- -->* (transfer container) *<!-- -->/
+ * g_list_free (g_steal_pointer (&list_of_borrowed_things));
+ * ]|
  */
 void
 g_list_free (GList *list)
@@ -214,6 +221,15 @@ g_list_free_1 (GList *list)
  * @free_func must not modify the list (eg, by removing the freed
  * element from it).
  *
+ * It can be combined with g_steal_pointer() to ensure the list head pointer
+ * is not left dangling ­— this also has the nice property that the head pointer
+ * is cleared before any of the list elements are freed, to prevent double frees
+ * from @free_func:
+ * |[<!-- language="C" -->
+ * GList *list_of_owned_things = …;  /<!-- -->* (transfer full) (element-type GObject) *<!-- -->/
+ * g_list_free_full (g_steal_pointer (&list_of_owned_things), g_object_unref);
+ * ]|
+ *
  * Since: 2.28
  */
 void
@@ -1313,3 +1329,32 @@ g_list_sort_with_data (GList            *list,
 {
   return g_list_sort_real (list, (GFunc) compare_func, user_data);
 }
+
+/**
+ * g_clear_list: (skip)
+ * @list_ptr: (not nullable): a #GList return location
+ * @destroy: (nullable): the function to pass to g_list_free_full() or %NULL to not free elements
+ *
+ * Clears a pointer to a #GList, freeing it and, optionally, freeing its elements using @destroy.
+ *
+ * @list_ptr must be a valid pointer. If @list_ptr points to a null #GList, this does nothing.
+ *
+ * Since: 2.64
+ */
+void
+(g_clear_list) (GList          **list_ptr,
+                GDestroyNotify   destroy)
+{
+  GList *list;
+
+  list = *list_ptr;
+  if (list)
+    {
+      *list_ptr = NULL;
+
+      if (destroy)
+        g_list_free_full (list, destroy);
+      else
+        g_list_free (list);
+    }
+}
index 8b4703e..ddea3cf 100644 (file)
@@ -147,6 +147,27 @@ GLIB_AVAILABLE_IN_ALL
 gpointer g_list_nth_data                (GList            *list,
                                         guint             n);
 
+GLIB_AVAILABLE_IN_2_64
+void     g_clear_list                   (GList           **list_ptr,
+                                         GDestroyNotify    destroy);
+
+#define  g_clear_list(list_ptr, destroy)       \
+  G_STMT_START {                               \
+    GList *_list;                              \
+                                               \
+    _list = *(list_ptr);                       \
+    if (_list)                                 \
+      {                                        \
+        *list_ptr = NULL;                      \
+                                               \
+        if ((destroy) != NULL)                 \
+          g_list_free_full (_list, (destroy)); \
+        else                                   \
+          g_list_free (_list);                 \
+      }                                        \
+  } G_STMT_END                                 \
+  GLIB_AVAILABLE_MACRO_IN_2_64
+
 
 #define g_list_previous(list)          ((list) ? (((GList *)(list))->prev) : NULL)
 #define g_list_next(list)              ((list) ? (((GList *)(list))->next) : NULL)
index 79077e2..a770ac7 100644 (file)
 #ifndef __GI_SCANNER__ /* The static assert macro really confuses the introspection parser */
 #define G_PASTE_ARGS(identifier1,identifier2) identifier1 ## identifier2
 #define G_PASTE(identifier1,identifier2)      G_PASTE_ARGS (identifier1, identifier2)
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+#if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
 #define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
 #elif (defined(__cplusplus) && __cplusplus >= 201103L) || \
       (defined(__cplusplus) && defined (_MSC_VER) && (_MSC_VER >= 1600)) || \
      __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4))
 #define _GLIB_GNUC_DO_PRAGMA(x) _Pragma(G_STRINGIFY (x))
 #define GLIB_DEPRECATED_MACRO _GLIB_GNUC_DO_PRAGMA(GCC warning "Deprecated pre-processor symbol")
-#define GLIB_DEPRECATED_MACRO_FOR(f) _GLIB_GNUC_DO_PRAGMA(GCC warning #f)
+#define GLIB_DEPRECATED_MACRO_FOR(f) _GLIB_GNUC_DO_PRAGMA(GCC warning "Deprecated pre-processor symbol, replace with " #f)
 #define GLIB_UNAVAILABLE_MACRO(maj,min) _GLIB_GNUC_DO_PRAGMA(GCC warning "Not available before " #maj "." #min)
 #else
 #define GLIB_DEPRECATED_MACRO
   _GLIB_DEFINE_AUTOPTR_CLEANUP_FUNCS(TypeName, TypeName, func)
 #define G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(TypeName, func) \
   G_GNUC_BEGIN_IGNORE_DEPRECATIONS                                                                              \
-  static inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { (func) (_ptr); }                         \
+  static G_GNUC_UNUSED inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { (func) (_ptr); }                         \
   G_GNUC_END_IGNORE_DEPRECATIONS
 #define G_DEFINE_AUTO_CLEANUP_FREE_FUNC(TypeName, func, none) \
   G_GNUC_BEGIN_IGNORE_DEPRECATIONS                                                                              \
-  static inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { if (*_ptr != none) (func) (*_ptr); }     \
+  static G_GNUC_UNUSED inline void _GLIB_AUTO_FUNC_NAME(TypeName) (TypeName *_ptr) { if (*_ptr != none) (func) (*_ptr); }     \
   G_GNUC_END_IGNORE_DEPRECATIONS
 #define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
 #define g_autolist(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_LIST_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_LIST_TYPENAME(TypeName)
 
 #endif /* __GI_SCANNER__ */
 
+/**
+ * G_SIZEOF_MEMBER:
+ * @struct_type: a structure type, e.g. #GOutputVector
+ * @member: a field in the structure, e.g. `size`
+ *
+ * Returns the size of @member in the struct definition without having a
+ * declared instance of @struct_type.
+ *
+ * Returns: the size of @member in bytes.
+ *
+ * Since: 2.64
+ */
+#define G_SIZEOF_MEMBER(struct_type, member) \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    sizeof (((struct_type *) 0)->member)
+
 #endif /* __G_MACROS_H__ */
index af979c8..ee23a65 100644 (file)
  *
  * To allow multiple independent sets of sources to be handled in
  * different threads, each source is associated with a #GMainContext.
- * A GMainContext can only be running in a single thread, but
- * sources can be added to it and removed from it from other threads.
+ * A #GMainContext can only be running in a single thread, but
+ * sources can be added to it and removed from it from other threads. All
+ * functions which operate on a #GMainContext or a built-in #GSource are
+ * thread-safe.
  *
  * Each event source is assigned a priority. The default priority,
  * #G_PRIORITY_DEFAULT, is 0. Values less than 0 denote higher priorities.
@@ -359,6 +361,8 @@ struct _GSourcePrivate
    * let it remain empty on Windows) to avoid #ifdef all over the place.
    */
   GSList *fds;
+
+  GSourceDisposeFunc dispose;
 };
 
 typedef struct _GSourceIter
@@ -439,9 +443,6 @@ static void block_source (GSource *source);
 
 static GMainContext *glib_worker_context;
 
-G_LOCK_DEFINE_STATIC (main_loop);
-static GMainContext *default_main_context;
-
 #ifndef G_OS_WIN32
 
 
@@ -538,6 +539,7 @@ g_main_context_unref (GMainContext *context)
   GSourceIter iter;
   GSource *source;
   GList *sl_iter;
+  GSList *s_iter, *remaining_sources = NULL;
   GSourceList *list;
   guint i;
 
@@ -557,13 +559,32 @@ g_main_context_unref (GMainContext *context)
 
   /* g_source_iter_next() assumes the context is locked. */
   LOCK_CONTEXT (context);
-  g_source_iter_init (&iter, context, TRUE);
+
+  /* First collect all remaining sources from the sources lists and store a
+   * new reference in a separate list. Also set the context of the sources
+   * to NULL so that they can't access a partially destroyed context anymore.
+   *
+   * We have to do this first so that we have a strong reference to all
+   * sources and destroying them below does not also free them, and so that
+   * none of the sources can access the context from their finalize/dispose
+   * functions. */
+  g_source_iter_init (&iter, context, FALSE);
   while (g_source_iter_next (&iter, &source))
     {
       source->context = NULL;
+      remaining_sources = g_slist_prepend (remaining_sources, g_source_ref (source));
+    }
+  g_source_iter_clear (&iter);
+
+  /* Next destroy all sources. As we still hold a reference to all of them,
+   * this won't cause any of them to be freed yet and especially prevents any
+   * source that unrefs another source from its finalize function to be freed.
+   */
+  for (s_iter = remaining_sources; s_iter; s_iter = s_iter->next)
+    {
+      source = s_iter->data;
       g_source_destroy_internal (source, context, TRUE);
     }
-  UNLOCK_CONTEXT (context);
 
   for (sl_iter = context->source_lists; sl_iter; sl_iter = sl_iter->next)
     {
@@ -574,6 +595,7 @@ g_main_context_unref (GMainContext *context)
 
   g_hash_table_destroy (context->sources);
 
+  UNLOCK_CONTEXT (context);
   g_mutex_clear (&context->mutex);
 
   g_ptr_array_free (context->pending_dispatches, TRUE);
@@ -585,6 +607,18 @@ g_main_context_unref (GMainContext *context)
   g_cond_clear (&context->cond);
 
   g_free (context);
+
+  /* And now finally get rid of our references to the sources. This will cause
+   * them to be freed unless something else still has a reference to them. Due
+   * to setting the context pointers in the sources to NULL above, this won't
+   * ever access the context or the internal linked list inside the GSource.
+   * We already removed the sources completely from the context above. */
+  for (s_iter = remaining_sources; s_iter; s_iter = s_iter->next)
+    {
+      source = s_iter->data;
+      g_source_unref_internal (source, NULL, FALSE);
+    }
+  g_slist_free (remaining_sources);
 }
 
 /* Helper function used by mainloop/overflow test.
@@ -667,34 +701,34 @@ g_main_context_new (void)
 
 /**
  * g_main_context_default:
- * 
+ *
  * Returns the global default main context. This is the main context
  * used for main loop functions when a main loop is not explicitly
  * specified, and corresponds to the "main" main loop. See also
  * g_main_context_get_thread_default().
- * 
+ *
  * Returns: (transfer none): the global default main context.
  **/
 GMainContext *
 g_main_context_default (void)
 {
-  /* Slow, but safe */
-  
-  G_LOCK (main_loop);
+  static GMainContext *default_main_context = NULL;
 
-  if (!default_main_context)
+  if (g_once_init_enter (&default_main_context))
     {
-      default_main_context = g_main_context_new ();
+      GMainContext *context;
+
+      context = g_main_context_new ();
 
-      TRACE (GLIB_MAIN_CONTEXT_DEFAULT (default_main_context));
+      TRACE (GLIB_MAIN_CONTEXT_DEFAULT (context));
 
 #ifdef G_MAIN_POLL_DEBUG
       if (_g_main_poll_debug)
-       g_print ("default context=%p\n", default_main_context);
+        g_print ("default context=%p\n", context);
 #endif
-    }
 
-  G_UNLOCK (main_loop);
+      g_once_init_leave (&default_main_context, context);
+    }
 
   return default_main_context;
 }
@@ -927,6 +961,40 @@ g_source_new (GSourceFuncs *source_funcs,
   return source;
 }
 
+/**
+ * g_source_set_dispose_function:
+ * @source: A #GSource to set the dispose function on
+ * @dispose: #GSourceDisposeFunc to set on the source
+ *
+ * Set @dispose as dispose function on @source. @dispose will be called once
+ * the reference count of @source reaches 0 but before any of the state of the
+ * source is freed, especially before the finalize function is called.
+ *
+ * This means that at this point @source is still a valid #GSource and it is
+ * allow for the reference count to increase again until @dispose returns.
+ *
+ * The dispose function can be used to clear any "weak" references to the
+ * @source in other data structures in a thread-safe way where it is possible
+ * for another thread to increase the reference count of @source again while
+ * it is being freed.
+ *
+ * The finalize function can not be used for this purpose as at that point
+ * @source is already partially freed and not valid anymore.
+ *
+ * This should only ever be called from #GSource implementations.
+ *
+ * Since: 2.64
+ **/
+void
+g_source_set_dispose_function (GSource            *source,
+                              GSourceDisposeFunc  dispose)
+{
+  g_return_if_fail (source != NULL);
+  g_return_if_fail (source->priv->dispose == NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
+  source->priv->dispose = dispose;
+}
+
 /* Holds context's lock */
 static void
 g_source_iter_init (GSourceIter  *iter,
@@ -969,13 +1037,17 @@ g_source_iter_next (GSourceIter *iter, GSource **source)
    * GSourceList to be removed from source_lists (if iter->source is
    * the only source in its list, and it is destroyed), so we have to
    * keep it reffed until after we advance iter->current_list, above.
+   *
+   * Also we first have to ref the next source before unreffing the
+   * previous one as unreffing the previous source can potentially
+   * free the next one.
    */
+  if (next_source && iter->may_modify)
+    g_source_ref (next_source);
 
   if (iter->source && iter->may_modify)
     g_source_unref_internal (iter->source, iter->context, TRUE);
   iter->source = next_source;
-  if (iter->source && iter->may_modify)
-    g_source_ref (iter->source);
 
   *source = iter->source;
   return *source != NULL;
@@ -1040,6 +1112,7 @@ find_source_list_for_priority (GMainContext *context,
        * context->source_lists without having to walk the list again.
        */
       last = g_list_append (last, source_list);
+      (void) last;
     }
   return source_list;
 }
@@ -1173,6 +1246,9 @@ g_source_attach_unlocked (GSource      *source,
  * Adds a #GSource to a @context so that it will be executed within
  * that context. Remove it by calling g_source_destroy().
  *
+ * This function is safe to call from any thread, regardless of which thread
+ * the @context is running in.
+ *
  * Returns: the ID (greater than 0) for the source within the 
  *   #GMainContext. 
  **/
@@ -1182,6 +1258,8 @@ g_source_attach (GSource      *source,
 {
   guint result = 0;
 
+  g_return_val_if_fail (source != NULL, 0);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, 0);
   g_return_val_if_fail (source->context == NULL, 0);
   g_return_val_if_fail (!SOURCE_DESTROYED (source), 0);
   
@@ -1269,6 +1347,9 @@ g_source_destroy_internal (GSource      *source,
  *
  * This does not unref the #GSource: if you still hold a reference, use
  * g_source_unref() to drop it.
+ *
+ * This function is safe to call from any thread, regardless of which thread
+ * the #GMainContext is running in.
  */
 void
 g_source_destroy (GSource *source)
@@ -1276,6 +1357,7 @@ g_source_destroy (GSource *source)
   GMainContext *context;
   
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   
   context = source->context;
   
@@ -1307,6 +1389,7 @@ g_source_get_id (GSource *source)
   guint result;
   
   g_return_val_if_fail (source != NULL, 0);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, 0);
   g_return_val_if_fail (source->context != NULL, 0);
 
   LOCK_CONTEXT (source->context);
@@ -1336,6 +1419,8 @@ g_source_get_id (GSource *source)
 GMainContext *
 g_source_get_context (GSource *source)
 {
+  g_return_val_if_fail (source != NULL, NULL);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, NULL);
   g_return_val_if_fail (source->context != NULL || !SOURCE_DESTROYED (source), NULL);
 
   return source->context;
@@ -1367,6 +1452,7 @@ g_source_add_poll (GSource *source,
   GMainContext *context;
   
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   g_return_if_fail (fd != NULL);
   g_return_if_fail (!SOURCE_DESTROYED (source));
   
@@ -1403,6 +1489,7 @@ g_source_remove_poll (GSource *source,
   GMainContext *context;
   
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   g_return_if_fail (fd != NULL);
   g_return_if_fail (!SOURCE_DESTROYED (source));
   
@@ -1453,7 +1540,9 @@ g_source_add_child_source (GSource *source,
   GMainContext *context;
 
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   g_return_if_fail (child_source != NULL);
+  g_return_if_fail (g_atomic_int_get (&child_source->ref_count) > 0);
   g_return_if_fail (!SOURCE_DESTROYED (source));
   g_return_if_fail (!SOURCE_DESTROYED (child_source));
   g_return_if_fail (child_source->context == NULL);
@@ -1514,7 +1603,9 @@ g_source_remove_child_source (GSource *source,
   GMainContext *context;
 
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   g_return_if_fail (child_source != NULL);
+  g_return_if_fail (g_atomic_int_get (&child_source->ref_count) > 0);
   g_return_if_fail (child_source->priv->parent_source == source);
   g_return_if_fail (!SOURCE_DESTROYED (source));
   g_return_if_fail (!SOURCE_DESTROYED (child_source));
@@ -1597,6 +1688,7 @@ g_source_set_callback_indirect (GSource              *source,
   GSourceCallbackFuncs *old_cb_funcs;
   
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   g_return_if_fail (callback_funcs != NULL || callback_data == NULL);
 
   context = source->context;
@@ -1659,6 +1751,7 @@ g_source_set_callback (GSource        *source,
   GSourceCallback *new_callback;
 
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
 
   TRACE (GLIB_SOURCE_SET_CALLBACK (source, func, data, notify));
 
@@ -1772,6 +1865,7 @@ g_source_set_priority (GSource  *source,
   GMainContext *context;
 
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   g_return_if_fail (source->priv->parent_source == NULL);
 
   context = source->context;
@@ -1795,6 +1889,7 @@ gint
 g_source_get_priority (GSource *source)
 {
   g_return_val_if_fail (source != NULL, 0);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, 0);
 
   return source->priority;
 }
@@ -1837,15 +1932,7 @@ g_source_set_ready_time (GSource *source,
   GMainContext *context;
 
   g_return_if_fail (source != NULL);
-  /* We deliberately don't check for ref_count > 0 here, because that
-   * breaks cancellable_source_cancelled() in GCancellable: it has no
-   * way to find out that the last-unref has happened until the
-   * finalize() function is called, but that's too late, because the
-   * ref_count already has already reached 0 before that time.
-   * However, priv is only poisoned (set to NULL) after finalize(),
-   * so we can use this as a simple guard against use-after-free.
-   * See https://bugzilla.gnome.org/show_bug.cgi?id=791754 */
-  g_return_if_fail (source->priv != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
 
   context = source->context;
 
@@ -1889,6 +1976,7 @@ gint64
 g_source_get_ready_time (GSource *source)
 {
   g_return_val_if_fail (source != NULL, -1);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, -1);
 
   return source->priv->ready_time;
 }
@@ -1910,6 +1998,7 @@ g_source_set_can_recurse (GSource  *source,
   GMainContext *context;
   
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
 
   context = source->context;
 
@@ -1938,6 +2027,7 @@ gboolean
 g_source_get_can_recurse (GSource  *source)
 {
   g_return_val_if_fail (source != NULL, FALSE);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, FALSE);
   
   return (source->flags & G_SOURCE_CAN_RECURSE) != 0;
 }
@@ -1974,6 +2064,7 @@ g_source_set_name (GSource    *source,
   GMainContext *context;
 
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
 
   context = source->context;
 
@@ -2009,6 +2100,7 @@ const char *
 g_source_get_name (GSource *source)
 {
   g_return_val_if_fail (source != NULL, NULL);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, NULL);
 
   return source->name;
 }
@@ -2065,6 +2157,9 @@ GSource *
 g_source_ref (GSource *source)
 {
   g_return_val_if_fail (source != NULL, NULL);
+  /* We allow ref_count == 0 here to allow the dispose function to resurrect
+   * the GSource if needed */
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) >= 0, NULL);
 
   g_atomic_int_inc (&source->ref_count);
 
@@ -2088,6 +2183,28 @@ g_source_unref_internal (GSource      *source,
 
   if (g_atomic_int_dec_and_test (&source->ref_count))
     {
+      /* If there's a dispose function, call this first */
+      if (source->priv->dispose)
+        {
+          /* Temporarily increase the ref count again so that GSource methods
+           * can be called from dispose(). */
+          g_atomic_int_inc (&source->ref_count);
+          if (context)
+            UNLOCK_CONTEXT (context);
+          source->priv->dispose (source);
+          if (context)
+            LOCK_CONTEXT (context);
+
+          /* Now the reference count might be bigger than 0 again, in which
+           * case we simply return from here before freeing the source */
+          if (!g_atomic_int_dec_and_test (&source->ref_count))
+            {
+              if (!have_lock && context)
+                UNLOCK_CONTEXT (context);
+              return;
+            }
+        }
+
       TRACE (GLIB_SOURCE_BEFORE_FREE (source, context,
                                       source->source_funcs->finalize));
 
@@ -2108,6 +2225,8 @@ g_source_unref_internal (GSource      *source,
 
       if (source->source_funcs->finalize)
        {
+          gint old_ref_count;
+
           /* Temporarily increase the ref count again so that GSource methods
            * can be called from finalize(). */
           g_atomic_int_inc (&source->ref_count);
@@ -2116,11 +2235,14 @@ g_source_unref_internal (GSource      *source,
          source->source_funcs->finalize (source);
          if (context)
            LOCK_CONTEXT (context);
-          g_atomic_int_add (&source->ref_count, -1);
+          old_ref_count = g_atomic_int_add (&source->ref_count, -1);
+          g_warn_if_fail (old_ref_count == 1);
        }
 
       if (old_cb_funcs)
         {
+          gint old_ref_count;
+
           /* Temporarily increase the ref count again so that GSource methods
            * can be called from callback_funcs.unref(). */
           g_atomic_int_inc (&source->ref_count);
@@ -2131,7 +2253,8 @@ g_source_unref_internal (GSource      *source,
 
           if (context)
             LOCK_CONTEXT (context);
-          g_atomic_int_add (&source->ref_count, -1);
+          old_ref_count = g_atomic_int_add (&source->ref_count, -1);
+          g_warn_if_fail (old_ref_count == 1);
         }
 
       g_free (source->name);
@@ -2175,6 +2298,7 @@ void
 g_source_unref (GSource *source)
 {
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
 
   g_source_unref_internal (source, source->context, FALSE);
 }
@@ -2478,6 +2602,7 @@ g_source_add_unix_fd (GSource      *source,
   GPollFD *poll_fd;
 
   g_return_val_if_fail (source != NULL, NULL);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, NULL);
   g_return_val_if_fail (!SOURCE_DESTROYED (source), NULL);
 
   poll_fd = g_new (GPollFD, 1);
@@ -2531,6 +2656,7 @@ g_source_modify_unix_fd (GSource      *source,
   GPollFD *poll_fd;
 
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   g_return_if_fail (g_slist_find (source->priv->fds, tag));
 
   context = source->context;
@@ -2568,6 +2694,7 @@ g_source_remove_unix_fd (GSource  *source,
   GPollFD *poll_fd;
 
   g_return_if_fail (source != NULL);
+  g_return_if_fail (g_atomic_int_get (&source->ref_count) > 0);
   g_return_if_fail (g_slist_find (source->priv->fds, tag));
 
   context = source->context;
@@ -2616,6 +2743,7 @@ g_source_query_unix_fd (GSource  *source,
   GPollFD *poll_fd;
 
   g_return_val_if_fail (source != NULL, 0);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, 0);
   g_return_val_if_fail (g_slist_find (source->priv->fds, tag), 0);
 
   poll_fd = tag;
@@ -3046,6 +3174,8 @@ g_main_current_source (void)
 gboolean
 g_source_is_destroyed (GSource *source)
 {
+  g_return_val_if_fail (source != NULL, TRUE);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, TRUE);
   return SOURCE_DESTROYED (source);
 }
 
@@ -4446,6 +4576,8 @@ g_source_get_time (GSource *source)
   GMainContext *context;
   gint64 result;
 
+  g_return_val_if_fail (source != NULL, 0);
+  g_return_val_if_fail (g_atomic_int_get (&source->ref_count) > 0, 0);
   g_return_val_if_fail (source->context != NULL, 0);
 
   context = source->context;
@@ -4834,6 +4966,8 @@ g_timeout_add_full (gint           priority,
  * context. You can do these steps manually if you need greater control or to
  * use a custom main context.
  * 
+ * It is safe to call this function from any thread.
+ *
  * The interval given is in terms of monotonic time, not wall clock
  * time.  See g_get_monotonic_time().
  * 
@@ -4890,7 +5024,9 @@ g_timeout_add (guint32        interval,
  * g_timeout_source_new_seconds() and attaches it to the main loop context 
  * using g_source_attach(). You can do these steps manually if you need 
  * greater control.
- * 
+ *
+ * It is safe to call this function from any thread.
+ *
  * The interval given is in terms of monotonic time, not wall clock
  * time.  See g_get_monotonic_time().
  * 
@@ -4938,6 +5074,8 @@ g_timeout_add_seconds_full (gint           priority,
  * using g_source_attach(). You can do these steps manually if you need
  * greater control. Also see g_timeout_add_seconds_full().
  *
+ * It is safe to call this function from any thread.
+ *
  * Note that the first call of the timer may not be precise for timeouts
  * of one second. If you need finer precision and have such a timeout,
  * you may want to use g_timeout_add() instead.
index 6325ecb..d4776c1 100644 (file)
@@ -188,7 +188,7 @@ typedef gboolean (*GSourceFunc)       (gpointer user_data);
  *
  * Since: 2.58
  */
-#define G_SOURCE_FUNC(f) ((GSourceFunc) (void (*)(void)) (f))
+#define G_SOURCE_FUNC(f) ((GSourceFunc) (void (*)(void)) (f)) GLIB_AVAILABLE_MACRO_IN_2_58
 
 /**
  * GChildWatchFunc:
@@ -204,6 +204,20 @@ typedef gboolean (*GSourceFunc)       (gpointer user_data);
 typedef void     (*GChildWatchFunc)   (GPid     pid,
                                        gint     status,
                                        gpointer user_data);
+
+
+/**
+ * GSourceDisposeFunc:
+ * @source: #GSource that is currently being disposed
+ *
+ * Dispose function for @source. See g_source_set_dispose_function() for
+ * details.
+ *
+ * Since: 2.64
+ */
+GLIB_AVAILABLE_TYPE_IN_2_64
+typedef void (*GSourceDisposeFunc)       (GSource *source);
+
 struct _GSource
 {
   /*< private >*/
@@ -430,6 +444,89 @@ GMainContext *g_main_context_get_thread_default  (void);
 GLIB_AVAILABLE_IN_ALL
 GMainContext *g_main_context_ref_thread_default  (void);
 
+/**
+ * GMainContextPusher:
+ *
+ * Opaque type. See g_main_context_pusher_new() for details.
+ *
+ * Since: 2.64
+ */
+typedef void GMainContextPusher GLIB_AVAILABLE_TYPE_IN_2_64;
+
+/**
+ * g_main_context_pusher_new:
+ * @main_context: (transfer none): a main context to push
+ *
+ * Push @main_context as the new thread-default main context for the current
+ * thread, using g_main_context_push_thread_default(), and return a new
+ * #GMainContextPusher. Pop with g_main_context_pusher_free(). Using
+ * g_main_context_pop_thread_default() on @main_context while a
+ * #GMainContextPusher exists for it can lead to undefined behaviour.
+ *
+ * Using two #GMainContextPushers in the same scope is not allowed, as it leads
+ * to an undefined pop order.
+ *
+ * This is intended to be used with g_autoptr().  Note that g_autoptr()
+ * is only available when using GCC or clang, so the following example
+ * will only work with those compilers:
+ * |[
+ * typedef struct
+ * {
+ *   ...
+ *   GMainContext *context;
+ *   ...
+ * } MyObject;
+ *
+ * static void
+ * my_object_do_stuff (MyObject *self)
+ * {
+ *   g_autoptr(GMainContextPusher) pusher = g_main_context_pusher_new (self->context);
+ *
+ *   // Code with main context as the thread default here
+ *
+ *   if (cond)
+ *     // No need to pop
+ *     return;
+ *
+ *   // Optionally early pop
+ *   g_clear_pointer (&pusher, g_main_context_pusher_free);
+ *
+ *   // Code with main context no longer the thread default here
+ * }
+ * ]|
+ *
+ * Returns: (transfer full): a #GMainContextPusher
+ * Since: 2.64
+ */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+static inline GMainContextPusher *
+g_main_context_pusher_new (GMainContext *main_context)
+{
+  g_main_context_push_thread_default (main_context);
+  return (GMainContextPusher *) main_context;
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+
+/**
+ * g_main_context_pusher_free:
+ * @pusher: (transfer full): a #GMainContextPusher
+ *
+ * Pop @pusher’s main context as the thread default main context.
+ * See g_main_context_pusher_new() for details.
+ *
+ * This will pop the #GMainContext as the current thread-default main context,
+ * but will not call g_main_context_unref() on it.
+ *
+ * Since: 2.64
+ */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+static inline void
+g_main_context_pusher_free (GMainContextPusher *pusher)
+{
+  g_main_context_pop_thread_default ((GMainContext *) pusher);
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+
 /* GMainLoop: */
 
 GLIB_AVAILABLE_IN_ALL
@@ -453,6 +550,13 @@ GMainContext *g_main_loop_get_context (GMainLoop    *loop);
 GLIB_AVAILABLE_IN_ALL
 GSource *g_source_new             (GSourceFuncs   *source_funcs,
                                    guint           struct_size);
+
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+GLIB_AVAILABLE_IN_2_64
+void     g_source_set_dispose_function (GSource            *source,
+                                        GSourceDisposeFunc  dispose);
+G_GNUC_END_IGNORE_DEPRECATIONS
+
 GLIB_AVAILABLE_IN_ALL
 GSource *g_source_ref             (GSource        *source);
 GLIB_AVAILABLE_IN_ALL
index 5b70cef..ba4dfd2 100644 (file)
@@ -970,9 +970,13 @@ current_attribute (GMarkupParseContext *context)
   return context->attr_names[context->cur_attr]->str;
 }
 
-static void
+static gboolean
 add_attribute (GMarkupParseContext *context, GString *str)
 {
+  /* Sanity check on the number of attributes. */
+  if (context->cur_attr >= 1000)
+    return FALSE;
+
   if (context->cur_attr + 2 >= context->alloc_attrs)
     {
       context->alloc_attrs += 5; /* silly magic number */
@@ -984,6 +988,8 @@ add_attribute (GMarkupParseContext *context, GString *str)
   context->attr_values[context->cur_attr] = NULL;
   context->attr_names[context->cur_attr+1] = NULL;
   context->attr_values[context->cur_attr+1] = NULL;
+
+  return TRUE;
 }
 
 static void
@@ -1332,7 +1338,15 @@ g_markup_parse_context_parse (GMarkupParseContext  *context,
               if (!name_validate (context, context->partial_chunk->str, error))
                 break;
 
-              add_attribute (context, context->partial_chunk);
+              if (!add_attribute (context, context->partial_chunk))
+                {
+                  set_error (context,
+                             error,
+                             G_MARKUP_ERROR_PARSE,
+                             _("Too many attributes in element “%s”"),
+                             current_element (context));
+                  break;
+                }
 
               context->partial_chunk = NULL;
               context->start = NULL;
@@ -1939,8 +1953,8 @@ g_markup_parse_context_get_element_stack (GMarkupParseContext *context)
 /**
  * g_markup_parse_context_get_position:
  * @context: a #GMarkupParseContext
- * @line_number: (nullable): return location for a line number, or %NULL
- * @char_number: (nullable): return location for a char-on-line number, or %NULL
+ * @line_number: (out) (optional): return location for a line number, or %NULL
+ * @char_number: (out) (optional): return location for a char-on-line number, or %NULL
  *
  * Retrieves the current line number and the number of the character on
  * that line. Intended for use in error messages; there are no strict
@@ -2917,7 +2931,6 @@ g_markup_collect_attributes (const gchar         *element_name,
 failure:
   /* replay the above to free allocations */
   type = first_type;
-  attr = first_attr;
 
   va_start (ap, first_attr);
   while (type != G_MARKUP_COLLECT_INVALID)
@@ -2952,7 +2965,10 @@ failure:
 
       type = va_arg (ap, GMarkupCollectType);
       if (type != G_MARKUP_COLLECT_INVALID)
-        attr = va_arg (ap, const char *);
+        {
+          attr = va_arg (ap, const char *);
+          (void) attr;
+        }
     }
   va_end (ap);
 
index 09cd041..88af5d8 100644 (file)
@@ -77,6 +77,9 @@ static GMemVTable glib_mem_vtable = {
  * new with delete and new[] with delete[]. Otherwise bad things can happen,
  * since these allocators may use different memory pools (and new/delete call
  * constructors and destructors).
+ *
+ * Since GLib 2.46 g_malloc() is hardcoded to always use the system malloc
+ * implementation.
  */
 
 /* --- functions --- */
@@ -457,7 +460,7 @@ g_try_realloc_n (gpointer mem,
  * 
  * Checks whether the allocator used by g_malloc() is the system's
  * malloc implementation. If it returns %TRUE memory allocated with
- * malloc() can be used interchangeable with memory allocated using g_malloc().
+ * malloc() can be used interchangeably with memory allocated using g_malloc().
  * This function is useful for avoiding an extra copy of allocated memory returned
  * by a non-GLib-based API.
  *
index bb1ab8f..ea3f6c1 100644 (file)
@@ -1313,7 +1313,7 @@ g_logv (const gchar   *log_domain,
     {
       GLogLevelFlags test_level;
 
-      test_level = 1 << i;
+      test_level = 1L << i;
       if (log_level & test_level)
        {
          GLogDomain *domain;
index 95d60c5..e910f7b 100644 (file)
@@ -30,6 +30,7 @@
 #endif
 
 #include <stdarg.h>
+#include <glib/gatomic.h>
 #include <glib/gtypes.h>
 #include <glib/gmacros.h>
 #include <glib/gvariant.h>
@@ -454,6 +455,43 @@ g_debug (const gchar *format,
 #endif  /* !__GNUC__ */
 
 /**
+ * g_warning_once:
+ * @...: format string, followed by parameters to insert
+ *     into the format string (as with printf())
+ *
+ * Logs a warning only once.
+ *
+ * g_warning_once() calls g_warning() with the passed message the first time
+ * the statement is executed; subsequent times it is a no-op.
+ *
+ * Note! On platforms where the compiler doesn't support variadic macros, the
+ * warning is printed each time instead of only once.
+ *
+ * Since: 2.64
+ */
+#if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING
+#define g_warning_once(...) \
+  G_STMT_START { \
+    static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \
+    if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \
+                                           0, 1)) \
+      g_warning (__VA_ARGS__); \
+  } G_STMT_END \
+  GLIB_AVAILABLE_MACRO_IN_2_64
+#elif defined(G_HAVE_GNUC_VARARGS)  && !G_ANALYZER_ANALYZING
+#define g_warning_once(format...) \
+  G_STMT_START { \
+    static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \
+    if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \
+                                           0, 1)) \
+      g_warning (format); \
+  } G_STMT_END \
+  GLIB_AVAILABLE_MACRO_IN_2_64
+#else
+#define g_warning_once g_warning
+#endif
+
+/**
  * GPrintFunc:
  * @string: the message to output
  *
index b7a714c..509e781 100644 (file)
@@ -170,41 +170,39 @@ if gl_cv_func_printf_long_double
   if not meson.is_cross_build() or meson.has_exe_wrapper()
     run_result = cc.run(printf_infinite_long_double_test,
         name : 'printf supports infinite \'long double\' arguments')
-    gl_cv_func_printf_infinite_long_double = (run_result.compiled() and run_result.returncode() == 0) ? 'true' : 'false'
+    gl_cv_func_printf_infinite_long_double = (run_result.compiled() and run_result.returncode() == 0)
   else
     if host_machine.cpu_family() == 'x86_64'
-      gl_cv_func_printf_infinite_long_double = 'false'
+      gl_cv_func_printf_infinite_long_double = false
     else
       if host_system == 'linux'
-        gl_cv_func_printf_infinite_long_double = 'true'
+        gl_cv_func_printf_infinite_long_double = true
       elif (host_system.startswith ('freebsd1') or
             host_system.startswith ('freebsd2') or
             host_system.startswith ('freebsd3') or
             host_system.startswith ('freebsd4') or
             host_system.startswith ('freebsd5'))
-        gl_cv_func_printf_infinite_long_double = 'false'
+        gl_cv_func_printf_infinite_long_double = false
       elif (host_system.startswith ('freebsd') or
             host_system.startswith ('kfreebsd'))
-        gl_cv_func_printf_infinite_long_double = 'true'
+        gl_cv_func_printf_infinite_long_double = true
       elif (host_system.startswith ('hpux7') or
             host_system.startswith ('hpux8') or
             host_system.startswith ('hpux9') or
             host_system.startswith ('hpux10'))
         gl_cv_func_printf_infinite = false
       elif host_system.startswith ('hpux')
-        gl_cv_func_printf_infinite_long_double = 'true'
+        gl_cv_func_printf_infinite_long_double = true
       elif host_system == 'windows'
         # Guess yes on MSVC, no on mingw.
         if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
-          gl_cv_func_printf_infinite = 'true'
+          gl_cv_func_printf_infinite_long_double = true
         else
-          gl_cv_func_printf_infinite = 'false'
+          gl_cv_func_printf_infinite_long_double = false
         endif
       else
-        gl_cv_func_printf_infinite_long_double = 'false'
+        gl_cv_func_printf_infinite_long_double = false
       endif
     endif
   endif
-else
-  gl_cv_func_printf_infinite_long_double = 'irrelevant'
 endif
index af697f2..e45e8c2 100644 (file)
@@ -323,7 +323,7 @@ math_h = configure_file (input: 'gnulib_math.h.in',
                          output: 'gnulib_math.h',
                          configuration: math_h_config)
 
-gnulib_sources = ['asnprintf.c', 'printf.c', 'printf-args.c', 'printf-parse.c', 'printf-frexp.c', 'printf-frexpl.c', 'isnand.c', 'isnanl.c', 'vasnprintf.c']
+gnulib_sources = ['asnprintf.c', 'printf.c', 'printf-args.c', 'printf-parse.c', 'printf-frexp.c', 'printf-frexpl.c', 'isnand.c', 'isnanl.c', 'vasnprintf.c', 'xsize.c']
 
 if not gl_cv_func_frexp_works
   gnulib_sources += ['frexp.c']
@@ -338,6 +338,6 @@ gnulib_lib = static_library('gnulib', gnulib_sources,
   dependencies : [libm],
   include_directories : [configinc, glibinc, include_directories ('.')],
   pic : true,
-  c_args : ['-DGCC_LINT=1', '-DLIBDIR="@0@"'.format(get_option('libdir')), '-DGLIB_COMPILATION', '-DG_LOG_DOMAIN="GLib"' ] + glib_hidden_visibility_args + extra_gnulib_args)
+  c_args : ['-DGCC_LINT=1', '-DLIBDIR="@0@"'.format(glib_libdir), '-DGLIB_COMPILATION', '-DG_LOG_DOMAIN="GLib"' ] + glib_hidden_visibility_args + extra_gnulib_args)
 
 gnulib_libm_dependency = [libm]
diff --git a/glib/gnulib/xsize.c b/glib/gnulib/xsize.c
new file mode 100644 (file)
index 0000000..4b4914c
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define XSIZE_INLINE _GL_EXTERN_INLINE
+#include "xsize.h"
index 7868363..b0fb80c 100644 (file)
@@ -640,7 +640,7 @@ g_option_context_get_main_group (GOptionContext *context)
 /**
  * g_option_context_add_main_entries:
  * @context: a #GOptionContext
- * @entries: a %NULL-terminated array of #GOptionEntrys
+ * @entries: (array zero-terminated=1): a %NULL-terminated array of #GOptionEntrys
  * @translation_domain: (nullable): a translation domain to use for translating
  *    the `--help` output for the options in @entries
  *    with gettext(), or %NULL
@@ -2400,7 +2400,7 @@ g_option_group_unref (GOptionGroup *group)
 /**
  * g_option_group_add_entries:
  * @group: a #GOptionGroup
- * @entries: a %NULL-terminated array of #GOptionEntrys
+ * @entries: (array zero-terminated=1): a %NULL-terminated array of #GOptionEntrys
  *
  * Adds the options specified in @entries to @group.
  *
index a43d866..16a0bf5 100644 (file)
@@ -131,7 +131,7 @@ g_pattern_ph_match (const gchar *match_pattern,
                return TRUE;
               if (next_wildcard_reached)
                 /* the forthcoming pattern substring up to the next wildcard has
-                 * been matched, but a mismatch occoured for the rest of the
+                 * been matched, but a mismatch occurred for the rest of the
                  * pattern, following the next wildcard.
                  * there's no need to advance the current match position any
                  * further if the rest pattern will not match.
index 290c64c..2681d91 100644 (file)
@@ -450,7 +450,7 @@ g_poll (GPollFD *fds,
     ready = MsgWaitForMultipleObjectsEx (nthreads, thread_handles, timeout,
                                          QS_ALLINPUT, MWMO_ALERTABLE);
   else
-    ready = WaitForMultipleObjects (nthreads, thread_handles, timeout > 0, timeout);
+    ready = WaitForMultipleObjects (nthreads, thread_handles, FALSE, timeout);
 
   /* Signal the stop in case any of the threads did not stop yet */
   if (!SetEvent ((HANDLE)stop_event.fd))
index fc0a02a..6be85c7 100644 (file)
@@ -20,6 +20,7 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <errno.h>
 
 #include "gprintf.h"
 #include "gprintfint.h"
@@ -294,8 +295,8 @@ g_vsnprintf (gchar   *string,
 
 /**
  * g_vasprintf:
- * @string: the return location for the newly-allocated string.
- * @format: a standard printf() format string, but notice
+ * @string: (not optional) (nullable): the return location for the newly-allocated string.
+ * @format: (not nullable): a standard printf() format string, but notice
  *          [string precision pitfalls][string-precision]
  * @args: the list of arguments to insert in the output.
  *
@@ -305,6 +306,10 @@ g_vsnprintf (gchar  *string,
  * string to hold the output, instead of putting the output in a buffer 
  * you allocate in advance.
  *
+ * The returned value in @string is guaranteed to be non-NULL, unless
+ * @format contains `%lc` or `%ls` conversions, which can fail if no
+ * multibyte representation is available for the given character.
+ *
  * `glib/gprintf.h` must be explicitly included in order to use this function.
  *
  * Returns: the number of bytes printed.
@@ -327,9 +332,18 @@ g_vasprintf (gchar      **string,
 
 #elif defined (HAVE_VASPRINTF)
 
-  len = vasprintf (string, format, args);
-  if (len < 0)
-    *string = NULL;
+  {
+    int saved_errno;
+    len = vasprintf (string, format, args);
+    saved_errno = errno;
+    if (len < 0)
+      {
+        if (saved_errno == ENOMEM)
+          g_error ("%s: failed to allocate memory", G_STRLOC);
+        else
+          *string = NULL;
+      }
+  }
 
 #else
 
index 2a08610..2799b7d 100644 (file)
@@ -273,7 +273,7 @@ g_quark_to_string (GQuark quark)
   gchar **strings;
   guint seq_id;
 
-  seq_id = g_atomic_int_get (&quark_seq_id);
+  seq_id = (guint) g_atomic_int_get (&quark_seq_id);
   strings = g_atomic_pointer_get (&quarks);
 
   if (quark < seq_id)
index b5b1b71..cf935fc 100644 (file)
@@ -502,7 +502,7 @@ g_rand_int_range (GRand  *rand,
                   gint32  end)
 {
   guint32 dist = end - begin;
-  guint32 random;
+  guint32 random = 0;
 
   g_return_val_if_fail (rand != NULL, begin);
   g_return_val_if_fail (end > begin, begin);
@@ -563,7 +563,6 @@ g_rand_int_range (GRand  *rand,
        }
       break;
     default:
-      random = 0;              /* Quiet GCC */
       g_assert_not_reached ();
     }      
  
index 8f616cb..15b7936 100644 (file)
@@ -130,6 +130,13 @@ g_slist_alloc (void)
  * If list elements contain dynamically-allocated memory,
  * you should either use g_slist_free_full() or free them manually
  * first.
+ *
+ * It can be combined with g_steal_pointer() to ensure the list head pointer
+ * is not left dangling:
+ * |[<!-- language="C" -->
+ * GSList *list_of_borrowed_things = …;  /<!-- -->* (transfer container) *<!-- -->/
+ * g_slist_free (g_steal_pointer (&list_of_borrowed_things));
+ * ]|
  */
 void
 g_slist_free (GSList *list)
@@ -168,6 +175,15 @@ g_slist_free_1 (GSList *list)
  * @free_func must not modify the list (eg, by removing the freed
  * element from it).
  *
+ * It can be combined with g_steal_pointer() to ensure the list head pointer
+ * is not left dangling ­— this also has the nice property that the head pointer
+ * is cleared before any of the list elements are freed, to prevent double frees
+ * from @free_func:
+ * |[<!-- language="C" -->
+ * GSList *list_of_owned_things = …;  /<!-- -->* (transfer full) (element-type GObject) *<!-- -->/
+ * g_slist_free_full (g_steal_pointer (&list_of_owned_things), g_object_unref);
+ * ]|
+ *
  * Since: 2.28
  **/
 void
@@ -1065,3 +1081,32 @@ g_slist_sort_with_data (GSList           *list,
 {
   return g_slist_sort_real (list, (GFunc) compare_func, user_data);
 }
+
+/**
+ * g_clear_slist: (skip)
+ * @slist_ptr: (not nullable): a #GSList return location
+ * @destroy: (nullable): the function to pass to g_slist_free_full() or %NULL to not free elements
+ *
+ * Clears a pointer to a #GSList, freeing it and, optionally, freeing its elements using @destroy.
+ *
+ * @slist_ptr must be a valid pointer. If @slist_ptr points to a null #GSList, this does nothing.
+ *
+ * Since: 2.64
+ */
+void
+(g_clear_slist) (GSList         **slist_ptr,
+                 GDestroyNotify   destroy)
+{
+  GSList *slist;
+
+  slist = *slist_ptr;
+  if (slist)
+    {
+      *slist_ptr = NULL;
+
+      if (destroy)
+        g_slist_free_full (slist, destroy);
+      else
+        g_slist_free (slist);
+    }
+}
index 2704ef7..2494179 100644 (file)
@@ -136,6 +136,27 @@ GLIB_AVAILABLE_IN_ALL
 gpointer g_slist_nth_data                (GSList           *list,
                                          guint             n);
 
+GLIB_AVAILABLE_IN_2_64
+void     g_clear_slist                   (GSList          **slist_ptr,
+                                          GDestroyNotify    destroy);
+
+#define  g_clear_slist(slist_ptr, destroy)       \
+  G_STMT_START {                                 \
+    GSList *_slist;                              \
+                                                 \
+    _slist = *(slist_ptr);                       \
+    if (_slist)                                  \
+      {                                          \
+        *slist_ptr = NULL;                       \
+                                                 \
+        if ((destroy) != NULL)                   \
+          g_slist_free_full (_slist, (destroy)); \
+        else                                     \
+          g_slist_free (_slist);                 \
+      }                                          \
+  } G_STMT_END                                   \
+  GLIB_AVAILABLE_MACRO_IN_2_64
+
 #define  g_slist_next(slist)            ((slist) ? (((GSList *)(slist))->next) : NULL)
 
 G_END_DECLS
index 3acd173..e8141ad 100644 (file)
@@ -47,7 +47,7 @@
 #include <sys/resource.h>
 #endif /* HAVE_SYS_RESOURCE_H */
 
-#ifdef __linux__
+#if defined(__linux__) || defined(__DragonFly__)
 #include <sys/syscall.h>  /* for syscall and SYS_getdents64 */
 #endif
 
@@ -155,12 +155,16 @@ extern char **environ;
  */
 
 
+static gint safe_close (gint fd);
 
 static gint g_execute (const gchar  *file,
-                       gchar **argv,
-                       gchar **envp,
-                       gboolean search_path,
-                       gboolean search_path_from_envp);
+                       gchar       **argv,
+                       gchar       **argv_buffer,
+                       gsize         argv_buffer_len,
+                       gchar       **envp,
+                       const gchar  *search_path,
+                       gchar        *search_path_buffer,
+                       gsize         search_path_buffer_len);
 
 static gboolean fork_exec_with_pipes (gboolean              intermediate_child,
                                       const gchar          *working_directory,
@@ -262,6 +266,9 @@ g_spawn_async (const gchar          *working_directory,
 /* Avoids a danger in threaded situations (calling close()
  * on a file descriptor twice, and another thread has
  * re-opened it since the first close)
+ *
+ * This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)).
  */
 static void
 close_and_invalidate (gint *fd)
@@ -270,7 +277,7 @@ close_and_invalidate (gint *fd)
     return;
   else
     {
-      (void) g_close (*fd, NULL);
+      safe_close (*fd);
       *fd = -1;
     }
 }
@@ -457,7 +464,7 @@ g_spawn_sync (const gchar          *working_directory,
           g_set_error (error,
                        G_SPAWN_ERROR,
                        G_SPAWN_ERROR_READ,
-                       _("Unexpected error in select() reading data from a child process (%s)"),
+                       _("Unexpected error in reading data from a child process (%s)"),
                        g_strerror (errsv));
               
           break;
@@ -1081,6 +1088,8 @@ g_spawn_check_exit_status (gint      exit_status,
   return ret;
 }
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
 static gssize
 write_all (gint fd, gconstpointer vbuf, gsize to_write)
 {
@@ -1104,6 +1113,8 @@ write_all (gint fd, gconstpointer vbuf, gsize to_write)
   return TRUE;
 }
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
 G_GNUC_NORETURN
 static void
 write_err_and_exit (gint fd, gint msg)
@@ -1116,6 +1127,8 @@ write_err_and_exit (gint fd, gint msg)
   _exit (1);
 }
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
 static int
 set_cloexec (void *data, gint fd)
 {
@@ -1125,7 +1138,31 @@ set_cloexec (void *data, gint fd)
   return 0;
 }
 
-#ifndef HAVE_FDWALK
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
+static gint
+safe_close (gint fd)
+{
+  gint ret;
+
+  do
+    ret = close (fd);
+  while (ret < 0 && errno == EINTR);
+
+  return ret;
+}
+
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
+G_GNUC_UNUSED static int
+close_func (void *data, int fd)
+{
+  if (fd >= GPOINTER_TO_INT (data))
+    (void) safe_close (fd);
+
+  return 0;
+}
+
 #ifdef __linux__
 struct linux_dirent64
 {
@@ -1136,6 +1173,8 @@ struct linux_dirent64
   char           d_name[]; /* Filename (null-terminated) */
 };
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
 static gint
 filename_to_fd (const char *p)
 {
@@ -1149,7 +1188,7 @@ filename_to_fd (const char *p)
 
   while ((c = *p++) != '\0')
     {
-      if (!g_ascii_isdigit (c))
+      if (c < '0' || c > '9')
         return -1;
       c -= '0';
 
@@ -1164,14 +1203,29 @@ filename_to_fd (const char *p)
 }
 #endif
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
 static int
-fdwalk (int (*cb)(void *data, int fd), void *data)
+safe_fdwalk (int (*cb)(void *data, int fd), void *data)
 {
-  gint open_max;
+#if 0
+  /* Use fdwalk function provided by the system if it is known to be
+   * async-signal safe.
+   *
+   * Currently there are no operating systems known to provide a safe
+   * implementation, so this section is not used for now.
+   */
+  return fdwalk (cb, data);
+#else
+  /* Fallback implementation of fdwalk. It should be async-signal safe, but it
+   * may be slow on non-Linux operating systems, especially on systems allowing
+   * very high number of open file descriptors.
+   */
+  gint open_max = -1;
   gint fd;
   gint res = 0;
   
-#ifdef HAVE_SYS_RESOURCE_H
+#if 0 && defined(HAVE_SYS_RESOURCE_H)
   struct rlimit rl;
 #endif
 
@@ -1199,53 +1253,108 @@ fdwalk (int (*cb)(void *data, int fd), void *data)
             }
         }
 
-      close (dir_fd);
+      safe_close (dir_fd);
       return res;
     }
 
   /* If /proc is not mounted or not accessible we fall back to the old
-   * rlimit trick */
+   * rlimit trick. */
 
 #endif
 
-#ifdef HAVE_SYS_RESOURCE_H
-      
-  if (getrlimit(RLIMIT_NOFILE, &rl) == 0 && rl.rlim_max != RLIM_INFINITY)
-      open_max = rl.rlim_max;
-  else
+#if 0 && defined(HAVE_SYS_RESOURCE_H)
+  /* Use getrlimit() function provided by the system if it is known to be
+   * async-signal safe.
+   *
+   * Currently there are no operating systems known to provide a safe
+   * implementation, so this section is not used for now.
+   */
+  if (getrlimit (RLIMIT_NOFILE, &rl) == 0 && rl.rlim_max != RLIM_INFINITY)
+    open_max = rl.rlim_max;
 #endif
-      open_max = sysconf (_SC_OPEN_MAX);
+#if defined(__FreeBSD__) || defined(__OpenBSD__)
+  /* Use sysconf() function provided by the system if it is known to be
+   * async-signal safe.
+   *
+   * FreeBSD: sysconf() is included in the list of async-signal safe functions
+   * found in https://man.freebsd.org/sigaction(2).
+   *
+   * OpenBSD: sysconf() is included in the list of async-signal safe functions
+   * found in https://man.openbsd.org/sigaction.2.
+   */
+  if (open_max < 0)
+    open_max = sysconf (_SC_OPEN_MAX);
+#endif
+  /* Hardcoded fallback: the default process hard limit in Linux as of 2020 */
+  if (open_max < 0)
+    open_max = 4096;
 
   for (fd = 0; fd < open_max; fd++)
       if ((res = cb (data, fd)) != 0)
           break;
 
   return res;
+#endif
 }
+
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
+static void
+safe_closefrom (int lowfd)
+{
+#if defined(__FreeBSD__) || defined(__OpenBSD__)
+  /* Use closefrom function provided by the system if it is known to be
+   * async-signal safe.
+   *
+   * FreeBSD: closefrom is included in the list of async-signal safe functions
+   * found in https://man.freebsd.org/sigaction(2).
+   *
+   * OpenBSD: closefrom is not included in the list, but a direct system call
+   * should be safe to use.
+   */
+  (void) closefrom (lowfd);
+#elif defined(__DragonFly__)
+  /* It is unclear whether closefrom function included in DragonFlyBSD libc_r
+   * is safe to use because it calls a lot of library functions. It is also
+   * unclear whether libc_r itself is still being used. Therefore, we do a
+   * direct system call here ourselves to avoid possible issues.
+   */
+  (void) syscall (SYS_closefrom, lowfd);
+#elif defined(F_CLOSEM)
+  /* NetBSD and AIX have a special fcntl command which does the same thing as
+   * closefrom. NetBSD also includes closefrom function, which seems to be a
+   * simple wrapper of the fcntl command.
+   */
+  (void) fcntl (lowfd, F_CLOSEM);
+#else
+  (void) safe_fdwalk (close_func, GINT_TO_POINTER (lowfd));
 #endif
+}
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
 static gint
-sane_dup2 (gint fd1, gint fd2)
+safe_dup2 (gint fd1, gint fd2)
 {
   gint ret;
 
- retry:
-  ret = dup2 (fd1, fd2);
-  if (ret < 0 && errno == EINTR)
-    goto retry;
+  do
+    ret = dup2 (fd1, fd2);
+  while (ret < 0 && (errno == EINTR || errno == EBUSY));
 
   return ret;
 }
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
 static gint
-sane_open (const char *path, gint mode)
+safe_open (const char *path, gint mode)
 {
   gint ret;
 
- retry:
-  ret = open (path, mode);
-  if (ret < 0 && errno == EINTR)
-    goto retry;
+  do
+    ret = open (path, mode);
+  while (ret < 0 && errno == EINTR);
 
   return ret;
 }
@@ -1258,6 +1367,8 @@ enum
   CHILD_FORK_FAILED
 };
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)) until it calls exec(). */
 static void
 do_exec (gint                  child_err_report_fd,
          gint                  stdin_fd,
@@ -1265,10 +1376,13 @@ do_exec (gint                  child_err_report_fd,
          gint                  stderr_fd,
          const gchar          *working_directory,
          gchar               **argv,
+         gchar               **argv_buffer,
+         gsize                 argv_buffer_len,
          gchar               **envp,
          gboolean              close_descriptors,
-         gboolean              search_path,
-         gboolean              search_path_from_envp,
+         const gchar          *search_path,
+         gchar                *search_path_buffer,
+         gsize                 search_path_buffer_len,
          gboolean              stdout_to_null,
          gboolean              stderr_to_null,
          gboolean              child_inherits_stdin,
@@ -1279,21 +1393,6 @@ do_exec (gint                  child_err_report_fd,
   if (working_directory && chdir (working_directory) < 0)
     write_err_and_exit (child_err_report_fd,
                         CHILD_CHDIR_FAILED);
-
-  /* Close all file descriptors but stdin stdout and stderr as
-   * soon as we exec. Note that this includes
-   * child_err_report_fd, which keeps the parent from blocking
-   * forever on the other end of that pipe.
-   */
-  if (close_descriptors)
-    {
-      fdwalk (set_cloexec, GINT_TO_POINTER(3));
-    }
-  else
-    {
-      /* We need to do child_err_report_fd anyway */
-      set_cloexec (GINT_TO_POINTER(0), child_err_report_fd);
-    }
   
   /* Redirect pipes as required */
   
@@ -1301,7 +1400,7 @@ do_exec (gint                  child_err_report_fd,
     {
       /* dup2 can't actually fail here I don't think */
           
-      if (sane_dup2 (stdin_fd, 0) < 0)
+      if (safe_dup2 (stdin_fd, 0) < 0)
         write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
 
@@ -1310,9 +1409,11 @@ do_exec (gint                  child_err_report_fd,
   else if (!child_inherits_stdin)
     {
       /* Keep process from blocking on a read of stdin */
-      gint read_null = sane_open ("/dev/null", O_RDONLY);
-      g_assert (read_null != -1);
-      sane_dup2 (read_null, 0);
+      gint read_null = safe_open ("/dev/null", O_RDONLY);
+      if (read_null < 0)
+        write_err_and_exit (child_err_report_fd,
+                            CHILD_DUP2_FAILED);
+      safe_dup2 (read_null, 0);
       close_and_invalidate (&read_null);
     }
 
@@ -1320,7 +1421,7 @@ do_exec (gint                  child_err_report_fd,
     {
       /* dup2 can't actually fail here I don't think */
           
-      if (sane_dup2 (stdout_fd, 1) < 0)
+      if (safe_dup2 (stdout_fd, 1) < 0)
         write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
 
@@ -1328,9 +1429,11 @@ do_exec (gint                  child_err_report_fd,
     }
   else if (stdout_to_null)
     {
-      gint write_null = sane_open ("/dev/null", O_WRONLY);
-      g_assert (write_null != -1);
-      sane_dup2 (write_null, 1);
+      gint write_null = safe_open ("/dev/null", O_WRONLY);
+      if (write_null < 0)
+        write_err_and_exit (child_err_report_fd,
+                            CHILD_DUP2_FAILED);
+      safe_dup2 (write_null, 1);
       close_and_invalidate (&write_null);
     }
 
@@ -1338,7 +1441,7 @@ do_exec (gint                  child_err_report_fd,
     {
       /* dup2 can't actually fail here I don't think */
           
-      if (sane_dup2 (stderr_fd, 2) < 0)
+      if (safe_dup2 (stderr_fd, 2) < 0)
         write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
 
@@ -1346,10 +1449,35 @@ do_exec (gint                  child_err_report_fd,
     }
   else if (stderr_to_null)
     {
-      gint write_null = sane_open ("/dev/null", O_WRONLY);
-      sane_dup2 (write_null, 2);
+      gint write_null = safe_open ("/dev/null", O_WRONLY);
+      safe_dup2 (write_null, 2);
       close_and_invalidate (&write_null);
     }
+
+  /* Close all file descriptors but stdin, stdout and stderr
+   * before we exec. Note that this includes
+   * child_err_report_fd, which keeps the parent from blocking
+   * forever on the other end of that pipe.
+   */
+  if (close_descriptors)
+    {
+      if (child_setup == NULL)
+        {
+          safe_dup2 (child_err_report_fd, 3);
+          set_cloexec (GINT_TO_POINTER (0), 3);
+          safe_closefrom (4);
+          child_err_report_fd = 3;
+        }
+      else
+        {
+          safe_fdwalk (set_cloexec, GINT_TO_POINTER (3));
+        }
+    }
+  else
+    {
+      /* We need to do child_err_report_fd anyway */
+      set_cloexec (GINT_TO_POINTER (0), child_err_report_fd);
+    }
   
   /* Call user function just before we exec */
   if (child_setup)
@@ -1359,7 +1487,8 @@ do_exec (gint                  child_err_report_fd,
 
   g_execute (argv[0],
              file_and_argv_zero ? argv + 1 : argv,
-             envp, search_path, search_path_from_envp);
+             argv_buffer, argv_buffer_len,
+             envp, search_path, search_path_buffer, search_path_buffer_len);
 
   /* Exec failed */
   write_err_and_exit (child_err_report_fd,
@@ -1492,7 +1621,7 @@ do_posix_spawn (gchar     **argv,
   else if (!child_inherits_stdin)
     {
       /* Keep process from blocking on a read of stdin */
-      gint read_null = sane_open ("/dev/null", O_RDONLY | O_CLOEXEC);
+      gint read_null = safe_open ("/dev/null", O_RDONLY | O_CLOEXEC);
       g_assert (read_null != -1);
       parent_close_fds[num_parent_close_fds++] = read_null;
 
@@ -1516,7 +1645,7 @@ do_posix_spawn (gchar     **argv,
     }
   else if (stdout_to_null)
     {
-      gint write_null = sane_open ("/dev/null", O_WRONLY | O_CLOEXEC);
+      gint write_null = safe_open ("/dev/null", O_WRONLY | O_CLOEXEC);
       g_assert (write_null != -1);
       parent_close_fds[num_parent_close_fds++] = write_null;
 
@@ -1540,7 +1669,7 @@ do_posix_spawn (gchar     **argv,
     }
   else if (stderr_to_null)
     {
-      gint write_null = sane_open ("/dev/null", O_WRONLY | O_CLOEXEC);
+      gint write_null = safe_open ("/dev/null", O_WRONLY | O_CLOEXEC);
       g_assert (write_null != -1);
       parent_close_fds[num_parent_close_fds++] = write_null;
 
@@ -1621,6 +1750,11 @@ fork_exec_with_fds (gboolean              intermediate_child,
   gint child_pid_report_pipe[2] = { -1, -1 };
   guint pipe_flags = cloexec_pipes ? FD_CLOEXEC : 0;
   gint status;
+  const gchar *chosen_search_path;
+  gchar *search_path_buffer = NULL;
+  gsize search_path_buffer_len = 0;
+  gchar **argv_buffer = NULL;
+  gsize argv_buffer_len = 0;
 
 #ifdef POSIX_SPAWN_AVAILABLE
   if (!intermediate_child && working_directory == NULL && !close_descriptors &&
@@ -1671,8 +1805,50 @@ fork_exec_with_fds (gboolean              intermediate_child,
     }
 #endif /* POSIX_SPAWN_AVAILABLE */
 
+  /* Choose a search path. This has to be done before calling fork()
+   * as getenv() isn’t async-signal-safe (see `man 7 signal-safety`). */
+  chosen_search_path = NULL;
+  if (search_path_from_envp)
+    chosen_search_path = g_environ_getenv (envp, "PATH");
+  if (search_path && chosen_search_path == NULL)
+    chosen_search_path = g_getenv ("PATH");
+
+  if (chosen_search_path == NULL)
+    {
+      /* There is no 'PATH' in the environment.  The default
+       * * search path in libc is the current directory followed by
+       * * the path 'confstr' returns for '_CS_PATH'.
+       * */
+
+      /* In GLib we put . last, for security, and don't use the
+       * * unportable confstr(); UNIX98 does not actually specify
+       * * what to search if PATH is unset. POSIX may, dunno.
+       * */
+
+      chosen_search_path = "/bin:/usr/bin:.";
+    }
+
+  /* Allocate a buffer which the fork()ed child can use to assemble potential
+   * paths for the binary to exec(), combining the argv[0] and elements from
+   * the chosen_search_path. This can’t be done in the child because malloc()
+   * (or alloca()) are not async-signal-safe (see `man 7 signal-safety`).
+   *
+   * Add 2 for the nul terminator and a leading `/`. */
+  search_path_buffer_len = strlen (chosen_search_path) + strlen (argv[0]) + 2;
+  search_path_buffer = g_malloc (search_path_buffer_len);
+
+  /* And allocate a buffer which is 2 elements longer than @argv, so that if
+   * script_execute() has to be called later on, it can build a wrapper argv
+   * array in this buffer. */
+  argv_buffer_len = g_strv_length (argv) + 2;
+  argv_buffer = g_new (gchar *, argv_buffer_len);
+
   if (!g_unix_open_pipe (child_err_report_pipe, pipe_flags, error))
-    return FALSE;
+    {
+      g_free (search_path_buffer);
+      g_free (argv_buffer);
+      return FALSE;
+    }
 
   if (intermediate_child && !g_unix_open_pipe (child_pid_report_pipe, pipe_flags, error))
     goto cleanup_and_fail;
@@ -1750,10 +1926,13 @@ fork_exec_with_fds (gboolean              intermediate_child,
                        stderr_fd,
                        working_directory,
                        argv,
+                       argv_buffer,
+                       argv_buffer_len,
                        envp,
                        close_descriptors,
-                       search_path,
-                       search_path_from_envp,
+                       chosen_search_path,
+                       search_path_buffer,
+                       search_path_buffer_len,
                        stdout_to_null,
                        stderr_to_null,
                        child_inherits_stdin,
@@ -1780,10 +1959,13 @@ fork_exec_with_fds (gboolean              intermediate_child,
                    stderr_fd,
                    working_directory,
                    argv,
+                   argv_buffer,
+                   argv_buffer_len,
                    envp,
                    close_descriptors,
-                   search_path,
-                   search_path_from_envp,
+                   chosen_search_path,
+                   search_path_buffer,
+                   search_path_buffer_len,
                    stdout_to_null,
                    stderr_to_null,
                    child_inherits_stdin,
@@ -1910,7 +2092,10 @@ fork_exec_with_fds (gboolean              intermediate_child,
       /* Success against all odds! return the information */
       close_and_invalidate (&child_err_report_pipe[0]);
       close_and_invalidate (&child_pid_report_pipe[0]);
+
+      g_free (search_path_buffer);
+      g_free (argv_buffer);
+
       if (child_pid)
         *child_pid = pid;
 
@@ -1943,6 +2128,9 @@ fork_exec_with_fds (gboolean              intermediate_child,
   close_and_invalidate (&child_pid_report_pipe[0]);
   close_and_invalidate (&child_pid_report_pipe[1]);
 
+  g_free (search_path_buffer);
+  g_free (argv_buffer);
+
   return FALSE;
 }
 
@@ -2040,40 +2228,43 @@ cleanup_and_fail:
 
 /* Based on execvp from GNU C Library */
 
-static void
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)) until it calls exec(). */
+static gboolean
 script_execute (const gchar *file,
                 gchar      **argv,
+                gchar      **argv_buffer,
+                gsize        argv_buffer_len,
                 gchar      **envp)
 {
   /* Count the arguments.  */
   int argc = 0;
   while (argv[argc])
     ++argc;
-  
-  /* Construct an argument list for the shell.  */
-  {
-    gchar **new_argv;
-
-    new_argv = g_new0 (gchar*, argc + 2); /* /bin/sh and NULL */
-    
-    new_argv[0] = (char *) "/bin/sh";
-    new_argv[1] = (char *) file;
-    while (argc > 0)
-      {
-       new_argv[argc + 1] = argv[argc];
-       --argc;
-      }
-
-    /* Execute the shell. */
-    if (envp)
-      execve (new_argv[0], new_argv, envp);
-    else
-      execv (new_argv[0], new_argv);
-    
-    g_free (new_argv);
-  }
+
+  /* Construct an argument list for the shell. */
+  if (argc + 2 > argv_buffer_len)
+    return FALSE;
+
+  argv_buffer[0] = (char *) "/bin/sh";
+  argv_buffer[1] = (char *) file;
+  while (argc > 0)
+    {
+      argv_buffer[argc + 1] = argv[argc];
+      --argc;
+    }
+
+  /* Execute the shell. */
+  if (envp)
+    execve (argv_buffer[0], argv_buffer, envp);
+  else
+    execv (argv_buffer[0], argv_buffer);
+
+  return TRUE;
 }
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)). */
 static gchar*
 my_strchrnul (const gchar *str, gchar c)
 {
@@ -2084,12 +2275,17 @@ my_strchrnul (const gchar *str, gchar c)
   return p;
 }
 
+/* This function is called between fork() and exec() and hence must be
+ * async-signal-safe (see signal-safety(7)) until it calls exec(). */
 static gint
-g_execute (const gchar *file,
-           gchar      **argv,
-           gchar      **envp,
-           gboolean     search_path,
-           gboolean     search_path_from_envp)
+g_execute (const gchar  *file,
+           gchar       **argv,
+           gchar       **argv_buffer,
+           gsize         argv_buffer_len,
+           gchar       **envp,
+           const gchar  *search_path,
+           gchar        *search_path_buffer,
+           gsize         search_path_buffer_len)
 {
   if (*file == '\0')
     {
@@ -2098,7 +2294,7 @@ g_execute (const gchar *file,
       return -1;
     }
 
-  if (!(search_path || search_path_from_envp) || strchr (file, '/') != NULL)
+  if (search_path == NULL || strchr (file, '/') != NULL)
     {
       /* Don't search when it contains a slash. */
       if (envp)
@@ -2106,42 +2302,32 @@ g_execute (const gchar *file,
       else
         execv (file, argv);
       
-      if (errno == ENOEXEC)
-       script_execute (file, argv, envp);
+      if (errno == ENOEXEC &&
+          !script_execute (file, argv, argv_buffer, argv_buffer_len, envp))
+        {
+          errno = ENOMEM;
+          return -1;
+        }
     }
   else
     {
       gboolean got_eacces = 0;
       const gchar *path, *p;
-      gchar *name, *freeme;
+      gchar *name;
       gsize len;
       gsize pathlen;
 
-      path = NULL;
-      if (search_path_from_envp)
-        path = g_environ_getenv (envp, "PATH");
-      if (search_path && path == NULL)
-        path = g_getenv ("PATH");
-
-      if (path == NULL)
-       {
-         /* There is no 'PATH' in the environment.  The default
-          * search path in libc is the current directory followed by
-          * the path 'confstr' returns for '_CS_PATH'.
-           */
-
-          /* In GLib we put . last, for security, and don't use the
-           * unportable confstr(); UNIX98 does not actually specify
-           * what to search if PATH is unset. POSIX may, dunno.
-           */
-          
-          path = "/bin:/usr/bin:.";
-       }
-
+      path = search_path;
       len = strlen (file) + 1;
       pathlen = strlen (path);
-      freeme = name = g_malloc (pathlen + len + 1);
-      
+      name = search_path_buffer;
+
+      if (search_path_buffer_len < pathlen + len + 1)
+        {
+          errno = ENOMEM;
+          return -1;
+        }
+
       /* Copy the file name at the top, including '\0'  */
       memcpy (name + pathlen + 1, file, len);
       name = name + pathlen;
@@ -2170,8 +2356,12 @@ g_execute (const gchar *file,
           else
             execv (startp, argv);
           
-         if (errno == ENOEXEC)
-           script_execute (startp, argv, envp);
+          if (errno == ENOEXEC &&
+              !script_execute (startp, argv, argv_buffer, argv_buffer_len, envp))
+            {
+              errno = ENOMEM;
+              return -1;
+            }
 
          switch (errno)
            {
@@ -2210,7 +2400,6 @@ g_execute (const gchar *file,
                * something went wrong executing it; return the error to our
                * caller.
                */
-              g_free (freeme);
              return -1;
            }
        }
@@ -2222,8 +2411,6 @@ g_execute (const gchar *file,
          * error.
          */
         errno = EACCES;
-
-      g_free (freeme);
     }
 
   /* Return the error from the last attempt (probably ENOENT).  */
index 653c8a3..d950d2d 100644 (file)
@@ -309,6 +309,7 @@ _g_win32_fill_privatestat (const struct __stat64            *statbuf,
                            GWin32PrivateStat                *buf)
 {
   buf->st_dev = statbuf->st_dev;
+  buf->st_ino = statbuf->st_ino;
   buf->st_mode = statbuf->st_mode;
   buf->volume_serial = handle_info->dwVolumeSerialNumber;
   buf->file_index = (((guint64) handle_info->nFileIndexHigh) << 32) | handle_info->nFileIndexLow;
@@ -1528,19 +1529,24 @@ g_rmdir (const gchar *filename)
  *     (UTF-8 on Windows)
  * @mode: a string describing the mode in which the file should be opened
  *
- * A wrapper for the stdio fopen() function. The fopen() function
+ * A wrapper for the stdio `fopen()` function. The `fopen()` function
  * opens a file and associates a new stream with it.
  * 
  * Because file descriptors are specific to the C library on Windows,
- * and a file descriptor is part of the FILE struct, the FILE* returned
+ * and a file descriptor is part of the `FILE` struct, the `FILE*` returned
  * by this function makes sense only to functions in the same C library.
  * Thus if the GLib-using code uses a different C library than GLib does,
  * the FILE* returned by this function cannot be passed to C library
- * functions like fprintf() or fread().
+ * functions like `fprintf()` or `fread()`.
  *
- * See your C library manual for more details about fopen().
+ * See your C library manual for more details about `fopen()`.
  *
- * Returns: A FILE* if the file was successfully opened, or %NULL if
+ * As `close()` and `fclose()` are part of the C library, this implies that it is
+ * currently impossible to close a file if the application C library and the C library
+ * used by GLib are different. Convenience functions like g_file_set_contents()
+ * avoid this problem.
+ *
+ * Returns: A `FILE*` if the file was successfully opened, or %NULL if
  *     an error occurred
  * 
  * Since: 2.6
@@ -1642,6 +1648,31 @@ g_freopen (const gchar *filename,
 }
 
 /**
+ * g_fsync:
+ * @fd: a file descriptor
+ *
+ * A wrapper for the POSIX fsync() function (_commit() on Windows).
+ * The fsync() function is used to synchronize a file's in-core
+ * state with that of the disk.
+ *
+ * See the C library manual for more details about fsync().
+ *
+ * Returns: 0 on success, or -1 if an error occurred.
+ * The return value can be used exactly like the return value from fsync().
+ *
+ * Since: 2.64
+ */
+gint
+g_fsync (gint fd)
+{
+#ifdef G_OS_WIN32
+  return _commit (fd);
+#else
+  return fsync (fd);
+#endif
+}
+
+/**
  * g_utime:
  * @filename: (type filename): a pathname in the GLib file name encoding
  *     (UTF-8 on Windows)
index f1781f3..7ed9c5d 100644 (file)
@@ -76,6 +76,7 @@ typedef struct stat GStatBuf;
 #define g_remove  remove
 #define g_fopen   fopen
 #define g_freopen freopen
+#define g_fsync   fsync
 #define g_utime   utime
 #endif
 
@@ -158,6 +159,9 @@ FILE *g_freopen (const gchar *filename,
                  const gchar *mode,
                  FILE        *stream);
 
+GLIB_AVAILABLE_IN_2_64
+gint g_fsync    (gint fd);
+
 struct utimbuf;                        /* Don't need the real definition of struct utimbuf when just
                                 * including this header.
                                 */
index a37ef89..f34aca2 100644 (file)
@@ -491,7 +491,7 @@ g_stpcpy (gchar       *dest,
 
 /**
  * g_strdup_vprintf:
- * @format: a standard printf() format string, but notice
+ * @format: (not nullable): a standard printf() format string, but notice
  *     [string precision pitfalls][string-precision]
  * @args: the list of parameters to insert into the format string
  *
@@ -500,6 +500,10 @@ g_stpcpy (gchar       *dest,
  * the result. The returned string should be freed with g_free() when
  * no longer needed.
  *
+ * The returned string is guaranteed to be non-NULL, unless @format
+ * contains `%lc` or `%ls` conversions, which can fail if no multibyte
+ * representation is available for the given character.
+ *
  * See also g_vasprintf(), which offers the same functionality, but
  * additionally returns the length of the allocated string.
  *
@@ -518,7 +522,7 @@ g_strdup_vprintf (const gchar *format,
 
 /**
  * g_strdup_printf:
- * @format: a standard printf() format string, but notice
+ * @format: (not nullable): a standard printf() format string, but notice
  *     [string precision pitfalls][string-precision]
  * @...: the parameters to insert into the format string
  *
@@ -527,6 +531,10 @@ g_strdup_vprintf (const gchar *format,
  * the result. The returned string should be freed with g_free() when no
  * longer needed.
  *
+ * The returned string is guaranteed to be non-NULL, unless @format
+ * contains `%lc` or `%ls` conversions, which can fail if no multibyte
+ * representation is available for the given character.
+ *
  * Returns: a newly-allocated string holding the result
  */
 gchar*
@@ -1580,7 +1588,7 @@ g_ascii_strup (const gchar *str,
 gboolean
 g_str_is_ascii (const gchar *str)
 {
-  gint i;
+  gsize i;
 
   for (i = 0; str[i]; i++)
     if (str[i] & 0x80)
@@ -2510,7 +2518,7 @@ g_strfreev (gchar **str_array)
 {
   if (str_array)
     {
-      int i;
+      gsize i;
 
       for (i = 0; str_array[i] != NULL; i++)
         g_free (str_array[i]);
@@ -2535,7 +2543,7 @@ g_strdupv (gchar **str_array)
 {
   if (str_array)
     {
-      gint i;
+      gsize i;
       gchar **retval;
 
       i = 0;
@@ -2589,7 +2597,7 @@ g_strjoinv (const gchar  *separator,
 
   if (*str_array)
     {
-      gint i;
+      gsize i;
       gsize len;
       gsize separator_len;
 
index 24692f1..be456ff 100644 (file)
@@ -1144,7 +1144,7 @@ g_string_up (GString *string)
 /**
  * g_string_append_vprintf:
  * @string: a #GString
- * @format: the string format. See the printf() documentation
+ * @format: (not nullable): the string format. See the printf() documentation
  * @args: the list of arguments to insert in the output
  *
  * Appends a formatted string onto the end of a #GString.
@@ -1179,7 +1179,7 @@ g_string_append_vprintf (GString     *string,
 /**
  * g_string_vprintf:
  * @string: a #GString
- * @format: the string format. See the printf() documentation
+ * @format: (not nullable): the string format. See the printf() documentation
  * @args: the parameters to insert into the format string
  *
  * Writes a formatted string into a #GString.
index dd78948..18b1172 100644 (file)
 
 /**
  * g_assert_cmpmem:
- * @m1: pointer to a buffer
+ * @m1: (nullable): pointer to a buffer
  * @l1: length of @m1
- * @m2: pointer to another buffer
+ * @m2: (nullable): pointer to another buffer
  * @l2: length of @m2
  *
  * Debugging macro to compare memory regions. If the comparison fails,
  * The advantage of this macro is that it can produce a message that
  * includes the actual values of @l1 and @l2.
  *
+ * @m1 may be %NULL if (and only if) @l1 is zero; similarly for @m2 and @l2.
+ *
  * |[<!-- language="C" -->
  *   g_assert_cmpmem (buf->data, buf->len, expected, sizeof (expected));
  * ]|
@@ -3065,7 +3067,7 @@ test_trap_clear (void)
 #ifdef G_OS_UNIX
 
 static int
-sane_dup2 (int fd1,
+safe_dup2 (int fd1,
            int fd2)
 {
   int ret;
@@ -3317,7 +3319,7 @@ g_test_trap_fork (guint64        usec_timeout,
           if (fd0 < 0)
             g_error ("failed to open /dev/null for stdin redirection");
         }
-      if (sane_dup2 (stdout_pipe[1], 1) < 0 || sane_dup2 (stderr_pipe[1], 2) < 0 || (fd0 >= 0 && sane_dup2 (fd0, 0) < 0))
+      if (safe_dup2 (stdout_pipe[1], 1) < 0 || safe_dup2 (stderr_pipe[1], 2) < 0 || (fd0 >= 0 && safe_dup2 (fd0, 0) < 0))
         {
           errsv = errno;
           g_error ("failed to dup2() in forked test program: %s", g_strerror (errsv));
@@ -3694,6 +3696,9 @@ g_test_trap_assertions (const char     *domain,
       g_assertion_message (domain, file, line, func, msg);
       g_free (msg);
     }
+
+  (void) logged_child_output;  /* shut up scan-build about the final unread assignment */
+
   g_free (process_id);
 }
 
index 6c475e5..66b7ef3 100644 (file)
@@ -79,7 +79,13 @@ typedef void (*GTestFixtureFunc) (gpointer      fixture,
 #define g_assert_cmpmem(m1, l1, m2, l2) G_STMT_START {\
                                              gconstpointer __m1 = m1, __m2 = m2; \
                                              int __l1 = l1, __l2 = l2; \
-                                             if (__l1 != __l2) \
+                                             if (__l1 != 0 && __m1 == NULL) \
+                                               g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                                    "assertion failed (" #l1 " == 0 || " #m1 " != NULL)"); \
+                                             else if (__l2 != 0 && __m2 == NULL) \
+                                               g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                                    "assertion failed (" #l2 " == 0 || " #m2 " != NULL)"); \
+                                             else if (__l1 != __l2) \
                                                g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
                                                                            #l1 " (len(" #m1 ")) == " #l2 " (len(" #m2 "))", \
                                                                            (long double) __l1, "==", (long double) __l2, 'i'); \
index 5a30b6d..29bc81a 100644 (file)
 
 #include "gthread.h"
 
-#include "gthreadprivate.h"
-#include "gslice.h"
+#include "gmain.h"
 #include "gmessages.h"
+#include "gslice.h"
 #include "gstrfuncs.h"
-#include "gmain.h"
+#include "gtestutils.h"
+#include "gthreadprivate.h"
 #include "gutils.h"
 
 #include <stdlib.h>
 #include <windows.h>
 #endif
 
+#if defined(HAVE_SYS_SCHED_GETATTR)
+#include <sys/syscall.h>
+#endif
+
 /* clang defines __ATOMIC_SEQ_CST but doesn't support the GCC extension */
 #if defined(HAVE_FUTEX) && defined(__ATOMIC_SEQ_CST) && !defined(__clang__)
 #define USE_NATIVE_MUTEX
@@ -1137,6 +1142,11 @@ typedef struct
   pthread_t system_thread;
   gboolean  joined;
   GMutex    lock;
+
+  void *(*proxy) (void *);
+
+  /* Must be statically allocated and valid forever */
+  const GThreadSchedulerSettings *scheduler_settings;
 } GThreadPosix;
 
 void
@@ -1152,13 +1162,107 @@ g_system_thread_free (GRealThread *thread)
   g_slice_free (GThreadPosix, pt);
 }
 
+gboolean
+g_system_thread_get_scheduler_settings (GThreadSchedulerSettings *scheduler_settings)
+{
+  /* FIXME: Implement the same for macOS and the BSDs so it doesn't go through
+   * the fallback code using an additional thread. */
+#if defined(HAVE_SYS_SCHED_GETATTR)
+  pid_t tid;
+  int res;
+  /* FIXME: The struct definition does not seem to be possible to pull in
+   * via any of the normal system headers and it's only declared in the
+   * kernel headers. That's why we hardcode 56 here right now. */
+  guint size = 56; /* Size as of Linux 5.3.9 */
+  guint flags = 0;
+
+  tid = (pid_t) syscall (SYS_gettid);
+
+  scheduler_settings->attr = g_malloc0 (size);
+
+  do
+    {
+      int errsv;
+
+      res = syscall (SYS_sched_getattr, tid, scheduler_settings->attr, size, flags);
+      errsv = errno;
+      if (res == -1)
+        {
+          if (errsv == EAGAIN)
+            {
+              continue;
+            }
+          else if (errsv == E2BIG)
+            {
+              g_assert (size < G_MAXINT);
+              size *= 2;
+              scheduler_settings->attr = g_realloc (scheduler_settings->attr, size);
+              /* Needs to be zero-initialized */
+              memset (scheduler_settings->attr, 0, size);
+            }
+          else
+            {
+              g_debug ("Failed to get thread scheduler attributes: %s", g_strerror (errsv));
+              g_free (scheduler_settings->attr);
+
+              return FALSE;
+            }
+        }
+    }
+  while (res == -1);
+
+  /* Try setting them on the current thread to see if any system policies are
+   * in place that would disallow doing so */
+  res = syscall (SYS_sched_setattr, tid, scheduler_settings->attr, flags);
+  if (res == -1)
+    {
+      int errsv = errno;
+
+      g_debug ("Failed to set thread scheduler attributes: %s", g_strerror (errsv));
+      g_free (scheduler_settings->attr);
+
+      return FALSE;
+    }
+
+  return TRUE;
+#else
+  return FALSE;
+#endif
+}
+
+#if defined(HAVE_SYS_SCHED_GETATTR)
+static void *
+linux_pthread_proxy (void *data)
+{
+  GThreadPosix *thread = data;
+
+  /* Set scheduler settings first if requested */
+  if (thread->scheduler_settings)
+    {
+      pid_t tid = 0;
+      guint flags = 0;
+      int res;
+      int errsv;
+
+      tid = (pid_t) syscall (SYS_gettid);
+      res = syscall (SYS_sched_setattr, tid, thread->scheduler_settings->attr, flags);
+      errsv = errno;
+      if (res == -1)
+        g_critical ("Failed to set scheduler settings: %s", g_strerror (errsv));
+    }
+
+  return thread->proxy (data);
+}
+#endif
+
 GRealThread *
-g_system_thread_new (GThreadFunc   proxy,
-                     gulong        stack_size,
-                     const char   *name,
-                     GThreadFunc   func,
-                     gpointer      data,
-                     GError      **error)
+g_system_thread_new (GThreadFunc proxy,
+                     gulong stack_size,
+                     const GThreadSchedulerSettings *scheduler_settings,
+                     const char *name,
+                     GThreadFunc func,
+                     gpointer data,
+                     GError **error)
 {
   GThreadPosix *thread;
   GRealThread *base_thread;
@@ -1173,6 +1277,8 @@ g_system_thread_new (GThreadFunc   proxy,
   base_thread->thread.func = func;
   base_thread->thread.data = data;
   base_thread->name = g_strdup (name);
+  thread->scheduler_settings = scheduler_settings;
+  thread->proxy = proxy;
 
   posix_check_cmd (pthread_attr_init (&attr));
 
@@ -1190,7 +1296,19 @@ g_system_thread_new (GThreadFunc   proxy,
     }
 #endif /* HAVE_PTHREAD_ATTR_SETSTACKSIZE */
 
+#ifdef HAVE_PTHREAD_ATTR_SETINHERITSCHED
+  if (!scheduler_settings)
+    {
+      /* While this is the default, better be explicit about it */
+      pthread_attr_setinheritsched (&attr, PTHREAD_INHERIT_SCHED);
+    }
+#endif /* HAVE_PTHREAD_ATTR_SETINHERITSCHED */
+
+#if defined(HAVE_SYS_SCHED_GETATTR)
+  ret = pthread_create (&thread->system_thread, &attr, linux_pthread_proxy, thread);
+#else
   ret = pthread_create (&thread->system_thread, &attr, (void* (*)(void*))proxy, thread);
+#endif
 
   posix_check_cmd (pthread_attr_destroy (&attr));
 
@@ -1416,7 +1534,7 @@ void
 g_cond_wait (GCond  *cond,
              GMutex *mutex)
 {
-  guint sampled = g_atomic_int_get (&cond->i[0]);
+  guint sampled = (guint) g_atomic_int_get (&cond->i[0]);
 
   g_mutex_unlock (mutex);
   syscall (__NR_futex, &cond->i[0], (gsize) FUTEX_WAIT_PRIVATE, (gsize) sampled, NULL);
index 89df0da..1de0448 100644 (file)
@@ -428,20 +428,33 @@ g_thread_win32_proxy (gpointer data)
   return 0;
 }
 
+gboolean
+g_system_thread_get_scheduler_settings (GThreadSchedulerSettings *scheduler_settings)
+{
+  HANDLE current_thread = GetCurrentThread ();
+  scheduler_settings->thread_prio = GetThreadPriority (current_thread);
+
+  return TRUE;
+}
+
 GRealThread *
-g_system_thread_new (GThreadFunc   proxy,
-                     gulong        stack_size,
-                     const char   *name,
-                     GThreadFunc   func,
-                     gpointer      data,
-                     GError      **error)
+g_system_thread_new (GThreadFunc proxy,
+                     gulong stack_size,
+                     const GThreadSchedulerSettings *scheduler_settings,
+                     const char *name,
+                     GThreadFunc func,
+                     gpointer data,
+                     GError **error)
 {
   GThreadWin32 *thread;
   GRealThread *base_thread;
   guint ignore;
+  const gchar *message = NULL;
+  int thread_prio;
 
   thread = g_slice_new0 (GThreadWin32);
   thread->proxy = proxy;
+  thread->handle = (HANDLE) NULL;
   base_thread = (GRealThread*)thread;
   base_thread->ref_count = 2;
   base_thread->ours = TRUE;
@@ -450,19 +463,65 @@ g_system_thread_new (GThreadFunc   proxy,
   base_thread->thread.data = data;
   base_thread->name = g_strdup (name);
 
-  thread->handle = (HANDLE) _beginthreadex (NULL, stack_size, g_thread_win32_proxy, thread, 0, &ignore);
+  thread->handle = (HANDLE) _beginthreadex (NULL, stack_size, g_thread_win32_proxy, thread,
+                                            CREATE_SUSPENDED, &ignore);
 
   if (thread->handle == NULL)
     {
-      gchar *win_error = g_win32_error_message (GetLastError ());
-      g_set_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN,
-                   "Error creating thread: %s", win_error);
-      g_free (win_error);
-      g_slice_free (GThreadWin32, thread);
-      return NULL;
+      message = "Error creating thread";
+      goto error;
+    }
+
+  /* For thread priority inheritance we need to manually set the thread
+   * priority of the new thread to the priority of the current thread. We
+   * also have to start the thread suspended and resume it after actually
+   * setting the priority here.
+   *
+   * On Windows, by default all new threads are created with NORMAL thread
+   * priority.
+   */
+
+  if (scheduler_settings)
+    {
+      thread_prio = scheduler_settings->thread_prio;
+    }
+  else
+    {
+      HANDLE current_thread = GetCurrentThread ();
+      thread_prio = GetThreadPriority (current_thread);
+    }
+
+  if (thread_prio == THREAD_PRIORITY_ERROR_RETURN)
+    {
+      message = "Error getting current thread priority";
+      goto error;
+    }
+
+  if (SetThreadPriority (thread->handle, thread_prio) == 0)
+    {
+      message = "Error setting new thread priority";
+      goto error;
+    }
+
+  if (ResumeThread (thread->handle) == -1)
+    {
+      message = "Error resuming new thread";
+      goto error;
     }
 
   return (GRealThread *) thread;
+
+error:
+  {
+    gchar *win_error = g_win32_error_message (GetLastError ());
+    g_set_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN,
+                 "%s: %s", message, win_error);
+    g_free (win_error);
+    if (thread->handle)
+      CloseHandle (thread->handle);
+    g_slice_free (GThreadWin32, thread);
+    return NULL;
+  }
 }
 
 void
index 66e4a1f..6531f70 100644 (file)
@@ -512,6 +512,8 @@ static GMutex    g_once_mutex;
 static GCond     g_once_cond;
 static GSList   *g_once_init_list = NULL;
 
+static volatile guint g_thread_n_created_counter = 0;
+
 static void g_thread_cleanup (gpointer data);
 static GPrivate     g_thread_specific_private = G_PRIVATE_INIT (g_thread_cleanup);
 
@@ -682,7 +684,7 @@ gboolean
   volatile gsize *value_location = location;
   gboolean need_init = FALSE;
   g_mutex_lock (&g_once_mutex);
-  if (g_atomic_pointer_get (value_location) == NULL)
+  if (g_atomic_pointer_get (value_location) == 0)
     {
       if (!g_slist_find (g_once_init_list, (void*) value_location))
         {
@@ -718,7 +720,7 @@ void
 {
   volatile gsize *value_location = location;
 
-  g_return_if_fail (g_atomic_pointer_get (value_location) == NULL);
+  g_return_if_fail (g_atomic_pointer_get (value_location) == 0);
   g_return_if_fail (result != 0);
 
   g_atomic_pointer_set (value_location, result);
@@ -807,6 +809,12 @@ g_thread_proxy (gpointer data)
   return NULL;
 }
 
+guint
+g_thread_n_created (void)
+{
+  return g_atomic_int_get (&g_thread_n_created_counter);
+}
+
 /**
  * g_thread_new:
  * @name: (nullable): an (optional) name for the new thread
@@ -833,6 +841,14 @@ g_thread_proxy (gpointer data)
  * To free the struct returned by this function, use g_thread_unref().
  * Note that g_thread_join() implicitly unrefs the #GThread as well.
  *
+ * New threads by default inherit their scheduler policy (POSIX) or thread
+ * priority (Windows) of the thread creating the new thread.
+ *
+ * This behaviour changed in GLib 2.64: before threads on Windows were not
+ * inheriting the thread priority but were spawned with the default priority.
+ * Starting with GLib 2.64 the behaviour is now consistent between Windows and
+ * POSIX and all threads inherit their parent thread's priority.
+ *
  * Returns: the new #GThread
  *
  * Since: 2.32
@@ -845,7 +861,7 @@ g_thread_new (const gchar *name,
   GError *error = NULL;
   GThread *thread;
 
-  thread = g_thread_new_internal (name, g_thread_proxy, func, data, 0, &error);
+  thread = g_thread_new_internal (name, g_thread_proxy, func, data, 0, NULL, &error);
 
   if G_UNLIKELY (thread == NULL)
     g_error ("creating thread '%s': %s", name ? name : "", error->message);
@@ -876,21 +892,32 @@ g_thread_try_new (const gchar  *name,
                   gpointer      data,
                   GError      **error)
 {
-  return g_thread_new_internal (name, g_thread_proxy, func, data, 0, error);
+  return g_thread_new_internal (name, g_thread_proxy, func, data, 0, NULL, error);
 }
 
 GThread *
-g_thread_new_internal (const gchar   *name,
-                       GThreadFunc    proxy,
-                       GThreadFunc    func,
-                       gpointer       data,
-                       gsize          stack_size,
-                       GError       **error)
+g_thread_new_internal (const gchar *name,
+                       GThreadFunc proxy,
+                       GThreadFunc func,
+                       gpointer data,
+                       gsize stack_size,
+                       const GThreadSchedulerSettings *scheduler_settings,
+                       GError **error)
 {
   g_return_val_if_fail (func != NULL, NULL);
 
-  return (GThread*) g_system_thread_new (proxy, stack_size, name,
-                                         func, data, error);
+  g_atomic_int_inc (&g_thread_n_created_counter);
+
+  return (GThread *) g_system_thread_new (proxy, stack_size, scheduler_settings,
+                                          name, func, data, error);
+}
+
+gboolean
+g_thread_get_scheduler_settings (GThreadSchedulerSettings *scheduler_settings)
+{
+  g_return_val_if_fail (scheduler_settings != NULL, FALSE);
+
+  return g_system_thread_get_scheduler_settings (scheduler_settings);
 }
 
 /**
index c8761c5..980522b 100644 (file)
@@ -247,14 +247,14 @@ void            g_once_init_leave               (volatile void  *location,
 # define g_once_init_enter(location) \
   (G_GNUC_EXTENSION ({                                               \
     G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
-    (void) (0 ? (gpointer) *(location) : 0);                         \
+    (void) (0 ? (gpointer) *(location) : NULL);                      \
     (!g_atomic_pointer_get (location) &&                             \
      g_once_init_enter (location));                                  \
   }))
 # define g_once_init_leave(location, result) \
   (G_GNUC_EXTENSION ({                                               \
     G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
-    (void) (0 ? *(location) = (result) : 0);                         \
+    0 ? (void) (*(location) = (result)) : (void) 0;                  \
     g_once_init_leave ((location), (gsize) (result));                \
   }))
 #else
@@ -283,6 +283,8 @@ typedef void GMutexLocker;
  * g_mutex_locker_free(). Using g_mutex_unlock() on @mutex
  * while a #GMutexLocker exists can lead to undefined behaviour.
  *
+ * No allocation is performed, it is equivalent to a g_mutex_lock() call.
+ *
  * This is intended to be used with g_autoptr().  Note that g_autoptr()
  * is only available when using GCC or clang, so the following example
  * will only work with those compilers:
@@ -328,6 +330,8 @@ g_mutex_locker_new (GMutex *mutex)
  *
  * Unlock @locker's mutex. See g_mutex_locker_new() for details.
  *
+ * No memory is freed, it is equivalent to a g_mutex_unlock() call.
+ *
  * Since: 2.44
  */
 static inline void
@@ -352,6 +356,8 @@ typedef void GRecMutexLocker;
  * g_rec_mutex_locker_free(). Using g_rec_mutex_unlock() on @rec_mutex
  * while a #GRecMutexLocker exists can lead to undefined behaviour.
  *
+ * No allocation is performed, it is equivalent to a g_rec_mutex_lock() call.
+ *
  * This is intended to be used with g_autoptr().  Note that g_autoptr()
  * is only available when using GCC or clang, so the following example
  * will only work with those compilers:
@@ -384,12 +390,14 @@ typedef void GRecMutexLocker;
  * Returns: a #GRecMutexLocker
  * Since: 2.60
  */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 static inline GRecMutexLocker *
 g_rec_mutex_locker_new (GRecMutex *rec_mutex)
 {
   g_rec_mutex_lock (rec_mutex);
   return (GRecMutexLocker *) rec_mutex;
 }
+G_GNUC_END_IGNORE_DEPRECATIONS
 
 /**
  * g_rec_mutex_locker_free:
@@ -397,13 +405,17 @@ g_rec_mutex_locker_new (GRecMutex *rec_mutex)
  *
  * Unlock @locker's recursive mutex. See g_rec_mutex_locker_new() for details.
  *
+ * No memory is freed, it is equivalent to a g_rec_mutex_unlock() call.
+ *
  * Since: 2.60
  */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 static inline void
 g_rec_mutex_locker_free (GRecMutexLocker *locker)
 {
   g_rec_mutex_unlock ((GRecMutex *) locker);
 }
+G_GNUC_END_IGNORE_DEPRECATIONS
 
 /**
  * GRWLockWriterLocker:
@@ -422,6 +434,8 @@ typedef void GRWLockWriterLocker;
  * on @rw_lock while a #GRWLockWriterLocker exists can lead to undefined
  * behaviour.
  *
+ * No allocation is performed, it is equivalent to a g_rw_lock_writer_lock() call.
+ *
  * This is intended to be used with g_autoptr().  Note that g_autoptr()
  * is only available when using GCC or clang, so the following example
  * will only work with those compilers:
@@ -484,12 +498,14 @@ typedef void GRWLockWriterLocker;
  * Returns: a #GRWLockWriterLocker
  * Since: 2.62
  */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 static inline GRWLockWriterLocker *
 g_rw_lock_writer_locker_new (GRWLock *rw_lock)
 {
   g_rw_lock_writer_lock (rw_lock);
   return (GRWLockWriterLocker *) rw_lock;
 }
+G_GNUC_END_IGNORE_DEPRECATIONS
 
 /**
  * g_rw_lock_writer_locker_free:
@@ -498,13 +514,17 @@ g_rw_lock_writer_locker_new (GRWLock *rw_lock)
  * Release a write lock on @locker's read-write lock. See
  * g_rw_lock_writer_locker_new() for details.
  *
+ * No memory is freed, it is equivalent to a g_rw_lock_writer_unlock() call.
+ *
  * Since: 2.62
  */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 static inline void
 g_rw_lock_writer_locker_free (GRWLockWriterLocker *locker)
 {
   g_rw_lock_writer_unlock ((GRWLock *) locker);
 }
+G_GNUC_END_IGNORE_DEPRECATIONS
 
 /**
  * GRWLockReaderLocker:
@@ -523,18 +543,22 @@ typedef void GRWLockReaderLocker;
  * on @rw_lock while a #GRWLockReaderLocker exists can lead to undefined
  * behaviour.
  *
+ * No allocation is performed, it is equivalent to a g_rw_lock_reader_lock() call.
+ *
  * This is intended to be used with g_autoptr(). For a code sample, see
  * g_rw_lock_writer_locker_new().
  *
  * Returns: a #GRWLockReaderLocker
  * Since: 2.62
  */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 static inline GRWLockReaderLocker *
 g_rw_lock_reader_locker_new (GRWLock *rw_lock)
 {
   g_rw_lock_reader_lock (rw_lock);
   return (GRWLockReaderLocker *) rw_lock;
 }
+G_GNUC_END_IGNORE_DEPRECATIONS
 
 /**
  * g_rw_lock_reader_locker_free:
@@ -543,13 +567,17 @@ g_rw_lock_reader_locker_new (GRWLock *rw_lock)
  * Release a read lock on @locker's read-write lock. See
  * g_rw_lock_reader_locker_new() for details.
  *
+ * No memory is freed, it is equivalent to a g_rw_lock_reader_unlock() call.
+ *
  * Since: 2.62
  */
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 static inline void
 g_rw_lock_reader_locker_free (GRWLockReaderLocker *locker)
 {
   g_rw_lock_reader_unlock ((GRWLock *) locker);
 }
+G_GNUC_END_IGNORE_DEPRECATIONS
 
 G_END_DECLS
 
index 0a5f751..ed34fcd 100644 (file)
@@ -30,6 +30,7 @@
 #include "gasyncqueueprivate.h"
 #include "gmain.h"
 #include "gtestutils.h"
+#include "gthreadprivate.h"
 #include "gtimer.h"
 #include "gutils.h"
 
@@ -113,6 +114,20 @@ static gint max_unused_threads = 2;
 static gint kill_unused_threads = 0;
 static guint max_idle_time = 15 * 1000;
 
+static GThreadSchedulerSettings shared_thread_scheduler_settings;
+static gboolean have_shared_thread_scheduler_settings = FALSE;
+
+typedef struct
+{
+  /* Either thread or error are set in the end. Both transfer-full. */
+  GThreadPool *pool;
+  GThread *thread;
+  GError *error;
+} SpawnThreadData;
+
+static GCond spawn_thread_cond;
+static GAsyncQueue *spawn_thread_queue;
+
 static void             g_thread_pool_queue_push_unlocked (GRealThreadPool  *pool,
                                                            gpointer          data);
 static void             g_thread_pool_free_internal       (GRealThreadPool  *pool);
@@ -146,7 +161,7 @@ g_thread_pool_wait_for_new_pool (void)
   gint last_wakeup_thread_serial;
   gboolean have_relayed_thread_marker = FALSE;
 
-  local_max_unused_threads = g_atomic_int_get (&max_unused_threads);
+  local_max_unused_threads = (guint) g_atomic_int_get (&max_unused_threads);
   local_max_idle_time = g_atomic_int_get (&max_idle_time);
   last_wakeup_thread_serial = g_atomic_int_get (&wakeup_thread_serial);
 
@@ -210,7 +225,7 @@ g_thread_pool_wait_for_new_pool (void)
               DEBUG_MSG (("thread %p updating to new limits.",
                           g_thread_self ()));
 
-              local_max_unused_threads = g_atomic_int_get (&max_unused_threads);
+              local_max_unused_threads = (guint) g_atomic_int_get (&max_unused_threads);
               local_max_idle_time = g_atomic_int_get (&max_idle_time);
               last_wakeup_thread_serial = local_wakeup_thread_serial;
 
@@ -278,6 +293,37 @@ g_thread_pool_wait_for_new_task (GRealThreadPool *pool)
   return task;
 }
 
+static gpointer
+g_thread_pool_spawn_thread (gpointer data)
+{
+  while (TRUE)
+    {
+      SpawnThreadData *spawn_thread_data;
+      GThread *thread = NULL;
+      GError *error = NULL;
+      const gchar *prgname = g_get_prgname ();
+      gchar name[16] = "pool";
+
+      if (prgname)
+        g_snprintf (name, sizeof (name), "pool-%s", prgname);
+
+      g_async_queue_lock (spawn_thread_queue);
+      /* Spawn a new thread for the given pool and wake the requesting thread
+       * up again with the result. This new thread will have the scheduler
+       * settings inherited from this thread and in extension of the thread
+       * that created the first non-exclusive thread-pool. */
+      spawn_thread_data = g_async_queue_pop_unlocked (spawn_thread_queue);
+      thread = g_thread_try_new (name, g_thread_pool_thread_proxy, spawn_thread_data->pool, &error);
+
+      spawn_thread_data->thread = g_steal_pointer (&thread);
+      spawn_thread_data->error = g_steal_pointer (&error);
+
+      g_cond_broadcast (&spawn_thread_cond);
+      g_async_queue_unlock (spawn_thread_queue);
+    }
+
+  return NULL;
+}
 
 static gpointer
 g_thread_pool_thread_proxy (gpointer data)
@@ -410,7 +456,43 @@ g_thread_pool_start_thread (GRealThreadPool  *pool,
         g_snprintf (name, sizeof (name), "pool-%s", prgname);
 
       /* No thread was found, we have to start a new one */
-      thread = g_thread_try_new (name, g_thread_pool_thread_proxy, pool, error);
+      if (pool->pool.exclusive)
+        {
+          /* For exclusive thread-pools this is directly called from new() and
+           * we simply start new threads that inherit the scheduler settings
+           * from the current thread.
+           */
+          thread = g_thread_try_new (name, g_thread_pool_thread_proxy, pool, error);
+        }
+      else
+        {
+          /* For non-exclusive thread-pools this can be called at any time
+           * when a new thread is needed. We make sure to create a new thread
+           * here with the correct scheduler settings: either by directly
+           * providing them if supported by the GThread implementation or by
+           * going via our helper thread.
+           */
+          if (have_shared_thread_scheduler_settings)
+            {
+              thread = g_thread_new_internal (name, g_thread_proxy, g_thread_pool_thread_proxy, pool, 0, &shared_thread_scheduler_settings, error);
+            }
+          else
+            {
+              SpawnThreadData spawn_thread_data = { (GThreadPool *) pool, NULL, NULL };
+
+              g_async_queue_lock (spawn_thread_queue);
+
+              g_async_queue_push_unlocked (spawn_thread_queue, &spawn_thread_data);
+
+              while (!spawn_thread_data.thread && !spawn_thread_data.error)
+                g_cond_wait (&spawn_thread_cond, _g_async_queue_get_mutex (spawn_thread_queue));
+
+              thread = spawn_thread_data.thread;
+              if (!thread)
+                g_propagate_error (error, g_steal_pointer (&spawn_thread_data.error));
+              g_async_queue_unlock (spawn_thread_queue);
+            }
+        }
 
       if (thread == NULL)
         return FALSE;
@@ -498,6 +580,42 @@ g_thread_pool_new (GFunc      func,
   G_LOCK (init);
   if (!unused_thread_queue)
       unused_thread_queue = g_async_queue_new ();
+
+  /* For the very first non-exclusive thread-pool we remember the thread
+   * scheduler settings of the thread creating the pool, if supported by
+   * the GThread implementation. This is then used for making sure that
+   * all threads created on the non-exclusive thread-pool have the same
+   * scheduler settings, and more importantly don't just inherit them
+   * from the thread that just happened to push a new task and caused
+   * a new thread to be created.
+   *
+   * Not doing so could cause real-time priority threads or otherwise
+   * threads with problematic scheduler settings to be part of the
+   * non-exclusive thread-pools.
+   *
+   * If this is not supported by the GThread implementation then we here
+   * start a thread that will inherit the scheduler settings from this
+   * very thread and whose only purpose is to spawn new threads with the
+   * same settings for use by the non-exclusive thread-pools.
+   *
+   *
+   * For non-exclusive thread-pools this is not required as all threads
+   * are created immediately below and are running forever, so they will
+   * automatically inherit the scheduler settings from this very thread.
+   */
+  if (!exclusive && !have_shared_thread_scheduler_settings && !spawn_thread_queue)
+    {
+      if (g_thread_get_scheduler_settings (&shared_thread_scheduler_settings))
+        {
+          have_shared_thread_scheduler_settings = TRUE;
+        }
+      else
+        {
+          spawn_thread_queue = g_async_queue_new ();
+          g_cond_init (&spawn_thread_cond);
+          g_thread_new ("pool-spawner", g_thread_pool_spawn_thread, NULL);
+        }
+    }
   G_UNLOCK (init);
 
   if (retval->pool.exclusive)
@@ -899,7 +1017,7 @@ g_thread_pool_get_max_unused_threads (void)
 guint
 g_thread_pool_get_num_unused_threads (void)
 {
-  return g_atomic_int_get (&unused_threads);
+  return (guint) g_atomic_int_get (&unused_threads);
 }
 
 /**
@@ -1022,7 +1140,7 @@ g_thread_pool_set_max_idle_time (guint interval)
 
   g_atomic_int_set (&max_idle_time, interval);
 
-  i = g_atomic_int_get (&unused_threads);
+  i = (guint) g_atomic_int_get (&unused_threads);
   if (i > 0)
     {
       g_atomic_int_inc (&wakeup_thread_serial);
@@ -1058,5 +1176,5 @@ g_thread_pool_set_max_idle_time (guint interval)
 guint
 g_thread_pool_get_max_idle_time (void)
 {
-  return g_atomic_int_get (&max_idle_time);
+  return (guint) g_atomic_int_get (&max_idle_time);
 }
index b0294af..34ba612 100644 (file)
@@ -21,6 +21,8 @@
 #ifndef __G_THREADPRIVATE_H__
 #define __G_THREADPRIVATE_H__
 
+#include "config.h"
+
 #include "deprecated/gthread.h"
 
 typedef struct _GRealThread GRealThread;
@@ -35,30 +37,52 @@ struct  _GRealThread
 };
 
 /* system thread implementation (gthread-posix.c, gthread-win32.c) */
+
+/* Platform-specific scheduler settings for a thread */
+typedef struct
+{
+#if defined(HAVE_SYS_SCHED_GETATTR)
+  /* This is for modern Linux */
+  struct sched_attr *attr;
+#elif defined(G_OS_WIN32)
+  gint thread_prio;
+#else
+  /* TODO: Add support for macOS and the BSDs */
+  void *dummy;
+#endif
+} GThreadSchedulerSettings;
+
 void            g_system_thread_wait            (GRealThread  *thread);
 
-GRealThread *   g_system_thread_new             (GThreadFunc   proxy,
-                                                 gulong        stack_size,
-                                                 const char   *name,
-                                                 GThreadFunc   func,
-                                                 gpointer      data,
-                                                 GError      **error);
+GRealThread *g_system_thread_new (GThreadFunc proxy,
+                                  gulong stack_size,
+                                  const GThreadSchedulerSettings *scheduler_settings,
+                                  const char *name,
+                                  GThreadFunc func,
+                                  gpointer data,
+                                  GError **error);
 void            g_system_thread_free            (GRealThread  *thread);
 
 void            g_system_thread_exit            (void);
 void            g_system_thread_set_name        (const gchar  *name);
 
+gboolean        g_system_thread_get_scheduler_settings (GThreadSchedulerSettings *scheduler_settings);
 
 /* gthread.c */
-GThread *       g_thread_new_internal           (const gchar  *name,
-                                                 GThreadFunc   proxy,
-                                                 GThreadFunc   func,
-                                                 gpointer      data,
-                                                 gsize         stack_size,
-                                                 GError      **error);
+GThread *g_thread_new_internal (const gchar *name,
+                                GThreadFunc proxy,
+                                GThreadFunc func,
+                                gpointer data,
+                                gsize stack_size,
+                                const GThreadSchedulerSettings *scheduler_settings,
+                                GError **error);
+
+gboolean g_thread_get_scheduler_settings (GThreadSchedulerSettings *scheduler_settings);
 
 gpointer        g_thread_proxy                  (gpointer      thread);
 
+guint           g_thread_n_created              (void);
+
 gpointer        g_private_set_alloc0            (GPrivate       *key,
                                                  gsize           size);
 
index 9206388..5a835de 100644 (file)
@@ -37,6 +37,7 @@
 #include "gslice.h"
 #include "gdatetime.h"
 #include "gdate.h"
+#include "genviron.h"
 
 #ifdef G_OS_WIN32
 
@@ -196,6 +197,8 @@ struct _GTimeZone
 
 G_LOCK_DEFINE_STATIC (time_zones);
 static GHashTable/*<string?, GTimeZone>*/ *time_zones;
+G_LOCK_DEFINE_STATIC (tz_local);
+static GTimeZone *tz_local = NULL;
 
 #define MIN_TZYEAR 1916 /* Daylight Savings started in WWI */
 #define MAX_TZYEAR 2999 /* And it's not likely ever to go away, but
@@ -1200,14 +1203,21 @@ parse_mwd_boundary (gchar **pos, TimeZoneDate *boundary)
   return TRUE;
 }
 
-/* Different implementations of tzset interpret the Julian day field
-   differently. For example, Linux specifies that it should be 1-based
-   (1 Jan is JD 1) for both Jn and n formats, while zOS and BSD
-   specify that a Jn JD is 1-based while an n JD is 0-based. Rather
-   than trying to follow different specs, we will follow GDate's
-   practice thatIn order to keep it simple, we will follow Linux's
-   practice. */
-
+/*
+ * This parses two slightly different ways of specifying
+ * the Julian day:
+ *
+ * - ignore_leap == TRUE
+ *
+ *   Jn   This specifies the Julian day with n between 1 and 365. Leap days
+ *        are not counted. In this format, February 29 can't be represented;
+ *        February 28 is day 59, and March 1 is always day 60.
+ *
+ * - ignore_leap == FALSE
+ *
+ *   n   This specifies the zero-based Julian day with n between 0 and 365.
+ *       February 29 is counted in leap years.
+ */
 static gboolean
 parse_julian_boundary (gchar** pos, TimeZoneDate *boundary,
                        gboolean ignore_leap)
@@ -1221,8 +1231,20 @@ parse_julian_boundary (gchar** pos, TimeZoneDate *boundary,
       day += *(*pos)++ - '0';
     }
 
-  if (day < 1 || 365 < day)
-    return FALSE;
+  if (ignore_leap)
+    {
+      if (day < 1 || 365 < day)
+        return FALSE;
+      if (day >= 59)
+        day++;
+    }
+  else
+    {
+      if (day < 0 || 365 < day)
+        return FALSE;
+      /* GDate wants day in range 1->366 */
+      day++;
+    }
 
   g_date_clear (&date, 1);
   g_date_set_julian (&date, day);
@@ -1231,9 +1253,6 @@ parse_julian_boundary (gchar** pos, TimeZoneDate *boundary,
   boundary->mday = (int) g_date_get_day (&date);
   boundary->wday = 0;
 
-  if (!ignore_leap && day >= 59)
-    boundary->mday++;
-
   return TRUE;
 }
 
@@ -1255,13 +1274,13 @@ parse_tz_boundary (const gchar  *identifier,
   else if (*pos == 'J')
     {
       ++pos;
-      if (!parse_julian_boundary (&pos, boundary, FALSE))
+      if (!parse_julian_boundary (&pos, boundary, TRUE))
         return FALSE ;
     }
   /* Julian date which counts Feb 29 in leap years */
   else if (*pos >= '0' && '9' >= *pos)
     {
-      if (!parse_julian_boundary (&pos, boundary, TRUE))
+      if (!parse_julian_boundary (&pos, boundary, FALSE))
         return FALSE;
     }
   else
@@ -1485,7 +1504,8 @@ rules_from_identifier (const gchar   *identifier,
  * the local time.
  *
  * In UNIX, the `TZ` environment variable typically corresponds
- * to the name of a file in the zoneinfo database, or string in
+ * to the name of a file in the zoneinfo database, an absolute path to a file
+ * somewhere else, or a string in
  * "std offset [dst [offset],start[/time],end[/time]]" (POSIX) format.
  * There  are  no spaces in the specification. The name of standard
  * and daylight savings time zone must be three or more alphabetic
@@ -1659,7 +1679,16 @@ g_time_zone_new (const gchar *identifier)
 GTimeZone *
 g_time_zone_new_utc (void)
 {
-  return g_time_zone_new ("UTC");
+  static GTimeZone *utc = NULL;
+  static gsize initialised;
+
+  if (g_once_init_enter (&initialised))
+    {
+      utc = g_time_zone_new ("UTC");
+      g_once_init_leave (&initialised, TRUE);
+    }
+
+  return g_time_zone_ref (utc);
 }
 
 /**
@@ -1682,7 +1711,23 @@ g_time_zone_new_utc (void)
 GTimeZone *
 g_time_zone_new_local (void)
 {
-  return g_time_zone_new (getenv ("TZ"));
+  const gchar *tzenv = g_getenv ("TZ");
+  GTimeZone *tz;
+
+  G_LOCK (tz_local);
+
+  /* Is time zone changed and must be flushed? */
+  if (tz_local && g_strcmp0 (g_time_zone_get_identifier (tz_local), tzenv))
+    g_clear_pointer (&tz_local, g_time_zone_unref);
+
+  if (tz_local == NULL)
+    tz_local = g_time_zone_new (tzenv);
+
+  tz = g_time_zone_ref (tz_local);
+
+  G_UNLOCK (tz_local);
+
+  return tz;
 }
 
 /**
index d646f15..23c5a12 100644 (file)
@@ -451,9 +451,6 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
     _GLIB_CHECKED_MUL_U32(dest, a, b)
 #endif
 
-/* FIXME: Hide this from gtkdoc scanner because it confuses its poor regexes.
- * https://gitlab.gnome.org/GNOME/gtk-doc/issues/90 */
-#ifndef __GTK_DOC_IGNORE__
 /* The names of the following inlines are private.  Use the macro
  * definitions above.
  */
@@ -477,7 +474,6 @@ static inline gboolean _GLIB_CHECKED_ADD_U64 (guint64 *dest, guint64 a, guint64
 static inline gboolean _GLIB_CHECKED_MUL_U64 (guint64 *dest, guint64 a, guint64 b) {
   *dest = a * b; return !a || *dest / a == b; }
 #endif
-#endif /* __GTK_DOC_IGNORE__ */
 
 /* IEEE Standard 754 Single Precision Storage Format (gfloat):
  *
@@ -569,7 +565,7 @@ G_END_DECLS
 #    else /* !GLIB_STATIC_COMPILATION */
 #      ifdef GLIB_COMPILATION
 #        ifdef DLL_EXPORT
-#          define GLIB_VAR __declspec(dllexport)
+#          define GLIB_VAR extern __declspec(dllexport)
 #        else /* !DLL_EXPORT */
 #          define GLIB_VAR extern
 #        endif /* !DLL_EXPORT */
index f6599f1..d54ef19 100644 (file)
@@ -428,7 +428,7 @@ g_utf8_collate_key (const gchar *str,
   if (g_get_charset (&charset))
     {
       xfrm_len = strxfrm (NULL, str_norm, 0);
-      if (xfrm_len >= 0 && xfrm_len < G_MAXINT - 2)
+      if (xfrm_len < G_MAXINT - 2)
         {
           result = g_malloc (xfrm_len + 1);
           strxfrm (result, str_norm, xfrm_len + 1);
index 19ecdae..32addc9 100644 (file)
@@ -443,6 +443,7 @@ _g_utf8_normalize_wc (const gchar    *str,
     {
       g_unicode_canonical_ordering (wc_buffer + last_start, n_wc - last_start);
       last_start = n_wc;
+      (void) last_start;
     }
          
   wc_buffer[n_wc] = 0;
index 01cb446..d1e8879 100644 (file)
@@ -686,6 +686,11 @@ g_utf8_get_char_validated (const gchar *p,
 
   result = g_utf8_get_char_extended (p, max_len);
 
+  /* Disallow codepoint U+0000 as it’s a nul byte,
+   * and all string handling in GLib is nul-terminated */
+  if (result == 0 && max_len > 0)
+    return (gunichar) -2;
+
   if (result & 0x80000000)
     return result;
   else if (!UNICODE_VALID (result))
index 988d0a5..c5aef47 100644 (file)
@@ -42,6 +42,7 @@
 #include <sys/stat.h>
 #ifdef G_OS_UNIX
 #include <pwd.h>
+#include <sys/utsname.h>
 #include <unistd.h>
 #endif
 #include <sys/types.h>
@@ -301,8 +302,8 @@ g_find_program_in_path (const gchar *program)
  * the program is found, the return value contains the full name
  * including the type suffix.
  *
- * Returns: (type filename): a newly-allocated string with the absolute path,
- *     or %NULL
+ * Returns: (type filename) (transfer full) (nullable): a newly-allocated
+ *   string with the absolute path, or %NULL
  **/
 #ifdef G_OS_WIN32
 static gchar *
@@ -680,7 +681,7 @@ g_get_user_database_entry (void)
             e.user_name = g_strdup (pw->pw_name);
 
 #ifndef __BIONIC__
-            if (pw->pw_gecos && *pw->pw_gecos != '\0')
+            if (pw->pw_gecos && *pw->pw_gecos != '\0' && pw->pw_name)
               {
                 gchar **gecos_fields;
                 gchar **name_parts;
@@ -735,7 +736,7 @@ g_get_user_database_entry (void)
  * encoding, or something else, and there is no guarantee that it is even
  * consistent on a machine. On Windows, it is always UTF-8.
  *
- * Returns: (type filename): the user name of the current user.
+ * Returns: (type filename) (transfer none): the user name of the current user.
  */
 const gchar *
 g_get_user_name (void)
@@ -756,7 +757,7 @@ g_get_user_name (void)
  * real user name cannot be determined, the string "Unknown" is 
  * returned.
  *
- * Returns: (type filename): the user's real name.
+ * Returns: (type filename) (transfer none): the user's real name.
  */
 const gchar *
 g_get_real_name (void)
@@ -865,7 +866,7 @@ g_build_home_dir (void)
  * should either directly check the `HOME` environment variable yourself
  * or unset it before calling any functions in GLib.
  *
- * Returns: (type filename): the current user's home directory
+ * Returns: (type filename) (transfer none): the current user's home directory
  */
 const gchar *
 g_get_home_dir (void)
@@ -901,7 +902,7 @@ g_get_home_dir (void)
  * it is always UTF-8. The return value is never %NULL or the empty
  * string.
  *
- * Returns: (type filename): the directory to use for temporary files.
+ * Returns: (type filename) (transfer none): the directory to use for temporary files.
  */
 const gchar *
 g_get_tmp_dir (void)
@@ -966,7 +967,7 @@ g_get_tmp_dir (void)
  *
  * The encoding of the returned string is UTF-8.
  *
- * Returns: the host name of the machine.
+ * Returns: (transfer none): the host name of the machine.
  *
  * Since: 2.8
  */
@@ -992,6 +993,7 @@ g_get_host_name (void)
       const gsize size_large = (gsize) 256 * 256;
       gchar *tmp;
 
+#ifdef _SC_HOST_NAME_MAX
       max = sysconf (_SC_HOST_NAME_MAX);
       if (max > 0 && max <= G_MAXSIZE - 1)
         size = (gsize) max + 1;
@@ -1000,8 +1002,11 @@ g_get_host_name (void)
         size = HOST_NAME_MAX + 1;
 #else
         size = _POSIX_HOST_NAME_MAX + 1;
-#endif
-
+#endif /* HOST_NAME_MAX */
+#else
+      /* Fallback to some reasonable value */
+      size = 256;
+#endif /* _SC_HOST_NAME_MAX */
       tmp = g_malloc (size);
       failed = (gethostname (tmp, size) == -1);
       if (failed && size < size_large)
@@ -1046,9 +1051,9 @@ static gchar *g_prgname = NULL;
  * #GtkApplication::startup handler. The program name is found by
  * taking the last component of @argv[0].
  *
- * Returns: (nullable): the name of the program, or %NULL if it has not been
- *     set yet. The returned string belongs
- *     to GLib and must not be modified or freed.
+ * Returns: (nullable) (transfer none): the name of the program,
+ *   or %NULL if it has not been set yet. The returned string belongs
+ *   to GLib and must not be modified or freed.
  */
 const gchar*
 g_get_prgname (void)
@@ -1100,7 +1105,8 @@ static gchar *g_application_name = NULL;
  * g_get_prgname() (which may be %NULL if g_set_prgname() has also not
  * been called).
  * 
- * Returns: human-readable application name. may return %NULL
+ * Returns: (transfer none) (nullable): human-readable application
+ *   name. May return %NULL
  *
  * Since: 2.2
  **/
@@ -1153,6 +1159,429 @@ g_set_application_name (const gchar *application_name)
     g_warning ("g_set_application_name() called multiple times");
 }
 
+#ifdef G_OS_WIN32
+/* For the past versions we can just
+ * hardcode all the names.
+ */
+static const struct winver
+{
+  gint major;
+  gint minor;
+  gint sp;
+  const char *version;
+  const char *spversion;
+} versions[] =
+{
+  {6, 2, 0, "8", ""},
+  {6, 1, 1, "7", " SP1"},
+  {6, 1, 0, "7", ""},
+  {6, 0, 2, "Vista", " SP2"},
+  {6, 0, 1, "Vista", " SP1"},
+  {6, 0, 0, "Vista", ""},
+  {5, 1, 3, "XP", " SP3"},
+  {5, 1, 2, "XP", " SP2"},
+  {5, 1, 1, "XP", " SP1"},
+  {5, 1, 0, "XP", ""},
+  {0, 0, 0, NULL, NULL},
+};
+
+static gchar *
+get_registry_str (HKEY root_key, const wchar_t *path, const wchar_t *value_name)
+{
+  HKEY key_handle;
+  DWORD req_value_data_size;
+  DWORD req_value_data_size2;
+  LONG status;
+  DWORD value_type_w;
+  DWORD value_type_w2;
+  char *req_value_data;
+  gchar *result;
+
+  status = RegOpenKeyExW (root_key, path, 0, KEY_READ, &key_handle);
+  if (status != ERROR_SUCCESS)
+    return NULL;
+
+  req_value_data_size = 0;
+  status = RegQueryValueExW (key_handle,
+                             value_name,
+                             NULL,
+                             &value_type_w,
+                             NULL,
+                             &req_value_data_size);
+
+  if (status != ERROR_MORE_DATA && status != ERROR_SUCCESS)
+    {
+      RegCloseKey (key_handle);
+
+      return NULL;
+    }
+
+  req_value_data = g_malloc (req_value_data_size);
+  req_value_data_size2 = req_value_data_size;
+
+  status = RegQueryValueExW (key_handle,
+                             value_name,
+                             NULL,
+                             &value_type_w2,
+                             (gpointer) req_value_data,
+                             &req_value_data_size2);
+
+  result = NULL;
+
+  if (status == ERROR_SUCCESS && value_type_w2 == REG_SZ)
+    result = g_utf16_to_utf8 ((gunichar2 *) req_value_data,
+                              req_value_data_size / sizeof (gunichar2),
+                              NULL,
+                              NULL,
+                              NULL);
+
+  g_free (req_value_data);
+  RegCloseKey (key_handle);
+
+  return result;
+}
+
+/* Windows 8.1 can be either plain or with Update 1,
+ * depending on its build number (9200 or 9600).
+ */
+static gchar *
+get_windows_8_1_update (void)
+{
+  gchar *current_build;
+  gchar *result = NULL;
+
+  current_build = get_registry_str (HKEY_LOCAL_MACHINE,
+                                    L"SOFTWARE"
+                                    L"\\Microsoft"
+                                    L"\\Windows NT"
+                                    L"\\CurrentVersion",
+                                    L"CurrentBuild");
+
+  if (current_build != NULL)
+    {
+      wchar_t *end;
+      long build = wcstol ((const wchar_t *) current_build, &end, 10);
+
+      if (build <= INT_MAX &&
+          build >= INT_MIN &&
+          errno == 0 &&
+          *end == L'\0')
+        {
+          if (build >= 9600)
+            result = g_strdup ("Update 1");
+        }
+    }
+
+  g_clear_pointer (&current_build, g_free);
+
+  return result;
+}
+
+static gchar *
+get_windows_version (gboolean with_windows)
+{
+  GString *version = g_string_new (NULL);
+
+  if (g_win32_check_windows_version (10, 0, 0, G_WIN32_OS_ANY))
+    {
+      gchar *win10_release;
+
+      g_string_append (version, "10");
+
+      if (!g_win32_check_windows_version (10, 0, 0, G_WIN32_OS_WORKSTATION))
+        g_string_append (version, " Server");
+
+      /* Windows 10 is identified by its release number, such as
+       * 1511, 1607, 1703, 1709, 1803, 1809 or 1903.
+       * The first version of Windows 10 has no release number.
+       */
+      win10_release = get_registry_str (HKEY_LOCAL_MACHINE,
+                                        L"SOFTWARE"
+                                        L"\\Microsoft"
+                                        L"\\Windows NT"
+                                        L"\\CurrentVersion",
+                                        L"ReleaseId");
+
+      if (win10_release != NULL)
+        g_string_append_printf (version, " %s", win10_release);
+
+      g_free (win10_release);
+    }
+  else if (g_win32_check_windows_version (6, 3, 0, G_WIN32_OS_ANY))
+    {
+      gchar *win81_update;
+
+      g_string_append (version, "8.1");
+
+      if (!g_win32_check_windows_version (6, 3, 0, G_WIN32_OS_WORKSTATION))
+        g_string_append (version, " Server");
+
+      win81_update = get_windows_8_1_update ();
+
+      if (win81_update != NULL)
+        g_string_append_printf (version, " %s", win81_update);
+
+      g_free (win81_update);
+    }
+  else
+    {
+      gint i;
+
+      for (i = 0; versions[i].major > 0; i++)
+        {
+          if (!g_win32_check_windows_version (versions[i].major, versions[i].minor, versions[i].sp, G_WIN32_OS_ANY))
+            continue;
+
+          g_string_append (version, versions[i].version);
+
+          if (!g_win32_check_windows_version (versions[i].major, versions[i].minor, versions[i].sp, G_WIN32_OS_WORKSTATION))
+            g_string_append (version, " Server");
+
+          g_string_append (version, versions[i].spversion);
+        }
+    }
+
+  if (version->len == 0)
+    {
+      g_string_free (version, TRUE);
+
+      return NULL;
+    }
+
+  if (with_windows)
+    g_string_prepend (version, "Windows ");
+
+  return g_string_free (version, FALSE);
+}
+#endif
+
+#ifdef G_OS_UNIX
+static gchar *
+get_os_info_from_os_release (const gchar *key_name,
+                             const gchar *buffer)
+{
+  GStrv lines;
+  gchar *prefix;
+  size_t i;
+  gchar *result = NULL;
+
+  lines = g_strsplit (buffer, "\n", -1);
+  prefix = g_strdup_printf ("%s=", key_name);
+  for (i = 0; lines[i] != NULL; i++)
+    {
+      const gchar *line = lines[i];
+      const gchar *value;
+
+      if (g_str_has_prefix (line, prefix))
+        {
+          value = line + strlen (prefix);
+          result = g_shell_unquote (value, NULL);
+          if (result == NULL)
+            result = g_strdup (value);
+          break;
+        }
+    }
+  g_strfreev (lines);
+  g_free (prefix);
+
+#ifdef __linux__
+  /* Default values in spec */
+  if (result == NULL)
+    {
+      if (g_str_equal (key_name, G_OS_INFO_KEY_NAME))
+        return g_strdup ("Linux");
+      if (g_str_equal (key_name, G_OS_INFO_KEY_ID))
+        return g_strdup ("linux");
+      if (g_str_equal (key_name, G_OS_INFO_KEY_PRETTY_NAME))
+        return g_strdup ("Linux");
+    }
+#endif
+
+  return g_steal_pointer (&result);
+}
+
+static gchar *
+get_os_info_from_uname (const gchar *key_name)
+{
+  struct utsname info;
+
+  if (uname (&info) == -1)
+    return NULL;
+
+  if (strcmp (key_name, G_OS_INFO_KEY_NAME) == 0)
+    return g_strdup (info.sysname);
+  else if (strcmp (key_name, G_OS_INFO_KEY_VERSION) == 0)
+    return g_strdup (info.release);
+  else if (strcmp (key_name, G_OS_INFO_KEY_PRETTY_NAME) == 0)
+    return g_strdup_printf ("%s %s", info.sysname, info.release);
+  else if (strcmp (key_name, G_OS_INFO_KEY_ID) == 0)
+    {
+      gchar *result = g_ascii_strdown (info.sysname, -1);
+
+      g_strcanon (result, "abcdefghijklmnopqrstuvwxyz0123456789_-.", '_');
+      return g_steal_pointer (&result);
+    }
+  else if (strcmp (key_name, G_OS_INFO_KEY_VERSION_ID) == 0)
+    {
+      /* We attempt to convert the version string to the format returned by
+       * config.guess, which is the script used to generate target triplets
+       * in GNU autotools. There are a lot of rules in the script. We only
+       * implement a few rules which are easy to understand here.
+       *
+       * config.guess can be found at https://savannah.gnu.org/projects/config.
+       */
+      gchar *result;
+
+      if (strcmp (info.sysname, "NetBSD") == 0)
+        {
+          /* sed -e 's,[-_].*,,' */
+          gssize len = G_MAXSSIZE;
+          const gchar *c;
+
+          if ((c = strchr (info.release, '-')) != NULL)
+            len = MIN (len, c - info.release);
+          if ((c = strchr (info.release, '_')) != NULL)
+            len = MIN (len, c - info.release);
+          if (len == G_MAXSSIZE)
+            len = -1;
+
+          result = g_ascii_strdown (info.release, len);
+        }
+      else if (strcmp (info.sysname, "GNU") == 0)
+        {
+          /* sed -e 's,/.*$,,' */
+          gssize len = -1;
+          const gchar *c = strchr (info.release, '/');
+
+          if (c != NULL)
+            len = c - info.release;
+
+          result = g_ascii_strdown (info.release, len);
+        }
+      else if (g_str_has_prefix (info.sysname, "GNU/") ||
+               strcmp (info.sysname, "FreeBSD") == 0 ||
+               strcmp (info.sysname, "DragonFly") == 0)
+        {
+          /* sed -e 's,[-(].*,,' */
+          gssize len = G_MAXSSIZE;
+          const gchar *c;
+
+          if ((c = strchr (info.release, '-')) != NULL)
+            len = MIN (len, c - info.release);
+          if ((c = strchr (info.release, '(')) != NULL)
+            len = MIN (len, c - info.release);
+          if (len == G_MAXSSIZE)
+            len = -1;
+
+          result = g_ascii_strdown (info.release, len);
+        }
+      else
+        result = g_ascii_strdown (info.release, -1);
+
+      g_strcanon (result, "abcdefghijklmnopqrstuvwxyz0123456789_-.", '_');
+      return g_steal_pointer (&result);
+    }
+  else
+    return NULL;
+}
+#endif
+
+/**
+ * g_get_os_info:
+ * @key_name: a key for the OS info being requested, for example %G_OS_INFO_KEY_NAME.
+ *
+ * Get information about the operating system.
+ *
+ * On Linux this comes from the `/etc/os-release` file. On other systems, it may
+ * come from a variety of sources. You can either use the standard key names
+ * like %G_OS_INFO_KEY_NAME or pass any UTF-8 string key name. For example,
+ * `/etc/os-release` provides a number of other less commonly used values that may
+ * be useful. No key is guaranteed to be provided, so the caller should always
+ * check if the result is %NULL.
+ *
+ * Returns: (nullable): The associated value for the requested key or %NULL if
+ *   this information is not provided.
+ *
+ * Since: 2.64
+ **/
+gchar *
+g_get_os_info (const gchar *key_name)
+{
+#if defined (__APPLE__)
+  if (g_strcmp0 (key_name, G_OS_INFO_KEY_NAME) == 0)
+    return g_strdup ("macOS");
+  else
+    return NULL;
+#elif defined (G_OS_UNIX)
+  const gchar * const os_release_files[] = { "/etc/os-release", "/usr/lib/os-release" };
+  gsize i;
+  gchar *buffer = NULL;
+  gchar *result = NULL;
+
+  g_return_val_if_fail (key_name != NULL, NULL);
+
+  for (i = 0; i < G_N_ELEMENTS (os_release_files); i++)
+    {
+      GError *error = NULL;
+      gboolean file_missing;
+
+      if (g_file_get_contents (os_release_files[i], &buffer, NULL, &error))
+        break;
+
+      file_missing = g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
+      g_clear_error (&error);
+
+      if (!file_missing)
+        return NULL;
+    }
+
+  if (buffer != NULL)
+    result = get_os_info_from_os_release (key_name, buffer);
+  else
+    result = get_os_info_from_uname (key_name);
+
+  g_free (buffer);
+  return g_steal_pointer (&result);
+#elif defined (G_OS_WIN32)
+  if (g_strcmp0 (key_name, G_OS_INFO_KEY_NAME) == 0)
+    return g_strdup ("Windows");
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_ID) == 0)
+    return g_strdup ("windows");
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_PRETTY_NAME) == 0)
+    /* Windows XP SP2 or Windows 10 1903 or Windows 7 Server SP1 */
+    return get_windows_version (TRUE);
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_VERSION) == 0)
+    /* XP SP2 or 10 1903 or 7 Server SP1 */
+    return get_windows_version (FALSE);
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_VERSION_ID) == 0)
+    {
+      /* xp_sp2 or 10_1903 or 7_server_sp1 */
+      gchar *result;
+      gchar *version = get_windows_version (FALSE);
+
+      if (version == NULL)
+        return NULL;
+
+      result = g_ascii_strdown (version, -1);
+      g_free (version);
+
+      return g_strcanon (result, "abcdefghijklmnopqrstuvwxyz0123456789_-.", '_');
+    }
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_HOME_URL) == 0)
+    return g_strdup ("https://microsoft.com/windows/");
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_DOCUMENTATION_URL) == 0)
+    return g_strdup ("https://docs.microsoft.com/");
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_SUPPORT_URL) == 0)
+    return g_strdup ("https://support.microsoft.com/");
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_BUG_REPORT_URL) == 0)
+    return g_strdup ("https://support.microsoft.com/contactus/");
+  else if (g_strcmp0 (key_name, G_OS_INFO_KEY_PRIVACY_POLICY_URL) == 0)
+    return g_strdup ("https://privacy.microsoft.com/");
+  else
+    return NULL;
+#endif
+}
+
 /* Set @global_str to a copy of @new_value if it’s currently unset or has a
  * different value. If its current value matches @new_value, do nothing. If
  * replaced, we have to leak the old value as client code could still have
@@ -1300,8 +1729,9 @@ g_build_user_data_dir (void)
  * Note that in this case on Windows it will be the same
  * as what g_get_user_config_dir() returns.
  *
- * Returns: (type filename): a string owned by GLib that must not be modified
- *               or freed.
+ * Returns: (type filename) (transfer none): a string owned by GLib that must
+ *   not be modified or freed.
+ *
  * Since: 2.6
  **/
 const gchar *
@@ -1360,8 +1790,8 @@ g_build_user_config_dir (void)
  * Note that in this case on Windows it will be  the same
  * as what g_get_user_data_dir() returns.
  *
- * Returns: (type filename): a string owned by GLib that must not be modified
- *               or freed.
+ * Returns: (type filename) (transfer none): a string owned by GLib that
+ *   must not be modified or freed.
  * Since: 2.6
  **/
 const gchar *
@@ -1419,8 +1849,8 @@ g_build_user_cache_dir (void)
  * `C:\Documents and Settings\username\Local Settings\Temporary Internet Files`.
  * See the [documentation for `CSIDL_INTERNET_CACHE`](https://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx#csidl_internet_cache).
  *
- * Returns: (type filename): a string owned by GLib that must not be modified
- *               or freed.
+ * Returns: (type filename) (transfer none): a string owned by GLib that
+ *   must not be modified or freed.
  * Since: 2.6
  **/
 const gchar *
@@ -2258,8 +2688,8 @@ g_nullify_pointer (gpointer *nullify_location)
  * See g_format_size_full() for more options about how the size might be
  * formatted.
  *
- * Returns: a newly-allocated formatted string containing a human readable
- *     file size
+ * Returns: (transfer full): a newly-allocated formatted string containing
+ *   a human readable file size
  *
  * Since: 2.30
  */
@@ -2297,8 +2727,8 @@ g_format_size (guint64 size)
  * This function is similar to g_format_size() but allows for flags
  * that modify the output. See #GFormatSizeFlags.
  *
- * Returns: a newly-allocated formatted string containing a human
- *     readable file size
+ * Returns: (transfer full): a newly-allocated formatted string
+ *   containing a human readable file size
  *
  * Since: 2.30
  */
@@ -2514,8 +2944,8 @@ g_format_size_full (guint64          size,
  *
  * This string should be freed with g_free() when not needed any longer.
  *
- * Returns: a newly-allocated formatted string containing a human
- *     readable file size
+ * Returns: (transfer full): a newly-allocated formatted string
+ *   containing a human readable file size
  *
  * Since: 2.16
  *
@@ -2672,7 +3102,7 @@ g_abort (void)
 {
   /* One call to break the debugger */
   DebugBreak ();
-  /* One call in case CRT does get saner about abort() behaviour */
+  /* One call in case CRT changes its abort() behaviour */
   abort ();
   /* And one call to bind them all and terminate the program for sure */
   ExitProcess (127);
index 560a84e..8a927d0 100644 (file)
@@ -65,6 +65,129 @@ GLIB_AVAILABLE_IN_ALL
 const gchar *         g_get_application_name (void);
 GLIB_AVAILABLE_IN_ALL
 void                  g_set_application_name (const gchar *application_name);
+GLIB_AVAILABLE_IN_2_64
+gchar *               g_get_os_info          (const gchar *key_name);
+
+/**
+ * G_OS_INFO_KEY_NAME:
+ *
+ * A key to get the name of the operating system excluding version information suitable for presentation to the user, e.g. "YoYoOS"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_NAME \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "NAME"
+
+/**
+ * G_OS_INFO_KEY_PRETTY_NAME:
+ *
+ * A key to get the name of the operating system in a format suitable for presentation to the user, e.g. "YoYoOS Foo"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_PRETTY_NAME \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "PRETTY_NAME"
+
+/**
+ * G_OS_INFO_KEY_VERSION:
+ *
+ * A key to get the operating system version suitable for presentation to the user, e.g. "42 (Foo)"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_VERSION \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "VERSION"
+
+/**
+ * G_OS_INFO_KEY_VERSION_CODENAME:
+ *
+ * A key to get a codename identifying the operating system release suitable for processing by scripts or usage in generated filenames, e.g. "foo"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_VERSION_CODENAME \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "VERSION_CODENAME"
+
+/**
+ * G_OS_INFO_KEY_VERSION_ID:
+ *
+ * A key to get the version of the operating system suitable for processing by scripts or usage in generated filenames, e.g. "42"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_VERSION_ID \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "VERSION_ID"
+
+/**
+ * G_OS_INFO_KEY_ID:
+ *
+ * A key to get an ID identifying the operating system suitable for processing by scripts or usage in generated filenames, e.g. "yoyoos"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_ID \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "ID"
+
+/**
+ * G_OS_INFO_KEY_HOME_URL:
+ *
+ * A key to get the homepage for the operating system, e.g. "https://www.yoyo-os.com/"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_HOME_URL \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "HOME_URL"
+
+/**
+ * G_OS_INFO_KEY_DOCUMENTATION_URL:
+ *
+ * A key to get the documentation page for the operating system, e.g. "https://docs.yoyo-os.com/"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_DOCUMENTATION_URL \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "DOCUMENTATION_URL"
+
+/**
+ * G_OS_INFO_KEY_SUPPORT_URL:
+ *
+ * A key to get the support page for the operating system, e.g. "https://support.yoyo-os.com/"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_SUPPORT_URL \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "SUPPORT_URL"
+
+/**
+ * G_OS_INFO_KEY_BUG_REPORT_URL:
+ *
+ * A key to get the bug reporting page for the operating system, e.g. "https://bugs.yoyo-os.com/"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_BUG_REPORT_URL \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "BUG_REPORT_URL"
+
+/**
+ * G_OS_INFO_KEY_PRIVACY_POLICY_URL:
+ *
+ * A key to get the privacy policy for the operating system, e.g. "https://privacy.yoyo-os.com/"
+ *
+ * Since: 2.64
+ */
+#define G_OS_INFO_KEY_PRIVACY_POLICY_URL \
+    GLIB_AVAILABLE_MACRO_IN_2_64 \
+    "PRIVACY_POLICY_URL"
 
 GLIB_AVAILABLE_IN_ALL
 void      g_reload_user_special_dirs_cache     (void);
index 1adc6c8..8aa1d00 100644 (file)
@@ -193,7 +193,9 @@ g_uuid_generate_v4 (GUuid *uuid)
 /**
  * g_uuid_string_random:
  *
- * Generates a random UUID (RFC 4122 version 4) as a string.
+ * Generates a random UUID (RFC 4122 version 4) as a string. It has the same
+ * randomness guarantees as #GRand, so must not be used for cryptographic
+ * purposes such as key generation, nonces, salts or one-time pads.
  *
  * Returns: (transfer full): A string that should be freed with g_free().
  * Since: 2.52
index 9397573..cff1b09 100644 (file)
@@ -554,7 +554,8 @@ g_variant_new_from_bytes (const GVariantType *type,
                           aligned_size) != 0)
         g_error ("posix_memalign failed");
 
-      memcpy (aligned_data, g_bytes_get_data (bytes, NULL), aligned_size);
+      if (aligned_size != 0)
+        memcpy (aligned_data, g_bytes_get_data (bytes, NULL), aligned_size);
 
       bytes = owned_bytes = g_bytes_new_with_free_func (aligned_data,
                                                         aligned_size,
@@ -665,6 +666,21 @@ g_variant_is_trusted (GVariant *value)
   return (value->state & STATE_TRUSTED) != 0;
 }
 
+/* < internal >
+ * g_variant_get_depth:
+ * @value: a #GVariant
+ *
+ * Gets the nesting depth of a #GVariant. This is 0 for a #GVariant with no
+ * children.
+ *
+ * Returns: nesting depth of @value
+ */
+gsize
+g_variant_get_depth (GVariant *value)
+{
+  return value->depth;
+}
+
 /* -- public -- */
 
 /**
index fc19b7e..fc04711 100644 (file)
@@ -34,4 +34,6 @@ gboolean                g_variant_is_trusted                            (GVarian
 
 GVariantTypeInfo *      g_variant_get_type_info                         (GVariant            *value);
 
+gsize                   g_variant_get_depth                             (GVariant            *value);
+
 #endif /* __G_VARIANT_CORE_H__ */
index 7d481f4..bb5238b 100644 (file)
@@ -67,6 +67,7 @@
  * @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
+ * @G_VARIANT_PARSE_ERROR_RECURSION: variant was too deeply nested; #GVariant is only guaranteed to handle nesting up to 64 levels (Since: 2.64)
  *
  * Error codes returned by parsing text-format GVariants.
  **/
@@ -2320,7 +2321,7 @@ parse (TokenStream  *stream,
   if (max_depth == 0)
     {
       token_stream_set_error (stream, error, FALSE,
-                              G_VARIANT_PARSE_ERROR_FAILED,
+                              G_VARIANT_PARSE_ERROR_RECURSION,
                               "variant nested too deeply");
       return NULL;
     }
@@ -2428,7 +2429,7 @@ parse (TokenStream  *stream,
  * produced by g_variant_print()".
  *
  * There may be implementation specific restrictions on deeply nested values,
- * which would result in a %G_VARIANT_PARSE_ERROR_FAILED error. #GVariant is
+ * which would result in a %G_VARIANT_PARSE_ERROR_RECURSION error. #GVariant is
  * guaranteed to handle nesting up to at least 64 levels.
  *
  * Returns: a non-floating reference to a #GVariant, or %NULL
@@ -2542,12 +2543,14 @@ g_variant_new_parsed_va (const gchar *format,
       ast_free (ast);
     }
 
-  if (result == NULL)
+  if (error != NULL)
     g_error ("g_variant_new_parsed: %s", error->message);
 
   if (*stream.stream)
     g_error ("g_variant_new_parsed: trailing text after value");
 
+  g_clear_error (&error);
+
   return result;
 }
 
index b61bf72..77d7e74 100644 (file)
@@ -2765,7 +2765,10 @@ g_variant_equal (gconstpointer one,
       data_one = g_variant_get_data ((GVariant *) one);
       data_two = g_variant_get_data ((GVariant *) two);
 
-      equal = memcmp (data_one, data_two, size_one) == 0;
+      if (size_one)
+        equal = memcmp (data_one, data_two, size_one) == 0;
+      else
+        equal = TRUE;
     }
   else
     {
@@ -5431,6 +5434,7 @@ g_variant_get (GVariant    *value,
 {
   va_list ap;
 
+  g_return_if_fail (value != NULL);
   g_return_if_fail (valid_format_string (format_string, TRUE, value));
 
   /* if any direct-pointer-access formats are in use, flatten first */
@@ -5944,6 +5948,7 @@ g_variant_byteswap (GVariant *value)
       serialised.type_info = g_variant_get_type_info (trusted);
       serialised.size = g_variant_get_size (trusted);
       serialised.data = g_malloc (serialised.size);
+      serialised.depth = g_variant_get_depth (trusted);
       g_variant_store (trusted, serialised.data);
       g_variant_unref (trusted);
 
index 99e2470..c0587a8 100644 (file)
@@ -327,7 +327,8 @@ typedef enum
   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
+  G_VARIANT_PARSE_ERROR_VALUE_EXPECTED,
+  G_VARIANT_PARSE_ERROR_RECURSION
 } GVariantParseError;
 #define G_VARIANT_PARSE_ERROR (g_variant_parse_error_quark ())
 
index 1a228f7..c46f1a2 100644 (file)
@@ -1120,7 +1120,7 @@ g_variant_type_new_tuple_slow (const GVariantType * const *items,
 {
   /* the "slow" version is needed in case the static buffer of 1024
    * bytes is exceeded when running the normal version.  this will
-   * happen only in truly insane code, so it can be slow.
+   * happen only with very unusually large types, so it can be slow.
    */
   GString *string;
   gint i;
index ee91f6d..07ce763 100644 (file)
  */
 #define GLIB_VERSION_2_62       (G_ENCODE_VERSION (2, 62))
 
+/**
+ * GLIB_VERSION_2_64:
+ *
+ * A macro that evaluates to the 2.64 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.64
+ */
+#define GLIB_VERSION_2_64       (G_ENCODE_VERSION (2, 64))
+
 /* evaluates to the current stable version; for development cycles,
  * this means the next stable target
  */
 # define GLIB_AVAILABLE_TYPE_IN_2_62
 #endif
 
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
+# define GLIB_DEPRECATED_IN_2_64                GLIB_DEPRECATED
+# define GLIB_DEPRECATED_IN_2_64_FOR(f)         GLIB_DEPRECATED_FOR(f)
+# define GLIB_DEPRECATED_MACRO_IN_2_64          GLIB_DEPRECATED_MACRO
+# define GLIB_DEPRECATED_MACRO_IN_2_64_FOR(f)   GLIB_DEPRECATED_MACRO_FOR(f)
+# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64          GLIB_DEPRECATED_ENUMERATOR
+# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64_FOR(f)   GLIB_DEPRECATED_ENUMERATOR_FOR(f)
+# define GLIB_DEPRECATED_TYPE_IN_2_64           GLIB_DEPRECATED_TYPE
+# define GLIB_DEPRECATED_TYPE_IN_2_64_FOR(f)    GLIB_DEPRECATED_TYPE_FOR(f)
+#else
+# define GLIB_DEPRECATED_IN_2_64                _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_64_FOR(f)         _GLIB_EXTERN
+# define GLIB_DEPRECATED_MACRO_IN_2_64
+# define GLIB_DEPRECATED_MACRO_IN_2_64_FOR(f)
+# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64
+# define GLIB_DEPRECATED_ENUMERATOR_IN_2_64_FOR(f)
+# define GLIB_DEPRECATED_TYPE_IN_2_64
+# define GLIB_DEPRECATED_TYPE_IN_2_64_FOR(f)
+#endif
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_64
+# define GLIB_AVAILABLE_IN_2_64                 GLIB_UNAVAILABLE(2, 64)
+# define GLIB_AVAILABLE_MACRO_IN_2_64           GLIB_UNAVAILABLE_MACRO(2, 64)
+# define GLIB_AVAILABLE_ENUMERATOR_IN_2_64      GLIB_UNAVAILABLE_ENUMERATOR(2, 64)
+# define GLIB_AVAILABLE_TYPE_IN_2_64            GLIB_UNAVAILABLE_TYPE(2, 64)
+#else
+# define GLIB_AVAILABLE_IN_2_64                 _GLIB_EXTERN
+# define GLIB_AVAILABLE_MACRO_IN_2_64
+# define GLIB_AVAILABLE_ENUMERATOR_IN_2_64
+# define GLIB_AVAILABLE_TYPE_IN_2_64
+#endif
+
 #endif /*  __G_VERSION_MACROS_H__ */
index a884748..2f2fe05 100644 (file)
@@ -1071,7 +1071,8 @@ g_win32_veh_handler (PEXCEPTION_POINTERS ExceptionInfo)
   SECURITY_ATTRIBUTES  sa;
 
   if (ExceptionInfo == NULL ||
-      ExceptionInfo->ExceptionRecord == NULL)
+      ExceptionInfo->ExceptionRecord == NULL ||
+      IsDebuggerPresent ())
     return EXCEPTION_CONTINUE_SEARCH;
 
   er = ExceptionInfo->ExceptionRecord;
@@ -1081,7 +1082,6 @@ g_win32_veh_handler (PEXCEPTION_POINTERS ExceptionInfo)
     case EXCEPTION_ACCESS_VIOLATION:
     case EXCEPTION_STACK_OVERFLOW:
     case EXCEPTION_ILLEGAL_INSTRUCTION:
-    case EXCEPTION_BREAKPOINT: /* DebugBreak() raises this */
       break;
     default:
       catch_list = getenv ("G_VEH_CATCH");
@@ -1109,17 +1109,6 @@ g_win32_veh_handler (PEXCEPTION_POINTERS ExceptionInfo)
       return EXCEPTION_CONTINUE_SEARCH;
     }
 
-  if (IsDebuggerPresent ())
-    {
-      /* This shouldn't happen, but still try to
-       * avoid recursion with EXCEPTION_BREAKPOINT and
-       * DebugBreak().
-       */
-      if (er->ExceptionCode != EXCEPTION_BREAKPOINT)
-        DebugBreak ();
-      return EXCEPTION_CONTINUE_EXECUTION;
-    }
-
   fprintf_s (stderr,
              "Exception code=0x%lx flags=0x%lx at 0x%p",
              er->ExceptionCode,
@@ -1219,6 +1208,14 @@ g_crash_handler_win32_init (void)
   if (WinVEH_handle != NULL)
     return;
 
+  /* Do not register an exception handler if we're not supposed to catch any
+   * exceptions. Exception handlers are considered dangerous to use, and can
+   * break advanced exception handling such as in CLRs like C# or other managed
+   * code. See: https://blogs.msdn.microsoft.com/jmstall/2006/05/24/beware-of-the-vectored-exception-handler-and-managed-code/
+   */
+  if (getenv ("G_DEBUGGER") == NULL && getenv("G_VEH_CATCH") == NULL)
+    return;
+
   WinVEH_handle = AddVectoredExceptionHandler (0, &g_win32_veh_handler);
 }
 
index 0c4d544..ab3a267 100644 (file)
@@ -117,11 +117,7 @@ _g_locale_get_charset_aliases (void)
       const char *base = "charset.alias";
       char *file_name;
 
-      /* Make it possible to override the charset.alias location.  This is
-        necessary for running the testsuite before "make install".  */
-      dir = getenv ("CHARSETALIASDIR");
-      if (dir == NULL || dir[0] == '\0')
-       dir = relocate (GLIB_CHARSETALIAS_DIR);
+      dir = relocate (GLIB_CHARSETALIAS_DIR);
 
       /* Concatenate dir and base into freshly allocated file_name.  */
       {
index e60014a..267087f 100755 (executable)
@@ -7,22 +7,22 @@ else
   exit 1
 fi
 
-if test -f $ORIGINAL/lib/localcharset.c ; then : ; else
+if test -f "${ORIGINAL}/lib/localcharset.c" ; then : ; else
   echo "Usage: make-patch.sh /path/to/libcharset" 1>&2
   exit 1
 fi
 
-VERSION=`grep VERSION= $ORIGINAL/configure.ac | sed s/VERSION=//`
+VERSION=$(grep VERSION= "${ORIGINAL}/configure.ac" | sed s/VERSION=//)
 
-echo "# Patch against libcharset version $VERSION" > libcharset-glib.patch
+echo "# Patch against libcharset version ${VERSION}" > libcharset-glib.patch
 
 for i in localcharset.c ref-add.sin ref-del.sin ; do
-  diff -u $ORIGINAL/lib/$i $i >> libcharset-glib.patch
+  diff -u "${ORIGINAL}/lib/${i}" "${i}" >> libcharset-glib.patch
 done
 
 for i in glibc21.m4 codeset.m4 ; do
-  diff -u $ORIGINAL/m4/$i $i >> libcharset-glib.patch
+  diff -u "${ORIGINAL}/m4/${i}" "${i}" >> libcharset-glib.patch
 done
 
-diff -u $ORIGINAL/include/libcharset.h.in libcharset.h >> libcharset-glib.patch
-diff -u $ORIGINAL/include/localcharset.h.in localcharset.h >> libcharset-glib.patch
+diff -u "${ORIGINAL}/include/libcharset.h.in" libcharset.h >> libcharset-glib.patch
+diff -u "${ORIGINAL}/include/localcharset.h.in" localcharset.h >> libcharset-glib.patch
index be4a790..5a02666 100644 (file)
@@ -1,9 +1,4 @@
-charsetalias_dir = get_option('charsetalias_dir')
-if charsetalias_dir == ''
-  charsetalias_dir = get_option('libdir')
-endif
-
 charset_lib = static_library('charset', 'localcharset.c',
   include_directories : configinc,
   pic : true,
-  c_args : [ '-DGLIB_CHARSETALIAS_DIR="@0@"'.format(charsetalias_dir) ] + glib_hidden_visibility_args)
+  c_args : [ '-DGLIB_CHARSETALIAS_DIR="@0@"'.format(glib_charsetaliasdir) ] + glib_hidden_visibility_args)
index 5873fc7..fdbde51 100755 (executable)
@@ -7,27 +7,27 @@ else
   exit 1
 fi
 
-if test -f $ORIGINAL/lib/localcharset.c ; then : ; else
+if test -f "${ORIGINAL}/lib/localcharset.c" ; then : ; else
   echo "Usage: update.sh /path/to/libcharset" 1>&2
   exit 1
 fi
 
-VERSION=`grep VERSION= $ORIGINAL/configure.ac | sed s/VERSION=//`
+VERSION=$(grep VERSION= "${ORIGINAL}/configure.ac" | sed s/VERSION=//)
 
 for i in localcharset.c ref-add.sin ref-del.sin config.charset ; do
-  cp $ORIGINAL/lib/$i .
+  cp "${ORIGINAL}/lib/${i}" .
 done
 
 for i in libcharset.h localcharset.h ; do
-  cp $ORIGINAL/include/$i.in ./$i
+  cp "${ORIGINAL}/include/${i}.in" "./${i}"
 done
 
 for i in codeset.m4 glibc21.m4 ; do
-  cp $ORIGINAL/m4/$i .
+  cp "${ORIGINAL}/m4/${i}" .
 done
 
 patch -p0 < libcharset-glib.patch
 
-echo "dnl From libcharset $VERSION" > ../../aclibcharset.m4
+echo "dnl From libcharset ${VERSION}" > ../../aclibcharset.m4
 
 
index aaf5f00..456e0c2 100644 (file)
@@ -99,7 +99,7 @@ else
     glib_conf.set('NEED_PRINTF_INFINITE_DOUBLE', 1)
   endif
 
-  if gl_cv_func_printf_long_double and gl_cv_func_printf_infinite_long_double != 'false'
+  if gl_cv_func_printf_long_double and gl_cv_func_printf_infinite_long_double
     glib_conf.set('NEED_PRINTF_INFINITE_LONG_DOUBLE', 1)
   endif
 
index b26704e..1da514a 100644 (file)
@@ -140,6 +140,57 @@ array_new_zero_terminated (void)
   g_free (out_str);
 }
 
+/* Check g_array_steal() function */
+static void
+array_steal (void)
+{
+  const guint array_size = 10000;
+  GArray *garray;
+  gint *adata;
+  guint i;
+  gsize len, past_len;
+
+  garray = g_array_new (FALSE, FALSE, sizeof (gint));
+  adata = (gint *) g_array_steal (garray, NULL);
+  g_assert_null (adata);
+
+  adata = (gint *) g_array_steal (garray, &len);
+  g_assert_null (adata);
+  g_assert_cmpint (len, ==, 0);
+
+  for (i = 0; i < array_size; i++)
+    g_array_append_val (garray, i);
+
+  for (i = 0; i < array_size; i++)
+    g_assert_cmpint (g_array_index (garray, gint, i), ==, i);
+
+
+  past_len = garray->len;
+  adata = (gint *) g_array_steal (garray, &len);
+  for (i = 0; i < array_size; i++)
+    g_assert_cmpint (adata[i], ==, i);
+
+  g_assert_cmpint (past_len, ==, len);
+  g_assert_cmpint (garray->len, ==, 0);
+
+  g_array_append_val (garray, i);
+
+  g_assert_cmpint (adata[0], ==, 0);
+  g_assert_cmpint (g_array_index (garray, gint, 0), ==, array_size);
+  g_assert_cmpint (garray->len, ==, 1);
+
+  g_array_remove_index (garray, 0);
+
+  for (i = 0; i < array_size; i++)
+    g_array_append_val (garray, i);
+
+  g_assert_cmpint (garray->len, ==, array_size);
+  g_assert_cmpmem (adata, array_size * sizeof (gint),
+                   garray->data, array_size * sizeof (gint));
+  g_free (adata);
+  g_array_free (garray, TRUE);
+}
+
 /* Check that g_array_append_val() works correctly for various #GArray
  * configurations. */
 static void
@@ -761,6 +812,75 @@ test_array_binary_search (void)
 }
 
 static void
+test_array_copy_sized (void)
+{
+  GArray *array1 = NULL, *array2 = NULL, *array3 = NULL;
+  int val = 5;
+
+  g_test_summary ("Test that copying a newly-allocated sized array works.");
+
+  array1 = g_array_sized_new (FALSE, FALSE, sizeof (int), 1);
+  array2 = g_array_copy (array1);
+
+  g_assert_cmpuint (array2->len, ==, array1->len);
+
+  g_array_append_val (array1, val);
+  array3 = g_array_copy (array1);
+
+  g_assert_cmpuint (array3->len, ==, array1->len);
+  g_assert_cmpuint (g_array_index (array3, int, 0), ==, g_array_index (array1, int, 0));
+  g_assert_cmpuint (array3->len, ==, 1);
+  g_assert_cmpuint (g_array_index (array3, int, 0), ==, val);
+
+  g_array_unref (array3);
+  g_array_unref (array2);
+  g_array_unref (array1);
+}
+
+/* Check g_ptr_array_steal() function */
+static void
+pointer_array_steal (void)
+{
+  const guint array_size = 10000;
+  GPtrArray *gparray;
+  gpointer *pdata;
+  guint i;
+  gsize len, past_len;
+
+  gparray = g_ptr_array_new ();
+  pdata = g_ptr_array_steal (gparray, NULL);
+  g_assert_null (pdata);
+
+  pdata = g_ptr_array_steal (gparray, &len);
+  g_assert_null (pdata);
+  g_assert_cmpint (len, ==, 0);
+
+  for (i = 0; i < array_size; i++)
+    g_ptr_array_add (gparray, GINT_TO_POINTER (i));
+
+  past_len = gparray->len;
+  pdata = g_ptr_array_steal (gparray, &len);
+  g_assert_cmpint (gparray->len, ==, 0);
+  g_assert_cmpint (past_len, ==, len);
+  g_ptr_array_add (gparray, GINT_TO_POINTER (10));
+
+  g_assert_cmpint ((gsize) pdata[0], ==, (gsize) GINT_TO_POINTER (0));
+  g_assert_cmpint ((gsize) g_ptr_array_index (gparray, 0), ==,
+                   (gsize) GINT_TO_POINTER (10));
+  g_assert_cmpint (gparray->len, ==, 1);
+
+  g_ptr_array_remove_index (gparray, 0);
+
+  for (i = 0; i < array_size; i++)
+    g_ptr_array_add (gparray, GINT_TO_POINTER (i));
+  g_assert_cmpmem (pdata, array_size * sizeof (gpointer),
+                   gparray->pdata, array_size * sizeof (gpointer));
+  g_free (pdata);
+
+  g_ptr_array_free (gparray, TRUE);
+}
+
+static void
 pointer_array_add (void)
 {
   GPtrArray *gparray;
@@ -1178,6 +1298,8 @@ pointer_array_extend_and_steal (void)
   g_assert_cmpuint (ptr_array3->len, ==, 0);
   g_assert_null (ptr_array3->pdata);
 
+  g_ptr_array_add (ptr_array2, NULL);
+
   g_ptr_array_free (ptr_array, TRUE);
   g_ptr_array_free (ptr_array3, TRUE);
 
@@ -1231,6 +1353,150 @@ pointer_array_sort (void)
   g_ptr_array_free (gparray, TRUE);
 }
 
+/* Please keep pointer_array_sort_example() in sync with the doc-comment
+ * of g_ptr_array_sort() */
+
+typedef struct
+{
+  gchar *name;
+  gint size;
+} FileListEntry;
+
+static void
+file_list_entry_free (gpointer p)
+{
+  FileListEntry *entry = p;
+
+  g_free (entry->name);
+  g_free (entry);
+}
+
+static gint
+sort_filelist (gconstpointer a, gconstpointer b)
+{
+   const FileListEntry *entry1 = *((FileListEntry **) a);
+   const FileListEntry *entry2 = *((FileListEntry **) b);
+
+   return g_ascii_strcasecmp (entry1->name, entry2->name);
+}
+
+static void
+pointer_array_sort_example (void)
+{
+  GPtrArray *file_list = NULL;
+  FileListEntry *entry;
+
+  g_test_summary ("Check that the doc-comment for g_ptr_array_sort() is correct");
+
+  file_list = g_ptr_array_new_with_free_func (file_list_entry_free);
+
+  entry = g_new0 (FileListEntry, 1);
+  entry->name = g_strdup ("README");
+  entry->size = 42;
+  g_ptr_array_add (file_list, g_steal_pointer (&entry));
+
+  entry = g_new0 (FileListEntry, 1);
+  entry->name = g_strdup ("empty");
+  entry->size = 0;
+  g_ptr_array_add (file_list, g_steal_pointer (&entry));
+
+  entry = g_new0 (FileListEntry, 1);
+  entry->name = g_strdup ("aardvark");
+  entry->size = 23;
+  g_ptr_array_add (file_list, g_steal_pointer (&entry));
+
+  g_ptr_array_sort (file_list, sort_filelist);
+
+  g_assert_cmpuint (file_list->len, ==, 3);
+  entry = g_ptr_array_index (file_list, 0);
+  g_assert_cmpstr (entry->name, ==, "aardvark");
+  entry = g_ptr_array_index (file_list, 1);
+  g_assert_cmpstr (entry->name, ==, "empty");
+  entry = g_ptr_array_index (file_list, 2);
+  g_assert_cmpstr (entry->name, ==, "README");
+
+  g_ptr_array_unref (file_list);
+}
+
+/* Please keep pointer_array_sort_with_data_example() in sync with the
+ * doc-comment of g_ptr_array_sort_with_data() */
+
+typedef enum { SORT_NAME, SORT_SIZE } SortMode;
+
+static gint
+sort_filelist_how (gconstpointer a, gconstpointer b, gpointer user_data)
+{
+  gint order;
+  const SortMode sort_mode = GPOINTER_TO_INT (user_data);
+  const FileListEntry *entry1 = *((FileListEntry **) a);
+  const FileListEntry *entry2 = *((FileListEntry **) b);
+
+  switch (sort_mode)
+    {
+    case SORT_NAME:
+      order = g_ascii_strcasecmp (entry1->name, entry2->name);
+      break;
+    case SORT_SIZE:
+      order = entry1->size - entry2->size;
+      break;
+    default:
+      order = 0;
+      break;
+    }
+  return order;
+}
+
+static void
+pointer_array_sort_with_data_example (void)
+{
+  GPtrArray *file_list = NULL;
+  FileListEntry *entry;
+  SortMode sort_mode;
+
+  g_test_summary ("Check that the doc-comment for g_ptr_array_sort_with_data() is correct");
+
+  file_list = g_ptr_array_new_with_free_func (file_list_entry_free);
+
+  entry = g_new0 (FileListEntry, 1);
+  entry->name = g_strdup ("README");
+  entry->size = 42;
+  g_ptr_array_add (file_list, g_steal_pointer (&entry));
+
+  entry = g_new0 (FileListEntry, 1);
+  entry->name = g_strdup ("empty");
+  entry->size = 0;
+  g_ptr_array_add (file_list, g_steal_pointer (&entry));
+
+  entry = g_new0 (FileListEntry, 1);
+  entry->name = g_strdup ("aardvark");
+  entry->size = 23;
+  g_ptr_array_add (file_list, g_steal_pointer (&entry));
+
+  sort_mode = SORT_NAME;
+  g_ptr_array_sort_with_data (file_list, sort_filelist_how, GINT_TO_POINTER (sort_mode));
+
+  g_assert_cmpuint (file_list->len, ==, 3);
+  entry = g_ptr_array_index (file_list, 0);
+  g_assert_cmpstr (entry->name, ==, "aardvark");
+  entry = g_ptr_array_index (file_list, 1);
+  g_assert_cmpstr (entry->name, ==, "empty");
+  entry = g_ptr_array_index (file_list, 2);
+  g_assert_cmpstr (entry->name, ==, "README");
+
+  sort_mode = SORT_SIZE;
+  g_ptr_array_sort_with_data (file_list, sort_filelist_how, GINT_TO_POINTER (sort_mode));
+
+  g_assert_cmpuint (file_list->len, ==, 3);
+  entry = g_ptr_array_index (file_list, 0);
+  g_assert_cmpstr (entry->name, ==, "empty");
+  entry = g_ptr_array_index (file_list, 1);
+  g_assert_cmpstr (entry->name, ==, "aardvark");
+  entry = g_ptr_array_index (file_list, 2);
+  g_assert_cmpstr (entry->name, ==, "README");
+
+  g_ptr_array_unref (file_list);
+}
+
 static void
 pointer_array_sort_with_data (void)
 {
@@ -1318,7 +1584,7 @@ steal_destroy_notify (gpointer data)
 /* Test that g_ptr_array_steal_index() and g_ptr_array_steal_index_fast() can
  * remove elements from a pointer array without the #GDestroyNotify being called. */
 static void
-pointer_array_steal (void)
+pointer_array_steal_index (void)
 {
   guint i1 = 0, i2 = 0, i3 = 0, i4 = 0;
   gpointer out1, out2;
@@ -1362,6 +1628,41 @@ pointer_array_steal (void)
 }
 
 static void
+byte_array_steal (void)
+{
+  const guint array_size = 10000;
+  GByteArray *gbarray;
+  guint8 *bdata;
+  guint i;
+  gsize len, past_len;
+
+  gbarray = g_byte_array_new ();
+  bdata = g_byte_array_steal (gbarray, NULL);
+  g_assert_cmpint ((gsize) bdata, ==, (gsize) gbarray->data);
+  g_free (bdata);
+
+  for (i = 0; i < array_size; i++)
+    g_byte_array_append (gbarray, (guint8 *) "abcd", 4);
+
+  past_len = gbarray->len;
+  bdata = g_byte_array_steal (gbarray, &len);
+
+  g_assert_cmpint (len, ==, past_len);
+  g_assert_cmpint (gbarray->len, ==, 0);
+
+  g_byte_array_append (gbarray, (guint8 *) "@", 1);
+
+  g_assert_cmpint (bdata[0], ==, 'a');
+  g_assert_cmpint (gbarray->data[0], ==, '@');
+  g_assert_cmpint (gbarray->len, ==, 1);
+
+  g_byte_array_remove_index (gbarray, 0);
+
+  g_free (bdata);
+  g_byte_array_free (gbarray, TRUE);
+}
+
+static void
 byte_array_append (void)
 {
   GByteArray *gbarray;
@@ -1679,8 +1980,10 @@ main (int argc, char *argv[])
   /* array tests */
   g_test_add_func ("/array/new/zero-terminated", array_new_zero_terminated);
   g_test_add_func ("/array/ref-count", array_ref_count);
+  g_test_add_func ("/array/steal", array_steal);
   g_test_add_func ("/array/clear-func", array_clear_func);
   g_test_add_func ("/array/binary-search", test_array_binary_search);
+  g_test_add_func ("/array/copy-sized", test_array_copy_sized);
 
   for (i = 0; i < G_N_ELEMENTS (array_configurations); i++)
     {
@@ -1707,12 +2010,16 @@ main (int argc, char *argv[])
   g_test_add_func ("/pointerarray/array_extend", pointer_array_extend);
   g_test_add_func ("/pointerarray/array_extend_and_steal", pointer_array_extend_and_steal);
   g_test_add_func ("/pointerarray/sort", pointer_array_sort);
+  g_test_add_func ("/pointerarray/sort/example", pointer_array_sort_example);
   g_test_add_func ("/pointerarray/sort-with-data", pointer_array_sort_with_data);
+  g_test_add_func ("/pointerarray/sort-with-data/example", pointer_array_sort_with_data_example);
   g_test_add_func ("/pointerarray/find/empty", pointer_array_find_empty);
   g_test_add_func ("/pointerarray/find/non-empty", pointer_array_find_non_empty);
   g_test_add_func ("/pointerarray/steal", pointer_array_steal);
+  g_test_add_func ("/pointerarray/steal_index", pointer_array_steal_index);
 
   /* byte arrays */
+  g_test_add_func ("/bytearray/steal", byte_array_steal);
   g_test_add_func ("/bytearray/append", byte_array_append);
   g_test_add_func ("/bytearray/prepend", byte_array_prepend);
   g_test_add_func ("/bytearray/remove", byte_array_remove);
index 84c13fb..6b6cc7f 100644 (file)
@@ -24,6 +24,9 @@ test_types (void)
   guint u, u2;
   gint s, s2;
   gpointer vp, vp2;
+  const char *vp_str;
+  const char *volatile vp_str_vol;
+  const char *str = "Hello";
   int *ip, *ip2;
   gsize gs, gs2;
   gboolean res;
@@ -32,17 +35,17 @@ test_types (void)
   cspp = &csp;
 
   g_atomic_int_set (&u, 5);
-  u2 = g_atomic_int_get (&u);
+  u2 = (guint) g_atomic_int_get (&u);
   g_assert_cmpint (u2, ==, 5);
   res = g_atomic_int_compare_and_exchange (&u, 6, 7);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_cmpint (u, ==, 5);
   g_atomic_int_add (&u, 1);
   g_assert_cmpint (u, ==, 6);
   g_atomic_int_inc (&u);
   g_assert_cmpint (u, ==, 7);
   res = g_atomic_int_dec_and_test (&u);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_cmpint (u, ==, 6);
   u2 = g_atomic_int_and (&u, 5);
   g_assert_cmpint (u2, ==, 6);
@@ -58,61 +61,72 @@ test_types (void)
   s2 = g_atomic_int_get (&s);
   g_assert_cmpint (s2, ==, 5);
   res = g_atomic_int_compare_and_exchange (&s, 6, 7);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_cmpint (s, ==, 5);
   g_atomic_int_add (&s, 1);
   g_assert_cmpint (s, ==, 6);
   g_atomic_int_inc (&s);
   g_assert_cmpint (s, ==, 7);
   res = g_atomic_int_dec_and_test (&s);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_cmpint (s, ==, 6);
-  s2 = g_atomic_int_and (&s, 5);
+  s2 = (gint) g_atomic_int_and (&s, 5);
   g_assert_cmpint (s2, ==, 6);
   g_assert_cmpint (s, ==, 4);
-  s2 = g_atomic_int_or (&s, 8);
+  s2 = (gint) g_atomic_int_or (&s, 8);
   g_assert_cmpint (s2, ==, 4);
   g_assert_cmpint (s, ==, 12);
-  s2 = g_atomic_int_xor (&s, 4);
+  s2 = (gint) g_atomic_int_xor (&s, 4);
   g_assert_cmpint (s2, ==, 12);
   g_assert_cmpint (s, ==, 8);
 
   g_atomic_pointer_set (&vp, 0);
   vp2 = g_atomic_pointer_get (&vp);
-  g_assert (vp2 == 0);
-  res = g_atomic_pointer_compare_and_exchange (&vp, 0, 0);
-  g_assert (res);
-  g_assert (vp == 0);
+  g_assert_true (vp2 == 0);
+  res = g_atomic_pointer_compare_and_exchange (&vp, &s, &s);
+  g_assert_false (res);
+  g_assert_true (vp == 0);
+  res = g_atomic_pointer_compare_and_exchange (&vp, NULL, NULL);
+  g_assert_true (res);
+  g_assert_true (vp == 0);
+
+  g_atomic_pointer_set (&vp_str, NULL);
+  res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, str);
+  g_assert_true (res);
+
+  g_atomic_pointer_set (&vp_str_vol, NULL);
+  res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, str);
+  g_assert_true (res);
 
   g_atomic_pointer_set (&ip, 0);
   ip2 = g_atomic_pointer_get (&ip);
-  g_assert (ip2 == 0);
-  res = g_atomic_pointer_compare_and_exchange (&ip, 0, 0);
-  g_assert (res);
-  g_assert (ip == 0);
+  g_assert_true (ip2 == 0);
+  res = g_atomic_pointer_compare_and_exchange (&ip, NULL, NULL);
+  g_assert_true (res);
+  g_assert_true (ip == 0);
 
   g_atomic_pointer_set (&gs, 0);
-  vp2 = g_atomic_pointer_get (&gs);
+  vp2 = (gpointer) g_atomic_pointer_get (&gs);
   gs2 = (gsize) vp2;
-  g_assert (gs2 == 0);
-  res = g_atomic_pointer_compare_and_exchange (&gs, 0, 0);
-  g_assert (res);
-  g_assert (gs == 0);
-  gs2 = g_atomic_pointer_add (&gs, 5);
-  g_assert (gs2 == 0);
-  g_assert (gs == 5);
+  g_assert_cmpuint (gs2, ==, 0);
+  res = g_atomic_pointer_compare_and_exchange (&gs, NULL, NULL);
+  g_assert_true (res);
+  g_assert_cmpuint (gs, ==, 0);
+  gs2 = (gsize) g_atomic_pointer_add (&gs, 5);
+  g_assert_cmpuint (gs2, ==, 0);
+  g_assert_cmpuint (gs, ==, 5);
   gs2 = g_atomic_pointer_and (&gs, 6);
-  g_assert (gs2 == 5);
-  g_assert (gs == 4);
+  g_assert_cmpuint (gs2, ==, 5);
+  g_assert_cmpuint (gs, ==, 4);
   gs2 = g_atomic_pointer_or (&gs, 8);
-  g_assert (gs2 == 4);
-  g_assert (gs == 12);
+  g_assert_cmpuint (gs2, ==, 4);
+  g_assert_cmpuint (gs, ==, 12);
   gs2 = g_atomic_pointer_xor (&gs, 4);
-  g_assert (gs2 == 12);
-  g_assert (gs == 8);
+  g_assert_cmpuint (gs2, ==, 12);
+  g_assert_cmpuint (gs, ==, 8);
 
-  g_assert (g_atomic_int_get (csp) == s);
-  g_assert (g_atomic_pointer_get (cspp) == csp);
+  g_assert_cmpint (g_atomic_int_get (csp), ==, s);
+  g_assert_true (g_atomic_pointer_get (cspp) == csp);
 
   /* repeat, without the macros */
 #undef g_atomic_int_set
@@ -133,17 +147,17 @@ test_types (void)
 #undef g_atomic_pointer_xor
 
   g_atomic_int_set ((gint*)&u, 5);
-  u2 = g_atomic_int_get ((gint*)&u);
+  u2 = (guint) g_atomic_int_get ((gint*)&u);
   g_assert_cmpint (u2, ==, 5);
   res = g_atomic_int_compare_and_exchange ((gint*)&u, 6, 7);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_cmpint (u, ==, 5);
   g_atomic_int_add ((gint*)&u, 1);
   g_assert_cmpint (u, ==, 6);
   g_atomic_int_inc ((gint*)&u);
   g_assert_cmpint (u, ==, 7);
   res = g_atomic_int_dec_and_test ((gint*)&u);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_cmpint (u, ==, 6);
   u2 = g_atomic_int_and (&u, 5);
   g_assert_cmpint (u2, ==, 6);
@@ -158,22 +172,22 @@ test_types (void)
   s2 = g_atomic_int_get (&s);
   g_assert_cmpint (s2, ==, 5);
   res = g_atomic_int_compare_and_exchange (&s, 6, 7);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_cmpint (s, ==, 5);
   g_atomic_int_add (&s, 1);
   g_assert_cmpint (s, ==, 6);
   g_atomic_int_inc (&s);
   g_assert_cmpint (s, ==, 7);
   res = g_atomic_int_dec_and_test (&s);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_cmpint (s, ==, 6);
-  s2 = g_atomic_int_and ((guint*)&s, 5);
+  s2 = (gint) g_atomic_int_and ((guint*)&s, 5);
   g_assert_cmpint (s2, ==, 6);
   g_assert_cmpint (s, ==, 4);
-  s2 = g_atomic_int_or ((guint*)&s, 8);
+  s2 = (gint) g_atomic_int_or ((guint*)&s, 8);
   g_assert_cmpint (s2, ==, 4);
   g_assert_cmpint (s, ==, 12);
-  s2 = g_atomic_int_xor ((guint*)&s, 4);
+  s2 = (gint) g_atomic_int_xor ((guint*)&s, 4);
   g_assert_cmpint (s2, ==, 12);
   g_assert_cmpint (s, ==, 8);
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@@ -184,40 +198,51 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 
   g_atomic_pointer_set (&vp, 0);
   vp2 = g_atomic_pointer_get (&vp);
-  g_assert (vp2 == 0);
-  res = g_atomic_pointer_compare_and_exchange (&vp, 0, 0);
-  g_assert (res);
-  g_assert (vp == 0);
+  g_assert_true (vp2 == 0);
+  res = g_atomic_pointer_compare_and_exchange (&vp, &s, &s);
+  g_assert_false (res);
+  g_assert_true (vp == 0);
+  res = g_atomic_pointer_compare_and_exchange (&vp, NULL, NULL);
+  g_assert_true (res);
+  g_assert_true (vp == 0);
+
+  g_atomic_pointer_set (&vp_str, NULL);
+  res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, (char *) str);
+  g_assert_true (res);
+
+  g_atomic_pointer_set (&vp_str_vol, NULL);
+  res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, (char *) str);
+  g_assert_true (res);
 
   g_atomic_pointer_set (&ip, 0);
   ip2 = g_atomic_pointer_get (&ip);
-  g_assert (ip2 == 0);
-  res = g_atomic_pointer_compare_and_exchange (&ip, 0, 0);
-  g_assert (res);
-  g_assert (ip == 0);
+  g_assert_true (ip2 == 0);
+  res = g_atomic_pointer_compare_and_exchange (&ip, NULL, NULL);
+  g_assert_true (res);
+  g_assert_true (ip == 0);
 
   g_atomic_pointer_set (&gs, 0);
   vp = g_atomic_pointer_get (&gs);
   gs2 = (gsize) vp;
-  g_assert (gs2 == 0);
-  res = g_atomic_pointer_compare_and_exchange (&gs, 0, 0);
-  g_assert (res);
-  g_assert (gs == 0);
-  gs2 = g_atomic_pointer_add (&gs, 5);
-  g_assert (gs2 == 0);
-  g_assert (gs == 5);
+  g_assert_cmpuint (gs2, ==, 0);
+  res = g_atomic_pointer_compare_and_exchange (&gs, NULL, NULL);
+  g_assert_true (res);
+  g_assert_cmpuint (gs, ==, 0);
+  gs2 = (gsize) g_atomic_pointer_add (&gs, 5);
+  g_assert_cmpuint (gs2, ==, 0);
+  g_assert_cmpuint (gs, ==, 5);
   gs2 = g_atomic_pointer_and (&gs, 6);
-  g_assert (gs2 == 5);
-  g_assert (gs == 4);
+  g_assert_cmpuint (gs2, ==, 5);
+  g_assert_cmpuint (gs, ==, 4);
   gs2 = g_atomic_pointer_or (&gs, 8);
-  g_assert (gs2 == 4);
-  g_assert (gs == 12);
+  g_assert_cmpuint (gs2, ==, 4);
+  g_assert_cmpuint (gs, ==, 12);
   gs2 = g_atomic_pointer_xor (&gs, 4);
-  g_assert (gs2 == 12);
-  g_assert (gs == 8);
+  g_assert_cmpuint (gs2, ==, 12);
+  g_assert_cmpuint (gs, ==, 8);
 
-  g_assert (g_atomic_int_get (csp) == s);
-  g_assert (g_atomic_pointer_get (cspp) == csp);
+  g_assert_cmpint (g_atomic_int_get (csp), ==, s);
+  g_assert_true (g_atomic_pointer_get (cspp) == csp);
 }
 
 #define THREADS 10
index fccdfe5..cd510ed 100644 (file)
@@ -10,6 +10,9 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(HasNonVoidCleanup, non_void_cleanup)
 static void
 test_autofree (void)
 {
+#ifdef __clang_analyzer__
+  g_test_skip ("autofree tests aren’t understood by the clang analyser");
+#else
   g_autofree gchar *p = NULL;
   g_autofree gchar *p2 = NULL;
   g_autofree gchar *alwaysnull = NULL;
@@ -35,6 +38,7 @@ test_autofree (void)
     }
 
   g_assert_null (alwaysnull);
+#endif  /* __clang_analyzer__ */
 }
 
 static void
@@ -66,6 +70,13 @@ test_g_checksum (void)
 }
 
 static void
+test_g_date (void)
+{
+  g_autoptr(GDate) val = g_date_new ();
+  g_assert_nonnull (val);
+}
+
+static void
 test_g_date_time (void)
 {
   g_autoptr(GDateTime) val = g_date_time_new_now_utc ();
@@ -158,6 +169,31 @@ test_g_main_context (void)
 }
 
 static void
+test_g_main_context_pusher (void)
+{
+  GMainContext *context, *old_thread_default;
+
+  context = g_main_context_new ();
+  old_thread_default = g_main_context_get_thread_default ();
+  g_assert_false (old_thread_default == context);
+
+  if (TRUE)
+    {
+      g_autoptr(GMainContextPusher) val = g_main_context_pusher_new (context);
+      g_assert_nonnull (val);
+
+      /* Check it’s now the thread-default main context */
+      g_assert_true (g_main_context_get_thread_default () == context);
+    }
+
+  /* Check it’s now the old thread-default main context */
+  g_assert_false (g_main_context_get_thread_default () == context);
+  g_assert_true (g_main_context_get_thread_default () == old_thread_default);
+
+  g_main_context_unref (context);
+}
+
+static void
 test_g_main_loop (void)
 {
   g_autoptr(GMainLoop) val = g_main_loop_new (NULL, TRUE);
@@ -592,6 +628,9 @@ test_autolist (void)
 
     l = g_list_prepend (l, b1);
     l = g_list_prepend (l, b3);
+
+    /* Squash warnings about dead stores */
+    (void) l;
   }
 
   /* Only assert if autoptr works */
@@ -673,6 +712,7 @@ main (int argc, gchar *argv[])
   g_test_add_func ("/autoptr/g_bookmark_file", test_g_bookmark_file);
   g_test_add_func ("/autoptr/g_bytes", test_g_bytes);
   g_test_add_func ("/autoptr/g_checksum", test_g_checksum);
+  g_test_add_func ("/autoptr/g_date", test_g_date);
   g_test_add_func ("/autoptr/g_date_time", test_g_date_time);
   g_test_add_func ("/autoptr/g_dir", test_g_dir);
   g_test_add_func ("/autoptr/g_error", test_g_error);
@@ -685,6 +725,7 @@ main (int argc, gchar *argv[])
   g_test_add_func ("/autoptr/g_ptr_array", test_g_ptr_array);
   g_test_add_func ("/autoptr/g_byte_array", test_g_byte_array);
   g_test_add_func ("/autoptr/g_main_context", test_g_main_context);
+  g_test_add_func ("/autoptr/g_main_context_pusher", test_g_main_context_pusher);
   g_test_add_func ("/autoptr/g_main_loop", test_g_main_loop);
   g_test_add_func ("/autoptr/g_source", test_g_source);
   g_test_add_func ("/autoptr/g_mapped_file", test_g_mapped_file);
index cc922c0..f562296 100644 (file)
@@ -28,7 +28,7 @@ test_load_from_data_dirs (void)
 
   res = g_bookmark_file_load_from_data_dirs (bookmark, "no-such-bookmark-file.xbel", &path, &error);
 
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
   g_assert_null (path);
   g_error_free (error);
@@ -49,20 +49,20 @@ test_to_file (void)
 
   filename = g_test_get_filename (G_TEST_DIST, "bookmarks", "valid-01.xbel", NULL);
   res = g_bookmark_file_load_from_file (bookmark, filename, &error);
-  g_assert (res);
   g_assert_no_error (error);
+  g_assert_true (res);
 
   res = g_bookmark_file_to_file (bookmark, "out.xbel", &error);
-  g_assert (res);
   g_assert_no_error (error);
+  g_assert_true (res);
 
   res = g_file_get_contents (filename, &in, NULL, &error);
-  g_assert (res);
   g_assert_no_error (error);
+  g_assert_true (res);
 
   res = g_file_get_contents ("out.xbel", &out, NULL, &error);
-  g_assert (res);
   g_assert_no_error (error);
+  g_assert_true (res);
   remove ("out.xbel");
 
   g_assert_cmpstr (in, ==, out);
@@ -84,28 +84,28 @@ test_move_item (void)
 
   filename = g_test_get_filename (G_TEST_DIST, "bookmarks", "valid-01.xbel", NULL);
   res = g_bookmark_file_load_from_file (bookmark, filename, &error);
-  g_assert (res);
+  g_assert_true (res);
   g_assert_no_error (error);
 
   res = g_bookmark_file_move_item (bookmark,
                                    "file:///home/zefram/Documents/milan-stuttgart.ps",
                                    "file:///tmp/schedule.ps",
                                    &error);
-  g_assert (res);
+  g_assert_true (res);
   g_assert_no_error (error);
 
   res = g_bookmark_file_move_item (bookmark,
                                    "file:///tmp/schedule.ps",
                                    "file:///tmp/schedule.ps",
                                    &error);
-  g_assert (res);
+  g_assert_true (res);
   g_assert_no_error (error);
 
   res = g_bookmark_file_move_item (bookmark,
                                    "file:///no-such-file.xbel",
                                    "file:///tmp/schedule.ps",
                                    &error);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND);
   g_clear_error (&error);
 
@@ -113,7 +113,7 @@ test_move_item (void)
                                    "file:///tmp/schedule.ps",
                                    NULL,
                                    &error);
-  g_assert (res);
+  g_assert_true (res);
   g_assert_no_error (error);
 
   g_bookmark_file_free (bookmark);
@@ -127,7 +127,7 @@ test_misc (void)
   gboolean res;
   GError *error = NULL;
   gchar *s;
-  time_t now, t;
+  time_t before, after, t;
   gchar *cmd, *exec;
   guint count;
 
@@ -135,7 +135,7 @@ test_misc (void)
 
   filename = g_test_get_filename (G_TEST_DIST, "bookmarks", "valid-01.xbel", NULL);
   res = g_bookmark_file_load_from_file (bookmark, filename, &error);
-  g_assert (res);
+  g_assert_true (res);
   g_assert_no_error (error);
 
   res = g_bookmark_file_get_icon (bookmark,
@@ -143,7 +143,7 @@ test_misc (void)
                                   NULL,
                                   NULL,
                                   &error);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_no_error (error);
 
   res = g_bookmark_file_get_icon (bookmark,
@@ -151,7 +151,7 @@ test_misc (void)
                                   NULL,
                                   NULL,
                                   &error);
-  g_assert (!res);
+  g_assert_false (res);
   g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND);
   g_clear_error (&error);
 
@@ -175,6 +175,7 @@ test_misc (void)
                                         &error);
   g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_INVALID_VALUE);
   g_clear_error (&error);
+  g_assert_false (res);
 
   g_bookmark_file_set_mime_type (bookmark, 
                                  "file:///tmp/schedule1.ps",
@@ -193,9 +194,10 @@ test_misc (void)
                                         "file:///tmp/schedule2.ps",
                                         &error);
   g_assert_no_error (error);
-  g_assert (res);
+  g_assert_true (res);
+
+  time (&before);
 
-  time (&now);
   g_bookmark_file_set_added (bookmark,
                              "file:///tmp/schedule3.ps",
                              (time_t)-1);
@@ -203,7 +205,12 @@ test_misc (void)
                                  "file:///tmp/schedule3.ps",
                                  &error);
   g_assert_no_error (error);
-  g_assert (t == now);
+
+  time (&after);
+  g_assert_cmpint (before, <=, t);
+  g_assert_cmpint (t, <=, after);
+
+  time (&before);
 
   g_bookmark_file_set_modified (bookmark,
                                 "file:///tmp/schedule4.ps",
@@ -212,7 +219,12 @@ test_misc (void)
                                     "file:///tmp/schedule4.ps",
                                     &error);
   g_assert_no_error (error);
-  g_assert (t == now);
+
+  time (&after);
+  g_assert_cmpint (before, <=, t);
+  g_assert_cmpint (t, <=, after);
+
+  time (&before);
 
   g_bookmark_file_set_visited (bookmark,
                                "file:///tmp/schedule5.ps",
@@ -221,7 +233,10 @@ test_misc (void)
                                    "file:///tmp/schedule5.ps",
                                    &error);
   g_assert_no_error (error);
-  g_assert (t == now);
+
+  time (&after);
+  g_assert_cmpint (before, <=, t);
+  g_assert_cmpint (t, <=, after);
 
   g_bookmark_file_set_icon (bookmark,
                             "file:///tmp/schedule6.ps",
@@ -233,7 +248,7 @@ test_misc (void)
                                   NULL, 
                                   &error);
   g_assert_no_error (error);
-  g_assert (res);
+  g_assert_true (res);
   g_assert_cmpstr (s, ==, "application-x-postscript");
   g_free (s);
 
@@ -246,17 +261,19 @@ test_misc (void)
                                   NULL, 
                                   &error);
   g_assert_no_error (error);
-  g_assert (!res);
+  g_assert_false (res);
 
   res = g_bookmark_file_has_application (bookmark,
                                          "file:///tmp/schedule7.ps",
                                          "foo",
                                          &error);
   g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND);
-  g_assert (!res);
+  g_assert_false (res);
   g_clear_error (&error);
 
-  g_bookmark_file_add_application (bookmark, 
+  time (&before);
+
+  g_bookmark_file_add_application (bookmark,
                                    "file:///tmp/schedule7.ps",
                                    NULL, NULL);
   res = g_bookmark_file_get_app_info (bookmark,
@@ -265,13 +282,15 @@ test_misc (void)
                                       &exec, &count, &t,
                                       &error);
   g_assert_no_error (error);
-  g_assert (res);
+  g_assert_true (res);
   cmd = g_strconcat (g_get_prgname (), " file:///tmp/schedule7.ps", NULL);
   g_assert_cmpstr (exec, ==, cmd);
   g_free (cmd);
   g_free (exec);
   g_assert_cmpuint (count, ==, 1);
-  g_assert (t == now);
+  time (&after);
+  g_assert_cmpint (before, <=, t);
+  g_assert_cmpint (t, <=, after);
 
   g_bookmark_file_free (bookmark);
 }
@@ -307,19 +326,19 @@ test_query (GBookmarkFile *bookmark)
 
   for (i = 0; i < uris_len; i++)
     {
-      g_assert (g_bookmark_file_has_item (bookmark, uris[i]));
+      g_assert_true (g_bookmark_file_has_item (bookmark, uris[i]));
       error = NULL;
       mime = g_bookmark_file_get_mime_type (bookmark, uris[i], &error);
-      g_assert (mime != NULL);
+      g_assert_nonnull (mime);
       g_assert_no_error (error);
       g_free (mime);
     }
   g_strfreev (uris);
 
-  g_assert (!g_bookmark_file_has_item (bookmark, "file:///no/such/uri"));
+  g_assert_false (g_bookmark_file_has_item (bookmark, "file:///no/such/uri"));
   error = NULL;
   mime = g_bookmark_file_get_mime_type (bookmark, "file:///no/such/uri", &error);
-  g_assert (mime == NULL);
+  g_assert_null (mime);
   g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND);
   g_error_free (error);
   g_free (mime);
@@ -363,10 +382,16 @@ test_modify (GBookmarkFile *bookmark)
   g_bookmark_file_set_is_private (bookmark, TEST_URI_0, TRUE);
   time (&now);
   g_bookmark_file_set_added (bookmark, TEST_URI_0, now);
-  g_bookmark_file_set_modified (bookmark, TEST_URI_0, now);
   g_bookmark_file_set_visited (bookmark, TEST_URI_0, now);
   g_bookmark_file_set_icon (bookmark, TEST_URI_0, "testicon", "image/png");
 
+  /* Check the modification date by itself, as it’s updated whenever we modify
+   * other properties. */
+  g_bookmark_file_set_modified (bookmark, TEST_URI_0, now);
+  stamp = g_bookmark_file_get_modified (bookmark, TEST_URI_0, &error);
+  g_assert_no_error (error);
+  g_assert_cmpint (stamp, ==, now);
+
   text = g_bookmark_file_get_title (bookmark, TEST_URI_0, &error);
   g_assert_no_error (error);
   g_assert_cmpstr (text, ==, "a title");
@@ -375,18 +400,15 @@ test_modify (GBookmarkFile *bookmark)
   g_assert_no_error (error);
   g_assert_cmpstr (text, ==, "a description");
   g_free (text);
-  g_assert (g_bookmark_file_get_is_private (bookmark, TEST_URI_0, &error));
+  g_assert_true (g_bookmark_file_get_is_private (bookmark, TEST_URI_0, &error));
   g_assert_no_error (error);
   stamp = g_bookmark_file_get_added (bookmark, TEST_URI_0, &error);
   g_assert_no_error (error);
-  g_assert (stamp == now);
-  stamp = g_bookmark_file_get_modified (bookmark, TEST_URI_0, &error);
-  g_assert_no_error (error);
-  g_assert (stamp == now);
+  g_assert_cmpint (stamp, ==, now);
   stamp = g_bookmark_file_get_visited (bookmark, TEST_URI_0, &error);
   g_assert_no_error (error);
-  g_assert (stamp == now);
-  g_assert (g_bookmark_file_get_icon (bookmark, TEST_URI_0, &icon, &mime, &error));
+  g_assert_cmpint (stamp, ==, now);
+  g_assert_true (g_bookmark_file_get_icon (bookmark, TEST_URI_0, &icon, &mime, &error));
   g_assert_no_error (error);
   g_assert_cmpstr (icon, ==, "testicon");
   g_assert_cmpstr (mime, ==, "image/png");
@@ -418,21 +440,21 @@ test_modify (GBookmarkFile *bookmark)
   if (g_test_verbose ())
     g_printerr ("\t=> check application...");
   g_bookmark_file_set_mime_type (bookmark, TEST_URI_0, TEST_MIME);
-  g_assert (!g_bookmark_file_has_application (bookmark, TEST_URI_0, TEST_APP_NAME, NULL));
+  g_assert_false (g_bookmark_file_has_application (bookmark, TEST_URI_0, TEST_APP_NAME, NULL));
   g_bookmark_file_add_application (bookmark, TEST_URI_0,
                                   TEST_APP_NAME,
                                   TEST_APP_EXEC);
-  g_assert (g_bookmark_file_has_application (bookmark, TEST_URI_0, TEST_APP_NAME, NULL));
+  g_assert_true (g_bookmark_file_has_application (bookmark, TEST_URI_0, TEST_APP_NAME, NULL));
   g_bookmark_file_get_app_info (bookmark, TEST_URI_0, TEST_APP_NAME,
                                &text,
                                &count,
                                &stamp,
                                &error);
   g_assert_no_error (error);
-  g_assert (count == 1);
-  g_assert (stamp == g_bookmark_file_get_modified (bookmark, TEST_URI_0, NULL));
+  g_assert_cmpuint (count, ==, 1);
+  g_assert_cmpint (stamp, ==, g_bookmark_file_get_modified (bookmark, TEST_URI_0, NULL));
   g_free (text);
-  g_assert (g_bookmark_file_remove_application (bookmark, TEST_URI_0, TEST_APP_NAME, &error));
+  g_assert_true (g_bookmark_file_remove_application (bookmark, TEST_URI_0, TEST_APP_NAME, &error));
   g_assert_no_error (error);
   g_bookmark_file_add_application (bookmark, TEST_URI_0, TEST_APP_NAME, TEST_APP_EXEC);
   apps = g_bookmark_file_get_applications (bookmark, TEST_URI_0, &length, &error);
@@ -454,11 +476,11 @@ test_modify (GBookmarkFile *bookmark)
 
   if (g_test_verbose ())
     g_printerr ("\t=> check groups...");
-  g_assert (!g_bookmark_file_has_group (bookmark, TEST_URI_1, "Test", NULL));
+  g_assert_false (g_bookmark_file_has_group (bookmark, TEST_URI_1, "Test", NULL));
   g_bookmark_file_add_group (bookmark, TEST_URI_1, "Test");
-  g_assert (g_bookmark_file_has_group (bookmark, TEST_URI_1, "Test", NULL));
-  g_assert (!g_bookmark_file_has_group (bookmark, TEST_URI_1, "Fail", NULL));
-  g_assert (g_bookmark_file_remove_group (bookmark, TEST_URI_1, "Test", &error));
+  g_assert_true (g_bookmark_file_has_group (bookmark, TEST_URI_1, "Test", NULL));
+  g_assert_false (g_bookmark_file_has_group (bookmark, TEST_URI_1, "Fail", NULL));
+  g_assert_true (g_bookmark_file_remove_group (bookmark, TEST_URI_1, "Test", &error));
   g_assert_no_error (error);
   groups = g_bookmark_file_get_groups (bookmark, TEST_URI_1, NULL, &error);
   g_assert_cmpint (g_strv_length (groups), ==, 0);
@@ -479,9 +501,9 @@ test_modify (GBookmarkFile *bookmark)
 
   if (g_test_verbose ())
     g_printerr ("\t=> check remove...");
-  g_assert (g_bookmark_file_remove_item (bookmark, TEST_URI_1, &error) == TRUE);
+  g_assert_true (g_bookmark_file_remove_item (bookmark, TEST_URI_1, &error));
   g_assert_no_error (error);
-  g_assert (g_bookmark_file_remove_item (bookmark, TEST_URI_1, &error) == FALSE);
+  g_assert_false (g_bookmark_file_remove_item (bookmark, TEST_URI_1, &error));
   g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND);
   g_clear_error (&error);
   if (g_test_verbose ())
@@ -500,7 +522,7 @@ test_file (gconstpointer d)
   GError *error;
 
   bookmark_file = g_bookmark_file_new ();
-  g_assert (bookmark_file != NULL);
+  g_assert_nonnull (bookmark_file);
 
   success = test_load (bookmark_file, filename);
 
@@ -518,7 +540,7 @@ test_file (gconstpointer d)
 
   g_bookmark_file_free (bookmark_file);
 
-  g_assert (success == (strstr (filename, "fail") == NULL));
+  g_assert_true (success == (strstr (filename, "fail") == NULL));
 }
 
 int
@@ -529,7 +551,7 @@ main (int argc, char *argv[])
   const gchar *name;
   gchar *path;
 
-  g_test_init (&argc, &argv, NULL);
+  g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL);
 
   if (argc > 1)
     {
index 07a91a6..0c84e32 100644 (file)
@@ -522,6 +522,65 @@ test_mkdir_with_parents (void)
   g_assert_cmpint (errno, ==, EINVAL);
 }
 
+#ifdef G_OS_UNIX
+/*
+ * check_cap_dac_override:
+ * @tmpdir: A temporary directory in which we can create and delete files
+ *
+ * Check whether the current process can bypass DAC permissions.
+ *
+ * Traditionally, "privileged" processes (those with effective uid 0)
+ * could do this (and bypass many other checks), and "unprivileged"
+ * processes could not.
+ *
+ * In Linux, the special powers of euid 0 are divided into many
+ * capabilities: see `capabilities(7)`. The one we are interested in
+ * here is `CAP_DAC_OVERRIDE`.
+ *
+ * We do this generically instead of actually looking at the capability
+ * bits, so that the right thing will happen on non-Linux Unix
+ * implementations, in particular if they have something equivalent to
+ * but not identical to Linux permissions.
+ *
+ * Returns: %TRUE if we have Linux `CAP_DAC_OVERRIDE` or equivalent
+ *  privileges
+ */
+static gboolean
+check_cap_dac_override (const char *tmpdir)
+{
+  gchar *dac_denies_write;
+  gchar *inside;
+  gboolean have_cap;
+
+  dac_denies_write = g_build_filename (tmpdir, "dac-denies-write", NULL);
+  inside = g_build_filename (dac_denies_write, "inside", NULL);
+
+  g_assert_cmpint (mkdir (dac_denies_write, S_IRWXU) == 0 ? 0 : errno, ==, 0);
+  g_assert_cmpint (chmod (dac_denies_write, 0) == 0 ? 0 : errno, ==, 0);
+
+  if (mkdir (inside, S_IRWXU) == 0)
+    {
+      g_test_message ("Looks like we have CAP_DAC_OVERRIDE or equivalent");
+      g_assert_cmpint (rmdir (inside) == 0 ? 0 : errno, ==, 0);
+      have_cap = TRUE;
+    }
+  else
+    {
+      int saved_errno = errno;
+
+      g_test_message ("We do not have CAP_DAC_OVERRIDE or equivalent");
+      g_assert_cmpint (saved_errno, ==, EACCES);
+      have_cap = FALSE;
+    }
+
+  g_assert_cmpint (chmod (dac_denies_write, S_IRWXU) == 0 ? 0 : errno, ==, 0);
+  g_assert_cmpint (rmdir (dac_denies_write) == 0 ? 0 : errno, ==, 0);
+  g_free (dac_denies_write);
+  g_free (inside);
+  return have_cap;
+}
+#endif
+
 /* Reproducer for https://gitlab.gnome.org/GNOME/glib/issues/1852 */
 static void
 test_mkdir_with_parents_permission (void)
@@ -534,21 +593,23 @@ test_mkdir_with_parents_permission (void)
   GError *error = NULL;
   int result;
   int saved_errno;
+  gboolean have_cap_dac_override;
 
   tmpdir = g_dir_make_tmp ("test-fileutils.XXXXXX", &error);
   g_assert_no_error (error);
   g_assert_nonnull (tmpdir);
 
+  have_cap_dac_override = check_cap_dac_override (tmpdir);
+
   subdir = g_build_filename (tmpdir, "sub", NULL);
   subdir2 = g_build_filename (subdir, "sub2", NULL);
   subdir3 = g_build_filename (subdir2, "sub3", NULL);
   g_assert_cmpint (g_mkdir (subdir, 0700) == 0 ? 0 : errno, ==, 0);
   g_assert_cmpint (g_chmod (subdir, 0) == 0 ? 0 : errno, ==, 0);
 
-  if (g_mkdir (subdir2, 0700) == 0)
+  if (have_cap_dac_override)
     {
       g_test_skip ("have CAP_DAC_OVERRIDE or equivalent, cannot test");
-      g_remove (subdir2);
     }
   else
     {
@@ -866,6 +927,7 @@ test_set_contents (void)
   fd = g_file_open_tmp (NULL, &name, &error);
   g_assert_no_error (error);
   write (fd, "a", 1);
+  g_assert_cmpint (g_fsync (fd), ==, 0);
   close (fd);
 
   ret = g_file_get_contents (name, &buf, &len, &error);
@@ -948,14 +1010,8 @@ test_stdio_wrappers (void)
   GError *error = NULL;
   GStatBuf path_statbuf, cwd_statbuf;
   time_t now;
-
-  /* The permissions tests here don’t work when running as root. */
 #ifdef G_OS_UNIX
-  if (getuid () == 0 || geteuid () == 0)
-    {
-      g_test_skip ("File permissions tests cannot be run as root");
-      return;
-    }
+  gboolean have_cap_dac_override;
 #endif
 
   g_remove ("mkdir-test/test-create");
@@ -972,13 +1028,32 @@ test_stdio_wrappers (void)
 
   cwd = g_get_current_dir ();
   path = g_build_filename (cwd, "mkdir-test", NULL);
+#ifdef G_OS_UNIX
+  have_cap_dac_override = check_cap_dac_override (cwd);
+#endif
   g_free (cwd);
-#ifndef G_OS_WIN32
-  /* 0666 on directories means nothing to Windows, it only obeys ACLs */
-  ret = g_chdir (path);
-  g_assert_cmpint (errno, ==, EACCES);
-  g_assert_cmpint (ret, ==, -1);
+
+  /* 0666 on directories means nothing to Windows, it only obeys ACLs.
+   * It doesn't necessarily mean anything on Unix either: if we have
+   * Linux CAP_DAC_OVERRIDE or equivalent (in particular if we're root),
+   * then we ignore filesystem permissions. */
+#ifdef G_OS_UNIX
+  if (have_cap_dac_override)
+    {
+      g_test_message ("Cannot test g_chdir() failing with EACCES: we "
+                      "probably have CAP_DAC_OVERRIDE or equivalent");
+    }
+  else
+    {
+      ret = g_chdir (path);
+      g_assert_cmpint (ret == 0 ? 0 : errno, ==, EACCES);
+      g_assert_cmpint (ret, ==, -1);
+    }
+#else
+  g_test_message ("Cannot test g_chdir() failing with EACCES: "
+                  "it's Unix-specific behaviour");
 #endif
+
   ret = g_chmod (path, 0777);
   g_assert_cmpint (ret, ==, 0);
   ret = g_chdir (path);
index 4ecccb3..c88b411 100644 (file)
@@ -818,6 +818,7 @@ test_GDateTime_new_from_iso8601_2 (void)
     { TRUE, "1970-01-01T00:00:17.1234Z", 1970, 1, 1, 0, 0, 17, 123400, 0 },
     { TRUE, "1970-01-01T00:00:17.123456Z", 1970, 1, 1, 0, 0, 17, 123456, 0 },
     { TRUE, "1980-02-22T12:36:00+02:00", 1980, 2, 22, 12, 36, 0, 0, 2 * G_TIME_SPAN_HOUR },
+    { TRUE, "1990-12-31T15:59:60-08:00", 1990, 12, 31, 15, 59, 59, 0, -8 * G_TIME_SPAN_HOUR },
     { FALSE, "   ", 0, 0, 0, 0, 0, 0, 0, 0 },
     { FALSE, "x", 0, 0, 0, 0, 0, 0, 0, 0 },
     { FALSE, "123x", 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -2431,8 +2432,8 @@ test_posix_parse (void)
   g_date_time_unref (gdt2);
   g_time_zone_unref (tz);
 
-  tz = g_time_zone_new ("NZST-12:00:00NZDT-13:00:00,280,77");
-  g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "NZST-12:00:00NZDT-13:00:00,280,77");
+  tz = g_time_zone_new ("NZST-12:00:00NZDT-13:00:00,279,76");
+  g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "NZST-12:00:00NZDT-13:00:00,279,76");
   g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "NZST");
   g_assert_cmpint (g_time_zone_get_offset (tz, 0), ==, 12 * 3600);
   g_assert (!g_time_zone_is_dst (tz, 0));
@@ -2532,6 +2533,48 @@ test_posix_parse (void)
   g_date_time_unref (gdt1);
   g_date_time_unref (gdt2);
   g_time_zone_unref (tz);
+
+  tz = g_time_zone_new ("VIR-00:30");
+  g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "VIR-00:30");
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "VIR");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 0), ==, (30 * 60));
+  g_assert_false (g_time_zone_is_dst (tz, 0));
+
+  tz = g_time_zone_new ("VIR-00:30VID,0/00:00:00,365/23:59:59");
+  g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "VIR-00:30VID,0/00:00:00,365/23:59:59");
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "VIR");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 0), ==, (30 * 60));
+  g_assert_false (g_time_zone_is_dst (tz, 0));
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 1), ==, "VID");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 1), ==, (90 * 60));
+  g_assert_true (g_time_zone_is_dst (tz, 1));
+
+  tz = g_time_zone_new ("VIR-02:30VID,0/00:00:00,365/23:59:59");
+  g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "VIR-02:30VID,0/00:00:00,365/23:59:59");
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "VIR");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 0), ==, (150 * 60));
+  g_assert_false (g_time_zone_is_dst (tz, 0));
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 1), ==, "VID");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 1), ==, (210 * 60));
+  g_assert_true (g_time_zone_is_dst (tz, 1));
+
+  tz = g_time_zone_new ("VIR-02:30VID-04:30,0/00:00:00,365/23:59:59");
+  g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "VIR-02:30VID-04:30,0/00:00:00,365/23:59:59");
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "VIR");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 0), ==, (150 * 60));
+  g_assert_false (g_time_zone_is_dst (tz, 0));
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 1), ==, "VID");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 1), ==, (270 * 60));
+  g_assert_true (g_time_zone_is_dst (tz, 1));
+
+  tz = g_time_zone_new ("VIR-12:00VID-13:00,0/00:00:00,365/23:59:59");
+  g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "VIR-12:00VID-13:00,0/00:00:00,365/23:59:59");
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "VIR");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 0), ==, (720 * 60));
+  g_assert_false (g_time_zone_is_dst (tz, 0));
+  g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 1), ==, "VID");
+  g_assert_cmpint (g_time_zone_get_offset (tz, 1), ==, (780 * 60));
+  g_assert_true (g_time_zone_is_dst (tz, 1));
 }
 
 static void
@@ -2585,11 +2628,11 @@ test_identifier (void)
   g_time_zone_unref (tz);
 
   /* System timezone. We can’t change this, but we can at least assert that
-   * the identifier is non-NULL and doesn’t start with a slash. */
+   * the identifier is non-NULL and non-empty. */
   tz = g_time_zone_new (NULL);
+  g_test_message ("System time zone identifier: %s", g_time_zone_get_identifier (tz));
   g_assert_nonnull (g_time_zone_get_identifier (tz));
   g_assert_cmpstr (g_time_zone_get_identifier (tz), !=, "");
-  g_assert_true (*g_time_zone_get_identifier (tz) != '/');
   g_time_zone_unref (tz);
 
   /* Local timezone tests. */
diff --git a/glib/tests/getpwuid-preload.c b/glib/tests/getpwuid-preload.c
new file mode 100644 (file)
index 0000000..71df9cb
--- /dev/null
@@ -0,0 +1,45 @@
+/* GLIB - Library of useful routines for C programming
+ *
+ * Copyright (C) 2020 Red Hat, Inc.
+ *
+ * Author: Jakub Jelen <jjelen@redhat.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <dlfcn.h>
+#include <pwd.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+static struct passwd my_pw;
+
+/* This is used in gutils.c used to make sure utility functions
+ * handling user information do not crash on bad data (for example
+ * caused by getpwuid returning some NULL elements.
+ */
+struct passwd *
+getpwuid (uid_t uid)
+{
+  static struct passwd *(*real_getpwuid) (uid_t);
+  struct passwd *pw;
+
+  if (real_getpwuid == NULL)
+    real_getpwuid = dlsym (RTLD_NEXT, "getpwuid");
+
+  pw = real_getpwuid (uid);
+  my_pw = *pw;
+  my_pw.pw_name = NULL;
+  return &my_pw;
+}
diff --git a/glib/tests/gutils-user-database.c b/glib/tests/gutils-user-database.c
new file mode 100644 (file)
index 0000000..aef599a
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright © 2020 Red Hat, Inc.
+ *
+ * Author: Jakub Jelen <jjelen@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * See the included COPYING file for more information.
+ */
+
+#include <glib.h>
+
+/* The function g_get_user_database_entry() is called from the
+ * g_get_real_name(), g_get_user_name() and g_build_home_dir()
+ * functions. These two calls are here just to invoke the code
+ * paths. The real-test is the ld_preload used to inject the
+ * NULL in place of pw->pw_name.
+ */
+static void
+test_get_user_database_entry (void)
+{
+  const gchar *r = NULL;
+
+  r = g_get_user_name ();
+  g_assert_nonnull (r);
+
+  r = g_get_real_name ();
+  g_assert_nonnull (r);
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+  g_test_bug_base ("https://gitlab.gnome.org/GNOME/glib/issues");
+
+  g_test_add_func ("/gutils/get_user_database_entry", test_get_user_database_entry);
+
+  return g_test_run ();
+}
index 0e5ec8e..3905e20 100644 (file)
@@ -4197,7 +4197,7 @@ test_parser_recursion (void)
     }
 
   value = g_variant_parse (NULL, silly_dict, NULL, NULL, &local_error);
-  g_assert_error (local_error, G_VARIANT_PARSE_ERROR, G_VARIANT_PARSE_ERROR_FAILED);
+  g_assert_error (local_error, G_VARIANT_PARSE_ERROR, G_VARIANT_PARSE_ERROR_RECURSION);
   g_assert_null (value);
   g_error_free (local_error);
   g_free (silly_dict);
diff --git a/glib/tests/io-channel.c b/glib/tests/io-channel.c
new file mode 100644 (file)
index 0000000..ff53fce
--- /dev/null
@@ -0,0 +1,79 @@
+/* GLib testing framework examples and tests
+ *
+ * Copyright © 2020 Endless Mobile, 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Philip Withnall <withnall@endlessm.com>
+ */
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+static void
+test_read_line_embedded_nuls (void)
+{
+  const guint8 test_data[] = { 'H', 'i', '!', '\0', 'y', 'o', 'u', '\n', ':', ')', '\n' };
+  gint fd;
+  gchar *filename = NULL;
+  GIOChannel *channel = NULL;
+  GError *local_error = NULL;
+  gchar *line = NULL;
+  gsize line_length, terminator_pos;
+  GIOStatus status;
+
+  g_test_summary ("Test that reading a line containing embedded nuls works "
+                  "when using non-standard line terminators.");
+
+  /* Write out a temporary file. */
+  fd = g_file_open_tmp ("glib-test-io-channel-XXXXXX", &filename, &local_error);
+  g_assert_no_error (local_error);
+  g_close (fd, NULL);
+  fd = -1;
+
+  g_file_set_contents (filename, (const gchar *) test_data, sizeof (test_data), &local_error);
+  g_assert_no_error (local_error);
+
+  /* Create the channel. */
+  channel = g_io_channel_new_file (filename, "r", &local_error);
+  g_assert_no_error (local_error);
+
+  /* Only break on newline characters, not nuls. */
+  g_io_channel_set_line_term (channel, "\n", 1);
+  g_io_channel_set_encoding (channel, NULL, &local_error);
+  g_assert_no_error (local_error);
+
+  status = g_io_channel_read_line (channel, &line, &line_length,
+                                   &terminator_pos, &local_error);
+  g_assert_no_error (local_error);
+  g_assert_cmpint (status, ==, G_IO_STATUS_NORMAL);
+  g_assert_cmpuint (line_length, ==, 8);
+  g_assert_cmpuint (terminator_pos, ==, 7);
+  g_assert_cmpmem (line, line_length, test_data, 8);
+
+  g_free (line);
+  g_io_channel_unref (channel);
+  g_free (filename);
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/io-channel/read-line/embedded-nuls", test_read_line_embedded_nuls);
+
+  return g_test_run ();
+}
index 89a1322..317832a 100644 (file)
@@ -50,6 +50,13 @@ test_alignof_fallback (void)
   check_alignof (struct { char a; int b; });
 }
 
+static void
+test_struct_sizeof_member (void)
+{
+    G_STATIC_ASSERT (G_SIZEOF_MEMBER (struct { char a; int b; }, a) == sizeof (char));
+    g_assert_cmpint (G_SIZEOF_MEMBER (struct { char a; int b; }, b), ==, sizeof (int));
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -58,6 +65,7 @@ main (int   argc,
 
   g_test_add_func ("/alignof/fallback", test_alignof_fallback);
   g_test_add_func ("/assert/static", test_assert_static);
+  g_test_add_func ("/struct/sizeof_member", test_struct_sizeof_member);
 
   return g_test_run ();
 }
index a777815..1368e9b 100644 (file)
 #include <stdio.h>
 #include <string.h>
 
-static gboolean cb (gpointer data)
+static gboolean
+cb (gpointer data)
 {
   return FALSE;
 }
 
-static gboolean prepare (GSource *source, gint *time)
+static gboolean
+prepare (GSource *source, gint *time)
 {
   return FALSE;
 }
-static gboolean check (GSource *source)
+static gboolean
+check (GSource *source)
 {
   return FALSE;
 }
-static gboolean dispatch (GSource *source, GSourceFunc cb, gpointer date)
+static gboolean
+dispatch (GSource *source, GSourceFunc cb, gpointer date)
 {
   return FALSE;
 }
 
-GSourceFuncs funcs = {
+static GSourceFuncs funcs = {
   prepare,
   check,
   dispatch,
@@ -168,6 +172,12 @@ test_timeouts (void)
   GMainLoop *loop;
   GSource *source;
 
+  if (!g_test_thorough ())
+    {
+      g_test_skip ("Not running timing heavy test");
+      return;
+    }
+
   a = b = c = 0;
 
   ctx = g_main_context_new ();
@@ -1746,13 +1756,264 @@ test_nfds (void)
   g_main_context_unref (ctx);
 }
 
+static gboolean source_finalize_called = FALSE;
+static guint source_dispose_called = 0;
+static gboolean source_dispose_recycle = FALSE;
+
+static void
+finalize (GSource *source)
+{
+  g_assert_false (source_finalize_called);
+  source_finalize_called = TRUE;
+}
+
+static void
+dispose (GSource *source)
+{
+  /* Dispose must always be called before finalize */
+  g_assert_false (source_finalize_called);
+
+  if (source_dispose_recycle)
+    g_source_ref (source);
+  source_dispose_called++;
+}
+
+static GSourceFuncs source_funcs = {
+  prepare,
+  check,
+  dispatch,
+  finalize
+};
+
+static void
+test_maincontext_source_finalization (void)
+{
+  GSource *source;
+
+  /* Check if GSource destruction without dispose function works and calls the
+   * finalize function as expected */
+  source_finalize_called = FALSE;
+  source_dispose_called = 0;
+  source_dispose_recycle = FALSE;
+  source = g_source_new (&source_funcs, sizeof (GSource));
+  g_source_unref (source);
+  g_assert_cmpint (source_dispose_called, ==, 0);
+  g_assert_true (source_finalize_called);
+
+  /* Check if GSource destruction with dispose function works and calls the
+   * dispose and finalize function as expected */
+  source_finalize_called = FALSE;
+  source_dispose_called = 0;
+  source_dispose_recycle = FALSE;
+  source = g_source_new (&source_funcs, sizeof (GSource));
+  g_source_set_dispose_function (source, dispose);
+  g_source_unref (source);
+  g_assert_cmpint (source_dispose_called, ==, 1);
+  g_assert_true (source_finalize_called);
+
+  /* Check if GSource destruction with dispose function works and recycling
+   * the source from dispose works without calling the finalize function */
+  source_finalize_called = FALSE;
+  source_dispose_called = 0;
+  source_dispose_recycle = TRUE;
+  source = g_source_new (&source_funcs, sizeof (GSource));
+  g_source_set_dispose_function (source, dispose);
+  g_source_unref (source);
+  g_assert_cmpint (source_dispose_called, ==, 1);
+  g_assert_false (source_finalize_called);
+
+  /* Check if the source is properly recycled */
+  g_assert_cmpint (source->ref_count, ==, 1);
+
+  /* And then get rid of it properly */
+  source_dispose_recycle = FALSE;
+  g_source_unref (source);
+  g_assert_cmpint (source_dispose_called, ==, 2);
+  g_assert_true (source_finalize_called);
+}
+
+/* GSource implementation which optionally keeps a strong reference to another
+ * GSource until finalization, when it destroys and unrefs the other source.
+ */
+typedef struct {
+  GSource source;
+
+  GSource *other_source;
+} SourceWithSource;
+
+static void
+finalize_source_with_source (GSource *source)
+{
+  SourceWithSource *s = (SourceWithSource *) source;
+
+  if (s->other_source)
+    {
+      g_source_destroy (s->other_source);
+      g_source_unref (s->other_source);
+      s->other_source = NULL;
+    }
+}
+
+static GSourceFuncs source_with_source_funcs = {
+  NULL,
+  NULL,
+  NULL,
+  finalize_source_with_source
+};
+
+static void
+test_maincontext_source_finalization_from_source (gconstpointer user_data)
+{
+  GMainContext *c = g_main_context_new ();
+  GSource *s1, *s2;
+
+  g_test_summary ("Tests if freeing a GSource as part of another GSource "
+                  "during main context destruction works.");
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/merge_requests/1353");
+
+  s1 = g_source_new (&source_with_source_funcs, sizeof (SourceWithSource));
+  s2 = g_source_new (&source_with_source_funcs, sizeof (SourceWithSource));
+  ((SourceWithSource *)s1)->other_source = g_source_ref (s2);
+
+  /* Attach sources in a different order so they end up being destroyed
+   * in a different order by the main context */
+  if (GPOINTER_TO_INT (user_data) < 5)
+    {
+      g_source_attach (s1, c);
+      g_source_attach (s2, c);
+    }
+  else
+    {
+      g_source_attach (s2, c);
+      g_source_attach (s1, c);
+    }
+
+  /* Test a few different permutations here */
+  if (GPOINTER_TO_INT (user_data) % 5 == 0)
+    {
+      /* Get rid of our references so that destroying the context
+       * will unref them immediately */
+      g_source_unref (s1);
+      g_source_unref (s2);
+      g_main_context_unref (c);
+    }
+  else if (GPOINTER_TO_INT (user_data) % 5 == 1)
+    {
+      /* Destroy and free the sources before the context */
+      g_source_destroy (s1);
+      g_source_unref (s1);
+      g_source_destroy (s2);
+      g_source_unref (s2);
+      g_main_context_unref (c);
+    }
+  else if (GPOINTER_TO_INT (user_data) % 5 == 2)
+    {
+      /* Destroy and free the sources before the context */
+      g_source_destroy (s2);
+      g_source_unref (s2);
+      g_source_destroy (s1);
+      g_source_unref (s1);
+      g_main_context_unref (c);
+    }
+  else if (GPOINTER_TO_INT (user_data) % 5 == 3)
+    {
+      /* Destroy and free the context before the sources */
+      g_main_context_unref (c);
+      g_source_unref (s2);
+      g_source_unref (s1);
+    }
+  else if (GPOINTER_TO_INT (user_data) % 5 == 4)
+    {
+      /* Destroy and free the context before the sources */
+      g_main_context_unref (c);
+      g_source_unref (s1);
+      g_source_unref (s2);
+    }
+}
+
+static gboolean
+dispatch_source_with_source (GSource *source, GSourceFunc callback, gpointer user_data)
+{
+  return G_SOURCE_REMOVE;
+}
+
+static GSourceFuncs source_with_source_funcs_dispatch = {
+  NULL,
+  NULL,
+  dispatch_source_with_source,
+  finalize_source_with_source
+};
+
+static void
+test_maincontext_source_finalization_from_dispatch (gconstpointer user_data)
+{
+  GMainContext *c = g_main_context_new ();
+  GSource *s1, *s2;
+
+  g_test_summary ("Tests if freeing a GSource as part of another GSource "
+                  "during main context iteration works.");
+
+  s1 = g_source_new (&source_with_source_funcs_dispatch, sizeof (SourceWithSource));
+  s2 = g_source_new (&source_with_source_funcs_dispatch, sizeof (SourceWithSource));
+  ((SourceWithSource *)s1)->other_source = g_source_ref (s2);
+
+  g_source_attach (s1, c);
+  g_source_attach (s2, c);
+
+  if (GPOINTER_TO_INT (user_data) == 0)
+    {
+      /* This finalizes s1 as part of the iteration, which then destroys and
+       * frees s2 too */
+      g_source_set_ready_time (s1, 0);
+    }
+  else if (GPOINTER_TO_INT (user_data) == 1)
+    {
+      /* This destroys s2 as part of the iteration but does not free it as
+       * it's still referenced by s1 */
+      g_source_set_ready_time (s2, 0);
+    }
+  else if (GPOINTER_TO_INT (user_data) == 2)
+    {
+      /* This destroys both s1 and s2 as part of the iteration */
+      g_source_set_ready_time (s1, 0);
+      g_source_set_ready_time (s2, 0);
+    }
+
+  /* Get rid of our references so only the main context has one now */
+  g_source_unref (s1);
+  g_source_unref (s2);
+
+  /* Iterate as long as there are sources to dispatch */
+  while (g_main_context_iteration (c, FALSE))
+    {
+      /* Do nothing here */
+    }
+
+  g_main_context_unref (c);
+}
+
 int
 main (int argc, char *argv[])
 {
+  gint i;
+
   g_test_init (&argc, &argv, NULL);
   g_test_bug_base ("http://bugzilla.gnome.org/");
 
   g_test_add_func ("/maincontext/basic", test_maincontext_basic);
+  g_test_add_func ("/maincontext/source_finalization", test_maincontext_source_finalization);
+  for (i = 0; i < 10; i++)
+    {
+      gchar *name = g_strdup_printf ("/maincontext/source_finalization_from_source/%d", i);
+      g_test_add_data_func (name, GINT_TO_POINTER (i), test_maincontext_source_finalization_from_source);
+      g_free (name);
+    }
+  for (i = 0; i < 3; i++)
+    {
+      gchar *name = g_strdup_printf ("/maincontext/source_finalization_from_dispatch/%d", i);
+      g_test_add_data_func (name, GINT_TO_POINTER (i), test_maincontext_source_finalization_from_dispatch);
+      g_free (name);
+    }
   g_test_add_func ("/mainloop/basic", test_mainloop_basic);
   g_test_add_func ("/mainloop/timeouts", test_timeouts);
   g_test_add_func ("/mainloop/priorities", test_priorities);
diff --git a/glib/tests/markups/fail-54.expected b/glib/tests/markups/fail-54.expected
new file mode 100644 (file)
index 0000000..0fc721a
--- /dev/null
@@ -0,0 +1 @@
+ERROR Error on line 1 char 7908: Too many attributes in element “r”
diff --git a/glib/tests/markups/fail-54.gmarkup b/glib/tests/markups/fail-54.gmarkup
new file mode 100644 (file)
index 0000000..2391082
--- /dev/null
@@ -0,0 +1 @@
+<r a0='' a1='' a2='' a3='' a4='' a5='' a6='' a7='' a8='' a9='' a10='' a11='' a12='' a13='' a14='' a15='' a16='' a17='' a18='' a19='' a20='' a21='' a22='' a23='' a24='' a25='' a26='' a27='' a28='' a29='' a30='' a31='' a32='' a33='' a34='' a35='' a36='' a37='' a38='' a39='' a40='' a41='' a42='' a43='' a44='' a45='' a46='' a47='' a48='' a49='' a50='' a51='' a52='' a53='' a54='' a55='' a56='' a57='' a58='' a59='' a60='' a61='' a62='' a63='' a64='' a65='' a66='' a67='' a68='' a69='' a70='' a71='' a72='' a73='' a74='' a75='' a76='' a77='' a78='' a79='' a80='' a81='' a82='' a83='' a84='' a85='' a86='' a87='' a88='' a89='' a90='' a91='' a92='' a93='' a94='' a95='' a96='' a97='' a98='' a99='' a100='' a101='' a102='' a103='' a104='' a105='' a106='' a107='' a108='' a109='' a110='' a111='' a112='' a113='' a114='' a115='' a116='' a117='' a118='' a119='' a120='' a121='' a122='' a123='' a124='' a125='' a126='' a127='' a128='' a129='' a130='' a131='' a132='' a133='' a134='' a135='' a136='' a137='' a138='' a139='' a140='' a141='' a142='' a143='' a144='' a145='' a146='' a147='' a148='' a149='' a150='' a151='' a152='' a153='' a154='' a155='' a156='' a157='' a158='' a159='' a160='' a161='' a162='' a163='' a164='' a165='' a166='' a167='' a168='' a169='' a170='' a171='' a172='' a173='' a174='' a175='' a176='' a177='' a178='' a179='' a180='' a181='' a182='' a183='' a184='' a185='' a186='' a187='' a188='' a189='' a190='' a191='' a192='' a193='' a194='' a195='' a196='' a197='' a198='' a199='' a200='' a201='' a202='' a203='' a204='' a205='' a206='' a207='' a208='' a209='' a210='' a211='' a212='' a213='' a214='' a215='' a216='' a217='' a218='' a219='' a220='' a221='' a222='' a223='' a224='' a225='' a226='' a227='' a228='' a229='' a230='' a231='' a232='' a233='' a234='' a235='' a236='' a237='' a238='' a239='' a240='' a241='' a242='' a243='' a244='' a245='' a246='' a247='' a248='' a249='' a250='' a251='' a252='' a253='' a254='' a255='' a256='' a257='' a258='' a259='' a260='' a261='' a262='' a263='' a264='' a265='' a266='' a267='' a268='' a269='' a270='' a271='' a272='' a273='' a274='' a275='' a276='' a277='' a278='' a279='' a280='' a281='' a282='' a283='' a284='' a285='' a286='' a287='' a288='' a289='' a290='' a291='' a292='' a293='' a294='' a295='' a296='' a297='' a298='' a299='' a300='' a301='' a302='' a303='' a304='' a305='' a306='' a307='' a308='' a309='' a310='' a311='' a312='' a313='' a314='' a315='' a316='' a317='' a318='' a319='' a320='' a321='' a322='' a323='' a324='' a325='' a326='' a327='' a328='' a329='' a330='' a331='' a332='' a333='' a334='' a335='' a336='' a337='' a338='' a339='' a340='' a341='' a342='' a343='' a344='' a345='' a346='' a347='' a348='' a349='' a350='' a351='' a352='' a353='' a354='' a355='' a356='' a357='' a358='' a359='' a360='' a361='' a362='' a363='' a364='' a365='' a366='' a367='' a368='' a369='' a370='' a371='' a372='' a373='' a374='' a375='' a376='' a377='' a378='' a379='' a380='' a381='' a382='' a383='' a384='' a385='' a386='' a387='' a388='' a389='' a390='' a391='' a392='' a393='' a394='' a395='' a396='' a397='' a398='' a399='' a400='' a401='' a402='' a403='' a404='' a405='' a406='' a407='' a408='' a409='' a410='' a411='' a412='' a413='' a414='' a415='' a416='' a417='' a418='' a419='' a420='' a421='' a422='' a423='' a424='' a425='' a426='' a427='' a428='' a429='' a430='' a431='' a432='' a433='' a434='' a435='' a436='' a437='' a438='' a439='' a440='' a441='' a442='' a443='' a444='' a445='' a446='' a447='' a448='' a449='' a450='' a451='' a452='' a453='' a454='' a455='' a456='' a457='' a458='' a459='' a460='' a461='' a462='' a463='' a464='' a465='' a466='' a467='' a468='' a469='' a470='' a471='' a472='' a473='' a474='' a475='' a476='' a477='' a478='' a479='' a480='' a481='' a482='' a483='' a484='' a485='' a486='' a487='' a488='' a489='' a490='' a491='' a492='' a493='' a494='' a495='' a496='' a497='' a498='' a499='' a500='' a501='' a502='' a503='' a504='' a505='' a506='' a507='' a508='' a509='' a510='' a511='' a512='' a513='' a514='' a515='' a516='' a517='' a518='' a519='' a520='' a521='' a522='' a523='' a524='' a525='' a526='' a527='' a528='' a529='' a530='' a531='' a532='' a533='' a534='' a535='' a536='' a537='' a538='' a539='' a540='' a541='' a542='' a543='' a544='' a545='' a546='' a547='' a548='' a549='' a550='' a551='' a552='' a553='' a554='' a555='' a556='' a557='' a558='' a559='' a560='' a561='' a562='' a563='' a564='' a565='' a566='' a567='' a568='' a569='' a570='' a571='' a572='' a573='' a574='' a575='' a576='' a577='' a578='' a579='' a580='' a581='' a582='' a583='' a584='' a585='' a586='' a587='' a588='' a589='' a590='' a591='' a592='' a593='' a594='' a595='' a596='' a597='' a598='' a599='' a600='' a601='' a602='' a603='' a604='' a605='' a606='' a607='' a608='' a609='' a610='' a611='' a612='' a613='' a614='' a615='' a616='' a617='' a618='' a619='' a620='' a621='' a622='' a623='' a624='' a625='' a626='' a627='' a628='' a629='' a630='' a631='' a632='' a633='' a634='' a635='' a636='' a637='' a638='' a639='' a640='' a641='' a642='' a643='' a644='' a645='' a646='' a647='' a648='' a649='' a650='' a651='' a652='' a653='' a654='' a655='' a656='' a657='' a658='' a659='' a660='' a661='' a662='' a663='' a664='' a665='' a666='' a667='' a668='' a669='' a670='' a671='' a672='' a673='' a674='' a675='' a676='' a677='' a678='' a679='' a680='' a681='' a682='' a683='' a684='' a685='' a686='' a687='' a688='' a689='' a690='' a691='' a692='' a693='' a694='' a695='' a696='' a697='' a698='' a699='' a700='' a701='' a702='' a703='' a704='' a705='' a706='' a707='' a708='' a709='' a710='' a711='' a712='' a713='' a714='' a715='' a716='' a717='' a718='' a719='' a720='' a721='' a722='' a723='' a724='' a725='' a726='' a727='' a728='' a729='' a730='' a731='' a732='' a733='' a734='' a735='' a736='' a737='' a738='' a739='' a740='' a741='' a742='' a743='' a744='' a745='' a746='' a747='' a748='' a749='' a750='' a751='' a752='' a753='' a754='' a755='' a756='' a757='' a758='' a759='' a760='' a761='' a762='' a763='' a764='' a765='' a766='' a767='' a768='' a769='' a770='' a771='' a772='' a773='' a774='' a775='' a776='' a777='' a778='' a779='' a780='' a781='' a782='' a783='' a784='' a785='' a786='' a787='' a788='' a789='' a790='' a791='' a792='' a793='' a794='' a795='' a796='' a797='' a798='' a799='' a800='' a801='' a802='' a803='' a804='' a805='' a806='' a807='' a808='' a809='' a810='' a811='' a812='' a813='' a814='' a815='' a816='' a817='' a818='' a819='' a820='' a821='' a822='' a823='' a824='' a825='' a826='' a827='' a828='' a829='' a830='' a831='' a832='' a833='' a834='' a835='' a836='' a837='' a838='' a839='' a840='' a841='' a842='' a843='' a844='' a845='' a846='' a847='' a848='' a849='' a850='' a851='' a852='' a853='' a854='' a855='' a856='' a857='' a858='' a859='' a860='' a861='' a862='' a863='' a864='' a865='' a866='' a867='' a868='' a869='' a870='' a871='' a872='' a873='' a874='' a875='' a876='' a877='' a878='' a879='' a880='' a881='' a882='' a883='' a884='' a885='' a886='' a887='' a888='' a889='' a890='' a891='' a892='' a893='' a894='' a895='' a896='' a897='' a898='' a899='' a900='' a901='' a902='' a903='' a904='' a905='' a906='' a907='' a908='' a909='' a910='' a911='' a912='' a913='' a914='' a915='' a916='' a917='' a918='' a919='' a920='' a921='' a922='' a923='' a924='' a925='' a926='' a927='' a928='' a929='' a930='' a931='' a932='' a933='' a934='' a935='' a936='' a937='' a938='' a939='' a940='' a941='' a942='' a943='' a944='' a945='' a946='' a947='' a948='' a949='' a950='' a951='' a952='' a953='' a954='' a955='' a956='' a957='' a958='' a959='' a960='' a961='' a962='' a963='' a964='' a965='' a966='' a967='' a968='' a969='' a970='' a971='' a972='' a973='' a974='' a975='' a976='' a977='' a978='' a979='' a980='' a981='' a982='' a983='' a984='' a985='' a986='' a987='' a988='' a989='' a990='' a991='' a992='' a993='' a994='' a995='' a996='' a997='' a998='' a999='' a1000='' a1001=''/>
index c47133f..3dedafc 100644 (file)
@@ -35,6 +35,7 @@ glib_tests = {
   'hmac' : {},
   'hook' : {},
   'hostutils' : {},
+  'io-channel' : {},
   'keyfile' : {},
   'list' : {},
   'logging' : {},
@@ -91,6 +92,7 @@ glib_tests = {
   'testing' : {},
   'test-printf' : {},
   'thread' : {},
+  'thread-pool' : {},
   'timeout' : {},
   'timer' : {},
   'tree' : {},
@@ -148,6 +150,27 @@ else
     'include' : {},
     'unix' : {},
   }
+  if have_rtld_next
+    glib_tests += {
+      'gutils-user-database' : {
+        'depends' : [
+          shared_library('getpwuid-preload',
+            'getpwuid-preload.c',
+            name_prefix : '',
+            dependencies: libdl_dep,
+            install_dir : installed_tests_execdir,
+            install: installed_tests_enabled,
+          ),
+        ],
+        'env' : {
+          'LD_PRELOAD': '@0@/getpwuid-preload.so'.format(meson.current_build_dir()),
+        },
+        'installed_tests_env' : {
+          'LD_PRELOAD': '@0@/getpwuid-preload.so'.format(installed_tests_execdir),
+        },
+      },
+    }
+  endif
 endif
 
 if installed_tests_enabled
index 56bd2d5..ee9cd21 100644 (file)
@@ -2321,7 +2321,7 @@ main (int argc, char *argv[])
   TEST_NEW_FAIL ("(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEFG)XX", 0, G_REGEX_ERROR_NAME_TOO_LONG);
   TEST_NEW_FAIL ("\\u0100", G_REGEX_RAW | G_REGEX_JAVASCRIPT_COMPAT, G_REGEX_ERROR_CHARACTER_VALUE_TOO_LARGE);
 
-  /* These errors can't really be tested sanely:
+  /* These errors can't really be tested easily:
    * G_REGEX_ERROR_EXPRESSION_TOO_LARGE
    * G_REGEX_ERROR_MEMORY_ERROR
    * G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG
index 15f03a0..ab449eb 100644 (file)
@@ -166,7 +166,7 @@ test_spawn_async (void)
  * Routine if the file descriptor does not exist.
  */
 static void
-sane_close (int fd)
+safe_close (int fd)
 {
   if (fd >= 0)
     close (fd);
@@ -252,10 +252,10 @@ test_spawn_async_with_fds (void)
                              test_pipe[0][0], test_pipe[1][1], test_pipe[2][1],
                              &error);
       g_assert_no_error (error);
-      sane_close (test_pipe[0][0]);
-      sane_close (test_pipe[1][1]);
+      safe_close (test_pipe[0][0]);
+      safe_close (test_pipe[1][1]);
       if (fd_info[2] != STDOUT_PIPE)
-        sane_close (test_pipe[2][1]);
+        safe_close (test_pipe[2][1]);
 
       data.loop = loop;
       data.stdout_done = FALSE;
@@ -297,10 +297,10 @@ test_spawn_async_with_fds (void)
 
       g_main_context_unref (context);
       g_main_loop_unref (loop);
-      sane_close (test_pipe[0][1]);
-      sane_close (test_pipe[1][0]);
+      safe_close (test_pipe[0][1]);
+      safe_close (test_pipe[1][0]);
       if (fd_info[2] != STDOUT_PIPE)
-        sane_close (test_pipe[2][0]);
+        safe_close (test_pipe[2][0]);
     }
 
   g_ptr_array_free (argv, TRUE);
index 98fe66f..d0ce2c1 100644 (file)
@@ -95,6 +95,13 @@ test_assertions_bad_cmpmem_data (void)
 }
 
 static void
+test_assertions_bad_cmpmem_null (void)
+{
+  g_assert_cmpmem (NULL, 3, NULL, 3);
+  exit (0);
+}
+
+static void
 test_assertions_bad_cmpfloat_epsilon (void)
 {
   g_assert_cmpfloat_with_epsilon (3.14, 3.15, 0.001);
@@ -127,6 +134,9 @@ test_assertions (void)
   g_assert_cmpstr ("fzz", >, "faa");
   g_assert_cmpstr ("fzz", ==, "fzz");
   g_assert_cmpmem ("foo", 3, "foot", 3);
+  g_assert_cmpmem (NULL, 0, NULL, 0);
+  g_assert_cmpmem (NULL, 0, "foot", 0);
+  g_assert_cmpmem ("foo", 0, NULL, 0);
 
   v1 = g_variant_new_parsed ("['hello', 'there']");
   v2 = g_variant_new_parsed ("['hello', 'there']");
@@ -162,6 +172,10 @@ test_assertions (void)
   g_test_trap_assert_stderr ("*assertion failed*");
   g_test_trap_assert_stderr_unmatched ("*assertion failed*len*");
 
+  g_test_trap_subprocess ("/misc/assertions/subprocess/bad_cmpmem_null", 0, 0);
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*assertion failed*NULL*");
+
   g_test_trap_subprocess ("/misc/assertions/subprocess/bad_cmpfloat_epsilon", 0, 0);
   g_test_trap_assert_failed ();
   g_test_trap_assert_stderr ("*assertion failed*");
@@ -1266,6 +1280,7 @@ main (int   argc,
   g_test_add_func ("/misc/assertions/subprocess/bad_cmpint", test_assertions_bad_cmpint);
   g_test_add_func ("/misc/assertions/subprocess/bad_cmpmem_len", test_assertions_bad_cmpmem_len);
   g_test_add_func ("/misc/assertions/subprocess/bad_cmpmem_data", test_assertions_bad_cmpmem_data);
+  g_test_add_func ("/misc/assertions/subprocess/bad_cmpmem_null", test_assertions_bad_cmpmem_null);
   g_test_add_func ("/misc/assertions/subprocess/bad_cmpfloat_epsilon", test_assertions_bad_cmpfloat_epsilon);
   g_test_add_data_func ("/misc/test-data", (void*) 0xc0c0baba, test_data_test);
   g_test_add ("/misc/primetoul", Fixturetest, (void*) 0xc0cac01a, fixturetest_setup, fixturetest_test, fixturetest_teardown);
diff --git a/glib/tests/thread-pool.c b/glib/tests/thread-pool.c
new file mode 100644 (file)
index 0000000..703da5d
--- /dev/null
@@ -0,0 +1,156 @@
+/* Unit tests for GThreadPool
+ * Copyright (C) 2020 Sebastian Dröge <sebastian@centricular.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 <config.h>
+
+#include <glib.h>
+
+typedef struct {
+  GMutex mutex;
+  GCond cond;
+  gboolean signalled;
+} MutexCond;
+
+static void
+pool_func (gpointer data, gpointer user_data)
+{
+  MutexCond *m = user_data;
+
+  g_mutex_lock (&m->mutex);
+  g_assert_false (m->signalled);
+  g_assert_true (data == GUINT_TO_POINTER (123));
+  m->signalled = TRUE;
+  g_cond_signal (&m->cond);
+  g_mutex_unlock (&m->mutex);
+}
+
+static void
+test_simple (gconstpointer shared)
+{
+  GThreadPool *pool;
+  GError *err = NULL;
+  MutexCond m;
+  gboolean success;
+
+  g_mutex_init (&m.mutex);
+  g_cond_init (&m.cond);
+
+  if (GPOINTER_TO_INT (shared))
+    {
+      g_test_summary ("Tests that a shared, non-exclusive thread pool "
+                      "generally works.");
+      pool = g_thread_pool_new (pool_func, &m, -1, FALSE, &err);
+    }
+  else
+    {
+      g_test_summary ("Tests that an exclusive thread pool generally works.");
+      pool = g_thread_pool_new (pool_func, &m, 2, TRUE, &err);
+    }
+  g_assert_no_error (err);
+  g_assert_nonnull (pool);
+
+  g_mutex_lock (&m.mutex);
+  m.signalled = FALSE;
+
+  success = g_thread_pool_push (pool, GUINT_TO_POINTER (123), &err);
+  g_assert_no_error (err);
+  g_assert_true (success);
+
+  while (!m.signalled)
+    g_cond_wait (&m.cond, &m.mutex);
+  g_mutex_unlock (&m.mutex);
+
+  g_thread_pool_free (pool, TRUE, TRUE);
+}
+
+static void
+dummy_pool_func (gpointer data, gpointer user_data)
+{
+  g_assert_true (data == GUINT_TO_POINTER (123));
+}
+
+static void
+test_create_first_pool (gconstpointer shared_first)
+{
+  GThreadPool *pool;
+  GError *err = NULL;
+  gboolean success;
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/issues/2012");
+  if (GPOINTER_TO_INT (shared_first))
+    {
+      g_test_summary ("Tests that creating an exclusive pool after a "
+                      "shared one works.");
+    }
+  else
+    {
+      g_test_summary ("Tests that creating a shared pool after an "
+                      "exclusive one works.");
+    }
+
+  if (!g_test_subprocess ())
+    {
+      g_test_trap_subprocess (NULL, 0, 0);
+      g_test_trap_assert_passed ();
+      return;
+    }
+
+  g_thread_pool_set_max_unused_threads (0);
+
+  if (GPOINTER_TO_INT (shared_first))
+    pool = g_thread_pool_new (dummy_pool_func, NULL, -1, FALSE, &err);
+  else
+    pool = g_thread_pool_new (dummy_pool_func, NULL, 2, TRUE, &err);
+  g_assert_no_error (err);
+  g_assert_nonnull (pool);
+
+  success = g_thread_pool_push (pool, GUINT_TO_POINTER (123), &err);
+  g_assert_no_error (err);
+  g_assert_true (success);
+
+  g_thread_pool_free (pool, TRUE, TRUE);
+
+  if (GPOINTER_TO_INT (shared_first))
+    pool = g_thread_pool_new (dummy_pool_func, NULL, 2, TRUE, &err);
+  else
+    pool = g_thread_pool_new (dummy_pool_func, NULL, -1, FALSE, &err);
+  g_assert_no_error (err);
+  g_assert_nonnull (pool);
+
+  success = g_thread_pool_push (pool, GUINT_TO_POINTER (123), &err);
+  g_assert_no_error (err);
+  g_assert_true (success);
+
+  g_thread_pool_free (pool, TRUE, TRUE);
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_data_func ("/thread_pool/shared", GINT_TO_POINTER (TRUE), test_simple);
+  g_test_add_data_func ("/thread_pool/exclusive", GINT_TO_POINTER (FALSE), test_simple);
+  g_test_add_data_func ("/thread_pool/create_shared_after_exclusive", GINT_TO_POINTER (FALSE), test_create_first_pool);
+  g_test_add_data_func ("/thread_pool/create_exclusive_after_shared", GINT_TO_POINTER (TRUE), test_create_first_pool);
+
+  return g_test_run ();
+}
index b9f8796..579ce1f 100644 (file)
@@ -138,12 +138,6 @@ test_thread4 (void)
   GError *error;
   gint ret;
 
-  /* Linux CAP_SYS_RESOURCE overrides RLIMIT_NPROC, and probably similar
-   * things are true on other systems.
-   */
-  if (getuid () == 0 || geteuid () == 0)
-    return;
-
   getrlimit (RLIMIT_NPROC, &nl);
   nl.rlim_cur = 1;
 
@@ -152,9 +146,26 @@ test_thread4 (void)
 
   error = NULL;
   thread = g_thread_try_new ("a", thread1_func, NULL, &error);
-  g_assert (thread == NULL);
-  g_assert_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN);
-  g_error_free (error);
+
+  if (thread != NULL)
+    {
+      gpointer result;
+
+      /* Privileged processes might be able to create new threads even
+       * though the rlimit is too low. There isn't much we can do about
+       * this; we just can't test this failure mode in this situation. */
+      g_test_skip ("Unable to test g_thread_try_new() failing with EAGAIN "
+                   "while privileged (CAP_SYS_RESOURCE, CAP_SYS_ADMIN or "
+                   "euid 0?)");
+      result = g_thread_join (thread);
+      g_assert_cmpint (GPOINTER_TO_INT (result), ==, 1);
+    }
+  else
+    {
+      g_assert (thread == NULL);
+      g_assert_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN);
+      g_error_free (error);
+    }
 
   if ((ret = prlimit (getpid (), RLIMIT_NPROC, &ol, NULL)) != 0)
     g_error ("resetting RLIMIT_NPROC failed: %s", g_strerror (errno));
index 82ffd0f..7639d06 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "glib-unix.h"
 #include <string.h>
+#include <pwd.h>
 
 static void
 test_pipe (void)
@@ -295,6 +296,40 @@ test_callback_after_signal (void)
   g_main_context_unref (context);
 }
 
+static void
+test_get_passwd_entry_root (void)
+{
+  struct passwd *pwd;
+  GError *local_error = NULL;
+
+  g_test_summary ("Tests that g_unix_get_passwd_entry() works for a "
+                  "known-existing username.");
+
+  pwd = g_unix_get_passwd_entry ("root", &local_error);
+  g_assert_no_error (local_error);
+
+  g_assert_cmpstr (pwd->pw_name, ==, "root");
+  g_assert_cmpuint (pwd->pw_uid, ==, 0);
+
+  g_free (pwd);
+}
+
+static void
+test_get_passwd_entry_nonexistent (void)
+{
+  struct passwd *pwd;
+  GError *local_error = NULL;
+
+  g_test_summary ("Tests that g_unix_get_passwd_entry() returns an error for a "
+                  "nonexistent username.");
+
+  pwd = g_unix_get_passwd_entry ("thisusernamedoesntexist", &local_error);
+  g_assert_error (local_error, G_UNIX_ERROR, 0);
+  g_assert_null (pwd);
+
+  g_clear_error (&local_error);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -310,6 +345,8 @@ main (int   argc,
   g_test_add_func ("/glib-unix/sighup_add_remove", test_sighup_add_remove);
   g_test_add_func ("/glib-unix/sighup_nested", test_sighup_nested);
   g_test_add_func ("/glib-unix/callback_after_signal", test_callback_after_signal);
+  g_test_add_func ("/glib-unix/get-passwd-entry/root", test_get_passwd_entry_root);
+  g_test_add_func ("/glib-unix/get-passwd-entry/nonexistent", test_get_passwd_entry_nonexistent);
 
   return g_test_run();
 }
index 5806b29..51543f4 100644 (file)
@@ -316,6 +316,11 @@ test_utf8_get_char_validated (void)
      * that’s how it’s documented: */
     { "", 0, (gunichar) -2 },
     { "", -1, (gunichar) 0 },
+    { "\0", 1, (gunichar) -2 },
+    { "AB\0", 3, 'A' },
+    { "A\0B", 3, 'A' },
+    { "\0AB", 3, (gunichar) -2 },
+    { "\xD8\0", 2, (gunichar) -2 },
     /* Normal inputs: */
     { "hello", 5, (gunichar) 'h' },
     { "hello", -1, (gunichar) 'h' },
@@ -323,6 +328,7 @@ test_utf8_get_char_validated (void)
     { "\xD8\x9F", -1, 0x061F },
     { "\xD8\x9Fmore", 6, 0x061F },
     { "\xD8\x9Fmore", -1, 0x061F },
+    { "\xD8\x9F\0", 3, 0x061F },
     { "\xE2\x96\xB3", 3, 0x25B3 },
     { "\xE2\x96\xB3", -1, 0x25B3 },
     { "\xE2\x96\xB3more", 7, 0x25B3 },
index d1ca0b6..ed1d63d 100644 (file)
@@ -29,6 +29,9 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
+#ifdef G_OS_UNIX
+#include <sys/utsname.h>
+#endif
 #ifdef G_OS_WIN32
 #include <windows.h>
 #endif
@@ -517,6 +520,39 @@ test_desktop_special_dir (void)
   g_assert (dir2 != NULL);
 }
 
+static void
+test_os_info (void)
+{
+  gchar *name;
+  gchar *contents = NULL;
+#ifdef G_OS_UNIX
+  struct utsname info;
+#endif
+
+  /* Whether this is implemented or not, it must not crash */
+  name = g_get_os_info (G_OS_INFO_KEY_NAME);
+  g_test_message ("%s: %s",
+                  G_OS_INFO_KEY_NAME,
+                  name == NULL ? "(null)" : name);
+
+#if defined (G_OS_WIN32) || defined (__APPLE__)
+  /* These OSs have a special case so NAME should always succeed */
+  g_assert_nonnull (name);
+#elif defined (G_OS_UNIX)
+  if (g_file_get_contents ("/etc/os-release", &contents, NULL, NULL) ||
+      g_file_get_contents ("/usr/lib/os-release", &contents, NULL, NULL) ||
+      uname (&info) == 0)
+    g_assert_nonnull (name);
+  else
+    g_test_skip ("os-release(5) API not implemented on this platform");
+#else
+  g_test_skip ("g_get_os_info() not supported on this platform");
+#endif
+
+  g_free (name);
+  g_free (contents);
+}
+
 static gboolean
 source_test (gpointer data)
 {
@@ -724,6 +760,54 @@ test_int_limits (void)
   g_free (str);
 }
 
+static void
+test_clear_list (void)
+{
+    GList *list = NULL;
+
+    g_clear_list (&list, NULL);
+    g_assert_null (list);
+
+    list = g_list_prepend (list, "test");
+    g_assert_nonnull (list);
+
+    g_clear_list (&list, NULL);
+    g_assert_null (list);
+
+    g_clear_list (&list, g_free);
+    g_assert_null (list);
+
+    list = g_list_prepend (list, g_malloc (16));
+    g_assert_nonnull (list);
+
+    g_clear_list (&list, g_free);
+    g_assert_null (list);
+}
+
+static void
+test_clear_slist (void)
+{
+    GSList *slist = NULL;
+
+    g_clear_slist (&slist, NULL);
+    g_assert_null (slist);
+
+    slist = g_slist_prepend (slist, "test");
+    g_assert_nonnull (slist);
+
+    g_clear_slist (&slist, NULL);
+    g_assert_null (slist);
+
+    g_clear_slist (&slist, g_free);
+    g_assert_null (slist);
+
+    slist = g_slist_prepend (slist, g_malloc (16));
+    g_assert_nonnull (slist);
+
+    g_clear_slist (&slist, g_free);
+    g_assert_null (slist);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -767,6 +851,7 @@ main (int   argc,
 #endif
   g_test_add_func ("/utils/specialdir", test_special_dir);
   g_test_add_func ("/utils/specialdir/desktop", test_desktop_special_dir);
+  g_test_add_func ("/utils/os-info", test_os_info);
   g_test_add_func ("/utils/clear-pointer", test_clear_pointer);
   g_test_add_func ("/utils/clear-pointer-cast", test_clear_pointer_cast);
   g_test_add_func ("/utils/clear-pointer/side-effects", test_clear_pointer_side_effects);
@@ -777,6 +862,8 @@ main (int   argc,
   g_test_add_func ("/utils/atexit", test_atexit);
   g_test_add_func ("/utils/check-setuid", test_check_setuid);
   g_test_add_func ("/utils/int-limits", test_int_limits);
+  g_test_add_func ("/utils/clear-list", test_clear_list);
+  g_test_add_func ("/utils/clear-slist", test_clear_slist);
 
   return g_test_run ();
 }
index a108d83..dece03d 100644 (file)
@@ -1,9 +1,11 @@
 #! /bin/sh
 
+set -e
+
 IN="../update-pcre"
 PCRE=$1
 
-if [ "x$PCRE" = x -o "x$PCRE" = x--help -o "x$PCRE" = x-h ]; then
+if [ "x$PCRE" = x ] || [ "x$PCRE" = x--help ] || [ "x$PCRE" = x-h ]; then
     cat >&2 << EOF
 
 $0 PCRE-DIR
@@ -23,8 +25,8 @@ if [ ! -f gregex.h ]; then
     exit 1
 fi
 
-if [ ! -f $PCRE/Makefile.in -o ! -f $PCRE/pcre_compile.c ]; then
-    echo "'$PCRE' does not contain a valid PCRE version." 2> /dev/null
+if [ ! -f "${PCRE}/Makefile.in" ] || [ ! -f "${PCRE}/pcre_compile.c" ]; then
+    echo "'${PCRE}' does not contain a valid PCRE version." 2> /dev/null
     exit 1
 fi
 
@@ -40,7 +42,7 @@ cd pcre
 # this could be a problem (e.g. when cross-compiling), so now generate
 # the file and then distribuite it with GRegex.
 echo "Generating pcre_chartables.c"
-cp -R $PCRE tmp-build
+cp -R "${PCRE}" tmp-build
 cd tmp-build
 ./configure --enable-utf8 --enable-unicode-properties --disable-cpp > /dev/null
 make pcre_chartables.c > /dev/null
@@ -55,14 +57,14 @@ rm -R tmp-build
 
 # Compiled C files.
 echo "Generating makefiles"
-all_files=`awk '/^OBJ = /, /^\\s*$/ \
-            { \
-                sub("^OBJ = ", ""); \
-                sub(".@OBJEXT@[[:blank:]]*\\\\\\\\", ""); \
-                sub("\\\\$\\\\(POSIX_OBJ\\\\)", ""); \
-                print; \
-            }' \
-            $PCRE/Makefile.in`
+all_files=$(awk '/^OBJ = /, /^\\s*$/ ' \
+                '{' \
+                    'sub("^OBJ = ", "");' \
+                    'sub(".@OBJEXT@[[:blank:]]*\\\\\\\\", "");' \
+                    'sub("\\\\$\\\\(POSIX_OBJ\\\\)", "");' \
+                    'print;' \
+                '}' \
+            "${PCRE}/Makefile.in")
 
 # Headers.
 included_files="pcre.h pcre_internal.h ucp.h ucpinternal.h"
@@ -71,21 +73,21 @@ included_files="pcre.h pcre_internal.h ucp.h ucpinternal.h"
 cat $IN/Makefile.am-1 > Makefile.am
 for name in $all_files; do
     echo "     $name.c \\" >> Makefile.am
-    if [ $name != pcre_chartables ]; then
+    if [ "${name}" != pcre_chartables ]; then
         # pcre_chartables.c is a generated file.
-        cp $PCRE/$name.c .
+        cp "${PCRE}/${name}.c" .
     fi
 done
 for f in $included_files; do
     echo "     $f \\" >> Makefile.am
-    cp $PCRE/$f .
+    cp "${PCRE}/${f}" .
 done
 cat $IN/Makefile.am-2 >> Makefile.am
 
 echo "Patching PCRE"
 
 # Copy the license.
-cp $PCRE/COPYING .
+cp "${PCRE}/COPYING" .
 
 # Use glib for memory allocation.
 patch > /dev/null < $IN/memory.patch
index 5aed0df..30ccceb 100644 (file)
 #  define PLAT_x86_darwin 1
 #elif defined(__APPLE__) && defined(__x86_64__)
 #  define PLAT_amd64_darwin 1
-#elif (defined(__MINGW32__) && !defined(__MINGW64__)) \
+#elif (defined(__MINGW32__) && defined(__i386__)) \
       || defined(__CYGWIN32__) \
       || (defined(_WIN32) && defined(_M_IX86))
 #  define PLAT_x86_win32 1
-#elif defined(__MINGW64__) \
+#elif (defined(__MINGW64__) && defined(__x86_64__)) \
       || (defined(_WIN64) && defined(_M_X64))
 #  define PLAT_amd64_win64 1
 #elif defined(__linux__) && defined(__i386__)
index 3301c47..381eef4 100644 (file)
@@ -141,19 +141,10 @@ _g_module_self (void)
 }
 
 static void
-_g_module_close (gpointer handle,
-                gboolean is_unref)
+_g_module_close (gpointer handle)
 {
-  /* are there any systems out there that have dlopen()/dlclose()
-   * without a reference count implementation?
-   */
-  is_unref |= 1;
-  
-  if (is_unref)
-    {
-      if (dlclose (handle) != 0)
-       g_module_set_error (fetch_dlerror (TRUE));
-    }
+  if (dlclose (handle) != 0)
+    g_module_set_error (fetch_dlerror (TRUE));
 }
 
 static gpointer
index 5d0200c..fab1513 100644 (file)
@@ -131,21 +131,11 @@ _g_module_self (void)
 }
 
 static void
-_g_module_close (gpointer handle,
-                gboolean is_unref)
+_g_module_close (gpointer handle)
 {
-  /* are there any systems out there that have dlopen()/dlclose()
-   * without a reference count implementation?
-   *
-   * See above for the Android special case
-   */
 #if defined(__BIONIC__)
-  is_unref = (handle != RTLD_DEFAULT);
-#else
-  is_unref |= 1;
+  if (handle != RTLD_DEFAULT)
 #endif
-
-  if (is_unref)
     {
       if (dlclose (handle) != 0)
        g_module_set_error (fetch_dlerror (TRUE));
diff --git a/gmodule/gmodule-dyld.c b/gmodule/gmodule-dyld.c
deleted file mode 100644 (file)
index 764ac83..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/* GMODULE - GLIB wrapper code for dynamic module loading
- * Copyright (C) 1998, 2000 Tim Janik
- *
- * dyld (Darwin) GMODULE implementation
- * Copyright (C) 2001 Dan Winship
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#include "config.h"
-
-#include <mach-o/dyld.h>
-
-static gpointer self_module = GINT_TO_POINTER (1);
-
-static gpointer
-_g_module_open (const gchar *file_name,
-               gboolean     bind_lazy,
-               gboolean     bind_local)
-{
-  NSObjectFileImage image;
-  NSObjectFileImageReturnCode ret;
-  NSModule module;
-  unsigned long options;
-  char *msg;
-
-  ret = NSCreateObjectFileImageFromFile (file_name, &image);
-  if (ret != NSObjectFileImageSuccess)
-    {
-      switch (ret)
-       {
-       case NSObjectFileImageInappropriateFile:
-       case NSObjectFileImageFormat:
-         msg = g_strdup_printf ("%s is not a loadable module", file_name);
-         break;
-
-       case NSObjectFileImageArch:
-         msg = g_strdup_printf ("%s is not built for this architecture",
-                                file_name);
-         break;
-
-       case NSObjectFileImageAccess:
-         if (access (file_name, F_OK) == 0)
-           msg = g_strdup_printf ("%s: permission denied", file_name);
-         else
-           msg = g_strdup_printf ("%s: no such file or directory", file_name);
-         break;
-
-       default:
-         msg = g_strdup_printf ("unknown error for %s", file_name);
-         break;
-       }
-
-      g_module_set_error (msg);
-      g_free (msg);
-      return NULL;
-    }
-
-  options = NSLINKMODULE_OPTION_RETURN_ON_ERROR;
-  if (bind_local)
-    options |= NSLINKMODULE_OPTION_PRIVATE;
-  if (!bind_lazy)
-    options |= NSLINKMODULE_OPTION_BINDNOW;
-  module = NSLinkModule (image, file_name, options);
-  NSDestroyObjectFileImage (image);
-  if (!module)
-    {
-      NSLinkEditErrors c;
-      int error_number;
-      const char *file, *error;
-
-      NSLinkEditError (&c, &error_number, &file, &error);
-      msg = g_strdup_printf ("could not link %s: %s", file_name, error);
-      g_module_set_error (msg);
-      g_free (msg);
-      return NULL;
-    }
-
-  return module;
-}
-
-static gpointer
-_g_module_self (void)
-{
-  return &self_module;
-}
-
-static void
-_g_module_close (gpointer handle,
-                gboolean is_unref)
-{
-  if (handle == &self_module)
-    return;
-
-  if (!NSUnLinkModule (handle, 0))
-    g_module_set_error ("could not unlink module");
-}
-
-static gpointer
-_g_module_symbol (gpointer     handle,
-                 const gchar *symbol_name)
-{
-  NSSymbol sym;
-  char *msg;
-
-  if (handle == &self_module)
-    {
-      if (NSIsSymbolNameDefined (symbol_name))
-       sym = NSLookupAndBindSymbol (symbol_name);
-      else
-       sym = NULL;
-    }
-  else
-    sym = NSLookupSymbolInModule (handle, symbol_name);
-
-  if (!sym)
-    {
-      msg = g_strdup_printf ("no such symbol %s", symbol_name);
-      g_module_set_error (msg);
-      g_free (msg);
-      return NULL;
-    }
-
-  return NSAddressOfSymbol (sym);
-}
-
-static gchar*
-_g_module_build_path (const gchar *directory,
-                     const gchar *module_name)
-{
-  if (directory && *directory)
-    {
-      if (strncmp (module_name, "lib", 3) == 0)
-       return g_strconcat (directory, "/", module_name, NULL);
-      else
-       return g_strconcat (directory, "/lib", module_name, "." G_MODULE_SUFFIX, NULL);
-    }
-  else if (strncmp (module_name, "lib", 3) == 0)
-    return g_strdup (module_name);
-  else
-    return g_strconcat ("lib", module_name, "." G_MODULE_SUFFIX, NULL);
-}
index 795dc09..fef4d89 100644 (file)
@@ -39,7 +39,7 @@
 #include <sys/cygwin.h>
 #endif
 
-static void
+static void G_GNUC_PRINTF (1, 2)
 set_error (const gchar *format,
           ...)
 {
@@ -113,8 +113,7 @@ _g_module_self (void)
 }
 
 static void
-_g_module_close (gpointer handle,
-                gboolean is_unref)
+_g_module_close (gpointer handle)
 {
   if (handle != null_module_handle)
     if (!FreeLibrary (handle))
index 886eb85..e71b07e 100644 (file)
@@ -207,8 +207,7 @@ struct _GModule
 static gpointer                _g_module_open          (const gchar    *file_name,
                                                 gboolean        bind_lazy,
                                                 gboolean        bind_local);
-static void            _g_module_close         (gpointer        handle,
-                                                gboolean        is_unref);
+static void            _g_module_close         (gpointer        handle);
 static gpointer                _g_module_self          (void);
 static gpointer                _g_module_symbol        (gpointer        handle,
                                                 const gchar    *symbol_name);
@@ -283,8 +282,6 @@ g_module_set_error (const gchar *error)
 #include "gmodule-dl.c"
 #elif  (G_MODULE_IMPL == G_MODULE_IMPL_WIN32)
 #include "gmodule-win32.c"
-#elif  (G_MODULE_IMPL == G_MODULE_IMPL_DYLD)
-#include "gmodule-dyld.c"
 #elif  (G_MODULE_IMPL == G_MODULE_IMPL_AR)
 #include "gmodule-ar.c"
 #else
@@ -299,8 +296,7 @@ _g_module_open (const gchar *file_name,
   return NULL;
 }
 static void
-_g_module_close        (gpointer        handle,
-                gboolean        is_unref)
+_g_module_close (gpointer handle)
 {
 }
 static gpointer
@@ -480,7 +476,7 @@ static GRecMutex g_module_global_lock;
  * archive) it tries to open the corresponding module. If that fails
  * and it doesn't have the proper module suffix for the platform
  * (#G_MODULE_SUFFIX), this suffix will be appended and the corresponding
- * module will be opended. If that fails and @file_name doesn't have the
+ * module will be opened. If that fails and @file_name doesn't have the
  * ".la"-suffix, this suffix is appended and g_module_open() tries to open
  * the corresponding module. If eventually that fails as well, %NULL is
  * returned.
@@ -617,7 +613,7 @@ g_module_open (const gchar    *file_name,
       module = g_module_find_by_handle (handle);
       if (module)
        {
-         _g_module_close (module->handle, TRUE);
+         _g_module_close (module->handle);
          module->ref_count++;
          g_module_set_error (NULL);
          
@@ -723,7 +719,7 @@ g_module_close (GModule *module)
        }
       module->next = NULL;
       
-      _g_module_close (module->handle, FALSE);
+      _g_module_close (module->handle);
       g_free (module->file_name);
       g_free (module);
     }
index 2dad047..39d6707 100644 (file)
@@ -26,7 +26,6 @@ extern "C" {
 #define        G_MODULE_IMPL_NONE      0
 #define        G_MODULE_IMPL_DL        1
 #define        G_MODULE_IMPL_WIN32     3
-#define        G_MODULE_IMPL_DYLD      6
 #define        G_MODULE_IMPL_AR        7
 
 #define        G_MODULE_IMPL           @G_MODULE_IMPL@
index 5fce96d..9801c94 100644 (file)
@@ -15,10 +15,6 @@ elif host_system == 'aix'
   g_module_impl = 'G_MODULE_IMPL_AR'
 elif have_dlopen_dlsym
   g_module_impl = 'G_MODULE_IMPL_DL'
-# NSLinkModule (dyld) in system libraries (Darwin)
-elif cc.has_function('NSLinkModule')
-  g_module_impl = 'G_MODULE_IMPL_DYLD'
-  g_module_need_uscore = 1
 endif
 
 # additional checks for G_MODULE_IMPL_DL
index 16942c2..12475bc 100644 (file)
@@ -423,6 +423,53 @@ g_binding_finalize (GObject *gobject)
   G_OBJECT_CLASS (g_binding_parent_class)->finalize (gobject);
 }
 
+/* @key must have already been validated with is_valid()
+ * Modifies @key in place. */
+static void
+canonicalize_key (gchar *key)
+{
+  gchar *p;
+
+  for (p = key; *p != 0; p++)
+    {
+      gchar c = *p;
+
+      if (c == '_')
+        *p = '-';
+    }
+}
+
+/* @key must have already been validated with is_valid() */
+static gboolean
+is_canonical (const gchar *key)
+{
+  return (strchr (key, '_') == NULL);
+}
+
+static gboolean
+is_valid_property_name (const gchar *key)
+{
+  const gchar *p;
+
+  /* First character must be a letter. */
+  if ((key[0] < 'A' || key[0] > 'Z') &&
+      (key[0] < 'a' || key[0] > 'z'))
+    return FALSE;
+
+  for (p = key; *p != 0; p++)
+    {
+      const gchar c = *p;
+
+      if (c != '-' && c != '_' &&
+          (c < '0' || c > '9') &&
+          (c < 'A' || c > 'Z') &&
+          (c < 'a' || c > 'z'))
+        return FALSE;
+    }
+
+  return TRUE;
+}
+
 static void
 g_binding_set_property (GObject      *gobject,
                         guint         prop_id,
@@ -437,17 +484,35 @@ g_binding_set_property (GObject      *gobject,
       binding->source = g_value_get_object (value);
       break;
 
-    case PROP_SOURCE_PROPERTY:
-      binding->source_property = g_intern_string (g_value_get_string (value));
-      break;
-
     case PROP_TARGET:
       binding->target = g_value_get_object (value);
       break;
 
+    case PROP_SOURCE_PROPERTY:
     case PROP_TARGET_PROPERTY:
-      binding->target_property = g_intern_string (g_value_get_string (value));
-      break;
+      {
+        gchar *name_copy = NULL;
+        const gchar *name = g_value_get_string (value);
+        const gchar **dest;
+
+        /* Ensure the name we intern is canonical. */
+        if (!is_canonical (name))
+          {
+            name_copy = g_value_dup_string (value);
+            canonicalize_key (name_copy);
+            name = name_copy;
+          }
+
+        if (prop_id == PROP_SOURCE_PROPERTY)
+          dest = &binding->source_property;
+        else
+          dest = &binding->target_property;
+
+        *dest = g_intern_string (name);
+
+        g_free (name_copy);
+        break;
+      }
 
     case PROP_FLAGS:
       binding->flags = g_value_get_flags (value);
@@ -474,7 +539,8 @@ g_binding_get_property (GObject    *gobject,
       break;
 
     case PROP_SOURCE_PROPERTY:
-      g_value_set_string (value, binding->source_property);
+      /* @source_property is interned, so we don’t need to take a copy */
+      g_value_set_static_string (value, binding->source_property);
       break;
 
     case PROP_TARGET:
@@ -482,7 +548,8 @@ g_binding_get_property (GObject    *gobject,
       break;
 
     case PROP_TARGET_PROPERTY:
-      g_value_set_string (value, binding->target_property);
+      /* @target_property is interned, so we don’t need to take a copy */
+      g_value_set_static_string (value, binding->target_property);
       break;
 
     case PROP_FLAGS:
@@ -606,7 +673,10 @@ g_binding_class_init (GBindingClass *klass)
    * GBinding:source-property:
    *
    * The name of the property of #GBinding:source that should be used
-   * as the source of the binding
+   * as the source of the binding.
+   *
+   * This should be in [canonical form][canonical-parameter-names] to get the
+   * best performance.
    *
    * Since: 2.26
    */
@@ -622,7 +692,10 @@ g_binding_class_init (GBindingClass *klass)
    * GBinding:target-property:
    *
    * The name of the property of #GBinding:target that should be used
-   * as the target of the binding
+   * as the target of the binding.
+   *
+   * This should be in [canonical form][canonical-parameter-names] to get the
+   * best performance.
    *
    * Since: 2.26
    */
@@ -835,8 +908,10 @@ g_object_bind_property_full (gpointer               source,
 
   g_return_val_if_fail (G_IS_OBJECT (source), NULL);
   g_return_val_if_fail (source_property != NULL, NULL);
+  g_return_val_if_fail (is_valid_property_name (source_property), NULL);
   g_return_val_if_fail (G_IS_OBJECT (target), NULL);
   g_return_val_if_fail (target_property != NULL, NULL);
+  g_return_val_if_fail (is_valid_property_name (target_property), NULL);
 
   if (source == target && g_strcmp0 (source_property, target_property) == 0)
     {
index 4404de3..87cc5d2 100644 (file)
@@ -346,8 +346,7 @@ g_boxed_copy (GType         boxed_type,
   g_return_val_if_fail (src_boxed != NULL, NULL);
 
   value_table = g_type_value_table_peek (boxed_type);
-  if (!value_table)
-    g_return_val_if_fail (G_TYPE_IS_VALUE_TYPE (boxed_type), NULL);
+  g_assert (value_table != NULL);
 
   /* check if our proxying implementation is used, we can short-cut here */
   if (value_table->value_copy == boxed_proxy_value_copy)
@@ -404,8 +403,7 @@ g_boxed_free (GType    boxed_type,
   g_return_if_fail (boxed != NULL);
 
   value_table = g_type_value_table_peek (boxed_type);
-  if (!value_table)
-    g_return_if_fail (G_TYPE_IS_VALUE_TYPE (boxed_type));
+  g_assert (value_table != NULL);
 
   /* check if our proxying implementation is used, we can short-cut here */
   if (value_table->value_free == boxed_proxy_value_free)
index df27c36..07752cf 100644 (file)
@@ -162,6 +162,29 @@ enum {
   PROP_NONE
 };
 
+#define OPTIONAL_FLAG_IN_CONSTRUCTION 1<<0
+#define OPTIONAL_FLAG_HAS_SIGNAL_HANDLER 1<<1 /* Set if object ever had a signal handler */
+
+#if SIZEOF_INT == 4 && GLIB_SIZEOF_VOID_P == 8
+#define HAVE_OPTIONAL_FLAGS
+#endif
+
+typedef struct
+{
+  GTypeInstance  g_type_instance;
+
+  /*< private >*/
+  volatile guint ref_count;
+#ifdef HAVE_OPTIONAL_FLAGS
+  volatile guint optional_flags;
+#endif
+  GData         *qdata;
+} GObjectReal;
+
+G_STATIC_ASSERT(sizeof(GObject) == sizeof(GObjectReal));
+G_STATIC_ASSERT(G_STRUCT_OFFSET(GObject, ref_count) == G_STRUCT_OFFSET(GObjectReal, ref_count));
+G_STATIC_ASSERT(G_STRUCT_OFFSET(GObject, qdata) == G_STRUCT_OFFSET(GObjectReal, qdata));
+
 
 /* --- prototypes --- */
 static void    g_object_base_class_init                (GObjectClass   *class);
@@ -1008,10 +1031,83 @@ g_object_interface_list_properties (gpointer      g_iface,
   return pspecs;
 }
 
+static inline guint
+object_get_optional_flags (GObject *object)
+{
+#ifdef HAVE_OPTIONAL_FLAGS
+  GObjectReal *real = (GObjectReal *)object;
+  return (guint)g_atomic_int_get (&real->optional_flags);
+#else
+  return 0;
+#endif
+}
+
+static inline void
+object_set_optional_flags (GObject *object,
+                          guint flags)
+{
+#ifdef HAVE_OPTIONAL_FLAGS
+  GObjectReal *real = (GObjectReal *)object;
+  g_atomic_int_or (&real->optional_flags, flags);
+#endif
+}
+
+static inline void
+object_unset_optional_flags (GObject *object,
+                            guint flags)
+{
+#ifdef HAVE_OPTIONAL_FLAGS
+  GObjectReal *real = (GObjectReal *)object;
+  g_atomic_int_and (&real->optional_flags, ~flags);
+#endif
+}
+
+gboolean
+_g_object_has_signal_handler  (GObject *object)
+{
+#ifdef HAVE_OPTIONAL_FLAGS
+  return (object_get_optional_flags (object) & OPTIONAL_FLAG_HAS_SIGNAL_HANDLER) != 0;
+#else
+  return TRUE;
+#endif
+}
+
+void
+_g_object_set_has_signal_handler (GObject     *object)
+{
+#ifdef HAVE_OPTIONAL_FLAGS
+  object_set_optional_flags (object, OPTIONAL_FLAG_HAS_SIGNAL_HANDLER);
+#endif
+}
+
 static inline gboolean
 object_in_construction (GObject *object)
 {
+#ifdef HAVE_OPTIONAL_FLAGS
+  return (object_get_optional_flags (object) & OPTIONAL_FLAG_IN_CONSTRUCTION) != 0;
+#else
   return g_datalist_id_get_data (&object->qdata, quark_in_construction) != NULL;
+#endif
+}
+
+static inline void
+set_object_in_construction (GObject *object)
+{
+#ifdef HAVE_OPTIONAL_FLAGS
+  object_set_optional_flags (object, OPTIONAL_FLAG_IN_CONSTRUCTION);
+#else
+  g_datalist_id_set_data (&object->qdata, quark_in_construction, object);
+#endif
+}
+
+static inline void
+unset_object_in_construction (GObject *object)
+{
+#ifdef HAVE_OPTIONAL_FLAGS
+  object_unset_optional_flags (object, OPTIONAL_FLAG_IN_CONSTRUCTION);
+#else
+  g_datalist_id_set_data (&object->qdata, quark_in_construction, NULL);
+#endif
 }
 
 static void
@@ -1030,7 +1126,7 @@ g_object_init (GObject            *object,
   if (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
     {
       /* mark object in-construction for notify_queue_thaw() and to allow construct-only properties */
-      g_datalist_id_set_data (&object->qdata, quark_in_construction, object);
+      set_object_in_construction (object);
     }
 
   GOBJECT_IF_DEBUG (OBJECTS,
@@ -1521,7 +1617,7 @@ object_interface_check_properties (gpointer check_data,
 
       /* We do a number of checks on the properties of an interface to
        * make sure that all classes implementing the interface are
-       * overriding the properties in a sane way.
+       * overriding the properties correctly.
        *
        * We do the checks in order of importance so that we can give
        * more useful error messages first.
@@ -1651,6 +1747,20 @@ g_object_get_type (void)
  * Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
  * which are not explicitly specified are set to their default values.
  *
+ * Note that in C, small integer types in variable argument lists are promoted
+ * up to #gint or #guint as appropriate, and read back accordingly. #gint is 32
+ * bits on every platform on which GLib is currently supported. This means that
+ * you can use C expressions of type #gint with g_object_new() and properties of
+ * type #gint or #guint or smaller. Specifically, you can use integer literals
+ * with these property types.
+ *
+ * When using property types of #gint64 or #guint64, you must ensure that the
+ * value that you provide is 64 bit. This means that you should use a cast or
+ * make use of the %G_GINT64_CONSTANT or %G_GUINT64_CONSTANT macros.
+ *
+ * Similarly, #gfloat is promoted to #gdouble, so you must ensure that the value
+ * you provide is a #gdouble, even for a property of type #gfloat.
+ *
  * Returns: (transfer full) (type GObject.Object): a new instance of
  *   @object_type
  */
@@ -1766,7 +1876,7 @@ g_object_new_with_custom_constructor (GObjectClass          *class,
    */
   newly_constructed = object_in_construction (object);
   if (newly_constructed)
-    g_datalist_id_set_data (&object->qdata, quark_in_construction, NULL);
+    unset_object_in_construction (object);
 
   if (CLASS_HAS_PROPS (class))
     {
@@ -2479,6 +2589,11 @@ g_object_get_valist (GObject      *object,
  *
  * Sets properties on an object.
  *
+ * The same caveats about passing integer literals as varargs apply as with
+ * g_object_new(). In particular, any integer literals set as the values for
+ * properties of type #gint64 or #guint64 must be 64 bits wide, using the
+ * %G_GINT64_CONSTANT or %G_GUINT64_CONSTANT macros.
+ *
  * Note that the "notify" signals are queued and only emitted (in
  * reverse order) after all properties have been set. See
  * g_object_freeze_notify().
@@ -2515,20 +2630,22 @@ g_object_set (gpointer     _object,
  * of three properties: an integer, a string and an object:
  * |[<!-- language="C" --> 
  *  gint intval;
+ *  guint64 uint64val;
  *  gchar *strval;
  *  GObject *objval;
  *
  *  g_object_get (my_object,
  *                "int-property", &intval,
+ *                "uint64-property", &uint64val,
  *                "str-property", &strval,
  *                "obj-property", &objval,
  *                NULL);
  *
- *  // Do something with intval, strval, objval
+ *  // Do something with intval, uint64val, strval, objval
  *
  *  g_free (strval);
  *  g_object_unref (objval);
- *  ]|
+ * ]|
  */
 void
 g_object_get (gpointer     _object,
index 91b9f63..2e07fa7 100644 (file)
@@ -738,12 +738,31 @@ static inline gboolean
   return TRUE;
 }
 
+/* We need GCC for __extension__, which we need to sort out strict aliasing of @object_ptr */
+#if defined(__GNUC__)
+
+#define g_set_object(object_ptr, new_object) \
+  (G_GNUC_EXTENSION ({ \
+    G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \
+    /* Only one access, please; work around type aliasing */ \
+    union { char *in; GObject **out; } _object_ptr; \
+    _object_ptr.in = (char *) (object_ptr); \
+    /* Check types match */ \
+    (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
+    (g_set_object) (_object_ptr.out, (GObject *) new_object); \
+  })) \
+  GLIB_AVAILABLE_MACRO_IN_2_44
+
+#else  /* if !defined(__GNUC__) */
+
 #define g_set_object(object_ptr, new_object) \
  (/* Check types match. */ \
   0 ? *(object_ptr) = (new_object), FALSE : \
   (g_set_object) ((GObject **) (object_ptr), (GObject *) (new_object)) \
  )
 
+#endif  /* !defined(__GNUC__) */
+
 /**
  * g_assert_finalize_object: (skip)
  * @object: (transfer full) (type GObject.Object): an object
index 30ef2fb..261fdac 100644 (file)
@@ -25,7 +25,9 @@
 #error "config.h must be included prior to gobject_trace.h"
 #endif
 
-#ifdef HAVE_DTRACE
+/* Ignore probes when doing static analysis, as they do weird things which
+ * confuses the analyser. */
+#if defined(HAVE_DTRACE) && !defined(__clang_analyzer__)
 
 /* include the generated probes header and put markers in code */
 #include "gobject_probes.h"
index 5aa54c0..b336125 100644 (file)
  *
  * ## Parameter names # {#canonical-parameter-names}
  *
- * Parameter names need to start with a letter (a-z or A-Z).
- * Subsequent characters can be letters, numbers or a '-'.
- * All other characters are replaced by a '-' during construction.
- * The result of this replacement is called the canonical name of
- * the parameter.
+ * A property name consists of segments consisting of ASCII letters and
+ * digits, separated by either the `-` or `_` character. The first
+ * character of a property name must be a letter. These are the same rules as
+ * for signal naming (see g_signal_new()).
+ *
+ * When creating and looking up a #GParamSpec, either separator can be
+ * used, but they cannot be mixed. Using `-` is considerably more
+ * efficient, and is the ‘canonical form’. Using `_` is discouraged.
  */
 
 
@@ -355,6 +358,8 @@ g_param_spec_get_blurb (GParamSpec *pspec)
   return NULL;
 }
 
+/* @key must have already been validated with is_valid()
+ * Modifies @key in place. */
 static void
 canonicalize_key (gchar *key)
 {
@@ -364,28 +369,37 @@ canonicalize_key (gchar *key)
     {
       gchar c = *p;
       
-      if (c != '-' &&
-         (c < '0' || c > '9') &&
-         (c < 'A' || c > 'Z') &&
-         (c < 'a' || c > 'z'))
-       *p = '-';
+      if (c == '_')
+        *p = '-';
     }
 }
 
+/* @key must have already been validated with is_valid() */
 static gboolean
 is_canonical (const gchar *key)
 {
+  return (strchr (key, '_') == NULL);
+}
+
+static gboolean
+is_valid_property_name (const gchar *key)
+{
   const gchar *p;
 
+  /* First character must be a letter. */
+  if ((key[0] < 'A' || key[0] > 'Z') &&
+      (key[0] < 'a' || key[0] > 'z'))
+    return FALSE;
+
   for (p = key; *p != 0; p++)
     {
-      gchar c = *p;
+      const gchar c = *p;
       
-      if (c != '-' &&
-         (c < '0' || c > '9') &&
-         (c < 'A' || c > 'Z') &&
-         (c < 'a' || c > 'z'))
-       return FALSE;
+      if (c != '-' && c != '_' &&
+          (c < '0' || c > '9') &&
+          (c < 'A' || c > 'Z') &&
+          (c < 'a' || c > 'z'))
+        return FALSE;
     }
 
   return TRUE;
@@ -401,15 +415,9 @@ is_canonical (const gchar *key)
  *
  * Creates a new #GParamSpec instance.
  *
- * A property name consists of segments consisting of ASCII letters and
- * digits, separated by either the '-' or '_' character. The first
- * character of a property name must be a letter. Names which violate these
- * rules lead to undefined behaviour.
- *
- * When creating and looking up a #GParamSpec, either separator can be
- * used, but they cannot be mixed. Using '-' is considerably more
- * efficient and in fact required when using property names as detail
- * strings for signals.
+ * See [canonical parameter names][canonical-parameter-names] for details of
+ * the rules for @name. Names which violate these rules lead to undefined
+ * behaviour.
  *
  * Beyond the name, #GParamSpecs have two more descriptive
  * strings associated with them, the @nick, which should be suitable
@@ -431,7 +439,7 @@ g_param_spec_internal (GType        param_type,
   
   g_return_val_if_fail (G_TYPE_IS_PARAM (param_type) && param_type != G_TYPE_PARAM, NULL);
   g_return_val_if_fail (name != NULL, NULL);
-  g_return_val_if_fail ((name[0] >= 'A' && name[0] <= 'Z') || (name[0] >= 'a' && name[0] <= 'z'), NULL);
+  g_return_val_if_fail (is_valid_property_name (name), NULL);
   g_return_val_if_fail (!(flags & G_PARAM_STATIC_NAME) || is_canonical (name), NULL);
   
   pspec = (gpointer) g_type_create_instance (param_type);
@@ -595,7 +603,8 @@ g_param_spec_get_redirect_target (GParamSpec *pspec)
 /**
  * g_param_value_set_default:
  * @pspec: a valid #GParamSpec
- * @value: a #GValue of correct type for @pspec
+ * @value: a #GValue of correct type for @pspec; since 2.64, you
+ *   can also pass an empty #GValue, initialized with %G_VALUE_INIT
  *
  * Sets @value to its default value as specified in @pspec.
  */
@@ -604,10 +613,18 @@ g_param_value_set_default (GParamSpec *pspec,
                           GValue     *value)
 {
   g_return_if_fail (G_IS_PARAM_SPEC (pspec));
-  g_return_if_fail (G_IS_VALUE (value));
-  g_return_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value));
 
-  g_value_reset (value);
+  if (G_VALUE_TYPE (value) == G_TYPE_INVALID)
+    {
+      g_value_init (value, G_PARAM_SPEC_VALUE_TYPE (pspec));
+    }
+  else
+    {
+      g_return_if_fail (G_IS_VALUE (value));
+      g_return_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value));
+      g_value_reset (value);
+    }
+
   G_PARAM_SPEC_GET_CLASS (pspec)->value_set_default (pspec, value);
 }
 
@@ -621,8 +638,8 @@ g_param_value_set_default (GParamSpec *pspec,
  * Returns: whether @value contains the canonical default for this @pspec
  */
 gboolean
-g_param_value_defaults (GParamSpec *pspec,
-                       GValue     *value)
+g_param_value_defaults (GParamSpec   *pspec,
+                       const GValue *value)
 {
   GValue dflt_value = G_VALUE_INIT;
   gboolean defaults;
index 33f95f0..b6a5546 100644 (file)
@@ -307,7 +307,7 @@ void                g_param_value_set_default       (GParamSpec    *pspec,
                                                 GValue        *value);
 GLIB_AVAILABLE_IN_ALL
 gboolean       g_param_value_defaults          (GParamSpec    *pspec,
-                                                GValue        *value);
+                                                const GValue  *value);
 GLIB_AVAILABLE_IN_ALL
 gboolean       g_param_value_validate          (GParamSpec    *pspec,
                                                 GValue        *value);
index 5d15c26..c45ebc5 100644 (file)
@@ -912,8 +912,11 @@ param_value_array_validate (GParamSpec *pspec,
                  g_param_value_set_default (element_spec, element);
                  changed++;
                }
-             /* validate array value against element_spec */
-             changed += g_param_value_validate (element_spec, element);
+              else
+                {
+                 /* validate array value against element_spec */
+                 changed += g_param_value_validate (element_spec, element);
+                }
            }
        }
     }
@@ -2092,7 +2095,10 @@ g_param_spec_enum (const gchar *name,
                                 blurb,
                                 flags);
   if (espec == NULL)
-    return NULL;
+    {
+      g_type_class_unref (enum_class);
+      return NULL;
+    }
   
   espec->enum_class = enum_class;
   espec->default_value = default_value;
@@ -2140,7 +2146,10 @@ g_param_spec_flags (const gchar *name,
                                 blurb,
                                 flags);
   if (fspec == NULL)
-    return NULL;
+    {
+      g_type_class_unref (flags_class);
+      return NULL;
+    }
   
   fspec->flags_class = flags_class;
   fspec->default_value = default_value;
index 0309f9b..d0e4d59 100644 (file)
@@ -1150,7 +1150,7 @@ GParamSpec*       g_param_spec_variant     (const gchar        *name,
 #    else /* !GOBJECT_STATIC_COMPILATION */
 #      ifdef GOBJECT_COMPILATION
 #        ifdef DLL_EXPORT
-#          define GOBJECT_VAR __declspec(dllexport)
+#          define GOBJECT_VAR extern __declspec(dllexport)
 #        else /* !DLL_EXPORT */
 #          define GOBJECT_VAR extern
 #        endif /* !DLL_EXPORT */
index 77d8f21..45effa9 100644 (file)
  * detail part of the signal specification upon connection) serves as a
  * wildcard and matches any detail argument passed in to emission.
  *
+ * While the @detail argument is typically used to pass an object property name
+ * (as with #GObject::notify), no specific format is mandated for the detail
+ * string, other than that it must be non-empty.
+ *
  * ## Memory management of signal handlers # {#signal-memory-management}
  *
  * If you are connecting handlers to signals and using a #GObject instance as
@@ -145,8 +149,8 @@ typedef enum
 
 
 /* --- prototypes --- */
-static inline guint            signal_id_lookup        (GQuark           quark,
-                                                        GType            itype);
+static inline guint   signal_id_lookup  (const gchar *name,
+                                         GType        itype);
 static       void              signal_destroy_R        (SignalNode      *signal_node);
 static inline HandlerList*     handler_list_ensure     (guint            signal_id,
                                                         gpointer         instance);
@@ -340,14 +344,68 @@ LOOKUP_SIGNAL_NODE (guint signal_id)
 
 
 /* --- functions --- */
+/* @key must have already been validated with is_valid()
+ * Modifies @key in place. */
+static void
+canonicalize_key (gchar *key)
+{
+  gchar *p;
+
+  for (p = key; *p != 0; p++)
+    {
+      gchar c = *p;
+
+      if (c == '_')
+        *p = '-';
+    }
+}
+
+/* @key must have already been validated with is_valid() */
+static gboolean
+is_canonical (const gchar *key)
+{
+  return (strchr (key, '_') == NULL);
+}
+
+static gboolean
+is_valid_signal_name (const gchar *key)
+{
+  const gchar *p;
+
+  /* FIXME: We allow this, against our own documentation (the leading `-` is
+   * invalid), because GTK has historically used this. */
+  if (g_str_equal (key, "-gtk-private-changed"))
+    return TRUE;
+
+  /* First character must be a letter. */
+  if ((key[0] < 'A' || key[0] > 'Z') &&
+      (key[0] < 'a' || key[0] > 'z'))
+    return FALSE;
+
+  for (p = key; *p != 0; p++)
+    {
+      const gchar c = *p;
+
+      if (c != '-' && c != '_' &&
+          (c < '0' || c > '9') &&
+          (c < 'A' || c > 'Z') &&
+          (c < 'a' || c > 'z'))
+        return FALSE;
+    }
+
+  return TRUE;
+}
+
 static inline guint
-signal_id_lookup (GQuark quark,
-                 GType  itype)
+signal_id_lookup (const gchar *name,
+                  GType  itype)
 {
+  GQuark quark;
   GType *ifaces, type = itype;
   SignalKey key;
   guint n_ifaces;
 
+  quark = g_quark_try_string (name);
   key.quark = quark;
 
   /* try looking up signals for this type and its ancestors */
@@ -381,7 +439,22 @@ signal_id_lookup (GQuark quark,
        }
     }
   g_free (ifaces);
-  
+
+  /* If the @name is non-canonical, try again. This is the slow path — people
+   * should use canonical names in their queries if they want performance. */
+  if (!is_canonical (name))
+    {
+      guint signal_id;
+      gchar *name_copy = g_strdup (name);
+      canonicalize_key (name_copy);
+
+      signal_id = signal_id_lookup (name_copy, itype);
+
+      g_free (name_copy);
+
+      return signal_id;
+    }
+
   return 0;
 }
 
@@ -711,7 +784,7 @@ handler_insert (guint    signal_id,
   HandlerList *hlist;
   
   g_assert (handler->prev == NULL && handler->next == NULL); /* paranoid */
-  
+
   hlist = handler_list_ensure (signal_id, instance);
   if (!hlist->handlers)
     {
@@ -1080,7 +1153,7 @@ signal_parse_name (const gchar *name,
   
   if (!colon)
     {
-      signal_id = signal_id_lookup (g_quark_try_string (name), itype);
+      signal_id = signal_id_lookup (name, itype);
       if (signal_id && detail_p)
        *detail_p = 0;
     }
@@ -1089,11 +1162,14 @@ signal_parse_name (const gchar *name,
       gchar buffer[32];
       guint l = colon - name;
       
+      if (colon[2] == '\0')
+        return 0;
+
       if (l < 32)
        {
          memcpy (buffer, name, l);
          buffer[l] = 0;
-         signal_id = signal_id_lookup (g_quark_try_string (buffer), itype);
+         signal_id = signal_id_lookup (buffer, itype);
        }
       else
        {
@@ -1101,12 +1177,12 @@ signal_parse_name (const gchar *name,
          
          memcpy (signal, name, l);
          signal[l] = 0;
-         signal_id = signal_id_lookup (g_quark_try_string (signal), itype);
+         signal_id = signal_id_lookup (signal, itype);
          g_free (signal);
        }
       
       if (signal_id && detail_p)
-       *detail_p = colon[2] ? (force_quark ? g_quark_from_string : g_quark_try_string) (colon + 2) : 0;
+        *detail_p = (force_quark ? g_quark_from_string : g_quark_try_string) (colon + 2);
     }
   else
     signal_id = 0;
@@ -1224,6 +1300,10 @@ g_signal_stop_emission_by_name (gpointer     instance,
  *
  * Also tries the ancestors of the given type.
  *
+ * The type class passed as @itype must already have been instantiated (for
+ * example, using g_type_class_ref()) for this function to work, as signals are
+ * always installed during class initialization.
+ *
  * See g_signal_new() for details on allowed signal names.
  *
  * Returns: the signal's identifying number, or 0 if no signal was found.
@@ -1237,7 +1317,7 @@ g_signal_lookup (const gchar *name,
   g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), 0);
   
   SIGNAL_LOCK ();
-  signal_id = signal_id_lookup (g_quark_try_string (name), itype);
+  signal_id = signal_id_lookup (name, itype);
   SIGNAL_UNLOCK ();
   if (!signal_id)
     {
@@ -1245,12 +1325,9 @@ g_signal_lookup (const gchar *name,
       if (!g_type_name (itype))
        g_warning (G_STRLOC ": unable to look up signal \"%s\" for invalid type id '%"G_GSIZE_FORMAT"'",
                   name, itype);
-      else if (!G_TYPE_IS_INSTANTIATABLE (itype))
-       g_warning (G_STRLOC ": unable to look up signal \"%s\" for non instantiatable type '%s'",
-                  name, g_type_name (itype));
-      else if (!g_type_class_peek (itype))
-       g_warning (G_STRLOC ": unable to look up signal \"%s\" of unloaded type '%s'",
-                  name, g_type_name (itype));
+      else if (!is_valid_signal_name (name))
+        g_warning (G_STRLOC ": unable to look up invalid signal name \"%s\" on type '%s'",
+                   name, g_type_name (itype));
     }
   
   return signal_id;
@@ -1287,13 +1364,7 @@ g_signal_list_ids (GType  itype,
   for (i = 0; i < n_nodes; i++)
     if (keys[i].itype == itype)
       {
-       const gchar *name = g_quark_to_string (keys[i].quark);
-       
-       /* Signal names with "_" in them are aliases to the same
-        * name with "-" instead of "_".
-        */
-       if (!strchr (name, '_'))
-         g_array_append_val (result, keys[i].signal_id);
+        g_array_append_val (result, keys[i].signal_id);
       }
   *n_ids = result->len;
   SIGNAL_UNLOCK ();
@@ -1399,12 +1470,14 @@ g_signal_query (guint         signal_id,
  * Creates a new signal. (This is usually done in the class initializer.)
  *
  * A signal name consists of segments consisting of ASCII letters and
- * digits, separated by either the '-' or '_' character. The first
+ * digits, separated by either the `-` or `_` character. The first
  * character of a signal name must be a letter. Names which violate these
- * rules lead to undefined behaviour of the GSignal system.
+ * rules lead to undefined behaviour. These are the same rules as for property
+ * naming (see g_param_spec_internal()).
  *
  * When registering a signal and looking up a signal, either separator can
- * be used, but they cannot be mixed.
+ * be used, but they cannot be mixed. Using `-` is considerably more efficient.
+ * Using `_` is discouraged.
  *
  * If 0 is used for @class_offset subclasses cannot override the class handler
  * in their class_init method by doing super_class->signal_handler = my_signal_handler.
@@ -1630,7 +1703,8 @@ g_signal_newv (const gchar       *signal_name,
                guint              n_params,
                GType            *param_types)
 {
-  gchar *name;
+  const gchar *name;
+  gchar *signal_name_copy = NULL;
   guint signal_id, i;
   SignalNode *node;
   GSignalCMarshaller builtin_c_marshaller;
@@ -1638,6 +1712,7 @@ g_signal_newv (const gchar       *signal_name,
   GSignalCVaMarshaller va_marshaller;
   
   g_return_val_if_fail (signal_name != NULL, 0);
+  g_return_val_if_fail (is_valid_signal_name (signal_name), 0);
   g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), 0);
   if (n_params)
     g_return_val_if_fail (param_types != NULL, 0);
@@ -1647,12 +1722,20 @@ g_signal_newv (const gchar       *signal_name,
   if (!accumulator)
     g_return_val_if_fail (accu_data == NULL, 0);
 
-  name = g_strdup (signal_name);
-  g_strdelimit (name, G_STR_DELIMITERS ":^", '_');  /* FIXME do character checks like for types */
+  if (!is_canonical (signal_name))
+    {
+      signal_name_copy = g_strdup (signal_name);
+      canonicalize_key (signal_name_copy);
+      name = signal_name_copy;
+    }
+  else
+    {
+      name = signal_name;
+    }
   
   SIGNAL_LOCK ();
   
-  signal_id = signal_id_lookup (g_quark_try_string (name), itype);
+  signal_id = signal_id_lookup (name, itype);
   node = LOOKUP_SIGNAL_NODE (signal_id);
   if (node && !node->destroyed)
     {
@@ -1660,7 +1743,7 @@ g_signal_newv (const gchar       *signal_name,
                  name,
                  type_debug_name (node->itype),
                  G_TYPE_IS_INTERFACE (node->itype) ? "interface" : "class ancestry");
-      g_free (name);
+      g_free (signal_name_copy);
       SIGNAL_UNLOCK ();
       return 0;
     }
@@ -1670,7 +1753,7 @@ g_signal_newv (const gchar       *signal_name,
                  name,
                  type_debug_name (itype),
                  type_debug_name (node->itype));
-      g_free (name);
+      g_free (signal_name_copy);
       SIGNAL_UNLOCK ();
       return 0;
     }
@@ -1679,7 +1762,7 @@ g_signal_newv (const gchar       *signal_name,
       {
        g_warning (G_STRLOC ": parameter %d of type '%s' for signal \"%s::%s\" is not a value type",
                   i + 1, type_debug_name (param_types[i]), type_debug_name (itype), name);
-       g_free (name);
+       g_free (signal_name_copy);
        SIGNAL_UNLOCK ();
        return 0;
       }
@@ -1687,7 +1770,7 @@ g_signal_newv (const gchar       *signal_name,
     {
       g_warning (G_STRLOC ": return value of type '%s' for signal \"%s::%s\" is not a value type",
                 type_debug_name (return_type), type_debug_name (itype), name);
-      g_free (name);
+      g_free (signal_name_copy);
       SIGNAL_UNLOCK ();
       return 0;
     }
@@ -1696,7 +1779,7 @@ g_signal_newv (const gchar       *signal_name,
     {
       g_warning (G_STRLOC ": signal \"%s::%s\" has return type '%s' and is only G_SIGNAL_RUN_FIRST",
                 type_debug_name (itype), name, type_debug_name (return_type));
-      g_free (name);
+      g_free (signal_name_copy);
       SIGNAL_UNLOCK ();
       return 0;
     }
@@ -1712,12 +1795,8 @@ g_signal_newv (const gchar       *signal_name,
       g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes);
       g_signal_nodes[signal_id] = node;
       node->itype = itype;
-      node->name = name;
       key.itype = itype;
-      key.quark = g_quark_from_string (node->name);
       key.signal_id = signal_id;
-      g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key);
-      g_strdelimit (name, "_", '-');
       node->name = g_intern_string (name);
       key.quark = g_quark_from_string (name);
       g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key);
@@ -1805,7 +1884,7 @@ g_signal_newv (const gchar       *signal_name,
 
   SIGNAL_UNLOCK ();
 
-  g_free (name);
+  g_free (signal_name_copy);
 
   return signal_id;
 }
@@ -2212,7 +2291,7 @@ g_signal_chain_from_overridden_handler (gpointer instance,
               g_free (error);
 
               /* we purposely leak the value here, it might not be
-               * in a sane state if an error condition occoured
+               * in a correct state if an error condition occurred
                */
               while (i--)
                 g_value_unset (param_values + i);
@@ -2268,7 +2347,7 @@ g_signal_chain_from_overridden_handler (gpointer instance,
               g_free (error);
 
               /* we purposely leak the value here, it might not be
-               * in a sane state if an error condition occurred
+               * in a correct state if an error condition occurred
                */
             }
         }
@@ -2345,7 +2424,10 @@ g_signal_connect_closure_by_id (gpointer  instance,
       else
        {
          Handler *handler = handler_new (signal_id, instance, after);
-         
+
+          if (G_TYPE_IS_OBJECT (node->itype))
+            _g_object_set_has_signal_handler ((GObject *)instance);
+
          handler_seq_no = handler->sequential_number;
          handler->detail = detail;
          handler->closure = g_closure_ref (closure);
@@ -2410,6 +2492,9 @@ g_signal_connect_closure (gpointer     instance,
        {
          Handler *handler = handler_new (signal_id, instance, after);
 
+          if (G_TYPE_IS_OBJECT (node->itype))
+            _g_object_set_has_signal_handler ((GObject *)instance);
+
          handler_seq_no = handler->sequential_number;
          handler->detail = detail;
          handler->closure = g_closure_ref (closure);
@@ -2511,6 +2596,9 @@ g_signal_connect_data (gpointer       instance,
        {
          Handler *handler = handler_new (signal_id, instance, after);
 
+          if (G_TYPE_IS_OBJECT (node->itype))
+            _g_object_set_has_signal_handler ((GObject *)instance);
+
          handler_seq_no = handler->sequential_number;
          handler->detail = detail;
          handler->closure = g_closure_ref ((swapped ? g_cclosure_new_swap : g_cclosure_new) (c_handler, data, destroy_data));
@@ -3121,7 +3209,14 @@ g_signal_emitv (const GValue *instance_and_params,
       (node->single_va_closure == SINGLE_VA_CLOSURE_EMPTY_MAGIC ||
        _g_closure_is_void (node->single_va_closure, instance)))
     {
-      HandlerList* hlist = handler_list_lookup (node->signal_id, instance);
+      HandlerList* hlist;
+
+      /* single_va_closure is only true for GObjects, so fast path if no handler ever connected to the signal */
+      if (_g_object_has_signal_handler ((GObject *)instance))
+        hlist = handler_list_lookup (node->signal_id, instance);
+      else
+        hlist = NULL;
+
       if (hlist == NULL || hlist->handlers == NULL)
        {
          /* nothing to do to emit this signal */
@@ -3204,7 +3299,7 @@ g_signal_emit_valist (gpointer instance,
 
   if (node->single_va_closure != NULL)
     {
-      HandlerList* hlist = handler_list_lookup (node->signal_id, instance);
+      HandlerList* hlist;
       Handler *fastpath_handler = NULL;
       Handler *l;
       GClosure *closure = NULL;
@@ -3226,6 +3321,12 @@ g_signal_emit_valist (gpointer instance,
            fastpath = FALSE;
        }
 
+      /* single_va_closure is only true for GObjects, so fast path if no handler ever connected to the signal */
+      if (_g_object_has_signal_handler ((GObject *)instance))
+        hlist = handler_list_lookup (node->signal_id, instance);
+      else
+        hlist = NULL;
+
       for (l = hlist ? hlist->handlers : NULL; fastpath && l != NULL; l = l->next)
        {
          if (!l->block_count &&
@@ -3345,7 +3446,7 @@ g_signal_emit_valist (gpointer instance,
                  g_warning ("%s: %s", G_STRLOC, error);
                  g_free (error);
                  /* we purposely leak the value here, it might not be
-                  * in a sane state if an error condition occurred
+                  * in a correct state if an error condition occurred
                   */
                }
            }
@@ -3382,7 +3483,7 @@ g_signal_emit_valist (gpointer instance,
          g_free (error);
 
          /* we purposely leak the value here, it might not be
-          * in a sane state if an error condition occoured
+          * in a correct state if an error condition occurred
           */
          while (i--)
            g_value_unset (param_values + i);
@@ -3418,7 +3519,7 @@ g_signal_emit_valist (gpointer instance,
          g_free (error);
          
          /* we purposely leak the value here, it might not be
-          * in a sane state if an error condition occurred
+          * in a correct state if an error condition occurred
           */
        }
     }
index a79b9f6..59f94d5 100644 (file)
@@ -160,11 +160,11 @@ typedef enum
 /**
  * GSignalMatchType:
  * @G_SIGNAL_MATCH_ID: The signal id must be equal.
- * @G_SIGNAL_MATCH_DETAIL: The signal detail be equal.
+ * @G_SIGNAL_MATCH_DETAIL: The signal detail must be equal.
  * @G_SIGNAL_MATCH_CLOSURE: The closure must be the same.
  * @G_SIGNAL_MATCH_FUNC: The C closure callback must be the same.
  * @G_SIGNAL_MATCH_DATA: The closure data must be the same.
- * @G_SIGNAL_MATCH_UNBLOCKED: Only unblocked signals may matched.
+ * @G_SIGNAL_MATCH_UNBLOCKED: Only unblocked signals may be matched.
  * 
  * The match types specify what g_signal_handlers_block_matched(),
  * g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched()
index 230dba0..2e0afdd 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "gboxed.h"
 #include "gclosure.h"
+#include "gobject.h"
 
 /*< private >
  * GOBJECT_IF_DEBUG:
@@ -92,6 +93,9 @@ void        _g_closure_invoke_va (GClosure       *closure,
                                  int             n_params,
                                  GType          *param_types);
 
+gboolean    _g_object_has_signal_handler     (GObject     *object);
+void        _g_object_set_has_signal_handler (GObject     *object);
+
 /**
  * _G_DEFINE_TYPE_EXTENDED_WITH_PRELUDE:
  *
index 7d37894..b5ef2d1 100644 (file)
@@ -2825,7 +2825,7 @@ g_type_register_dynamic (GType        parent_type,
  * @info: #GInterfaceInfo structure for this
  *        (@instance_type, @interface_type) combination
  *
- * Adds the static @interface_type to @instantiable_type.
+ * Adds @interface_type to the static @instantiable_type.
  * The information contained in the #GInterfaceInfo structure
  * pointed to by @info is used to manage the relationship.
  */
@@ -2861,7 +2861,7 @@ g_type_add_interface_static (GType                 instance_type,
  * @interface_type: #GType value of an interface type
  * @plugin: #GTypePlugin structure to retrieve the #GInterfaceInfo from
  *
- * Adds the dynamic @interface_type to @instantiable_type. The information
+ * Adds @interface_type to the dynamic @instantiable_type. The information
  * contained in the #GTypePlugin structure pointed to by @plugin
  * is used to manage the relationship.
  */
index d9e5d11..479b405 100644 (file)
@@ -1406,10 +1406,11 @@ guint     g_type_get_type_registration_serial (void);
   typedef struct { ParentName##Class parent_class; } ModuleObjName##Class;                               \
                                                                                                          \
   _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName)                                               \
+  G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModuleObjName##Class, g_type_class_unref)                               \
                                                                                                          \
-  static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                                     \
+  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
     return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
-  static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                                         \
+  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
     return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
   G_GNUC_END_IGNORE_DEPRECATIONS
 
@@ -1497,16 +1498,17 @@ guint     g_type_get_type_registration_serial (void);
   struct _##ModuleObjName { ParentName parent_instance; };                                               \
                                                                                                          \
   _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName)                                               \
+  G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModuleObjName##Class, g_type_class_unref)                               \
                                                                                                          \
-  static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                                     \
+  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
     return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
-  static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {                      \
+  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
     return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
-  static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                                         \
+  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
     return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
-  static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) {                                 \
+  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) {                   \
     return G_TYPE_CHECK_CLASS_TYPE (ptr, module_obj_name##_get_type ()); }                               \
-  static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) {                  \
+  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) {    \
     return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }       \
   G_GNUC_END_IGNORE_DEPRECATIONS
 
@@ -1576,11 +1578,11 @@ guint     g_type_get_type_registration_serial (void);
                                                                                                            \
   _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, PrerequisiteName)                                           \
                                                                                                            \
-  static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                                       \
+  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                         \
     return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }               \
-  static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                                           \
+  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                             \
     return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                              \
-  static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) {                \
+  G_GNUC_UNUSED static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) {  \
     return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \
   G_GNUC_END_IGNORE_DEPRECATIONS
 
index 6d10f61..468da2e 100644 (file)
@@ -376,7 +376,7 @@ g_value_set_instance (GValue  *value,
       g_free (error_msg);
       
       /* we purposely leak the value here, it might not be
-       * in a sane state if an error condition occoured
+       * in a correct state if an error condition occurred
        */
       value_meminit (value, g_type);
       value_table->value_init (value);
@@ -440,7 +440,7 @@ g_value_init_from_instance (GValue  *value,
           g_free (error_msg);
 
           /* we purposely leak the value here, it might not be
-           * in a sane state if an error condition occoured
+           * in a correct state if an error condition occurred
            */
           value_meminit (value, g_type);
           value_table->value_init (value);
index cf7687d..ec3c89e 100644 (file)
@@ -29,6 +29,18 @@ struct _TestAutoCleanupBaseClass {
   GObjectClass parent_class;
 };
 
+G_DEFINE_TYPE (TestAutoCleanupBase, test_base_auto_cleanup, G_TYPE_OBJECT)
+
+static void
+test_base_auto_cleanup_class_init (TestAutoCleanupBaseClass *class)
+{
+}
+
+static void
+test_base_auto_cleanup_init (TestAutoCleanupBase *tac)
+{
+}
+
 G_DECLARE_FINAL_TYPE (TestAutoCleanup, test_auto_cleanup, TEST, AUTO_CLEANUP, TestAutoCleanupBase)
 
 struct _TestAutoCleanup
@@ -65,6 +77,7 @@ test_autoptr (void)
 
   {
     g_autoptr (TestAutoCleanup) tac = tac_ptr;
+    g_assert_nonnull (tac);
   }
 #ifdef __GNUC__
   g_assert_null (tac_ptr);
@@ -113,6 +126,9 @@ test_autolist (void)
 
     l = g_list_prepend (l, tac1);
     l = g_list_prepend (l, tac2);
+
+    /* Squash warnings about dead stores */
+    (void) l;
   }
 
   /* Only assert if autoptr works */
@@ -192,6 +208,19 @@ test_autoqueue (void)
   g_assert_null (tac3);
 }
 
+static void
+test_autoclass (void)
+{
+  g_autoptr (TestAutoCleanupBaseClass) base_class_ptr = NULL;
+  g_autoptr (TestAutoCleanupClass) class_ptr = NULL;
+
+  base_class_ptr = g_type_class_ref (test_base_auto_cleanup_get_type ());
+  class_ptr = g_type_class_ref (test_auto_cleanup_get_type ());
+
+  g_assert_nonnull (base_class_ptr);
+  g_assert_nonnull (class_ptr);
+}
+
 int
 main (int argc, gchar *argv[])
 {
@@ -202,6 +231,7 @@ main (int argc, gchar *argv[])
   g_test_add_func ("/autoptr/autolist", test_autolist);
   g_test_add_func ("/autoptr/autoslist", test_autoslist);
   g_test_add_func ("/autoptr/autoqueue", test_autoqueue);
+  g_test_add_func ("/autoptr/autoclass", test_autoclass);
 
   return g_test_run ();
 }
index 019fb28..1d3ead4 100644 (file)
@@ -8,7 +8,7 @@ typedef struct _BindingSource
 
   gint foo;
   gint bar;
-  gdouble value;
+  gdouble double_value;
   gboolean toggle;
 } BindingSource;
 
@@ -23,7 +23,7 @@ enum
 
   PROP_SOURCE_FOO,
   PROP_SOURCE_BAR,
-  PROP_SOURCE_VALUE,
+  PROP_SOURCE_DOUBLE_VALUE,
   PROP_SOURCE_TOGGLE
 };
 
@@ -48,8 +48,8 @@ binding_source_set_property (GObject      *gobject,
       source->bar = g_value_get_int (value);
       break;
 
-    case PROP_SOURCE_VALUE:
-      source->value = g_value_get_double (value);
+    case PROP_SOURCE_DOUBLE_VALUE:
+      source->double_value = g_value_get_double (value);
       break;
 
     case PROP_SOURCE_TOGGLE:
@@ -79,8 +79,8 @@ binding_source_get_property (GObject    *gobject,
       g_value_set_int (value, source->bar);
       break;
 
-    case PROP_SOURCE_VALUE:
-      g_value_set_double (value, source->value);
+    case PROP_SOURCE_DOUBLE_VALUE:
+      g_value_set_double (value, source->double_value);
       break;
 
     case PROP_SOURCE_TOGGLE:
@@ -110,8 +110,8 @@ binding_source_class_init (BindingSourceClass *klass)
                                                      -1, 100,
                                                      0,
                                                      G_PARAM_READWRITE));
-  g_object_class_install_property (gobject_class, PROP_SOURCE_VALUE,
-                                   g_param_spec_double ("value", "Value", "Value",
+  g_object_class_install_property (gobject_class, PROP_SOURCE_DOUBLE_VALUE,
+                                   g_param_spec_double ("double-value", "Value", "Value",
                                                         -100.0, 200.0,
                                                         0.0,
                                                         G_PARAM_READWRITE));
@@ -131,7 +131,7 @@ typedef struct _BindingTarget
   GObject parent_instance;
 
   gint bar;
-  gdouble value;
+  gdouble double_value;
   gboolean toggle;
 } BindingTarget;
 
@@ -145,7 +145,7 @@ enum
   PROP_TARGET_0,
 
   PROP_TARGET_BAR,
-  PROP_TARGET_VALUE,
+  PROP_TARGET_DOUBLE_VALUE,
   PROP_TARGET_TOGGLE
 };
 
@@ -166,8 +166,8 @@ binding_target_set_property (GObject      *gobject,
       target->bar = g_value_get_int (value);
       break;
 
-    case PROP_TARGET_VALUE:
-      target->value = g_value_get_double (value);
+    case PROP_TARGET_DOUBLE_VALUE:
+      target->double_value = g_value_get_double (value);
       break;
 
     case PROP_TARGET_TOGGLE:
@@ -193,8 +193,8 @@ binding_target_get_property (GObject    *gobject,
       g_value_set_int (value, target->bar);
       break;
 
-    case PROP_TARGET_VALUE:
-      g_value_set_double (value, target->value);
+    case PROP_TARGET_DOUBLE_VALUE:
+      g_value_set_double (value, target->double_value);
       break;
 
     case PROP_TARGET_TOGGLE:
@@ -219,8 +219,8 @@ binding_target_class_init (BindingTargetClass *klass)
                                                      -1, 100,
                                                      0,
                                                      G_PARAM_READWRITE));
-  g_object_class_install_property (gobject_class, PROP_TARGET_VALUE,
-                                   g_param_spec_double ("value", "Value", "Value",
+  g_object_class_install_property (gobject_class, PROP_TARGET_DOUBLE_VALUE,
+                                   g_param_spec_double ("double-value", "Value", "Value",
                                                         -100.0, 200.0,
                                                         0.0,
                                                         G_PARAM_READWRITE));
@@ -243,8 +243,8 @@ celsius_to_fahrenheit (GBinding     *binding,
 {
   gdouble celsius, fahrenheit;
 
-  g_assert (G_VALUE_HOLDS (from_value, G_TYPE_DOUBLE));
-  g_assert (G_VALUE_HOLDS (to_value, G_TYPE_DOUBLE));
+  g_assert_true (G_VALUE_HOLDS (from_value, G_TYPE_DOUBLE));
+  g_assert_true (G_VALUE_HOLDS (to_value, G_TYPE_DOUBLE));
 
   celsius = g_value_get_double (from_value);
   fahrenheit = (9 * celsius / 5) + 32.0;
@@ -265,8 +265,8 @@ fahrenheit_to_celsius (GBinding     *binding,
 {
   gdouble celsius, fahrenheit;
 
-  g_assert (G_VALUE_HOLDS (from_value, G_TYPE_DOUBLE));
-  g_assert (G_VALUE_HOLDS (to_value, G_TYPE_DOUBLE));
+  g_assert_true (G_VALUE_HOLDS (from_value, G_TYPE_DOUBLE));
+  g_assert_true (G_VALUE_HOLDS (to_value, G_TYPE_DOUBLE));
 
   fahrenheit = g_value_get_double (from_value);
   celsius = 5 * (fahrenheit - 32.0) / 9;
@@ -291,8 +291,8 @@ binding_default (void)
                                     G_BINDING_DEFAULT);
 
   g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
-  g_assert ((BindingSource *) g_binding_get_source (binding) == source);
-  g_assert ((BindingTarget *) g_binding_get_target (binding) == target);
+  g_assert_true ((BindingSource *) g_binding_get_source (binding) == source);
+  g_assert_true ((BindingTarget *) g_binding_get_target (binding) == target);
   g_assert_cmpstr (g_binding_get_source_property (binding), ==, "foo");
   g_assert_cmpstr (g_binding_get_target_property (binding), ==, "bar");
   g_assert_cmpint (g_binding_get_flags (binding), ==, G_BINDING_DEFAULT);
@@ -310,7 +310,38 @@ binding_default (void)
 
   g_object_unref (source);
   g_object_unref (target);
-  g_assert (binding == NULL);
+  g_assert_null (binding);
+}
+
+static void
+binding_canonicalisation (void)
+{
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+  GBinding *binding;
+
+  g_test_summary ("Test that bindings set up with non-canonical property names work");
+
+  binding = g_object_bind_property (source, "double_value",
+                                    target, "double_value",
+                                    G_BINDING_DEFAULT);
+
+  g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
+  g_assert_true ((BindingSource *) g_binding_get_source (binding) == source);
+  g_assert_true ((BindingTarget *) g_binding_get_target (binding) == target);
+  g_assert_cmpstr (g_binding_get_source_property (binding), ==, "double-value");
+  g_assert_cmpstr (g_binding_get_target_property (binding), ==, "double-value");
+  g_assert_cmpint (g_binding_get_flags (binding), ==, G_BINDING_DEFAULT);
+
+  g_object_set (source, "double-value", 24.0, NULL);
+  g_assert_cmpfloat (target->double_value, ==, source->double_value);
+
+  g_object_set (target, "double-value", 69.0, NULL);
+  g_assert_cmpfloat (source->double_value, !=, target->double_value);
+
+  g_object_unref (target);
+  g_object_unref (source);
+  g_assert_null (binding);
 }
 
 static void
@@ -338,7 +369,7 @@ binding_bidirectional (void)
 
   g_object_unref (source);
   g_object_unref (target);
-  g_assert (binding == NULL);
+  g_assert_null (binding);
 }
 
 static void
@@ -360,7 +391,7 @@ binding_transform_default (void)
   GBindingFlags flags;
 
   binding = g_object_bind_property (source, "foo",
-                                    target, "value",
+                                    target, "double-value",
                                     G_BINDING_BIDIRECTIONAL);
 
   g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
@@ -372,10 +403,10 @@ binding_transform_default (void)
                 "target-property", &trg_prop,
                 "flags", &flags,
                 NULL);
-  g_assert (src == source);
-  g_assert (trg == target);
+  g_assert_true (src == source);
+  g_assert_true (trg == target);
   g_assert_cmpstr (src_prop, ==, "foo");
-  g_assert_cmpstr (trg_prop, ==, "value");
+  g_assert_cmpstr (trg_prop, ==, "double-value");
   g_assert_cmpint (flags, ==, G_BINDING_BIDIRECTIONAL);
   g_object_unref (src);
   g_object_unref (trg);
@@ -383,14 +414,14 @@ binding_transform_default (void)
   g_free (trg_prop);
 
   g_object_set (source, "foo", 24, NULL);
-  g_assert_cmpfloat (target->value, ==, 24.0);
+  g_assert_cmpfloat (target->double_value, ==, 24.0);
 
-  g_object_set (target, "value", 69.0, NULL);
+  g_object_set (target, "double-value", 69.0, NULL);
   g_assert_cmpint (source->foo, ==, 69);
 
   g_object_unref (target);
   g_object_unref (source);
-  g_assert (binding == NULL);
+  g_assert_null (binding);
 }
 
 static void
@@ -401,23 +432,23 @@ binding_transform (void)
   GBinding *binding G_GNUC_UNUSED;
   gboolean unused_data = FALSE;
 
-  binding = g_object_bind_property_full (source, "value",
-                                         target, "value",
+  binding = g_object_bind_property_full (source, "double-value",
+                                         target, "double-value",
                                          G_BINDING_BIDIRECTIONAL,
                                          celsius_to_fahrenheit,
                                          fahrenheit_to_celsius,
                                          &unused_data, data_free);
 
-  g_object_set (source, "value", 24.0, NULL);
-  g_assert_cmpfloat (target->value, ==, ((9 * 24.0 / 5) + 32.0));
+  g_object_set (source, "double-value", 24.0, NULL);
+  g_assert_cmpfloat (target->double_value, ==, ((9 * 24.0 / 5) + 32.0));
 
-  g_object_set (target, "value", 69.0, NULL);
-  g_assert_cmpfloat (source->value, ==, (5 * (69.0 - 32.0) / 9));
+  g_object_set (target, "double-value", 69.0, NULL);
+  g_assert_cmpfloat (source->double_value, ==, (5 * (69.0 - 32.0) / 9));
 
   g_object_unref (source);
   g_object_unref (target);
 
-  g_assert (unused_data);
+  g_assert_true (unused_data);
 }
 
 static void
@@ -433,23 +464,23 @@ binding_transform_closure (void)
 
   f2c_clos = g_cclosure_new (G_CALLBACK (fahrenheit_to_celsius), &unused_data_2, (GClosureNotify) data_free);
 
-  binding = g_object_bind_property_with_closures (source, "value",
-                                                  target, "value",
+  binding = g_object_bind_property_with_closures (source, "double-value",
+                                                  target, "double-value",
                                                   G_BINDING_BIDIRECTIONAL,
                                                   c2f_clos,
                                                   f2c_clos);
 
-  g_object_set (source, "value", 24.0, NULL);
-  g_assert_cmpfloat (target->value, ==, ((9 * 24.0 / 5) + 32.0));
+  g_object_set (source, "double-value", 24.0, NULL);
+  g_assert_cmpfloat (target->double_value, ==, ((9 * 24.0 / 5) + 32.0));
 
-  g_object_set (target, "value", 69.0, NULL);
-  g_assert_cmpfloat (source->value, ==, (5 * (69.0 - 32.0) / 9));
+  g_object_set (target, "double-value", 69.0, NULL);
+  g_assert_cmpfloat (source->double_value, ==, (5 * (69.0 - 32.0) / 9));
 
   g_object_unref (source);
   g_object_unref (target);
 
-  g_assert (unused_data_1);
-  g_assert (unused_data_2);
+  g_assert_true (unused_data_1);
+  g_assert_true (unused_data_2);
 }
 
 static void
@@ -477,9 +508,9 @@ binding_chain (void)
 
   /* unbind A -> B and B -> C */
   g_object_unref (binding_1);
-  g_assert (binding_1 == NULL);
+  g_assert_null (binding_1);
   g_object_unref (binding_2);
-  g_assert (binding_2 == NULL);
+  g_assert_null (binding_2);
 
   /* bind A -> C directly */
   binding_2 = g_object_bind_property (a, "foo", c, "foo", G_BINDING_BIDIRECTIONAL);
@@ -544,16 +575,16 @@ binding_invert_boolean (void)
                                     target, "toggle",
                                     G_BINDING_BIDIRECTIONAL | G_BINDING_INVERT_BOOLEAN);
 
-  g_assert (source->toggle);
-  g_assert (!target->toggle);
+  g_assert_true (source->toggle);
+  g_assert_false (target->toggle);
 
   g_object_set (source, "toggle", FALSE, NULL);
-  g_assert (!source->toggle);
-  g_assert (target->toggle);
+  g_assert_false (source->toggle);
+  g_assert_true (target->toggle);
 
   g_object_set (target, "toggle", FALSE, NULL);
-  g_assert (source->toggle);
-  g_assert (!target->toggle);
+  g_assert_true (source->toggle);
+  g_assert_false (target->toggle);
 
   g_object_unref (binding);
   g_object_unref (source);
@@ -582,7 +613,7 @@ binding_same_object (void)
   g_assert_cmpint (source->bar, ==, 30);
 
   g_object_unref (source);
-  g_assert (binding == NULL);
+  g_assert_null (binding);
 }
 
 static void
@@ -604,7 +635,7 @@ binding_unbind (void)
   g_assert_cmpint (source->foo, !=, target->bar);
 
   g_binding_unbind (binding);
-  g_assert (binding == NULL);
+  g_assert_null (binding);
 
   g_object_set (source, "foo", 0, NULL);
   g_assert_cmpint (source->foo, !=, target->bar);
@@ -621,7 +652,7 @@ binding_unbind (void)
   g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
 
   g_binding_unbind (binding);
-  g_assert (binding == NULL);
+  g_assert_null (binding);
 
   g_object_unref (source);
 }
@@ -711,19 +742,19 @@ binding_fail (void)
   GBinding *binding;
 
   /* double -> boolean is not supported */
-  binding = g_object_bind_property (source, "value",
+  binding = g_object_bind_property (source, "double-value",
                                     target, "toggle",
                                     G_BINDING_DEFAULT);
   g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
 
   g_test_expect_message ("GLib-GObject", G_LOG_LEVEL_WARNING,
                          "*Unable to convert*double*boolean*");
-  g_object_set (source, "value", 1.0, NULL);
+  g_object_set (source, "double-value", 1.0, NULL);
   g_test_assert_expected_messages ();
 
   g_object_unref (source);
   g_object_unref (target);
-  g_assert (binding == NULL);
+  g_assert_null (binding);
 }
 
 int
@@ -734,6 +765,7 @@ main (int argc, char *argv[])
   g_test_bug_base ("https://gitlab.gnome.org/GNOME/glib/issues/");
 
   g_test_add_func ("/binding/default", binding_default);
+  g_test_add_func ("/binding/canonicalisation", binding_canonicalisation);
   g_test_add_func ("/binding/bidirectional", binding_bidirectional);
   g_test_add_func ("/binding/transform", binding_transform);
   g_test_add_func ("/binding/transform-default", binding_transform_default);
index 9c6a6e0..1d0ef4a 100644 (file)
@@ -50,6 +50,7 @@ gobject_tests = {
   'signals' : {
     'source' : ['signals.c', marshalers_h, marshalers_c],
   },
+  'testing' : {},
 }
 
 if cc.get_id() != 'msvc'
index 758289b..93c3f4b 100644 (file)
@@ -10,19 +10,19 @@ test_param_value (void)
   GValue value = G_VALUE_INIT;
 
   g_value_init (&value, G_TYPE_PARAM);
-  g_assert (G_VALUE_HOLDS_PARAM (&value));
+  g_assert_true (G_VALUE_HOLDS_PARAM (&value));
 
   p = g_param_spec_int ("my-int", "My Int", "Blurb", 0, 20, 10, G_PARAM_READWRITE);
 
   g_value_take_param (&value, p);
   p2 = g_value_get_param (&value);
-  g_assert (p2 == p);
+  g_assert_true (p2 == p);
 
   pp = g_param_spec_uint ("my-uint", "My UInt", "Blurb", 0, 10, 5, G_PARAM_READWRITE);
   g_value_set_param (&value, pp);
 
   p2 = g_value_dup_param (&value);
-  g_assert (p2 == pp); /* param specs use ref/unref for copy/free */
+  g_assert_true (p2 == pp); /* param specs use ref/unref for copy/free */
   g_param_spec_unref (p2);
 
   g_value_unset (&value);
@@ -57,7 +57,7 @@ test_param_qdata (void)
   g_assert_cmpint (destroy_count, ==, 1);
   g_assert_cmpstr (g_param_spec_steal_qdata (p, q), ==, "blabla");
   g_assert_cmpint (destroy_count, ==, 1);
-  g_assert (g_param_spec_get_qdata (p, q) == NULL);
+  g_assert_null (g_param_spec_get_qdata (p, q));
 
   g_param_spec_ref_sink (p);
 
@@ -74,12 +74,12 @@ test_param_validate (void)
 
   g_value_init (&value, G_TYPE_INT);
   g_value_set_int (&value, 100);
-  g_assert (!g_param_value_defaults (p, &value));
-  g_assert (g_param_value_validate (p, &value));
+  g_assert_false (g_param_value_defaults (p, &value));
+  g_assert_true (g_param_value_validate (p, &value));
   g_assert_cmpint (g_value_get_int (&value), ==, 20);
 
   g_param_value_set_default (p, &value);
-  g_assert (g_param_value_defaults (p, &value));
+  g_assert_true (g_param_value_defaults (p, &value));
   g_assert_cmpint (g_value_get_int (&value), ==, 10);
 
   g_param_spec_unref (p);
@@ -91,9 +91,9 @@ test_param_strings (void)
   GParamSpec *p;
 
   /* test canonicalization */
-  p = g_param_spec_int ("my_int:bla", "My Int", "Blurb", 0, 20, 10, G_PARAM_READWRITE);
+  p = g_param_spec_int ("my_int", "My Int", "Blurb", 0, 20, 10, G_PARAM_READWRITE);
 
-  g_assert_cmpstr (g_param_spec_get_name (p), ==, "my-int-bla");
+  g_assert_cmpstr (g_param_spec_get_name (p), ==, "my-int");
   g_assert_cmpstr (g_param_spec_get_nick (p), ==, "My Int");
   g_assert_cmpstr (g_param_spec_get_blurb (p), ==, "Blurb");
 
@@ -104,12 +104,32 @@ test_param_strings (void)
 
   g_assert_cmpstr (g_param_spec_get_name (p), ==, "my-int");
   g_assert_cmpstr (g_param_spec_get_nick (p), ==, "my-int");
-  g_assert (g_param_spec_get_blurb (p) == NULL);
+  g_assert_null (g_param_spec_get_blurb (p));
 
   g_param_spec_unref (p);
 }
 
 static void
+test_param_invalid_name (gconstpointer test_data)
+{
+  const gchar *invalid_name = test_data;
+
+  g_test_summary ("Test that properties cannot be created with invalid names");
+
+  if (g_test_subprocess ())
+    {
+      GParamSpec *p;
+      p = g_param_spec_int (invalid_name, "My Int", "Blurb", 0, 20, 10, G_PARAM_READWRITE);
+      g_param_spec_unref (p);
+      return;
+    }
+
+  g_test_trap_subprocess (NULL, 0, 0);
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*CRITICAL*is_valid_property_name (name)*");
+}
+
+static void
 test_param_convert (void)
 {
   GParamSpec *p;
@@ -123,10 +143,10 @@ test_param_convert (void)
   g_value_init (&v2, G_TYPE_INT);
   g_value_set_int (&v2, -4);
 
-  g_assert (!g_param_value_convert (p, &v1, &v2, TRUE));
+  g_assert_false (g_param_value_convert (p, &v1, &v2, TRUE));
   g_assert_cmpint (g_value_get_int (&v2), ==, -4);
 
-  g_assert (g_param_value_convert (p, &v1, &v2, FALSE));
+  g_assert_true (g_param_value_convert (p, &v1, &v2, FALSE));
   g_assert_cmpint (g_value_get_int (&v2), ==, 20);
 
   g_param_spec_unref (p);
@@ -139,11 +159,11 @@ test_value_transform (void)
   GValue dest = G_VALUE_INIT;
 
 #define CHECK_INT_CONVERSION(type, getter, value)                       \
-  g_assert (g_value_type_transformable (G_TYPE_INT, type));             \
+  g_assert_true (g_value_type_transformable (G_TYPE_INT, type));        \
   g_value_init (&src, G_TYPE_INT);                                      \
   g_value_init (&dest, type);                                           \
   g_value_set_int (&src, value);                                        \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpint (g_value_get_##getter (&dest), ==, value);            \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -171,11 +191,11 @@ test_value_transform (void)
   CHECK_INT_CONVERSION(G_TYPE_DOUBLE, double, 12345678)
 
 #define CHECK_UINT_CONVERSION(type, getter, value)                      \
-  g_assert (g_value_type_transformable (G_TYPE_UINT, type));            \
+  g_assert_true (g_value_type_transformable (G_TYPE_UINT, type));       \
   g_value_init (&src, G_TYPE_UINT);                                     \
   g_value_init (&dest, type);                                           \
   g_value_set_uint (&src, value);                                       \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpuint (g_value_get_##getter (&dest), ==, value);           \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -196,11 +216,11 @@ test_value_transform (void)
   CHECK_UINT_CONVERSION(G_TYPE_DOUBLE, double, 12345678)
 
 #define CHECK_LONG_CONVERSION(type, getter, value)                      \
-  g_assert (g_value_type_transformable (G_TYPE_LONG, type));            \
+  g_assert_true (g_value_type_transformable (G_TYPE_LONG, type));       \
   g_value_init (&src, G_TYPE_LONG);                                     \
   g_value_init (&dest, type);                                           \
   g_value_set_long (&src, value);                                       \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpint (g_value_get_##getter (&dest), ==, value);            \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -221,11 +241,11 @@ test_value_transform (void)
   CHECK_LONG_CONVERSION(G_TYPE_DOUBLE, double, 12345678)
 
 #define CHECK_ULONG_CONVERSION(type, getter, value)                     \
-  g_assert (g_value_type_transformable (G_TYPE_ULONG, type));           \
+  g_assert_true (g_value_type_transformable (G_TYPE_ULONG, type));      \
   g_value_init (&src, G_TYPE_ULONG);                                    \
   g_value_init (&dest, type);                                           \
   g_value_set_ulong (&src, value);                                      \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpuint (g_value_get_##getter (&dest), ==, value);           \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -246,11 +266,11 @@ test_value_transform (void)
   CHECK_ULONG_CONVERSION(G_TYPE_DOUBLE, double, 12345678)
 
 #define CHECK_INT64_CONVERSION(type, getter, value)                     \
-  g_assert (g_value_type_transformable (G_TYPE_INT64, type));           \
+  g_assert_true (g_value_type_transformable (G_TYPE_INT64, type));      \
   g_value_init (&src, G_TYPE_INT64);                                    \
   g_value_init (&dest, type);                                           \
   g_value_set_int64 (&src, value);                                      \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpint (g_value_get_##getter (&dest), ==, value);            \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -271,11 +291,11 @@ test_value_transform (void)
   CHECK_INT64_CONVERSION(G_TYPE_DOUBLE, double, 12345678)
 
 #define CHECK_UINT64_CONVERSION(type, getter, value)                    \
-  g_assert (g_value_type_transformable (G_TYPE_UINT64, type));          \
+  g_assert_true (g_value_type_transformable (G_TYPE_UINT64, type));     \
   g_value_init (&src, G_TYPE_UINT64);                                   \
   g_value_init (&dest, type);                                           \
   g_value_set_uint64 (&src, value);                                     \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpuint (g_value_get_##getter (&dest), ==, value);           \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -296,11 +316,11 @@ test_value_transform (void)
   CHECK_UINT64_CONVERSION(G_TYPE_DOUBLE, double, 12345678)
 
 #define CHECK_FLOAT_CONVERSION(type, getter, value)                    \
-  g_assert (g_value_type_transformable (G_TYPE_FLOAT, type));          \
+  g_assert_true (g_value_type_transformable (G_TYPE_FLOAT, type));     \
   g_value_init (&src, G_TYPE_FLOAT);                                   \
   g_value_init (&dest, type);                                          \
   g_value_set_float (&src, value);                                     \
-  g_assert (g_value_transform (&src, &dest));                          \
+  g_assert_true (g_value_transform (&src, &dest));                     \
   g_assert_cmpfloat (g_value_get_##getter (&dest), ==, value);         \
   g_value_unset (&src);                                                \
   g_value_unset (&dest);
@@ -321,11 +341,11 @@ test_value_transform (void)
   CHECK_FLOAT_CONVERSION(G_TYPE_DOUBLE, double, 12345678)
 
 #define CHECK_DOUBLE_CONVERSION(type, getter, value)                    \
-  g_assert (g_value_type_transformable (G_TYPE_DOUBLE, type));          \
+  g_assert_true (g_value_type_transformable (G_TYPE_DOUBLE, type));     \
   g_value_init (&src, G_TYPE_DOUBLE);                                   \
   g_value_init (&dest, type);                                           \
   g_value_set_double (&src, value);                                     \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpfloat (g_value_get_##getter (&dest), ==, value);          \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -346,14 +366,14 @@ test_value_transform (void)
   CHECK_DOUBLE_CONVERSION(G_TYPE_DOUBLE, double, 12345678)
 
 #define CHECK_BOOLEAN_CONVERSION(type, setter, value)                   \
-  g_assert (g_value_type_transformable (type, G_TYPE_BOOLEAN));         \
+  g_assert_true (g_value_type_transformable (type, G_TYPE_BOOLEAN));    \
   g_value_init (&src, type);                                            \
   g_value_init (&dest, G_TYPE_BOOLEAN);                                 \
   g_value_set_##setter (&src, value);                                   \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpint (g_value_get_boolean (&dest), ==, TRUE);              \
   g_value_set_##setter (&src, 0);                                       \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpint (g_value_get_boolean (&dest), ==, FALSE);             \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -366,11 +386,11 @@ test_value_transform (void)
   CHECK_BOOLEAN_CONVERSION(G_TYPE_UINT64, uint64, 12345678)
 
 #define CHECK_STRING_CONVERSION(int_type, setter, int_value)            \
-  g_assert (g_value_type_transformable (int_type, G_TYPE_STRING));      \
+  g_assert_true (g_value_type_transformable (int_type, G_TYPE_STRING)); \
   g_value_init (&src, int_type);                                        \
   g_value_init (&dest, G_TYPE_STRING);                                  \
   g_value_set_##setter (&src, int_value);                               \
-  g_assert (g_value_transform (&src, &dest));                           \
+  g_assert_true (g_value_transform (&src, &dest));                      \
   g_assert_cmpstr (g_value_get_string (&dest), ==, #int_value);         \
   g_value_unset (&src);                                                 \
   g_value_unset (&dest);
@@ -384,12 +404,12 @@ test_value_transform (void)
   CHECK_STRING_CONVERSION(G_TYPE_FLOAT, float, 0.500000)
   CHECK_STRING_CONVERSION(G_TYPE_DOUBLE, double, -1.234567)
 
-  g_assert (!g_value_type_transformable (G_TYPE_STRING, G_TYPE_CHAR));
+  g_assert_false (g_value_type_transformable (G_TYPE_STRING, G_TYPE_CHAR));
   g_value_init (&src, G_TYPE_STRING);
   g_value_init (&dest, G_TYPE_CHAR);
   g_value_set_static_string (&src, "bla");
   g_value_set_schar (&dest, 'c');
-  g_assert (!g_value_transform (&src, &dest));
+  g_assert_false (g_value_transform (&src, &dest));
   g_assert_cmpint (g_value_get_schar (&dest), ==, 'c');
   g_value_unset (&src);
   g_value_unset (&dest);
@@ -757,7 +777,7 @@ test_param_implement (void)
               {
               case 0:
                 /* make sure the other table agrees */
-                g_assert (valid_impl_types[change_this_type * 16 + change_this_flag][use_this_type] == 0);
+                g_assert_cmpint (valid_impl_types[change_this_type * 16 + change_this_flag][use_this_type], ==, 0);
                 g_test_trap_assert_failed ();
                 g_test_trap_assert_stderr ("*Interface property does not exist*");
                 continue;
@@ -820,7 +840,7 @@ test_param_default (void)
   param = g_param_spec_int ("my-int", "My Int", "Blurb", 0, 20, 10, G_PARAM_READWRITE);
   def = g_param_spec_get_default_value (param);
 
-  g_assert (G_VALUE_HOLDS (def, G_TYPE_INT));
+  g_assert_true (G_VALUE_HOLDS (def, G_TYPE_INT));
   g_assert_cmpint (g_value_get_int (def), ==, 10);
 
   g_param_spec_unref (param);
@@ -836,6 +856,9 @@ main (int argc, char *argv[])
 
   g_test_add_func ("/param/value", test_param_value);
   g_test_add_func ("/param/strings", test_param_strings);
+  g_test_add_data_func ("/param/invalid-name/colon", "my_int:hello", test_param_invalid_name);
+  g_test_add_data_func ("/param/invalid-name/first-char", "7zip", test_param_invalid_name);
+  g_test_add_data_func ("/param/invalid-name/empty", "", test_param_invalid_name);
   g_test_add_func ("/param/qdata", test_param_qdata);
   g_test_add_func ("/param/validate", test_param_validate);
   g_test_add_func ("/param/convert", test_param_convert);
index 9508ee7..c6f4d51 100644 (file)
@@ -218,6 +218,35 @@ test_set_function (void)
 }
 
 static void
+test_set_derived_type (void)
+{
+  GBinding *obj = NULL;
+  GObject *o = NULL;
+  GBinding *b = NULL;
+
+  g_test_summary ("Check that g_set_object() doesn’t give strict aliasing "
+                  "warnings when used on types derived from GObject");
+
+  g_assert_false (g_set_object (&o, NULL));
+  g_assert_null (o);
+
+  g_assert_false (g_set_object (&b, NULL));
+  g_assert_null (b);
+
+  obj = g_object_new (my_object_get_type (), NULL);
+
+  g_assert_true (g_set_object (&o, G_OBJECT (obj)));
+  g_assert_true (o == G_OBJECT (obj));
+
+  g_assert_true (g_set_object (&b, obj));
+  g_assert_true (b == obj);
+
+  g_object_unref (obj);
+  g_clear_object (&b);
+  g_clear_object (&o);
+}
+
+static void
 toggle_cb (gpointer data, GObject *obj, gboolean is_last)
 {
   gboolean *b = data;
@@ -774,6 +803,7 @@ main (int argc, char **argv)
   g_test_add_func ("/object/clear-function", test_clear_function);
   g_test_add_func ("/object/set", test_set);
   g_test_add_func ("/object/set-function", test_set_function);
+  g_test_add_func ("/object/set/derived-type", test_set_derived_type);
   g_test_add_func ("/object/value", test_object_value);
   g_test_add_func ("/object/initially-unowned", test_initially_unowned);
   g_test_add_func ("/object/weak-pointer", test_weak_pointer);
index 44e3f62..ae8bd9d 100644 (file)
@@ -180,7 +180,16 @@ test_class_init (TestClass *klass)
                 NULL,
                 G_TYPE_NONE,
                 0);
-  simple2_id = g_signal_new ("simple-2",
+  g_signal_new ("simple-detailed",
+                G_TYPE_FROM_CLASS (klass),
+                G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+                0,
+                NULL, NULL,
+                NULL,
+                G_TYPE_NONE,
+                0);
+  /* Deliberately install this one in non-canonical form to check that’s handled correctly: */
+  simple2_id = g_signal_new ("simple_2",
                 G_TYPE_FROM_CLASS (klass),
                 G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE,
                 0,
@@ -455,16 +464,16 @@ test_variant_signal (void)
 
   v = g_variant_new_boolean (TRUE);
   g_variant_ref (v);
-  g_assert (g_variant_is_floating (v));
+  g_assert_true (g_variant_is_floating (v));
   g_signal_emit_by_name (test, "variant-changed-no-slot", v);
-  g_assert (!g_variant_is_floating (v));
+  g_assert_false (g_variant_is_floating (v));
   g_variant_unref (v);
 
   v = g_variant_new_boolean (TRUE);
   g_variant_ref (v);
-  g_assert (g_variant_is_floating (v));
+  g_assert_true (g_variant_is_floating (v));
   g_signal_emit_by_name (test, "variant-changed", v);
-  g_assert (!g_variant_is_floating (v));
+  g_assert_false (g_variant_is_floating (v));
   g_variant_unref (v);
 
   g_object_unref (test);
@@ -485,7 +494,7 @@ on_generic_marshaller_1 (Test *obj,
   g_assert_cmpint (v_uchar, ==, 43);
   g_assert_cmpint (v_int, ==, 4096);
   g_assert_cmpint (v_long, ==, 8192);
-  g_assert (v_pointer == NULL);
+  g_assert_null (v_pointer);
   g_assert_cmpfloat (v_double, >, 0.0);
   g_assert_cmpfloat (v_double, <, 1.0);
   g_assert_cmpfloat (v_float, >, 5.0);
@@ -754,7 +763,7 @@ custom_marshaller_callback (Test                  *test,
 {
   GSignalInvocationHint *ihint;
 
-  g_assert (hint != &dont_use_this);
+  g_assert_true (hint != &dont_use_this);
 
   ihint = g_signal_get_invocation_hint (test);
 
@@ -801,7 +810,7 @@ all_types_handler (Test *test, int i, gboolean b, char c, guchar uc, guint ui, g
   g_assert_cmpstr (str, ==, "Test");
   g_assert_cmpstr (g_param_spec_get_nick (param), ==, "nick");
   g_assert_cmpstr (g_bytes_get_data (bytes, NULL), ==, "Blah");
-  g_assert (ptr == &enum_type);
+  g_assert_true (ptr == &enum_type);
   g_assert_cmpuint (g_variant_get_uint16 (var), == , 99);
   g_assert_cmpint (i64, ==, G_MAXINT64 - 1234);
   g_assert_cmpuint (ui64, ==, G_MAXUINT64 - 123456);
@@ -810,7 +819,7 @@ all_types_handler (Test *test, int i, gboolean b, char c, guchar uc, guint ui, g
 static void
 all_types_handler_cb (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, MyEnum e, guint f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64, gpointer user_data)
 {
-  g_assert (user_data == &flags_type);
+  g_assert_true (user_data == &flags_type);
   all_types_handler (test, i, b, c, uc, ui, l, ul, e, f, fl, db, str, param, bytes, ptr, obj, var, i64, ui64);
 }
 
@@ -1064,6 +1073,7 @@ test_introspection (void)
   gint i;
   const gchar *names[] = {
     "simple",
+    "simple-detailed",
     "simple-2",
     "generic-marshaller-1",
     "generic-marshaller-2",
@@ -1091,15 +1101,15 @@ test_introspection (void)
   for (i = 0; i < n_ids; i++)
     {
       name = g_signal_name (ids[i]);
-      g_assert (in_set (name, names));
+      g_assert_true (in_set (name, names));
     }
 
   g_signal_query (simple_id, &query);
   g_assert_cmpuint (query.signal_id, ==, simple_id);
   g_assert_cmpstr (query.signal_name, ==, "simple");
-  g_assert (query.itype == test_get_type ());
-  g_assert (query.signal_flags == G_SIGNAL_RUN_LAST);
-  g_assert (query.return_type == G_TYPE_NONE);
+  g_assert_true (query.itype == test_get_type ());
+  g_assert_cmpint (query.signal_flags, ==, G_SIGNAL_RUN_LAST);
+  g_assert_cmpint (query.return_type, ==, G_TYPE_NONE);
   g_assert_cmpuint (query.n_params, ==, 0);
 
   g_free (ids);
@@ -1129,7 +1139,7 @@ test_block_handler (void)
 
   handler = g_signal_handler_find (test1, G_SIGNAL_MATCH_ID, simple_id, 0, NULL, NULL, NULL);
 
-  g_assert (handler == handler1);
+  g_assert_true (handler == handler1);
 
   g_assert_cmpint (count1, ==, 0);
   g_assert_cmpint (count2, ==, 0);
@@ -1238,7 +1248,7 @@ test_signal_disconnect_wrong_object (void)
   g_test_assert_expected_messages ();
 
   /* it's still connected */
-  g_assert (g_signal_handler_is_connected (object, signal_id));
+  g_assert_true (g_signal_handler_is_connected (object, signal_id));
 
   g_object_unref (object);
   g_object_unref (object2);
@@ -1276,6 +1286,172 @@ test_clear_signal_handler (void)
   g_object_unref (test_obj);
 }
 
+static void
+test_lookup (void)
+{
+  GTypeClass *test_class;
+  guint signal_id, saved_signal_id;
+
+  g_test_summary ("Test that g_signal_lookup() works with a variety of inputs.");
+
+  test_class = g_type_class_ref (test_get_type ());
+
+  signal_id = g_signal_lookup ("all-types", test_get_type ());
+  g_assert_cmpint (signal_id, !=, 0);
+
+  saved_signal_id = signal_id;
+
+  /* Try with a non-canonical name. */
+  signal_id = g_signal_lookup ("all_types", test_get_type ());
+  g_assert_cmpint (signal_id, ==, saved_signal_id);
+
+  /* Looking up a non-existent signal should return nothing. */
+  g_assert_cmpint (g_signal_lookup ("nope", test_get_type ()), ==, 0);
+
+  g_type_class_unref (test_class);
+}
+
+static void
+test_lookup_invalid (void)
+{
+  g_test_summary ("Test that g_signal_lookup() emits a warning if looking up an invalid signal name.");
+
+  if (g_test_subprocess ())
+    {
+      GTypeClass *test_class;
+      guint signal_id;
+
+      test_class = g_type_class_ref (test_get_type ());
+
+      signal_id = g_signal_lookup ("", test_get_type ());
+      g_assert_cmpint (signal_id, ==, 0);
+
+      g_type_class_unref (test_class);
+      return;
+    }
+
+  g_test_trap_subprocess (NULL, 0, 0);
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*WARNING*unable to look up invalid signal name*");
+}
+
+static void
+test_parse_name (void)
+{
+  GTypeClass *test_class;
+  guint signal_id, saved_signal_id;
+  gboolean retval;
+  GQuark detail, saved_detail;
+
+  g_test_summary ("Test that g_signal_parse_name() works with a variety of inputs.");
+
+  test_class = g_type_class_ref (test_get_type ());
+
+  /* Simple test. */
+  retval = g_signal_parse_name ("simple-detailed", test_get_type (), &signal_id, &detail, TRUE);
+  g_assert_true (retval);
+  g_assert_cmpint (signal_id, !=, 0);
+  g_assert_cmpint (detail, ==, 0);
+
+  saved_signal_id = signal_id;
+
+  /* Simple test with detail. */
+  retval = g_signal_parse_name ("simple-detailed::a-detail", test_get_type (), &signal_id, &detail, TRUE);
+  g_assert_true (retval);
+  g_assert_cmpint (signal_id, ==, saved_signal_id);
+  g_assert_cmpint (detail, !=, 0);
+
+  saved_detail = detail;
+
+  /* Simple test with the same detail again. */
+  retval = g_signal_parse_name ("simple-detailed::a-detail", test_get_type (), &signal_id, &detail, FALSE);
+  g_assert_true (retval);
+  g_assert_cmpint (signal_id, ==, saved_signal_id);
+  g_assert_cmpint (detail, ==, saved_detail);
+
+  /* Simple test with a new detail. */
+  retval = g_signal_parse_name ("simple-detailed::another-detail", test_get_type (), &signal_id, &detail, FALSE);
+  g_assert_true (retval);
+  g_assert_cmpint (signal_id, ==, saved_signal_id);
+  g_assert_cmpint (detail, ==, 0);  /* we didn’t force the quark */
+
+  /* Canonicalisation shouldn’t affect the results. */
+  retval = g_signal_parse_name ("simple_detailed::a-detail", test_get_type (), &signal_id, &detail, FALSE);
+  g_assert_true (retval);
+  g_assert_cmpint (signal_id, ==, saved_signal_id);
+  g_assert_cmpint (detail, ==, saved_detail);
+
+  /* Details don’t have to look like property names. */
+  retval = g_signal_parse_name ("simple-detailed::hello::world", test_get_type (), &signal_id, &detail, TRUE);
+  g_assert_true (retval);
+  g_assert_cmpint (signal_id, ==, saved_signal_id);
+  g_assert_cmpint (detail, !=, 0);
+
+  /* Trying to parse a detail for a signal which isn’t %G_SIGNAL_DETAILED should fail. */
+  retval = g_signal_parse_name ("all-types::a-detail", test_get_type (), &signal_id, &detail, FALSE);
+  g_assert_false (retval);
+
+  g_type_class_unref (test_class);
+}
+
+static void
+test_parse_name_invalid (void)
+{
+  GTypeClass *test_class;
+  gsize i;
+  guint signal_id;
+  GQuark detail;
+  const gchar *vectors[] =
+    {
+      "",
+      "7zip",
+      "invalid:signal",
+      "simple-detailed::",
+      "simple-detailed:",
+      ":",
+      "::",
+      ":valid-detail",
+      "::valid-detail",
+    };
+
+  g_test_summary ("Test that g_signal_parse_name() ignores a variety of invalid inputs.");
+
+  test_class = g_type_class_ref (test_get_type ());
+
+  for (i = 0; i < G_N_ELEMENTS (vectors); i++)
+    {
+      g_test_message ("Parser input: %s", vectors[i]);
+      g_assert_false (g_signal_parse_name (vectors[i], test_get_type (), &signal_id, &detail, TRUE));
+    }
+
+  g_type_class_unref (test_class);
+}
+
+static void
+test_signals_invalid_name (gconstpointer test_data)
+{
+  const gchar *signal_name = test_data;
+
+  g_test_summary ("Check that g_signal_new() rejects invalid signal names.");
+
+  if (g_test_subprocess ())
+    {
+      g_signal_new (signal_name,
+                    test_get_type (),
+                    G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE,
+                    0,
+                    NULL, NULL,
+                    NULL,
+                    G_TYPE_NONE,
+                    0);
+      return;
+    }
+
+  g_test_trap_subprocess (NULL, 0, 0);
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*CRITICAL*is_valid_signal_name (signal_name)*");
+}
+
 /* --- */
 
 int
@@ -1302,6 +1478,13 @@ main (int argc,
   g_test_add_func ("/gobject/signals/invocation-hint", test_invocation_hint);
   g_test_add_func ("/gobject/signals/test-disconnection-wrong-object", test_signal_disconnect_wrong_object);
   g_test_add_func ("/gobject/signals/clear-signal-handler", test_clear_signal_handler);
+  g_test_add_func ("/gobject/signals/lookup", test_lookup);
+  g_test_add_func ("/gobject/signals/lookup/invalid", test_lookup_invalid);
+  g_test_add_func ("/gobject/signals/parse-name", test_parse_name);
+  g_test_add_func ("/gobject/signals/parse-name/invalid", test_parse_name_invalid);
+  g_test_add_data_func ("/gobject/signals/invalid-name/colon", "my_int:hello", test_signals_invalid_name);
+  g_test_add_data_func ("/gobject/signals/invalid-name/first-char", "7zip", test_signals_invalid_name);
+  g_test_add_data_func ("/gobject/signals/invalid-name/empty", "", test_signals_invalid_name);
 
   return g_test_run ();
 }
diff --git a/gobject/tests/testing.c b/gobject/tests/testing.c
new file mode 100644 (file)
index 0000000..5c7e663
--- /dev/null
@@ -0,0 +1,71 @@
+/* GLib testing framework examples and tests
+ *
+ * Copyright © 2019 Endless Mobile, 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.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Philip Withnall <withnall@endlessm.com>
+ */
+
+#include "config.h"
+
+/* We want to distinguish between messages originating from libglib
+ * and messages originating from this program.
+ */
+#undef G_LOG_DOMAIN
+#define G_LOG_DOMAIN "testing"
+
+#include <glib.h>
+#include <glib-object.h>
+#include <locale.h>
+#include <stdlib.h>
+
+static void
+test_assert_finalize_object_subprocess_bad (void)
+{
+  GObject *obj = g_object_new (G_TYPE_OBJECT, NULL);
+  g_object_ref (obj);
+
+  /* This should emit an assertion failure. */
+  g_assert_finalize_object (obj);
+
+  g_object_unref (obj);
+
+  exit (0);
+}
+
+static void
+test_assert_finalize_object (void)
+{
+  GObject *obj = g_object_new (G_TYPE_OBJECT, NULL);
+
+  g_assert_finalize_object (obj);
+
+  g_test_trap_subprocess ("/assert/finalize_object/subprocess/bad", 0, 0);
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*g_assert_finalize_object:*'weak_pointer' should be NULL*");
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/assert/finalize_object", test_assert_finalize_object);
+  g_test_add_func ("/assert/finalize_object/subprocess/bad",
+                   test_assert_finalize_object_subprocess_bad);
+
+  return g_test_run ();
+}
index 4bbf4c2..c209221 100644 (file)
@@ -1,11 +1,11 @@
 project('glib', 'c', 'cpp',
-  version : '2.62.3',
+  version : '2.64.5',
   # NOTE: We keep this pinned at 0.49 because that's what Debian 10 ships
   meson_version : '>= 0.49.2',
   default_options : [
     'buildtype=debugoptimized',
     'warning_level=1',
-    'c_std=gnu89'
+    'c_std=gnu99'
   ]
 )
 
@@ -63,13 +63,20 @@ glib_libexecdir = join_paths(glib_prefix, get_option('libexecdir'))
 glib_datadir = join_paths(glib_prefix, get_option('datadir'))
 glib_pkgdatadir = join_paths(glib_datadir, 'glib-2.0')
 glib_includedir = join_paths(glib_prefix, get_option('includedir'))
-glib_giomodulesdir = get_option('gio_module_dir')
-if glib_giomodulesdir == ''
+if get_option('gio_module_dir') != ''
+  glib_giomodulesdir = join_paths(glib_prefix, get_option('gio_module_dir'))
+else
   glib_giomodulesdir = join_paths(glib_libdir, 'gio', 'modules')
 endif
 
 glib_pkgconfigreldir = join_paths(glib_libdir, 'pkgconfig')
 
+if get_option('charsetalias_dir') != ''
+  glib_charsetaliasdir = join_paths(glib_prefix, get_option('charsetalias_dir'))
+else
+  glib_charsetaliasdir = glib_libdir
+endif
+
 installed_tests_metadir = join_paths(glib_datadir, 'installed-tests', meson.project_name())
 installed_tests_execdir = join_paths(glib_libexecdir, 'installed-tests', meson.project_name())
 installed_tests_enabled = get_option('installed_tests')
@@ -142,11 +149,6 @@ g_have_gnuc_visibility = cc.compiles('''
   {
   }
   void
-  __attribute__ ((visibility ("protected")))
-       f_protected (void)
-  {
-  }
-  void
   __attribute__ ((visibility ("default")))
        f_default (void)
   {
@@ -155,7 +157,6 @@ g_have_gnuc_visibility = cc.compiles('''
   {
     f_hidden();
     f_internal();
-    f_protected();
     f_default();
     return 0;
   }
@@ -359,7 +360,6 @@ endforeach
 # Compiler flags
 if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
   warning_c_args = [
-    '-Wall',
     '-Wduplicated-branches',
     '-Wimplicit-fallthrough',
     '-Wmisleading-indentation',
@@ -374,6 +374,8 @@ if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
     # Due to function casts through (void*) we cannot support -Wpedantic:
     # https://wiki.gnome.org/Projects/GLib/CompilerRequirements#Function_pointer_conversions.
     '-Wno-pedantic',
+    # A zero-length format string shouldn't be considered an issue.
+    '-Wno-format-zero-length',
     '-Werror=declaration-after-statement',
     '-Werror=format=2',
     '-Werror=implicit-function-declaration',
@@ -530,13 +532,23 @@ foreach f : functions
   endif
 endforeach
 
-# Check that stpcpy() is usable; must use header
-if cc.has_function('stpcpy', prefix : '#include <string.h>')
+# Check that stpcpy() is usable; must use header.
+# cc.has_function() in some cases (clang, gcc 10+) assumes that if the
+# compiler provides a builtin of the same name that the function exists, while
+# it's in fact not provided by any header or library. This is true for
+# stpcpy() on Windows using clang and gcc as well as posix_memalign() using
+# gcc on Windows. Skip these checks on Windows for now to avoid false
+# positives. See https://github.com/mesonbuild/meson/pull/7116,
+# https://github.com/mesonbuild/meson/issues/3672 and
+# https://github.com/mesonbuild/meson/issues/5628.
+# FIXME: Once meson no longer returns success for stpcpy() and
+# posix_memalign() on Windows using GCC and clang we can remove this.
+if host_system != 'windows' and cc.has_function('stpcpy', prefix : '#include <string.h>')
   glib_conf.set('HAVE_STPCPY', 1)
 endif
 
 # Check that posix_memalign() is usable; must use header
-if cc.has_function('posix_memalign', prefix : '#include <stdlib.h>')
+if host_system != 'windows' and cc.has_function('posix_memalign', prefix : '#include <stdlib.h>')
   glib_conf.set('HAVE_POSIX_MEMALIGN', 1)
 endif
 
@@ -795,7 +807,7 @@ endif
 #AC_MSG_CHECKING([])
 if cc.compiles('''#include <fcntl.h>
                   #include <sys/types.h>
-                  #include <sys/stat.h>],
+                  #include <sys/stat.h>
                   void some_func (void) {
                     open(0, O_DIRECTORY, 0);
                   }''', name : 'open() option O_DIRECTORY')
@@ -822,6 +834,15 @@ if host_system == 'windows' and (cc.get_id() == 'msvc' or cc.get_id() == 'clang-
   glib_conf.set('HAVE_C99_SNPRINTF', false)
   glib_conf.set('HAVE_C99_VSNPRINTF', false)
   glib_conf.set('HAVE_UNIX98_PRINTF', false)
+elif not cc_can_run and host_system in ['ios', 'darwin']
+  # All these are true when compiling natively on macOS, so we should use good
+  # defaults when building for iOS and tvOS.
+  glib_conf.set('HAVE_C99_SNPRINTF', true)
+  glib_conf.set('HAVE_C99_VSNPRINTF', true)
+  glib_conf.set('HAVE_UNIX98_PRINTF', true)
+  have_good_vsnprintf = true
+  have_good_snprintf = true
+  have_good_printf = true
 else
   vsnprintf_c99_test_code = '''
 #include <stdio.h>
@@ -1320,28 +1341,86 @@ else
   glibconfig_conf.set('g_searchpath_separator', ':')
 endif
 
-if sizet_size == short_size
+g_sizet_compatibility = {
+  'short': sizet_size == short_size,
+  'int': sizet_size == int_size,
+  'long': sizet_size == long_size,
+  'long long': sizet_size == long_long_size,
+}
+
+# Do separate checks for gcc/clang (and ignore other compilers for now), since
+# we need to explicitly pass -Werror to the compilers.
+# FIXME: https://github.com/mesonbuild/meson/issues/5399
+# We can’t simplify these checks using a foreach loop because dictionary keys
+# have to be string literals.
+# FIXME: https://github.com/mesonbuild/meson/issues/5231
+if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+  g_sizet_compatibility += {
+    'short': g_sizet_compatibility['short'] and cc.compiles(
+        '''#include <stddef.h>
+        size_t f (size_t *i) { return *i + 1; }
+        int main (void) {
+          unsigned short i = 0;
+          f (&i);
+          return 0;
+        }''',
+        args: ['-Werror'],
+        name : 'GCC size_t typedef is short'),
+    'int': g_sizet_compatibility['int'] and cc.compiles(
+        '''#include <stddef.h>
+        size_t f (size_t *i) { return *i + 1; }
+        int main (void) {
+          unsigned int i = 0;
+          f (&i);
+          return 0;
+        }''',
+        args: ['-Werror'],
+        name : 'GCC size_t typedef is int'),
+    'long': g_sizet_compatibility['long'] and cc.compiles(
+        '''#include <stddef.h>
+        size_t f (size_t *i) { return *i + 1; }
+        int main (void) {
+          unsigned long i = 0;
+          f (&i);
+          return 0;
+        }''',
+        args: ['-Werror'],
+        name : 'GCC size_t typedef is long'),
+    'long long': g_sizet_compatibility['long long'] and cc.compiles(
+        '''#include <stddef.h>
+        size_t f (size_t *i) { return *i + 1; }
+        int main (void) {
+          unsigned long long i = 0;
+          f (&i);
+          return 0;
+        }''',
+        args: ['-Werror'],
+        name : 'GCC size_t typedef is long long'),
+  }
+endif
+
+if g_sizet_compatibility['short']
   glibconfig_conf.set('glib_size_type_define', 'short')
   glibconfig_conf.set_quoted('gsize_modifier', 'h')
   glibconfig_conf.set_quoted('gssize_modifier', 'h')
   glibconfig_conf.set_quoted('gsize_format', 'hu')
   glibconfig_conf.set_quoted('gssize_format', 'hi')
   glibconfig_conf.set('glib_msize_type', 'SHRT')
-elif sizet_size == int_size
+elif g_sizet_compatibility['int']
   glibconfig_conf.set('glib_size_type_define', 'int')
   glibconfig_conf.set_quoted('gsize_modifier', '')
   glibconfig_conf.set_quoted('gssize_modifier', '')
   glibconfig_conf.set_quoted('gsize_format', 'u')
   glibconfig_conf.set_quoted('gssize_format', 'i')
   glibconfig_conf.set('glib_msize_type', 'INT')
-elif sizet_size == long_size
+elif g_sizet_compatibility['long']
   glibconfig_conf.set('glib_size_type_define', 'long')
   glibconfig_conf.set_quoted('gsize_modifier', 'l')
   glibconfig_conf.set_quoted('gssize_modifier', 'l')
   glibconfig_conf.set_quoted('gsize_format', 'lu')
   glibconfig_conf.set_quoted('gssize_format', 'li')
   glibconfig_conf.set('glib_msize_type', 'LONG')
-elif sizet_size == long_long_size
+elif g_sizet_compatibility['long long']
   glibconfig_conf.set('glib_size_type_define', 'long long')
   glibconfig_conf.set_quoted('gsize_modifier', int64_m)
   glibconfig_conf.set_quoted('gssize_modifier', int64_m)
@@ -1666,6 +1745,9 @@ else
   if cc.has_header_symbol('pthread.h', 'pthread_attr_setstacksize')
     glib_conf.set('HAVE_PTHREAD_ATTR_SETSTACKSIZE', 1)
   endif
+  if cc.has_header_symbol('pthread.h', 'pthread_attr_setinheritsched')
+    glib_conf.set('HAVE_PTHREAD_ATTR_SETINHERITSCHED', 1)
+  endif
   if cc.has_header_symbol('pthread.h', 'pthread_condattr_setclock')
     glib_conf.set('HAVE_PTHREAD_CONDATTR_SETCLOCK', 1)
   endif
@@ -1675,6 +1757,11 @@ else
   if cc.has_header_symbol('pthread.h', 'pthread_getname_np', prefix : pthread_prefix)
     glib_conf.set('HAVE_PTHREAD_GETNAME_NP', 1)
   endif
+
+  if cc.has_header_symbol('sys/syscall.h', 'SYS_sched_getattr')
+    glib_conf.set('HAVE_SYS_SCHED_GETATTR', 1)
+  endif
+
   # Assume that pthread_setname_np is available in some form; same as configure
   if cc.links(pthread_prefix + '''
               int main() {
@@ -1863,9 +1950,9 @@ glib_conf.set_quoted('GLIB_LOCALE_DIR', join_paths(glib_datadir, 'locale'))
 # libmount is only used by gio, but we need to fetch the libs to generate the
 # pkg-config file below
 libmount_dep = []
-if host_system == 'linux' and get_option('libmount')
-  libmount_dep = [dependency('mount', version : '>=2.23', required : true)]
-  glib_conf.set('HAVE_LIBMOUNT', 1)
+if host_system == 'linux'
+  libmount_dep = dependency('mount', version : '>=2.23', required : get_option('libmount'))
+  glib_conf.set('HAVE_LIBMOUNT', libmount_dep.found())
 endif
 
 if host_system == 'windows'
@@ -1997,7 +2084,7 @@ python = import('python').find_installation('python3')
 python_name = 'python3'
 
 python_version = python.language_version()
-python_version_req = '>=3.4'
+python_version_req = '>=3.5'
 if not python_version.version_compare(python_version_req)
   error('Requires Python @0@, @1@ found.'.format(python_version_req, python_version))
 endif
@@ -2157,7 +2244,7 @@ if get_option('man')
     'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
     '@INPUT@',
   ]
-  man1_dir = get_option('mandir') + '/man1'
+  man1_dir = join_paths(glib_prefix, get_option('mandir'), 'man1')
 endif
 
 gnome = import('gnome')
index 2c831e3..6c72168 100644 (file)
@@ -30,8 +30,8 @@ option('xattr',
        description : 'build with xattr support')
 
 option('libmount',
-       type : 'boolean',
-       value : true,
+       type : 'feature',
+       value : 'auto',
        description : 'build with libmount support')
 
 option('internal_pcre',
index 221570c..5bba9ab 100644 (file)
@@ -101,6 +101,7 @@ gio/glocalfilemonitor.c
 gio/glocalfileoutputstream.c
 gio/glocalvfs.c
 gio/gmemoryinputstream.c
+gio/gmemorymonitor.c
 gio/gmemoryoutputstream.c
 gio/gmenumodel.c
 gio/gmount.c
index e2a1c49..a761fe3 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib 2.8\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
+"POT-Creation-Date: 2020-01-14 21:12+0000\n"
 "PO-Revision-Date: 2019-04-17 18:01+0200\n"
 "Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
 "Language-Team: Catalan <tradgnome@softcatala.org>\n"
@@ -44,7 +44,7 @@ msgstr "Sobreescriu l'identificador de l'aplicació"
 
 #: gio/gapplication.c:569
 msgid "Replace the running instance"
-msgstr "Reemplaça una instància en execució"
+msgstr "Reemplaça la instància en execució"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
 #: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
@@ -123,8 +123,8 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Identificador de l'aplicació en format D-Bus (p. ex.: org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "FITXER"
@@ -290,7 +290,7 @@ msgstr "Ja està tancat el flux"
 msgid "Truncate not supported on base stream"
 msgstr "No es permet truncar en els fluxos base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -310,22 +310,22 @@ msgstr "No hi ha prou espai a la destinació"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "La seqüència de bytes a l'entrada de conversió no és vàlida"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "S'ha produït un error durant la conversió: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "La cancel·lació de la inicialització no està implementada"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "No es permet la conversió entre els jocs de caràcters «%s» i «%s»"
@@ -349,21 +349,25 @@ msgstr "Tipus desconegut"
 msgid "%s filetype"
 msgstr "tipus de fitxer %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials conté dades no vàlides"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "Aquest sistema operatiu no implementa les GCredentials"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "La vostra plataforma no implementa les GCredentials"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 "Les GCredentials no contenen cap identificador de procés en aquest sistema "
 "operatiu"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Aquest sistema operatiu no implementa el falsejament de credencials"
 
@@ -371,7 +375,7 @@ msgstr "Aquest sistema operatiu no implementa el falsejament de credencials"
 msgid "Unexpected early end-of-stream"
 msgstr "No s'esperava un final de flux tan aviat"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "No es permet la clau «%s» en l'entrada de l'adreça «%s»"
@@ -390,35 +394,30 @@ msgstr ""
 "L'adreça «%s» no és vàlida (ha de ser, o bé un camí, o bé un tmpdir -"
 "directori temporal-, o bé unes claus abstractes)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr ""
-"Hi ha un error a l'adreça «%s»: l'atribut del port no està ben formatat"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr ""
-"Hi ha un error a l'adreça «%s»: l'atribut de la família no està ben formatat"
+"Hi ha un error a l'adreça «%s» — l'atribut «%s» no està ben formatat"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
 "El transport «%s» per a l'adreça «%s» és desconegut o no està implementat"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "L'element d'adreça «%s» no conté dos punts (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "El nom del transport a l'adreça a l'element «%s» no pot estar buit"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -427,7 +426,7 @@ msgstr ""
 "La parella de clau/valor %d, «%s», a l'element d'adreça «%s», no conté un "
 "signe d'igual"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -435,7 +434,7 @@ msgstr ""
 "La parella de clau/valor %d, «%s», a l'element d'adreça «%s», no conté un "
 "signe d'igual"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -444,7 +443,7 @@ msgstr ""
 "S'ha produït un error en suprimir l'escapament d'una clau o d'un valor en la "
 "parella clau/valor %d, «%s», de l'element d'adreça «%s»"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -454,88 +453,88 @@ msgstr ""
 "establerta exactament una clau, o bé de tipus «path» (camí), o bé de tipus "
 "«abstract» (abstracte)"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Hi ha un error a l'adreça «%s»: manca o està mal formatat l'atribut del nom "
 "d'ordinador"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Hi ha un error a l'adreça «%s»: manca o està mal formatat l'atribut del port"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Hi ha un error a l'adreça «%s»: l'atribut noncefile no existeix o està mal "
 "formatat"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "S'ha produït un error en executar-se automàticament: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "S'ha produït un error en obrir el fitxer nonce «%s»: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "S'ha produït un error en llegir el fitxer nonce «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "S'ha produït un error en llegir el fitxer nonce «%s»: s'esperaven 16 bytes "
 "però se n'han obtingut %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "S'ha produït un error en escriure els continguts del fitxer nonce «%s» al "
 "flux:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "L'adreça que s'ha indicat és buida"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr ""
 "No es pot engendrar un bus de missatge si s'executa com un altre usuari "
 "(setuid)"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "No es pot engendrar un bus de missatge sense un identificador de màquina: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "No es pot executar D-Bus automàticament sense X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "S'ha produït un error en engendrar la línia d'ordres «%s»: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "No s'ha pogut determinar l'adreça del bus de sessió (no està implementat en "
 "aquest sistema operatiu)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7180
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -544,7 +543,7 @@ msgstr ""
 "No es pot determinar l'adreça del bus a través de la variable d'entorn "
 "«DBUS_STARTER_BUS_TYPE»: conté un valor desconegut «%s»"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7189
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -552,22 +551,22 @@ msgstr ""
 "No es pot determinar l'adreça del bus perquè la variable d'entorn "
 "«DBUS_STARTER_BUS_TYPE» no està establerta"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipus de bus desconegut %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "S'ha trobat una inesperada falta de contingut en llegir una línia"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "S'ha trobat una inesperada falta de contingut en llegir (de forma segura) "
 "una línia"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -575,17 +574,17 @@ msgstr ""
 "S'han exhaurit tots els mecanismes d'autenticació disponibles (s'han provat: "
 "%s) (hi ha disponibles: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 "S'ha cancel·lat a través de GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "S'ha produït un error en obtenir la informació del directori «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -593,24 +592,24 @@ msgstr ""
 "Els permisos del directori «%s» no estan ben formatats. S'esperava el mode "
 "0700 però s'ha obtingut el 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "S'ha produït un error en crear el directori «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "S'ha produït un error en obrir l'anell de claus «%s» per llegir-lo: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "La línia %d de l'anell de claus a «%s» amb el contingut «%s» no està ben "
 "formatada"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -618,7 +617,7 @@ msgstr ""
 "El primer testimoni de la línia %d de l'anell de claus a «%s» amb el "
 "contingut «%s» no està ben formatat"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -626,40 +625,40 @@ msgstr ""
 "El segon testimoni de la línia %d de l'anell de claus a «%s» amb el "
 "contingut «%s» no està ben formatat"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 "No s'ha trobat la galeta amb l'identificador %d a l'anell de claus a «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "S'ha produït un suprimir el fitxer de blocatge antic «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "S'ha produït un error en crear el fitxer de blocatge «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr ""
 "S'ha produït un error en tancar el fitxer (no enllaçat) de blocatge «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "S'ha produït un error en desenllaçar el fitxer de blocatge «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr ""
 "S'ha produït un error en obrir l'anell de claus «%s» per a escriptura: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
@@ -711,12 +710,12 @@ msgstr ""
 "«%s» però s'ha obtingut el «%s»"
 
 #: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:6620
 #, c-format
 msgid "No such interface “%s”"
 msgstr "No existeix la interfície «%s»"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7129
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "No existeix la interfície «%s» en l'objecte al camí %s"
@@ -751,39 +750,39 @@ msgstr "No s'ha pogut establir la propietat %s.%s"
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "El mètode «%s» ha retornat un tipus «%s» però s'esperava «%s»"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6731
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "No existeix el mètode «%s» a la interfície «%s» amb la signatura «%s»"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6852
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ja està exportat un subarbre per a %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "el tipus és no vàlid"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Missatge «METHOD_CALL»: manca el camp de capçalera «PATH» o «MEMBER»"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Missatge «METHOD_RETURN»: manca el camp de capçalera «REPLY_SERIAL»"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Missatge «ERROR»: manca el camp de capçalera «REPLY_SERIAL» o «ERROR_NAME»"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 "Missatge «SIGNAL»: manca el camp de capçalera «PATH», «INTERFACE» o «MEMBER»"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -791,7 +790,7 @@ msgstr ""
 "Missatge «SIGNAL»: el camp de la capçalera «PATH» utilitza el valor reservat "
 "«/org/freedesktop/DBus/Local»"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -799,21 +798,21 @@ msgstr ""
 "missatge «SIGNAL»: el camp de capçalera «INTERFACE» utilitza el valor "
 "reservat «org.freedesktop.DBus.Local»"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Es volia llegir %lu byte però només s'han rebut %lu"
 msgstr[1] "Es volien llegir %lu bytes però només s'han rebut %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "S'esperava el byte «NUL» després de la cadena «%s» però s'ha trobat el byte "
 "%d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -823,17 +822,21 @@ msgstr ""
 "l'òfset %d (la llargada de la cadena és %d). La cadena UTF-8 vàlida fins "
 "aquell moment era «%s»"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Valor imbricat massa profund"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "El valor analitzat «%s» no és un camí d'objecte D-Bus vàlid"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "El valor analitzat «%s» no és una signatura D-Bus vàlida"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -846,7 +849,7 @@ msgstr[1] ""
 "S'ha trobat una matriu de llargada %u bytes. La llargada màxima és de 2<<26 "
 "bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -855,12 +858,12 @@ msgstr ""
 "S'ha trobat una matriu de tipus «a%c» que s'esperava que tingués una "
 "llargada múltiple de %u bytes, però en realitat és de %u bytes"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "El valor analitzat «%s» per variant no és una signatura D-Bus vàlida"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -868,7 +871,7 @@ msgstr ""
 "S'ha produït un error en convertir a estructura de dades la GVariant amb el "
 "tipus de cadena «%s» del format de cable D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -877,28 +880,28 @@ msgstr ""
 "Valor d'ordenació de bits (endianness) no vàlid. S'esperava 0x6c («l») o "
 "0x42 («B») però s'ha trobat el valor 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versió major del protocol no vàlida. S'esperava 1 però s'ha trobat %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "S'ha trobat la capçalera de signatura però no és del tipus signatura"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "S'ha trobat la capçalera de la signatura amb la signatura «%s», però el cos "
 "és buit"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "El valor analitzat «%s» no és una signatura de D-Bus vàlida (pel cos)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -909,11 +912,11 @@ msgstr[1] ""
 "No hi ha cap capçalera de la signatura en el missatge, però el cos és de %u "
 "bytes"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "No s'ha pogut tornar a convertir el missatge a estructura de dades: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -921,7 +924,7 @@ msgstr ""
 "No s'ha pogut convertir a seqüència de bits la GVariant de tipus cadena «%s» "
 "al format de cable D-Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -929,18 +932,18 @@ msgstr ""
 "El nombre de descriptors de fitxer al missatge (%d) difereix del camp de la "
 "capçalera (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "No s'ha pogut convertir a seqüència de bits el missatge: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "El cos del missatge té la signatura «%s» però no hi ha cap capçalera de "
 "signatura"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -949,40 +952,40 @@ msgstr ""
 "El cos del missatge té el tipus de signatura «%s» però la signatura en el "
 "camp de la capçalera és «%s»"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "El cos del missatge és buit però la signatura en el camp de la capçalera és "
 "«(%s)»"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "S'ha retornat un error amb el cos de tipus «%s»"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "S'ha retornat un error amb el cos buit"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Premeu qualsevol tecla per tancar aquesta finestra)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "El bus de sessió (D-Bus) no està en funcionament i l'arrencada automàtica no "
 "ha funcionat"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "No s'ha pogut obtenir el perfil de maquinari: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr ""
 "No s'ha pogut carregar «/var/lib/dbus/machine-id» o «/etc/machine-id»: "
@@ -1009,25 +1012,25 @@ msgstr ""
 "conegut %s sense cap propietari i el servidor intermediari s'ha construït "
 "amb el senyalador «G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START»"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "No es pot utilitzar l'espai de noms abstracte"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "No es pot especificar el fitxer «nonce» quan es crea un servidor"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "S'ha produït un error en escriure el fitxer nonce a «%s»: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "La cadena «%s» no és un GUID vàlid de D-Bus"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "No es pot escoltar «%s», és un transport desconegut"
@@ -1308,41 +1311,41 @@ msgstr "Error: massa arguments.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Error: %s no és un nom de bus conegut vàlid.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Sense nom"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "El fitxer d'escriptori no especificava el camp d'execució"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "No s'ha pogut trobar el terminal que demanava l'aplicació"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "No s'ha pogut crear el directori de configuració de l'aplicació de l'usuari "
 "%s: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "No s'ha pogut crear el directori de configuració MIME de l'usuari %s: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "A la informació d'aplicació li manca un identificador"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "No s'ha pogut crear el fitxer d'escriptori de l'usuari %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definició personalitzada per a %s"
@@ -1409,10 +1412,10 @@ msgstr "S'esperava un GEmblem per a un GEmblemedIcon"
 
 #: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
 #: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3758 gio/gfile.c:3813
+#: gio/gfile.c:4091 gio/gfile.c:4559 gio/gfile.c:4970 gio/gfile.c:5055
+#: gio/gfile.c:5145 gio/gfile.c:5242 gio/gfile.c:5329 gio/gfile.c:5430
+#: gio/gfile.c:8134 gio/gfile.c:8224 gio/gfile.c:8308
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "L'operació no està implementada"
@@ -1425,7 +1428,7 @@ msgstr "L'operació no està implementada"
 msgid "Containing mount does not exist"
 msgstr "No existeix el punt de muntatge contenidor"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2622 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "No es pot copiar al directori"
 
@@ -1464,28 +1467,32 @@ msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "No està implementada o no ha funcionat la còpia (referències, clonacions)"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3222
 msgid "Can’t copy special file"
 msgstr "No es pot copiar el fitxer especial"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4039
 msgid "Invalid symlink value given"
 msgstr "El valor donat per a l'enllaç simbòlic no és vàlid"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4049 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "No es poden utilitzar els enllaços simbòlics"
+
+#: gio/gfile.c:4200
 msgid "Trash not supported"
 msgstr "No es pot utilitzar la paperera"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4312
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "En els noms de fitxers no pot haver-hi «%c»"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6793 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "el volum no implementa el muntatge"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6904 gio/gfile.c:6950
 msgid "No application is registered as handling this file"
 msgstr ""
 "No hi ha cap aplicació que s'hagi registrat per gestionar aquest fitxer"
@@ -1531,7 +1538,7 @@ msgstr "No es permet truncar en els fluxos d'entrada"
 msgid "Truncate not supported on stream"
 msgstr "No es permet truncar en els fluxos"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "El nom de l'ordinador no és vàlid"
@@ -1649,7 +1656,7 @@ msgstr "Mantén-lo amb el fitxer quan es mogui"
 msgid "“version” takes no arguments"
 msgstr "«version» no té arguments"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Forma d'ús:"
 
@@ -1736,10 +1743,10 @@ msgid "Error writing to stdout"
 msgstr "S'ha produït un error en escriure a la sortida estàndard"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1760,56 +1767,60 @@ msgstr ""
 "smb://servidor/recurs/fitxer.txt com a ubicació."
 
 #: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "No s'ha donat cap ubicació"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "No hi ha cap directori de destinació"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Mostra el progrés"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Pregunta abans de sobreescriure"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Conserva tots els atributs"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr ""
 "Crea una còpia de seguretat dels fitxers existents al directori de destinació"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "No segueixis mai els enllaços simbòlics"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Usa els permisos predeterminats per la destinació"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "S'han transferit %s de %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "FONT"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINACIÓ"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copia un, o més, fitxers des de la FONT a la DESTINACIÓ."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1819,12 +1830,12 @@ msgstr ""
 "en comptes de fitxers locals: per exemple, podeu usar quelcom com ara\n"
 "smb://servidor/recurs/fitxer.txt com a ubicació."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "La destinació «%s» no és un directori"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: voleu sobreescriure «%s»?"
@@ -1837,15 +1848,15 @@ msgstr "Llista els atributs d'escriptura"
 msgid "Get file system info"
 msgstr "Obté la informació del sistema de fitxers"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Els atributs que es volen obtenir"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTS"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "No segueixis els enllaços simbòlics"
 
@@ -1916,23 +1927,27 @@ msgstr ""
 "el\n"
 "nom d'espais, p. ex. unix, o usant «*», que coincideix amb tots els atributs"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Mostra els fitxers ocults"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Utilitza un format de llistat ampliat"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Imprimeix els noms que es mostren"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Mostra els URI complets"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Llista el contingut de les ubicacions."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2064,12 +2079,12 @@ msgid "Mount as mountable"
 msgstr "Munta com a muntable"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Munta el volum amb el fitxer de dispositiu"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Munta el volum amb el fitxer de dispositiu, o un altre identificador"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "DISPOSITIU"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2083,6 +2098,10 @@ msgstr "Expulsa"
 msgid "Stop drive with device file"
 msgstr "Atura el disc amb el fitxer de dispositiu"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DISPOSITIU"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Desmunta tots els muntables que compleixin l'esquema donat"
@@ -2136,16 +2155,11 @@ msgstr "S'ha denegat l'accés anònim"
 msgid "No drive for device file"
 msgstr "No hi ha cap disc pel fitxer de dispositiu"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "S'ha muntat %s a %s\n"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "No hi ha cap volum pel identificador donat"
 
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "No hi ha cap volum pel fitxer de dispositiu"
-
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Munta o desmunta les ubicacions."
 
@@ -2361,20 +2375,20 @@ msgstr "S'ha produït un error en llegir el fitxer %s: %s"
 msgid "Error compressing file %s"
 msgstr "S'ha produït un error en comprimir el fitxer %s"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "no pot haver-hi text dins de <%s>"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostra la versió del programa i surt"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Nom del fitxer de sortida"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2382,49 +2396,49 @@ msgstr ""
 "Els directoris des d'on s'han de llegir els fitxers (per defecte és el "
 "directori actual)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRECTORI"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Genera la sortida en el format seleccionat per l'extensió del nom de fitxer "
 "de destinació"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Genera la capçalera del codi"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Genera el codi font que es fa servir per enllaçar el fitxer de recurs amb el "
 "codi"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Genera una llista de dependències"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Nom del fitxer de dependència a generar"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inclou destinacions falses en el fitxer de dependències generat"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "No creïs ni registris automàticament els recursos"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "No exportis les funcions, declara-les com a «G_GNUC_INTERNAL»"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2432,12 +2446,12 @@ msgstr ""
 "No incrusteu recursos de dades a un fitxer C; en comptes assumiu que està "
 "enllaçat externament"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr ""
 "El nom de l'identificador de C que s'utilitzarà en el codi font generat"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2447,7 +2461,7 @@ msgstr ""
 "Els fitxers d'especificació de recursos tenen l'extensió .gresource.xml\n"
 "i els fitxers de recursos tenen l'extensió .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Heu de donar un sol nom de fitxer\n"
 
@@ -2634,8 +2648,7 @@ msgstr ""
 #: gio/glib-compile-schemas.c:828
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
-msgstr ""
-"El nom «%s» no és vàlid: no es poden posar dos guionets seguits («--»)"
+msgstr "El nom «%s» no és vàlid: no es poden posar dos guionets seguits («--»)"
 
 #: gio/glib-compile-schemas.c:837
 #, c-format
@@ -2669,7 +2682,7 @@ msgid ""
 "to modify value"
 msgstr ""
 "La <key name='%s'> emmascara la <key name='%s'> a <schema id='%s'>. "
-"Utilitzeu <override> per modificar-ne el valor."
+"Utilitzeu <override> per modificar-ne el valor"
 
 #: gio/glib-compile-schemas.c:983
 #, c-format
@@ -2829,7 +2842,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:1993
 #, c-format
-#| msgid ""
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”); ignoring override for this key."
@@ -2982,7 +2994,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "No es pot canviar el nom del fitxer, ja existeix aquest nom"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Nom de fitxer no vàlid"
 
@@ -3060,133 +3072,129 @@ msgstr "El sistema de fitxers no implementa enllaços simbòlics"
 msgid "Error making symbolic link %s: %s"
 msgstr "S'ha produït un error en fer l'enllaç simbòlic: %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "No es poden utilitzar els enllaços simbòlics"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "S'ha produït un error en moure el fitxer %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "No s'ha pogut moure el directori al directori"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Ha fallat la creació del fitxer de còpia de seguretat"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "S'ha produït un error en suprimir el fitxer objectiu: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "No està implementat moure entre muntatges"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "No s'han pogut determinar l'ús del disc de %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "El valor de l'atribut no pot ser nul"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Tipus d'atribut no vàlid (s'esperava una cadena)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "El nom de l'atribut ampliat no és vàlid"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "S'ha produït un error en establir l'atribut ampliat «%s»: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (codificació no vàlida)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "S'ha produït un error en obtenir informació del fitxer «%s»: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr ""
 "S'ha produït un error en obtenir informació del descriptor de fitxer: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Tipus d'atribut no vàlid (s'esperava un uint32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Tipus d'atribut no vàlid (s'esperava un uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Tipus d'atribut no vàlid (s'esperava una cadena de bytes)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "No es poden establir permisos en els enllaços simbòlics"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "S'ha produït un error en establir els permisos: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "S'ha produït un error en establir el propietari: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "l'enllaç simbòlic no pot ser nul"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "S'ha produït un error en establir l'enllaç simbòlic: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "S'ha produït un error en establir l'enllaç simbòlic: el fitxer no és un "
 "enllaç simbòlic"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr ""
 "S'ha produït un error en establir el temps de modificació o d'accés: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "El context del SELinux no pot ser nul"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "S'ha produït un error en establir el context del SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "Aquest sistema no té habilitat el SELinux"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "No està implementat establir l'atribut %s"
@@ -3209,7 +3217,7 @@ msgstr "S'ha produït un error en cercar en el fitxer: %s"
 msgid "Error closing file: %s"
 msgstr "S'ha produït un error en tancar el fitxer: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr ""
 "No s'ha pogut trobar el tipus de seguiment de fitxer local predeterminat"
@@ -3402,18 +3410,18 @@ msgstr "La suma de vectors donada a %s és massa gran"
 msgid "Source stream is already closed"
 msgstr "El flux font ja està tancat"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "S'ha produït un error en resoldre «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "no s'ha implementat %s"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "El domini no és vàlid"
 
@@ -3791,176 +3799,176 @@ msgstr "S'ha donat un nom d'esquema buit\n"
 msgid "No such key “%s”\n"
 msgstr "No existeix la clau «%s»\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "El sòcol no és vàlid, no està inicialitzat"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "El sòcol no és vàlid, ha fallat la inicialització degut a: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "El sòcol ja és tancat"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "S'ha excedit el temps d'espera d'entrada/sortida del sòcol"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "s'està creant un GSocket a partir del descriptor de fitxer: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "No s'ha pogut crear el sòcol: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "S'ha especificat una família desconeguda"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "S'ha especificat un protocol desconegut"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "No es poden realitzar operacions de datagrames a un sòcol que no és de "
 "datagrama."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "No es poden realitzar operacions de datagrames a un sòcol que tingui un "
 "temps d'espera màxim establert."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "no s'ha pogut obtenir l'adreça local: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "no s'ha pogut obtenir l'adreça remota: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "no s'ha pogut escoltar: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "S'ha produït un error en vincular-se a l'adreça: %s"
+msgid "Error binding to address %s: %s"
+msgstr "S'ha produït un error en vincular-se a l'adreça %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "S'ha produït un error en unir-se a un grup de multidestinació: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "S'ha produït un error en deixar un grup de multidestinació: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Encara no es pot fer multidestinació des d'un origen concret"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "La família del sòcol no és compatible"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "la font especificada no és una adreça IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "El nom de la interfície és massa llarg"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "No s'ha trobat la interfície: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Encara no es pot fer multidestinació en IPv4 des d'un origen concret"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Encara no es pot fer multidestinació en IPv6 des d'un origen concret"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "S'ha produït un error en acceptar la connexió: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Connexió en curs"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "No s'ha pogut obtenir l'error pendent: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "S'ha produït un error en rebre les dades: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "S'ha produït un error en enviar les dades: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "No s'ha pogut aturar el sòcol: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "S'ha produït un error en tancar el sòcol: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "S'està esperant la condició del sòcol: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "S'ha produït un error en enviar el missatge: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "El GSocketControlMessage no està implementat a Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "S'ha produït un error en rebre un missatge: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "No s'han pogut llegir les credencials del sòcol: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "Aquest sistema operatiu no implementa el «g_socket_get_credentials»"
 
@@ -4128,26 +4136,30 @@ msgstr "No s'ha pogut resoldre «%s» de forma temporal"
 msgid "Error resolving “%s”"
 msgstr "S'ha produït un error en resoldre «%s»"
 
-#: gio/gtlscertificate.c:243
+#: gio/gtlscertificate.c:298
 msgid "No PEM-encoded private key found"
 msgstr "No s'ha trobat cap clau privada codificada amb PEM"
 
-#: gio/gtlscertificate.c:253
+#: gio/gtlscertificate.c:308
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "No s'ha pogut desencriptar la clau privada codificada amb PEM"
 
-#: gio/gtlscertificate.c:264
+#: gio/gtlscertificate.c:319
 msgid "Could not parse PEM-encoded private key"
 msgstr "No s'ha pogut analitzar la clau privada codificada amb PEM"
 
-#: gio/gtlscertificate.c:291
+#: gio/gtlscertificate.c:346
 msgid "No PEM-encoded certificate found"
 msgstr "No s'ha trobat cap certificat codificat amb PEM"
 
-#: gio/gtlscertificate.c:300
+#: gio/gtlscertificate.c:355
 msgid "Could not parse PEM-encoded certificate"
 msgstr "No s'ha pogut analitzar el certificat codificat amb PEM"
 
+#: gio/gtlscertificate.c:710
+msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+msgstr "GTlsBackend no permet crear certificats PKCS #11"
+
 #: gio/gtlspassword.c:111
 msgid ""
 "This is the last chance to enter the password correctly before your access "
@@ -4237,7 +4249,7 @@ msgstr "S'ha produït un error en llegir del descriptor de fitxer: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "S'ha produït un error en tancar el descriptor de fitxer: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Arrel del sistema de fitxers"
 
@@ -4324,76 +4336,76 @@ msgstr "Els arguments no són vàlids\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "No s'esperava l'atribut «%s» per a l'element «%s»"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "No s'ha trobat l'atribut «%s» de l'element «%s»"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "No s'esperava l'etiqueta «%s», s'esperava «%s»"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "No s'esperava l'etiqueta «%s» dins «%s»"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "La data/hora «%s» no és vàlida al fitxer d'adreces d'interès"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 "No s'ha trobat cap fitxer d'adreces d'interès dins dels directoris de dades"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Ja existeix una adreça d'interès per a l'URI «%s»"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "No s'ha trobat cap adreça d'interès per a l'URI «%s»"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "No hi ha cap tipus MIME definit a l'adreça d'interès per a l'URI «%s»"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 "No hi ha cap senyalador privat definit a l'adreça d'interès per a l'URI «%s»"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "No hi ha cap grup establert a l'adreça d'interès per a l'URI «%s»"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
 "No hi ha cap aplicació amb el nom «%s» que hagi registrat l'adreça d'interès "
 "«%s»"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "No s'ha pogut ampliar la línia d'execució «%s» amb l'URI «%s»"
@@ -4402,8 +4414,8 @@ msgstr "No s'ha pogut ampliar la línia d'execució «%s» amb l'URI «%s»"
 msgid "Unrepresentable character in conversion input"
 msgstr "Caràcter no representable a l'entrada de la conversió"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Seqüència de caràcters parcial al final de l'entrada"
 
@@ -4952,25 +4964,25 @@ msgstr "La plantilla «%s» no conté XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "No s'ha pogut llegir l'enllaç simbòlic «%s»: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "No s'ha pogut obrir el convertidor de «%s» a «%s»: %s"
 
 #
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "No es pot fer una lectura bàsica a g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "A la memòria intermèdia de lectura hi ha dades sobrants no convertides"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "El canal acaba en un caràcter parcial"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "No es pot fer una lectura bàsica a g_io_channel_read_to_end"
 
@@ -5010,8 +5022,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "El fitxer de claus conté la codificació no implementada «%s»"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "El fitxer de claus no té el grup «%s»"
@@ -5050,31 +5062,31 @@ msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "La clau «%s» en el grup «%s» té el valor «%s» però s'esperava el valor %s"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "El fitxer de claus conté un caràcter d'escapada al final de línia"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "El fitxer de claus conté la seqüència d'escapada no vàlida «%s»"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "El valor «%s» no es pot interpretar com un nombre."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "El valor enter «%s» és fora de l'interval"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "El valor «%s» no es pot interpretar com un nombre amb coma flotant."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "El valor «%s» no es pot interpretar com un booleà."
@@ -5167,11 +5179,11 @@ msgstr ""
 "«&» sense intenció d'iniciar una entitat. Substituïu el caràcter «&» per "
 "&amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "El document ha de començar amb un element (p. ex. <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5180,7 +5192,7 @@ msgstr ""
 "«%s» no és un caràcter vàlid després d'un caràcter «<»: no pot començar un "
 "nom d'element"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5189,7 +5201,12 @@ msgstr ""
 "S'ha trobat un caràcter estrany: «%s». S'esperava el caràcter «>» per tancar "
 "l'etiqueta d'element buit «%s»"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#,  c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Massa atributs en l'element «%s»"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5197,7 +5214,7 @@ msgstr ""
 "S'ha trobat un caràcter estrany: «%s». S'esperava un «=» després del nom "
 "d'atribut «%s» de l'element «%s»"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5208,7 +5225,7 @@ msgstr ""
 "finalitzar l'etiqueta d'inici de l'element «%s», o opcionalment un atribut. "
 "Potser heu utilitzat un caràcter no vàlid en un nom d'atribut"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5217,7 +5234,7 @@ msgstr ""
 "S'ha trobat un caràcter estrany: «%s». S'esperaven unes cometes d'obertura "
 "després del signe «=» en donar valor a l'atribut «%s» de l'element «%s»"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5226,7 +5243,7 @@ msgstr ""
 "«%s» no és un caràcter vàlid després dels caràcters «</»; «%s» no pot "
 "iniciar un nom d'element"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5235,27 +5252,27 @@ msgstr ""
 "«%s» no és un caràcter vàlid després del nom d'element de tancament «%s». El "
 "caràcter permès és «>»"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "L'element «%s» estava tancat. Actualment no hi ha cap element obert"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "L'element «%s» estava tancat. L'element obert actualment és «%s»"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "El document era buit o només contenia espais en blanc"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "El document ha acabat de manera inesperada immediatament després del símbol "
 "«<»"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5264,7 +5281,7 @@ msgstr ""
 "El document ha acabat de manera inesperada amb elements que encara eren "
 "oberts. «%s» era l'últim element obert"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5273,21 +5290,21 @@ msgstr ""
 "El document ha acabat de manera inesperada. S'esperava trobar un símbol «>» "
 "que acabés l'etiqueta <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "El document ha acabat de manera inesperada enmig d'un nom d'element"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "El document ha acabat de manera inesperada enmig d'un nom d'atribut"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "El document ha acabat de manera inesperada enmig d'una etiqueta d'obertura "
 "d'un element."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5295,86 +5312,86 @@ msgstr ""
 "El document ha acabat de manera inesperada després d'un signe d'igual "
 "després d'un nom d'atribut. No hi ha cap valor d'atribut"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "El document ha acabat de manera inesperada enmig d'un valor d'atribut"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "El document ha acabat de manera inesperada enmig de l'etiqueta de tancament "
 "de l'element «%s»"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "El document ha acabat de manera inesperada enmig de l'etiqueta de tancament "
 "per un element no obert"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "El document ha acabat de manera inesperada enmig d'un comentari o d'una "
 "instrucció de processament"
 
 #
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPCIÓ...]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Opcions d'ajuda:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Mostra les opcions d'ajuda"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Mostra totes les opcions d'ajuda"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Opcions de l'aplicació:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Opcions:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "No es pot analitzar el valor enter «%s» per a %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "El valor enter «%s» per a %s és fora de l'interval"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "No es pot analitzar el valor doble «%s» per a %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "El valor doble «%s» per a %s és fora de l'interval"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "S'ha produït un error en analitzar l'opció %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Manca un argument per a %s"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Es desconeix l'opció %s"
@@ -5790,79 +5807,77 @@ msgstr "El text era buit (o només contenia espais en blanc)"
 msgid "Failed to read data from child process (%s)"
 msgstr "No s'han pogut llegir dades des del procés fill (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"S'ha produït un error inesperat a select() en llegir dades des d'un procés "
-"fill (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "S'ha produït un error no esperat en llegir dades des d'un procés fill (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "S'ha produït un error inesperat en waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "El procés fill ha sortit amb el codi %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "El senyal %ld ha matat el procés fill"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "El senyal %ld ha aturat el procés fill"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "El procés fill ha sortit inesperadament"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "No s'ha pogut llegir des del conducte fill (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "No s'ha pogut executar el procés fill «%s» (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "No s'ha pogut bifurcar (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "No s'ha pogut canviar al directori «%s» (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "No s'ha pogut executar el procés fill «%s» (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "No s'ha pogut redirigir l'entrada o la sortida del procés fill (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "No s'ha pogut bifurcar el procés fill (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "S'ha produït un error desconegut en executar el procés fill «%s»"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5917,194 +5932,194 @@ msgstr ""
 "S'ha produït un error inesperat a g_io_channel_win32_poll() en llegir dades "
 "d'un procés fill"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "La cadena buida no és un número"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» no és un nombre amb signe"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "El número «%s» està fora de rangs [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» no és un nombre sense signe"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "No s'ha pogut ubicar memòria"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "El caràcter és fora de l'interval d'UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Seqüència no vàlida a l'entrada de la conversió"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "El caràcter és fora de l'interval d'UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6112,7 +6127,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6120,7 +6135,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6132,36 +6147,44 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr ""
+#~ "Hi ha un error a l'adreça «%s»: l'atribut de la família no està ben "
+#~ "formatat"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "S'ha muntat %s a %s\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; s'està ignorant la sobreescriptura d'aquesta clau.\n"
 
index 4ce6355..041e977 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -9,14 +9,14 @@
 # Lukas Novotny <lukasnov@cvs.gnome.org>, 2006.
 # Jakub Friedl <jfriedl@suse.cz>, 2006, 2007.
 # Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015.
-# Marek Černocký <marek@manet.cz>, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
+# Marek Černocký <marek@manet.cz>, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
-"PO-Revision-Date: 2019-09-02 02:43+0200\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-26 13:12+0100\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: čeština <gnome-cs-list@gnome.org>\n"
 "Language: cs\n"
@@ -123,8 +123,8 @@ msgstr "Příkaz, ke kterému vypsat podrobnou nápovědu"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identifikátor aplikace ve formátu D-Bus (např. org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "SOUBOR"
@@ -288,7 +288,7 @@ msgstr "Proud je již uzavřen"
 msgid "Truncate not supported on base stream"
 msgstr "Zkrácování není v proudu podporováno"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -308,22 +308,22 @@ msgstr "Cíl nemá dostatek místa"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Neplatná posloupnost bajtů na vstupu převodu"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Chyba při převodu: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Zrušitelné spuštění není podporováno"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Převod ze znakové sady „%s“ do „%s“ není podporován"
@@ -347,19 +347,23 @@ msgstr "Neznámý typ"
 msgid "%s filetype"
 msgstr "typ souboru %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials obsahuje neplatná data"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials na tomto OS není implementováno"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Danou platformu GCredentials nepodporuje"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials na tomto OS neobsahuje ID procesu"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Změna přihlašovacích údajů na tomto OS není implementován"
 
@@ -367,7 +371,7 @@ msgstr "Změna přihlašovacích údajů na tomto OS není implementován"
 msgid "Unexpected early end-of-stream"
 msgstr "Neočekávaný časný konec proudu"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepodporovaný klíč „%s“ v záznamu s adresou „%s“"
@@ -386,32 +390,28 @@ msgstr ""
 "Adresa „%s“ je neplatná (je zapotřebí právě jeden z klíčů path, tmpdir nebo "
 "abstract)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Chyba v adrese „%s“ – atribut portu má chybný formát"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Chyba v adrese „%s“ – atribut rodiny má chybný formát"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Chyba v adrese „%s“ – atribut „%s“ má chybný formát"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Neznámý nebo nepodporovaný přenos „%s“ adresy „%s“"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Prvek adresy „%s“ neobsahuje dvojtečku (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Název přenosu v prvku adresy „%s“ nesmí být prázdný"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -419,13 +419,13 @@ msgid ""
 msgstr ""
 "Pár klíč/hodnota %d, „%s“, v prvku adresy „%s“ neobsahuje znak rovná se"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr "Pár klíč/hodnota %d, „%s“ v prvku adresy „%s“ nesmí mít prázdný klíč"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -434,7 +434,7 @@ msgstr ""
 "Chyba v neuvozeném klíči nebo hodnotě v páru klíč/hodnota %d, „%s“, v prvku "
 "adresy „%s“"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -443,74 +443,74 @@ msgstr ""
 "Chyba v adrese „%s“ – unix transport vyžaduje jako nastavený právě jeden z "
 "klíčů „path“ nebo „abstract“"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ – atribut počítače schází nebo má chybný formát"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ – atribut portu schází nebo má chybný formát"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ – atribut noncefile schází nebo má chybný formát"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Chyba při automatickém spouštění: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Chyba při otevírání souboru nonce „%s“: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Chyba při čtení ze souboru nonce „%s“: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Chyba při čtení ze souboru nonce „%s“, očekáváno 16 bajtů, obdrženo %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Chyba při zápisu obsahu souboru nonce „%s“ do proudu:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Daná adresa je prázdná"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Nelze spustit sběrnici zpráv bez setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Nelze spustit sběrnici zpráv bez machine-id: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Nelze automaticky spustit D-Bus bez X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Chyba při spouštění příkazového řádku „%s“: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Nelze určit adresu sběrnice sezení (v tomto OS neimplementováno)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -519,7 +519,7 @@ msgstr ""
 "Nelze určit adresu sběrnice z proměnné prostředí DBUS_STARTER_BUS_TYPE – "
 "neznámá hodnota „%s“"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -527,100 +527,100 @@ msgstr ""
 "Nelze určit adresu sběrnice, jelikož proměnná prostředí "
 "DBUS_STARTER_BUS_TYPE není nastavena"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Neznámý typ sběrnice %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Neočekávaně scházející obsah při pokusu o přečtení řádku"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Neočekávaně scházející obsah při pokusu o (bezpečné) přečtení řádku"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr ""
 "Vyčerpány všechny dostupné ověřovací mechanismy (pokusů: %s) (dostupných: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Zrušeno přes GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Chyba při získávání informací pro složku „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Oprávnění složky „%s“ mají chybný formát. Očekáván režim 0700, obdržen 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Chyba při vytváření složky %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Chyba při otevírání klíčenky „%s“ ke čtení: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Řádek %d klíčenky na „%s“ s obsahem „%s“ má chybný formát"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "První symbol řádku %d klíčenky na „%s“ s obsahem „%s“ má chybný formát"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Druhý symbol řádku %d klíčenky na „%s“ s obsahem „%s“ má chybný formát"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nenalezena cookie s id %d v klíčence na „%s“"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Chyba při mazání zastaralého zamykacího souboru „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Chyba při vytváření zamykacího souboru „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Chyba při zavírání (neodkazovaného) zamykacího souboru „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Chyba mazámí zamykacího souboru „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Chyba při otevírání klíčenky „%s“ k zápisu: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Navíc selhalo také uvolnění zámku pro „%s“: %s) "
@@ -639,106 +639,106 @@ msgid ""
 msgstr ""
 "Nalezeny nepodporované příznaky při vytváření spojení na straně klienta"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Rozhraní „org.freedesktop.DBus.Properties“ na objektu na cestě %s neexistuje"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Vlastnost „%s“ neexistuje"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Vlastnost „%s“ není ke čtení"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Vlastnost „%s“ není zapisovatelná"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Chyba při nastavování vlastnosti „%s“: Očekáván typ „%s“, ale obdržen „%s“"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Rozhraní „%s“ neexistuje"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Rozhraní „%s“na objektu na cestě %s neexistuje"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Metoda „%s“ neexistuje"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Typ zprávy „%s“ se neshoduje s očekávaným typem „%s“"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Objekt je již exportován pro prostředí %s na %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nelze načíst vlastnost %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nelze nastavit vlastnost %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metoda „%s“ vrátila typ „%s“, ale očekáván byl „%s“"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metoda „%s“ na rozhraní „%s“ s podpisem „%s“ neexistuje"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Podstrom je již exportován pro %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "typ je INVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Zpráva METHOD_CALL: pole se záhlavím PATH nebo MEMBER schází"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Zpráva METHOD_RETURN: pole se záhlavím REPLY_SERIAL schází"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Zpráva ERROR: pole se záhlavím REPLY_SERIAL nebo ERROR_NAME schází"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Zpráva SIGNAL: pole se záhlavím PATH, INTERFACE nebo MEMBER schází"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -746,7 +746,7 @@ msgstr ""
 "Zpráva SIGNAL: pole se záhlavím PATH používá rezervovanou hodnotu /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -754,7 +754,7 @@ msgstr ""
 "Zpráva SIGNAL: pole se záhlavím INTERFACE používá rezervovanou hodnotu org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -762,12 +762,12 @@ msgstr[0] "Zamýšlel se přečíst %lu bajt, ale obdrženo %lu"
 msgstr[1] "Zamýšlely se přečíst %lu bajty, ale obdrženo %lu"
 msgstr[2] "Zamýšlelo se přečíst %lu bajtů, ale obdrženo %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Očekáván bajt NULL za řetězcem „%s“, ale byl nalezen bajt %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -776,17 +776,21 @@ msgstr ""
 "Očekáván platný řetězec UTF-8, ale byly nalezeny neplatné bajty na pozici %d "
 "(délka řetězce je %d). Platný řetězec UTF-8 až do příslušného bodu byl „%s“"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Hodnota je zanořená příliš hluboko"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Analyzovaná hodnota „%s“ není platná cesta objektu D-Bus"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Analyzovaná hodnota „%s“ není platný podpis D-Bus"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -799,7 +803,7 @@ msgstr[1] ""
 msgstr[2] ""
 "Zjištěno pole o délce %u bajtů. Maximální délka je 2<<26 bajtů (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -808,12 +812,12 @@ msgstr ""
 "Vyskytlo se pole typu „a%c“, které by mělo mít délku v násobku %u bajtů, ale "
 "skutečná délka je %u bajtů"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Analyzovaná hodnota „%s“ varianty není platným podpisem D-Bus"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -821,7 +825,7 @@ msgstr ""
 "Chyba při rušení serializace GVariant s řetězcem typu „%s“ z přenosového "
 "formátu D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -830,27 +834,27 @@ msgstr ""
 "Neplatná hodnota endianity. Očekávána 0x6c („l“) nebo 0x42 („B“), ale "
 "nalezena hodnota 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Neplatná verze hlavního protokolu. Očekávána 1, ale nalezena %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Byla nalezena hlavička podpisu, ale není typu podpis"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Byla nalezena hlavička podpisu s podpisem „%s“, ale tělo zprávy je prázdné"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Analyzovaná hodnota „%s“ není platným podpisem D-Bus (pro tělo)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -858,11 +862,11 @@ msgstr[0] "Ve zprávě není hlavička s podpisem, ale tělo zprávy má %u bajt
 msgstr[1] "Ve zprávě není hlavička s podpisem, ale tělo zprávy má %u bajty"
 msgstr[2] "Ve zprávě není hlavička s podpisem, ale tělo zprávy má %u bajtů"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Nelze zrušit serializaci zprávy: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -870,59 +874,59 @@ msgstr ""
 "Chyba při serializaci GVariant s řetězcem typu „%s“ do přenosového formátu D-"
 "Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Počet popisovačů souborů ve zprávě (%d) se liší od pole v hlavičce (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Nelze serializovat zprávu: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Tělo zprávy má podpis „%s“, ale záhlaví s podpisem neexistuje"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr "Tělo zprávy má podpis typu „%s“, ale podpis v poli se záhlavím je „%s“"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Tělo zprávy je prázdné, ale podpis v poli se záhlavím je „(%s)“"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Navrácena chyba s tělem typu „%s“"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Navrácena chyba s prázdným tělem"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Zmáčknutím libovolného znaku okno zavřete)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Služba dbus sezení neběží a automatické spuštění selhalo"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nelze získat profil hardwaru: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Nelze načíst /var/lib/dbus/machine-id nebo /etc/machine-id: "
 
@@ -945,25 +949,25 @@ msgstr ""
 "Metodu nelze vyvolat; proxy je na dobře známý název %s bez vlastníka a proxy "
 "byla vytvořena s příznakem G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Abstraktní jmenný prostor není podporován"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Při vytváření serveru nelze určit soubor nonce"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Chyba při zápisu souboru nonce na „%s“: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Řetězec „%s“ není platné D-Bus GUID"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Nelze naslouchat na nepodporovaném přenosu „%s“"
@@ -1242,38 +1246,38 @@ msgstr "Chyba: Příliš mnoho argumentů.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Chyba: %s není platným oficiálně známým názvem sběrnice.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Bez názvu"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "V souboru .desktop není určeno pole Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Nezdařilo se najít  terminál vyžadovaný pro aplikaci"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Nezdařilo se vytvořit složku %s s uživatelským nastavením aplikace: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nezdařilo se vytvořit složku %s s uživatelským nastavením MIME: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Informace o aplikaci postrádá identifikátor"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nezdařilo se vytvořit uživatelský soubor .desktop %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Vlastní definice %s"
@@ -1334,12 +1338,12 @@ msgstr "Chybný počet tokenů (%d) v kódování GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Očekáváno GEmblem u GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operace není podporována"
@@ -1348,70 +1352,74 @@ msgstr "Operace není podporována"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Obsahující připojené neexistuje"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Nelze kopírovat nad složku"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Nelze kopírovat složku nad složku"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Cílový soubor existuje"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Složku nelze kopírovat rekurzivně"
 
 # For splice(), see http://en.wikipedia.org/w/index.php?title=Splice_(system_call)&oldid=334434835
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "splice() není podporováno"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Chyba při spojování souboru: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopírování (reflink/clone) mezi připojeními není podporováno"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopírování (reflink/clone) není podporováno nebo je neplatné"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopírování (reflink/clone) není podporováno nebo neproběhlo správně"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Nelze kopírovat zvláštní soubor"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Zadaný symbolický odkaz je neplatný"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Symbolické odkazy nejsou podporovány"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Zahozené není podporováno"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Názvy souborů nemohou obsahovat „%c“"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "svazek neumí připojení"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Žádná aplikace není zaregistrována k obsluze tohoto souboru"
 
@@ -1456,7 +1464,7 @@ msgstr "Oříznutí není možné ve vstupním datovém proudu"
 msgid "Truncate not supported on stream"
 msgstr "Oříznutí není v datovém proudu podporováno"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Neplatný název počítače"
@@ -1573,7 +1581,7 @@ msgstr "Zachovat u souboru, když je přesunut"
 msgid "“version” takes no arguments"
 msgstr "„version“ nepřebírá žádné argumenty"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Použití:"
 
@@ -1659,10 +1667,10 @@ msgid "Error writing to stdout"
 msgstr "Chyba při zápisu do standardního výstupu"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1682,56 +1690,60 @@ msgstr ""
 "lokálních souborů používá umístění GIO: například můžete pro umístění\n"
 "použít něco jako smb://server/cesta/soubor.txt"
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Nebylo zadáno žádné umístění"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Nebyla zadána žádná cílová složka"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Zobrazovat průběh"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Před přepsáním se dotázat"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Zachovat všechny atributy"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Zálohovat stávající cílové soubory"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Nenásledovat symbolické odkazy"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Používat pro tento cíl výchozí oprávnění"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Přeneseno %s z %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "ZDROJ"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "CÍL"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Kopírovat jeden nebo více souborů ze ZDROJE do CÍLE."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1741,88 +1753,98 @@ msgstr ""
 "namísto lokálních souborů umístění GIO: například můžete pro umístění\n"
 "použít něco jako smb://server/cesta/soubor.txt."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Cíl %s není složka"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: přepsat „%s“?"
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Vypsat zapisovatelné atributy"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Vypsat informace o souborovém systému"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Atributy, které se mají vypsat"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTY"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Nenásledovat symbolické odkazy"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atributy:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "zobrazovaný název: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "upravovaný název: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "název: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "typ: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "velikost: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "skrytý\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "adresa uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "místní cesta: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "připojené unixové svazky: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Nastavitelné atributy:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Jmenné prostory zapisovatelných atributů:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Zobrazit informace o umístění"
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1836,23 +1858,27 @@ msgstr ""
 "jejich názvy GIO: např. standard::icon, nebo jednoduše pomocí jmenného\n"
 "prostoru, např. unix, nebo pomocí „*“, která odpovídá všem atributům."
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Zobrazit skryté soubory"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Použít dlouhý formát výpisu"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Vypisovat zobrazované názvy"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Vypsat úplné adresy URI"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Vypsat obsahy umístění."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1978,12 +2004,13 @@ msgid "Mount as mountable"
 msgstr "Připojit jako připojitelný"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Připojit svazek odpovídající souboru zařízení"
+msgid "Mount volume with device file, or other identifier"
+msgstr ""
+"Připojit svazek odpovídající souboru zařízení nebo jinému identifikátoru"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "ZAŘÍZENÍ"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -1997,6 +2024,10 @@ msgstr "Vysunout"
 msgid "Stop drive with device file"
 msgstr "Zastavit médium odpovídající souboru zařízení"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "ZAŘÍZENÍ"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Odpojit všechna připojení se zadaným schématem"
@@ -2050,16 +2081,11 @@ msgstr "Anonymní přístup byl zamítnut"
 msgid "No drive for device file"
 msgstr "Pro soubor zařízení není žádné médium"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Připojeno %s do %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Pro soubor zařízení není žádný svazek"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Pro dané ID není žádný svazek"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Připojit nebo odpojit umístění."
 
@@ -2275,20 +2301,20 @@ msgstr "Chyba čtení souboru „%s“: %s"
 msgid "Error compressing file %s"
 msgstr "Chyba při komprimaci souboru „%s“"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "text nemůže být umístěn uvnitř <%s>"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Zobrazit verzi programu a skončit"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Název výstupního souboru"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2296,48 +2322,48 @@ msgstr ""
 "Složka, ze které mají být čteny soubory odkazované v SOUBOR (výchozí je "
 "aktuální složka)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "SLOŽKA"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generovat výstup ve formátu vybraného podle přípony v názvu cílového souboru"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Generovat hlavičkový soubor"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Generovat zdrojový kód, který se použije ve vašem zdrojovém kódu jako odkaz "
 "na soubor prostředků"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Generovat seznam závislostí"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Název souboru se závislostmi, který se má vygenerovat"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Do generovaných souborů závislostí zahrnout i fiktivní cíle"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Prostředek nevytvářet a neregistrovat automaticky"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Neexportovat funkce; označit je za G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2345,11 +2371,11 @@ msgstr ""
 "Nevkládat data prostředků do souborů C; předpokládat, že jsou místo toho "
 "navázána externě"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "Název identifikátoru C použitý ke generování zdrojového kódu"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2359,7 +2385,7 @@ msgstr ""
 "Soubory se specifikacemi prostředků musí mít příponu .gschema.xml,\n"
 "a soubor prostředků musí mít příponu .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Měl by být zadán právě jeden název souboru\n"
 
@@ -2836,7 +2862,8 @@ msgstr "Žádné soubory schémat nenalezeny: nebude se nic dělat."
 
 #: gio/glib-compile-schemas.c:2271
 msgid "No schema files found: removed existing output file."
-msgstr "Žádné soubory schémat nenalezeny: odstraněn existující výstupní soubor."
+msgstr ""
+"Žádné soubory schémat nenalezeny: odstraněn existující výstupní soubor."
 
 #: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
@@ -2871,7 +2898,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Soubor nelze přejmenovat, název souboru již existuje"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Neplatný název souboru"
 
@@ -2946,130 +2973,126 @@ msgstr "Systém souborů nepodporuje symbolické odkazy"
 msgid "Error making symbolic link %s: %s"
 msgstr "Chyba při vytváření symbolického odkazu %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Symbolické odkazy nejsou podporovány"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Chyba při přesunování souboru %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Složku nelze přesunout nad složku"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Vytvoření záložního souboru selhalo"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Chyba při odstraňování cílového souboru: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Přesunování mezi připojeními není podporováno"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Nelze zjistit využití disku %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Hodnota atributu nesmí být prázdná"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Neplatný typ atributu (očekáván řetězec)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Neplatný název rozšířeného atributu"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Chyba při nastavování rozšířeného atributu „%s“: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (neplatné kódování)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Chyba při získávání informací pro soubor „%s“: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Chyba při získávání informací pro popisovače souboru: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Neplatný typ atributu (očekáván uint32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Neplatný typ atributu (očekáván uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Neplatný typ atributu (očekáván bajtový řetězec)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Nelze nastavit oprávnění na symbolických odkazech"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Chyba při nastavování oprávnění: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Chyba při nastavování vlastníka: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "symbolický odkaz nesmí být prázdný"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Chyba při nastavování symbolického odkazu: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Chyba při nastavování symbolického odkazu: soubor není symbolickým odkazem"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Chyba při nastavování změny nebo času přístupu: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "Kontext SELinux nesmí být prázdný"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Chyba při nastavování kontextu SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "V tomto systému není SELinux povolen"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Nastavení atributu %s není podporováno"
@@ -3092,7 +3115,7 @@ msgstr "Chyba při hledání v souboru: %s"
 msgid "Error closing file: %s"
 msgstr "Chyba při zavírání souboru: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Nelze nalézt výchozí typ sledování místního souboru"
 
@@ -3236,11 +3259,11 @@ msgstr "připojené neumí synchronní odhad typu obsahu"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Název počítače „%s“ obsahuje „[“, ale nikoliv „]“"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Síť není dostupná"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Počítač není dostupný"
 
@@ -3281,18 +3304,18 @@ msgstr "Součet vektorů předaných do %s je příliš velký"
 msgid "Source stream is already closed"
 msgstr "Zdrojový proud je již ukončen"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Chyba při řešení „%s“: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "Funkce %s není implementovaná"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Neplatná doména"
 
@@ -3667,173 +3690,173 @@ msgstr "Poskytnut prázdný název schématu\n"
 msgid "No such key “%s”\n"
 msgstr "Klíč „%s“ neexistuje\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Neplatný soket, nebyl spuštěn"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Neplatný soket, spuštění selhalo kvůli: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Soket je již ukončen"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Časový limit V/V soketu vypršel"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "vytváří se GSocket z fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nelze vytvořit soket: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Byla zadána neznámá rodina"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Byl zadán neznámý protokol"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Nelze používat datagramové operace na nedatagramovém soketu."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Nelze používat datagramové operace na soketu s nastaveným časovým limitem."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nezdařilo se získat místní adresu: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nezdařilo se získat vzdálenou adresu: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "nezdařilo se naslouchání: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Chyba při propojení na adresu: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Chyba při navázání na adresu %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Chyba připojování ke skupině hromadného vysílání: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Chyba při opouštění skupiny hromadného vysílání: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Není podpora pro hromadné vysílání určené zdrojem"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Nepodporovaná rodina soketů"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "určení zdroje není adresa IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Název rozhraní je příliš dlouhý"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Rozhraní nebylo nalezeno: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Není podpora pro hromadné vysílání určené zdrojem IPv4"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Není podpora pro hromadné vysílání určené zdrojem IPv6"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Chyba při přijímání spojení: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Probíhá spojení"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Nelze získat nevyřízenou chybu: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Chyba při získávání dat: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Chyba při odesílání dat: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nelze ukončit soket: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Chyba při zavírání soketu: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Čeká se na stav soketu: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Chyba při odesílání zprávy: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage nepodporováno na Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Chyba při získávání zprávy: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nelze číst pověření k soketu: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials není u tohoto OS implementováno"
 
@@ -4098,7 +4121,7 @@ msgstr "Chyba při čtení z popisovače souboru: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Chyba při zavírání popisovače souboru: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Kořen systému souborů"
 
@@ -4185,72 +4208,72 @@ msgstr "Nesprávné argumenty\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Neočekávaný atribut „%s“ prvku „%s“"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Atribut „%s“ prvku „%s“ nebyl nalezen"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Neočekávaná značka „%s“, byla očekávána značka „%s“"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Neočekávaná značka „%s“ v „%s“"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Neplatné datum/čas „%s“ v souboru se záložkami"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "V datových složkách nebyl nalezen platný soubor záložek"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Záložka URI „%s“ již existuje"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Nebyla nalezena záložka URI „%s“"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "V záložce URI „%s“ není definován žádný typ MIME"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "V záložce URI „%s“ nebyl definován žádný soukromý příznak"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "V záložce URI „%s“ nejsou nastavené žádné skupiny"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Žádná aplikace s názvem „%s“ nezaregistrovala záložku „%s“"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Nelze rozšířit řádek exec „%s“ pomocí URI „%s“"
@@ -4259,8 +4282,8 @@ msgstr "Nelze rozšířit řádek exec „%s“ pomocí URI „%s“"
 msgid "Unrepresentable character in conversion input"
 msgstr "Nereprezentovatelný znak na vstupu převodu"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Částečná posloupnost znaků na konci vstupu"
 
@@ -4809,24 +4832,24 @@ msgstr "Šablona „%s“ neobsahuje XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Nelze přečíst symbolický odkaz „%s“: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Nelze otevřít převodník z „%s“ do „%s“: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Nelze přímo číst v g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Ve vstupní vyrovnávací paměti zbyla nepřevedená data"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Kanál ukončen částí znaku"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nelze přímo číst v g_io_channel_read_to_end"
 
@@ -4866,8 +4889,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Soubor klíče obsahuje nepodporované kódování „%s“"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Soubor klíče nemá skupinu „%s“"
@@ -4903,31 +4926,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Klíč „%s“ ve skupině „%s“ má hodnotu „%s“, když byla očekávána „%s“"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Soubor klíče obsahuje na konci řádku znak změny"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Soubor klíče obsahuje neplatnou únikovou sekvenci „%s“"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Hodnotu „%s“ nelze interpretovat jako číslo."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Celočíselná hodnota „%s“ je mimo rozsah"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Hodnotu „%s“ nelze interpretovat jako reálné (plovoucí) číslo."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Hodnotu „%s“ nelze interpretovat jako pravdivostní hodnotu."
@@ -5015,18 +5038,18 @@ msgstr ""
 "Entita nekončí středníkem; pravděpodobně jste použili znak & bez úmyslu "
 "začít entitu – zapište prosím ligaturu et jako &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokument musí začínat prvkem (například: <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 msgstr "„%s“ není platný znak po znaku „<“; nesmí jím začínat název prvku"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5035,14 +5058,19 @@ msgstr ""
 "Nezapadající znak „%s“, byl očekáván znak „>“ k ukončení značky empty-"
 "element „%s“"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Příliš mnoho atributů v prvku „%s“"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr ""
 "Nezapadající znak „%s“, po názvu atributu „%s“ prvku „%s“ bylo očekáváno „=“"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5053,7 +5081,7 @@ msgstr ""
 "značky prvku „%s“, nebo případně atribut; pravděpodobně jste použili "
 "neplatný znak v názvu atributu"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5062,7 +5090,7 @@ msgstr ""
 "Nezapadající znak „%s“, po znaku rovnítka při udávání hodnoty atributu „%s“ "
 "prvku „%s“ byly očekávány uvozovky"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5070,7 +5098,7 @@ msgid ""
 msgstr ""
 "„%s“ není platný znak po znacích „</“; znakem „%s“ nesmí začínat název prvku"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5079,25 +5107,25 @@ msgstr ""
 "„%s“ není povoleným znakem po ukončovacím názvu prvku „%s“; povoleným znakem "
 "je „>“"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Prvek „%s“ byl uzavřen, žádný prvek není momentálně otevřený"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Prvek „%s“ byl uzavřen, ale aktuálně je otevřený prvek „%s“"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokument je prázdný nebo obsahuje pouze mezery"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Dokument neočekávaně skončil ihned po otevírací značce „<“"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5106,7 +5134,7 @@ msgstr ""
 "Dokument neočekávaně skončil s otevřenými prvky – poslední otevřený prvek "
 "byl „%s“"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5114,19 +5142,19 @@ msgid ""
 msgstr ""
 "Dokument neočekávaně skončil, byla očekávána uzavírací závorka značky <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokument neočekávaně skončil uvnitř názvu prvku"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokument neočekávaně skončil uvnitř názvu atributu"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokument neočekávaně skončil ve značce otevírající prvek."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5134,83 +5162,83 @@ msgstr ""
 "Dokument neočekávaně skončil po znaku přiřazení následujícím za názvem "
 "atributu; chybí hodnota atributu"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokument neočekávaně skončil uvnitř hodnoty atributu"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Dokument neočekávaně skončil uvnitř uzavírací značky prvku „%s“"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Dokument neočekávaně skončil uvnitř uzavírací značky neotevřeného prvku"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Dokument neočekávaně skončil uvnitř komentáře nebo instrukce pro zpracování"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[PŘEPÍNAČ…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Přepínače nápovědy:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Zobrazit přepínače nápovědy"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Zobrazit všechny přepínače nápovědy"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Přepínače aplikace:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Přepínače:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Nelze zpracovat celočíselnou hodnotu „%s“ u %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Celočíselná hodnota „%s“ pro %s je mimo rozsah"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr ""
 "Nelze zpracovat reálnou hodnotu s dvojitou přesností (double) „%s“ u %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr ""
 "Reálná hodnota s dvojitou přesností (double) „%s“ pro %s je mimo rozsah"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Chyba volby %s při syntaktické analýze"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Chybí parametr %s"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Neznámý přepínač %s"
@@ -5614,77 +5642,77 @@ msgstr "Text je prázdný (nebo obsahuje pouze mezery)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Nelze číst data z procesu potomka (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Neočekávaná chyba v select() při čtení dat z procesu potomka (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Neočekávaná chyba při čtení dat z procesu potomka (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Neočekávaná chyba v waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Proces potomka skončil s kódem %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Proces potomka byl zabit signálem %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Proces potomka byl zastaven signálem %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Proces potomka neskončil normálně"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Selhalo čtení z roury potomka (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Selhalo zplození procesu potomka „%s“ (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Selhalo rozvětvení procesu (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Selhal přechod do složky „%s“ (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Selhalo spuštění procesu potomka „%s“ (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Selhalo přesměrování vstupu nebo výstupu procesu potomka (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Selhalo rozvětvení procesu potomka (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Neznámá chyba při běhu procesu potomka „%s“"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Nezdařilo se přečíst dostatek dat z roury pid potomka (%s)"
@@ -5735,187 +5763,187 @@ msgid ""
 msgstr ""
 "Neočekávaná chyba v g_io_channel_win32_poll() při čtení dat z procesu potomka"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Prázdný řetězec není číslo"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s“ není číslo se znaménkem"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Číslo „%s“ je mimo meze [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s“ není číslo bez znaménka"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Nelze alokovat paměť"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Znak je mimo rozsah UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Neplatná posloupnost na vstupu převodu"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Znak je mimo rozsah UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -5923,7 +5951,7 @@ msgstr[0] "%u bajt"
 msgstr[1] "%u bajty"
 msgstr[2] "%u bajtů"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5932,7 +5960,7 @@ msgstr[1] "%u bity"
 msgstr[2] "%u bitů"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5941,7 +5969,7 @@ msgstr[1] "%s bajty"
 msgstr[2] "%s bajtů"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5954,32 +5982,38 @@ msgstr[2] "%s bitů"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
+
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Chyba v adrese „%s“ – atribut rodiny má chybný formát"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "Připojeno %s do %s\n"
index 91dde6f..be4e15a 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -27,8 +27,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-09-07 11:26+0000\n"
-"PO-Revision-Date: 2019-10-02 05:43+0200\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-25 20:01+0100\n"
 "Last-Translator: Alan Mortensen <alanmortensen.am@gmail.com>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
 "Language: da\n"
@@ -296,7 +296,7 @@ msgstr "Strømmen er allerede lukket"
 msgid "Truncate not supported on base stream"
 msgstr "Beskæring understøttes ikke af basisstrømmen"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -316,22 +316,22 @@ msgstr "Utilstrækkelig plads på destinationen"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Ugyldig bytesekvens i konverteringsinddata"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Fejl under konvertering: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Initialisering med mulighed for afbrydelse understøttes ikke"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Konvertering fra tegnsæt “%s” til “%s” er ikke understøttet"
@@ -355,19 +355,23 @@ msgstr "Ukendt type"
 msgid "%s filetype"
 msgstr "%s-filtype"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials indeholder ugyldige data"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials er ikke implementeret på dette operativsystem"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Der er ingen understøttelse for GCredentials på din platform"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials indeholder ikke en proces-id på dette operativsystem"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Falske akkreditiver er ikke mulige på dette operativsystem"
 
@@ -375,7 +379,7 @@ msgstr "Falske akkreditiver er ikke mulige på dette operativsystem"
 msgid "Unexpected early end-of-stream"
 msgstr "Uventet tidlig strømafslutning"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Ikke-understøttet nøgle “%s” i adresseindgang “%s”"
@@ -390,34 +394,32 @@ msgstr "Meningsløst nøgle-/værdikombination i adresseindgang “%s”"
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
-msgstr "Adressen “%s” er ugyldig (kræver præcist en af nøglerne path, dir, tmpdir eller abstract)"
-
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Fejl i adressen “%s” — attributten port er fejlformateret"
+msgstr ""
+"Adressen “%s” er ugyldig (kræver præcist en af nøglerne path, dir, tmpdir "
+"eller abstract)"
 
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Fejl i adressen “%s” — attributten family er fejlformateret"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Fejl i adressen “%s” — attributten “%s” er fejlformateret"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Ukendt eller ikke-understøttet transport “%s” for adressen “%s”"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adresseelementet “%s” indeholder intet kolon (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transportnavn i adresseelementet “%s” må ikke være tomt"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -426,13 +428,14 @@ msgstr ""
 "Nøgle-/værdiparret %d, “%s” i adresseelementet “%s” indeholder ikke et "
 "lighedstegn"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
-msgstr "Nøgle-/værdiparret %d, “%s” i adresseelementet “%s” må ikke have en tom nøgle"
+msgstr ""
+"Nøgle-/værdiparret %d, “%s” i adresseelementet “%s” må ikke have en tom nøgle"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -441,7 +444,7 @@ msgstr ""
 "Fejl ved af-undvigelse af nøgle eller værdi i nøgle-/værdiparret %d, “%s” i "
 "adresseelementet “%s”"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -450,79 +453,79 @@ msgstr ""
 "Fejl i adressen “%s” — unix-transporten kræver at præcist en af nøglerne "
 "“path” eller “abstract” er givet"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Fejl i adressen “%s” — værtsattributten mangler eller er fejlformateret"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Fejl i adressen “%s” — portattributten mangler eller er fejlformateret"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Fejl i adressen “%s” — noncefile-attributten mangler eller er fejlformateret"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Fejl ved automatisk opstart: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Fejl ved åbning af “nonce”-filen “%s”: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Fejl ved læsning af “nonce”-filen “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Fejl ved læsning af “nonce”-filen “%s”. Forventede 16 byte, fandt %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Fejl under skrivning af indhold af “nonce”-filen “%s” til strømmen:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Den givne adresse er tom"
 
 # nå ja, det er ikke grimmere på dansk end på engelsk
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Kan ikke starte en meddelelsesbus når setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Kan ikke starte en meddelelsesbus uden maskine-id: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Kan ikke køre D-Bus automatisk uden $DISPLAY til X11"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Fejl ved kørsel af kommandolinjen “%s”: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Kan ikke bestemme sessionsbussens adresse (ikke implementeret for dette "
 "operativsystem)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -531,7 +534,7 @@ msgstr ""
 "Kan ikke bestemme busadressen fra miljøvariablen DBUS_STARTER_BUS_TYPE — "
 "ukendt værdi “%s”"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -539,20 +542,20 @@ msgstr ""
 "Kan ikke bestemme busadressen, da miljøvariablen DBUS_STARTER_BUS_TYPE ikke "
 "er angivet"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Ukendt bustype %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Uventet mangel på indhold ved forsøg på at læse en linje"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Uventet mangel på indhold ved forsøg på (sikkert) at læse en linje"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -560,16 +563,16 @@ msgstr ""
 "Forsøgte alle tilgængelige godkendelsesmekanismer (forsøgt: %s) "
 "(tilgængelige: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Annulleret via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Fejl ved indhentning af oplysninger for mappen “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -577,22 +580,22 @@ msgstr ""
 "Rettigheder for mappen “%s” er fejlformateret. Forventede tilstanden 0700, "
 "fandt 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Fejl ved oprettelse af mappen “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Fejl ved åbning af nøgleringen “%s” til læsning: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Linje %d i nøgleringen på “%s” med indholdet “%s” er fejlformateret"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -600,7 +603,7 @@ msgstr ""
 "Første symbol i linje %d af nøgleringen på “%s” med indholdet “%s” er "
 "fejlformateret"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -608,37 +611,37 @@ msgstr ""
 "Andet symbol i linje %d af nøgleringen på “%s” med indholdet “%s” er "
 "fejlformateret"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Fandt ingen cookie med id %d i nøgleringen på “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Fejl ved sletning af forældet låsefil “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Fejl ved oprettelse af låsefil “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Fejl ved lukning af låsefil (uden link) “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Fejl ved fjernelse af link til låsefil “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Fejl ved åbning af nøgleringen “%s” til skrivning: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Yderligere kunne låsen for “%s” ikke opgives: %s) "
@@ -658,107 +661,107 @@ msgstr ""
 "Der blev fundet ikke-understøttede flag ved oprettelse af en forbindelse på "
 "klientsiden"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Ingen grænseflade “org.freedesktop.DBus.Properties” på objekt ved stien %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Ingen sådan egenskab “%s”"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Egenskaben “%s” kan ikke læses"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Egenskaben “%s” er skrivebeskyttet"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Fejl ved anvendelse af egenskaben “%s”: Forventede typen “%s”, men fik “%s”"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Ingen sådan grænseflade “%s”"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Ingen sådan grænseflade “%s” på objektet ved stien %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Ingen sådan metode “%s”"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Beskedtypen “%s” er ikke den forventede type, “%s”"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Der er allerede eksporteret et objekt for grænsefladen %s på %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Kan ikke hente egenskaben %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Kan ikke sætte egenskaben %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metoden “%s” returnerede typen “%s”, men forventede “%s”"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metoden “%s” på grænsefladen “%s” med signatur “%s” findes ikke"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Der er allerede eksporteret et undertræ for %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "typen er INVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 "Meddelelse for METHOD_CALL: Et af teksthovederne PATH eller MEMBER mangler"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Meddelelse for METHOD_RETURN: Teksthovedet REPLY_SERIAL mangler"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "FEJLmeddelelse: Teksthovedet REPLY_SERIAL eller ERROR_NAME mangler"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNALmeddelelse: Teksthovedet PATH, INTERFACE eller MEMBER mangler"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -766,7 +769,7 @@ msgstr ""
 "SIGNALmeddelelse: Teksthovedet PATH bruger den reserverede værdi /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -774,19 +777,19 @@ msgstr ""
 "SIGNALbesked: Teksthovedet INTERFACE bruger den reserverede værdi org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Ville læse %lu byte men fik kun %lu"
 msgstr[1] "Ville læse %lu byte men fik kun %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Forventede NUL-byte efter strengen “%s”, men fandt byte %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -796,17 +799,21 @@ msgstr ""
 "(strengens længde er %d). Den gyldige UTF-8-streng indtil dette punkt var "
 "“%s”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Værdien er for dybt indlejret"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Den fortolkede værdi “%s” er ikke en gyldig objektsti til D-Bus"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Fortolket værdi “%s” er ikke en gyldig D-Bus-signatur"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -819,7 +826,7 @@ msgstr[1] ""
 "Stødte på et array med længde %u bytes. Den maksimale længde er 2<<26 byte "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -828,12 +835,12 @@ msgstr ""
 "Stødte på et array af typen “a%c”, som ventes at have en længde som er et "
 "multiplum af %u byte, men som havde længde %u byte"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Fortolket værdi “%s” for variant er ikke en gyldig D-Bus-signatur"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -841,7 +848,7 @@ msgstr ""
 "Fejl ved deserialisering af GVariant med type-streng “%s” fra D-Bus-wire-"
 "formatet"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -850,38 +857,38 @@ msgstr ""
 "Ugyldigt værdi for byterækkefølge (endianness). Forventede 0x6c (“l”) eller "
 "0x42 (“B”), men fandt værdien 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Igyldig hovedprotokolversion. Forventede 1 men fandt %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Signaturteksthoved fundet, men er ikke af typen signatur"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signaturteksthoved med signaturen “%s” fundet, men beskedteksten er tom"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Fortolket værdi “%s” er ikke en gyldig D-Bus-signatur (for tekst)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "Intet signaturteksthoved i beskeden, men beskedteksten er %u byte"
 msgstr[1] "Intet signaturteksthoved i beskeden, men beskedteksten er %u bytes"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Kan ikke deserialisere besked: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -889,23 +896,23 @@ msgstr ""
 "Fejl ved serialisering af GVariant med typestreng “%s” til D-Bus-wire-"
 "formatet"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Antal fildeskriptorer i meddelelsen (%d) er forskelligt fra teksthovedet (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Kan ikke serialisere besked: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Beskedteksten har signatur “%s”, men der er intet signaturteksthoved"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -913,36 +920,36 @@ msgid ""
 msgstr ""
 "Beskedteksten har typesignatur “%s”, men signaturen i teksthovedet er “%s”"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Beskedteksten er tom, men signaturen i teksthovedet er “(%s)”"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Fejlagtig returværdi med beskedtekst af typen “%s”"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Fejlagtig returværdi - tom beskedtekst"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Skriv et hvilket som helst tegn for at lukke dette vindue)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Sessions-dbus kører ikke, og autostart mislykkedes"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Kan ikke hente hardwareprofil: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Kan ikke indlæse /var/lib/dbus/machine-id eller /etc/machine-id: "
 
@@ -966,25 +973,25 @@ msgstr ""
 "Kan ikke kalde metode; proxy er for et velkendt navn %s uden ejer, og proxy "
 "blev konstrueret med flaget G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Abstrakt navnerum understøttes ikke"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Kan ikke angive “nonce”-fil ved oprettelse af server"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Fejl ved skrivning af “nonce”-fil i “%s”: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Strengen “%s” er ikke en gyldig D-Bus-GUID"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Kan ikke lytte på ikke-understøttet transport “%s”"
@@ -1261,38 +1268,38 @@ msgstr "Fejl: For mange argumenter.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Fejl: %s er ikke et gyldigt velkendt busnavn.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Unavngivet"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Skrivebordsfil angav intet Exec-felt"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Kan ikke finde terminal krævet af dette program"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Kan ikke oprette konfigurationsfolder %s for brugerprogram: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Kan ikke oprette bruger-MIME-konfigurationsfolder %s: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Programinformation mangler en identifikator"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Kan ikke oprette brugerskrivebords-fil %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Tilpasset definition for %s"
@@ -1353,12 +1360,12 @@ msgstr "Forkert antal symboler (%d) i GEmblemedIcon-kodning"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Forventede et GEmblem til GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operationen understøttes ikke"
@@ -1367,70 +1374,74 @@ msgstr "Operationen understøttes ikke"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Indeholdende montering findes ikke"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Kan ikke kopiere over mappe"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Kan ikke kopiere mappe over mappe"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Målfilen findes"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Kan ikke kopiere mappe rekursivt"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Splejsning understøttes ikke"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fejl ved splejsning af fil: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopiering (reflink/klon) mellem monteringer understøttes ikke"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiering (reflink/klon) er ikke understøttet eller ugyldigt"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiering (reflink/klon) er ikke understøttet eller virkede ikke"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Kan ikke kopiere specialfil"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Ugyldig værdi givet for symlink"
 
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Symbolske links er ikke understøttet"
+
 # I koden er det en funktion der hedder g_file_trash, som kan give dette som en fejlmeddelelse
-#: gio/gfile.c:4181
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Flyt til papirkurv understøttes ikke"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Filnavne kan ikke indeholder “%c”"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "diskenheden implementerer ikke montering"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Intet program er registreret til håndtering af denne fil"
 
@@ -1476,7 +1487,7 @@ msgstr "Afskæring tillades ikke for inputstrømmen"
 msgid "Truncate not supported on stream"
 msgstr "Afskæring understøttes ikke på strømmen"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Ugyldigt værtsnavn"
@@ -1680,10 +1691,10 @@ msgid "Error writing to stdout"
 msgstr "Fejl under skrivning til stdout"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1703,56 +1714,60 @@ msgstr ""
 "stedet for lokale filer. For eksempel kan du bruge noget i stil med smb://"
 "server/ressource/fil.txt som sted."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Ingen steder givet"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Ingen målmappe"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Vis fremgang"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Spørg før overskrivning"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Behold alle attributter"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Sikkerhedskopiér eksisterende destinationsfiler"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Følg aldrig symbolske links"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Brug standardrettigheder for destinationen"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Overførte %s ud af %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "KILDE"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINATION"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Kopiér en eller flere filer fra KILDE til DESTINATION."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1762,88 +1777,98 @@ msgstr ""
 "stedet for lokale filer. For eksempel kan du bruge noget i stil med smb://"
 "server/ressource/fil.txt som sted."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Destinationen %s er ikke en mappe"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: overskriv “%s”? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Vis attributter som kan ændres"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Hent filsysteminfo"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Attributterne som skal hentes"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTTER"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Følg ikke symbolske links"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "attributter:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "visningsnavn: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "redigeringsnavn: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "navn: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "type: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "størrelse: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "skjult\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "lokal sti: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix-montering: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Attributter som kan ændres:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Navnerum for attributter som kan ændres:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Vis oplysninger om steder."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1857,23 +1882,27 @@ msgstr ""
 "navn såsom standard::icon, eller blot ved navnerum som f.eks. unix, eller "
 "ved '*', som matcher alle attributter"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Vis skjulte filer"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Brug langt listeformat"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Vis skærmnavne"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Vis fulde URI'er"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Vis stedernes indhold."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2000,12 +2029,12 @@ msgid "Mount as mountable"
 msgstr "Montér som monterbar"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Montér diskenhed med enhedsfil"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Montér diskenhed med enhedsfil eller anden id"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "ENHED"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "Id"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2019,6 +2048,10 @@ msgstr "Skub ud"
 msgid "Stop drive with device file"
 msgstr "Stop drev med enhedsfil"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "ENHED"
+
 # Ikke sikker jf. nedenfor
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
@@ -2075,16 +2108,11 @@ msgstr "Anonym adgang nægtet"
 msgid "No drive for device file"
 msgstr "Intet drev for enhedsfilen"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Monterede %s på %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Ingen diskenhed for enhedsfilen"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Ingen diskenhed for givent id"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Montér eller afmontér stederne."
 
@@ -2741,70 +2769,93 @@ msgstr "Ignorerer denne fil."
 msgid ""
 "No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
 "override for this key."
-msgstr "Ingen sådan nøgle “%s” i skemaet “%s” som angivet i overskrivningsfilen “%s”; ignorerer overskrivning for denne nøgle."
+msgstr ""
+"Ingen sådan nøgle “%s” i skemaet “%s” som angivet i overskrivningsfilen "
+"“%s”; ignorerer overskrivning for denne nøgle."
 
 #: gio/glib-compile-schemas.c:1971
 #, c-format
 msgid ""
 "No such key “%s” in schema “%s” as specified in override file “%s” and --"
 "strict was specified; exiting."
-msgstr "Ingen sådan nøgle “%s” i skemaet “%s” som angivet i overskrivningsfilen “%s”, og --strict var givet; afslutter."
+msgstr ""
+"Ingen sådan nøgle “%s” i skemaet “%s” som angivet i overskrivningsfilen "
+"“%s”, og --strict var givet; afslutter."
 
 #: gio/glib-compile-schemas.c:1993
 #, c-format
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”); ignoring override for this key."
-msgstr "Kan ikke skrivebordsspecifikt overskrive den lokaliserede nøgle “%s” i skemaet “%s” (overskrivelsesfil “%s”); ignorerer overskrivning for denne nøgle."
+msgstr ""
+"Kan ikke skrivebordsspecifikt overskrive den lokaliserede nøgle “%s” i "
+"skemaet “%s” (overskrivelsesfil “%s”); ignorerer overskrivning for denne "
+"nøgle."
 
 #: gio/glib-compile-schemas.c:2002
 #, c-format
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”) and --strict was specified; exiting."
-msgstr "Kan ikke skrivebordsspecifikt overskrive den lokaliserede nøgle “%s” i skemaet “%s” (overskrivelsesfil “%s”), og --strict var givet; afslutter."
+msgstr ""
+"Kan ikke skrivebordsspecifikt overskrive den lokaliserede nøgle “%s” i "
+"skemaet “%s” (overskrivelsesfil “%s”), og --strict var givet; afslutter."
 
 #: gio/glib-compile-schemas.c:2026
 #, c-format
 msgid ""
 "Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
 "%s. Ignoring override for this key."
-msgstr "Fejl ved fortolkning af nøglen “%s” i skemaet “%s” som givet i overskrivningsfilen “%s”: %s. Ignorerer overskrivning for denne nøgle."
+msgstr ""
+"Fejl ved fortolkning af nøglen “%s” i skemaet “%s” som givet i "
+"overskrivningsfilen “%s”: %s. Ignorerer overskrivning for denne nøgle."
 
 #: gio/glib-compile-schemas.c:2038
 #, c-format
 msgid ""
 "Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
 "%s. --strict was specified; exiting."
-msgstr "Fejl ved fortolkning af nøglen “%s” i skemaet “%s” som givet i overskrivningsfilen “%s”: %s. --strict var givet; afslutter."
+msgstr ""
+"Fejl ved fortolkning af nøglen “%s” i skemaet “%s” som givet i "
+"overskrivningsfilen “%s”: %s. --strict var givet; afslutter."
 
 #: gio/glib-compile-schemas.c:2065
 #, c-format
 msgid ""
 "Override for key “%s” in schema “%s” in override file “%s” is outside the "
 "range given in the schema; ignoring override for this key."
-msgstr "Overskrivning for nøglen “%s” i skemaet “%s” i overskrivningsfilen “%s” er ikke i det interval, skemaet angiver; ignorerer overskrivning for denne nøgle."
+msgstr ""
+"Overskrivning for nøglen “%s” i skemaet “%s” i overskrivningsfilen “%s” er "
+"ikke i det interval, skemaet angiver; ignorerer overskrivning for denne "
+"nøgle."
 
 #: gio/glib-compile-schemas.c:2075
 #, c-format
 msgid ""
 "Override for key “%s” in schema “%s” in override file “%s” is outside the "
 "range given in the schema and --strict was specified; exiting."
-msgstr "Overskrivning for nøglen “%s” i skemaet “%s” i overskrivningsfilen “%s” er ikke i det interval, skemaet angiver, og --strict var givet; afslutter."
+msgstr ""
+"Overskrivning for nøglen “%s” i skemaet “%s” i overskrivningsfilen “%s” er "
+"ikke i det interval, skemaet angiver, og --strict var givet; afslutter."
 
 #: gio/glib-compile-schemas.c:2101
 #, c-format
 msgid ""
 "Override for key “%s” in schema “%s” in override file “%s” is not in the "
 "list of valid choices; ignoring override for this key."
-msgstr "Overskrivning for nøglen “%s” i skemaet “%s” i overskrivningsfilen “%s” findes ikke i listen over gyldige valg; ignorerer overskrivning for denne nøgle."
+msgstr ""
+"Overskrivning for nøglen “%s” i skemaet “%s” i overskrivningsfilen “%s” "
+"findes ikke i listen over gyldige valg; ignorerer overskrivning for denne "
+"nøgle."
 
 #: gio/glib-compile-schemas.c:2111
 #, c-format
 msgid ""
 "Override for key “%s” in schema “%s” in override file “%s” is not in the "
 "list of valid choices and --strict was specified; exiting."
-msgstr "Overskrivning for nøglen “%s” i skemaet “%s” i overskrivningsfilen “%s” findes ikke i listen over gyldige valg, og --strict var givet; afslutter."
+msgstr ""
+"Overskrivning for nøglen “%s” i skemaet “%s” i overskrivningsfilen “%s” "
+"findes ikke i listen over gyldige valg, og --strict var givet; afslutter."
 
 #: gio/glib-compile-schemas.c:2173
 msgid "Where to store the gschemas.compiled file"
@@ -2877,7 +2928,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Kan ikke omdøbe fil, filnavn findes allerede"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Ugyldigt filnavn"
 
@@ -2951,129 +3002,125 @@ msgstr "Filsystemet understøtter ikke symbolske links"
 msgid "Error making symbolic link %s: %s"
 msgstr "Fejl under oprettelse af symbolsk link %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Symbolske links er ikke understøttet"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Fejl ved flytning af filen %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Kan ikke flytte mappe over mappe"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Oprettelse af sikkerhedskopi mislykkedes"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Fejl ved fjernelse af målfil: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Flytning mellem monteringer understøttes ikke"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Kunne ikke bestemme diskforbruget af %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Attributværdien må ikke være NULL"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Ugyldig attributtype (streng forventet)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Ugyldigt udvidet attributnavn"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Fejl ved indstilling af udvidet attribut “%s”: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (ugyldig kodning)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Fejl ved indhentning af oplysninger om filen “%s”: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Fejl ved indhentning af oplysninger om fildeskriptor: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Ugyldig attributtype (uint32 forventet)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Ugyldig attributtype (uint64 forventet)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Ugyldig attributtype (byte-streng forventet)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Kan ikke ændre rettigheder på symlinks"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Fejl ved ændring af rettigheder: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Fejl ved ændring af ejer: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "symlink må ikke være NULL"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Fejl ved manipulation af symlink: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Fejl ved manipulation af symlink: filen er ikke et symlink"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Fejl ved ændring af tidspunkt for ændring eller tilgang: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux-kontekst skal være forskellig fra NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Fejl ved ændring af SELinux-kontekst: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux er ikke aktiveret på dette system"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Indstilling af attributten %s understøttes ikke"
@@ -3096,7 +3143,7 @@ msgstr "Fejl under søgning i filen: %s"
 msgid "Error closing file: %s"
 msgstr "Fejl ved lukning af filen: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Kan ikke finde standardmonitortype for lokal fil"
 
@@ -3241,11 +3288,11 @@ msgstr "monteringsobjekt implementerer ikke synkrone gæt på indholdstype"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Værtsnavnet “%s” indeholder “[”, men ikke “]”"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Netværket kan ikke nås"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Vært kan ikke nås"
 
@@ -3286,18 +3333,18 @@ msgstr "Summen af vektorer givet til %s er for stor"
 msgid "Source stream is already closed"
 msgstr "Kildestrømmen er allerede lukket"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Fejl ved opløsning af “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s er ikke implementeret"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Ugyldigt domæne"
 
@@ -3671,173 +3718,173 @@ msgstr "Tomt skemanavn givet\n"
 msgid "No such key “%s”\n"
 msgstr "Ingen sådan nøgle “%s”\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Ugyldig sokkel, ikke initialiseret"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ugyldig sokkel, initialisering mislykkedes på grund af: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Soklen er allerede lukket"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Tidsudløb for sokkel-I/O"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "opretter GSocket fra fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Kan ikke oprette sokkel: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Der blev angivet en ukendt familie"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Der blev angivet en ukendt protokol"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Kan ikke bruge datagramoperationer på en ikke-datagram-sokkel."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Kan ikke bruge datagramoperationer på en sokkel med angivet udløbstid."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "kunne ikke finde lokal adresse: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "kunne ikke finde fjern adresse: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "kunne ikke lytte: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Fejl ved binding til adresse: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Fejl ved binding til adresse %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Fejl ved deltagelse i multicastgruppe: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Fejl ved fratræden fra multicastgruppe: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Ingen understøttelse for kildespecifik multicast"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Sokkelfamilie understøttes ikke"
 
 # ?
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "kildespecifik er ikke en IPv4-adresse"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Grænsefladenavnet er for langt"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Grænseflade ikke fundet: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Ingen understøttelse for kildespecifik multicast med IPv4"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Ingen understøttelse for kildespecifik multicast med IPv6"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fejl ved accept af forbindelse: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Forbinder"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Kan ikke hente verserende fejl: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fejl ved modtagelse af data: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fejl ved afsendelse af data: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Kan ikke nedlukke sokkel: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Fejl ved lukning af sokkel: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Venter på sokkelbetingelse: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fejl ved afsendelse af meddelelse: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage understøttes ikke af Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fejl ved modtagelse af meddelelse: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Kan ikke læse sokkelakkreditiver: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials ikke implementeret på dette operativsystem"
 
@@ -4100,7 +4147,7 @@ msgstr "Fejl ved læsning fra fildeskriptor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Fejl ved lukning af fildeskriptor: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Filsystemets rod"
 
@@ -4189,72 +4236,72 @@ msgstr "Forkerte argumenter\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Uventet attribut “%s” for elementet “%s”"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Attributten “%s” for elementet “%s” blev ikke fundet"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Uventet mærke “%s”, forventede mærket “%s”"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Uventet mærke “%s” inden i “%s”"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Ugyldig dato/klokkeslæt “%s” i bogmærkefil"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Ingen gyldig bogmærkefil blev fundet i datakatalogerne"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Et bogmærke for URI'en “%s” findes allerede"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Der blev intet bogmærke fundet for URI'en “%s”"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Ingen MIME-type er defineret i bogmærket for URI'en “%s”"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Intet privat flag er defineret i bogmærket for URI'en “%s”"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Ingen grupper er sat i bogmærket for URI'en “%s”"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Intet program med navnet “%s” har registreret et bogmærke for “%s”"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Kunne ikke udvide eksekveringslinjen “%s” med URI'en “%s”"
@@ -4263,8 +4310,8 @@ msgstr "Kunne ikke udvide eksekveringslinjen “%s” med URI'en “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Konverteringsinddata indeholder et tegn, som ikke kan repræsenteres"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Delvis tegnsekvens ved slutningen af inddata"
 
@@ -4808,24 +4855,24 @@ msgstr "Skabelonen “%s” indeholder ikke XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Kunne ikke læse den symbolske link “%s”: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Kunne ikke åbne konverterer fra “%s” til “%s”: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Kan ikke foretage en rå læsning i g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Resterende ukonverterede data i læsemellemlager"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Kanal afslutter med et ufuldendt tegn"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Kan ikke foretage en rå læsning i g_io_channel_read_to_end"
 
@@ -4865,8 +4912,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Nøglefilen indeholder kodningen “%s”, der ikke understøttes"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Nøglefilen indeholder ikke gruppen “%s”"
@@ -4902,31 +4949,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Nøglen “%s” i gruppen “%s” har værdien “%s”, mens %s blev forventet"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Nøglefilen indeholder beskyttede tegn for enden af linjen"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Nøglefilen indeholder en ugyldig undvigesekvens “%s”"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Værdien “%s” kan ikke fortolkes som et nummer."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Heltalsværdien “%s” er ikke i gyldigt interval"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Værdien “%s” kan ikke fortolkes som en float."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Værdien “%s” kan ikke fortolkes som en sandhedsværdi."
@@ -5016,11 +5063,11 @@ msgstr ""
 "tegn uden at det var beregnet på at starte en entitet — dette undgås ved at "
 "bruge &amp; i stedet"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokumentet skal begynde med et element (f.eks <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5029,7 +5076,7 @@ msgstr ""
 "“%s” er ikke et gyldigt tegn efter et “<”-tegn; det kan ikke være "
 "begyndelsen på et elementnavn"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5038,7 +5085,12 @@ msgstr ""
 "Mærkeligt tegn “%s”, forventede et “>”-tegn for at afslutte det tomme "
 "elementmærke “%s”"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "For mange attributer i elementet “%s”"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5046,7 +5098,7 @@ msgstr ""
 "Mærkeligt tegn “%s”, forventede et “=” efter attributnavn “%s” for elementet "
 "“%s”"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5057,7 +5109,7 @@ msgstr ""
 "begyndelsesmærket til elementet “%s” eller alternativt en attribut; måske "
 "brugte du et ugyldigt tegn i attributnavnet"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5066,7 +5118,7 @@ msgstr ""
 "Mærkeligt tegn “%s”, forventede et åbningsanførselstegn efter lighedstegnet "
 "når værdien for egenskaben “%s” for attributten “%s” angives"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5075,7 +5127,7 @@ msgstr ""
 "“%s” er ikke et gyldigt tegn efter tegnene “</”; “%s” er måske ikke "
 "begyndelsen på et elementnavn"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5084,25 +5136,25 @@ msgstr ""
 "“%s” er ikke et gyldigt tegn efter det lukkende elementnavn “%s”; tilladt "
 "tegn er “>”"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Element “%s” blev lukket, ingen åbne elementer nu"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Element “%s” blev lukket, men aktivt åbent element er “%s”"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokumentet var tomt eller indeholdt kun blanke tegn"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Dokumentet sluttede uventet lige efter en åben vinkelparantes “<”"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5110,7 +5162,7 @@ msgid ""
 msgstr ""
 "Dokumentet sluttede uventet med åbne elementer — “%s” var sidste åbne element"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5119,19 +5171,19 @@ msgstr ""
 "Dokumentet sluttede uventet, forventede at se en vinkelparantes for at "
 "afslutte det sidste mærke <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokumentet sluttede uventet inden i et elementnavn"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokumentet sluttede uventet inden i et attributnavn"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokumentet sluttede uventet inden i et element-åbnende mærke."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5139,22 +5191,22 @@ msgstr ""
 "Dokumentet sluttede uventet efter lighedstegnet efter et attributnavn; ingen "
 "attributværdi"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokumentet sluttede uventet inden i en attributværdi"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Dokumentet sluttede uventet inden i lukningsmærket for elementet “%s”"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Dokumentet sluttede uventet inden i lukningsmærket for et uåbnet element"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Dokumentet sluttede uventet inden i en kommentar eller behandlingsinstruktion"
@@ -5213,7 +5265,7 @@ msgstr "Kunne ikke fortolke tilvalg %s"
 msgid "Missing argument for %s"
 msgstr "Mangler argument for %s"
 
-#: glib/goption.c:2187
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Ukendt tilvalg %s"
@@ -5623,77 +5675,77 @@ msgstr "Tekst var tom (eller indeholdt kun blanke tegn)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Fejl ved læsning af data fra underprocess (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Uventet fejl i select() ved læsning af data fra underprocess (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Uventet fejl ved læsning af data fra underproces (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Uventet fejl i waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Underproces afsluttede med kode %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Underproces dræbt med signal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Underproces stoppet med signal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Underproces afsluttede fejlagtigt"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Fejl under læsning fra barnedatakanal (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Fejl under kørsel af underprocessen “%s” (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Fejl under fraspaltning af proces (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Fejl ved skift til mappen “%s” (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Fejl under kørsel af underprocessen “%s” (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Fejl under omdirigering af uddata eller inddata for underprocess (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Fejl ved fraspaltning af underprocess (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Ukendt fejl under kørsel af underprocessen “%s”"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5746,194 +5798,194 @@ msgstr ""
 "Uventet fejl i g_io_channel_win32_poll() under læsning af data fra en "
 "underprocess"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Tom streng er ikke et tal"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” er ikke et tal med fortegn"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Tallet “%s” er uden for det gyldige interval [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” er ikke et tal uden fortegn"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Kunne ikke tildele hukommelse"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Tegn uden for gyldigt interval for UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Ugyldig sekvens i konverteringsinddata"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Tegn uden for gyldigt interval for UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2326
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2328
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2330
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2332
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2334
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2336
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2340
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2342
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2344
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2346
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2360
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2374
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2412 glib/gutils.c:2529
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2416
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5941,7 +5993,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2483
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5949,7 +6001,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2488
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5961,36 +6013,42 @@ msgstr[1] "%s byte"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2542
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2547
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2552
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2557
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2562
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2567
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Fejl i adressen “%s” — attributten family er fejlformateret"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "Monterede %s på %s\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; ignorerer overskrivning for denne nøgle.\n"
 
index cf44bc1..50bfc97 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@
 # Andre Klapper <ak-47@gmx.net>, 2007, 2008.
 # Philipp Kerling <k.philipp@gmail.com>, 2008.
 # Mario Blättermann <mario.blaettermann@gmail.com>, 2010-2013, 2015-2018.
-# Wolfgang Stöggl <c72578@yahoo.de>, 2011, 2015-2016.
+# Wolfgang Stöggl <c72578@yahoo.de>, 2011, 2015-2016, 2020.
 # Christian Kirbach <Christian.Kirbach@gmail.com>, 2009, 2010, 2012.
 # Tobias Endrigkeit <tobiasendrigkeit@googlemail.com>, 2012.
 # Bernd Homuth <dev@hmt.im>, 2015.
@@ -17,16 +17,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 18:12+0000\n"
-"PO-Revision-Date: 2019-08-22 20:46+0200\n"
-"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
+"POT-Creation-Date: 2020-04-03 16:42+0000\n"
+"PO-Revision-Date: 2020-04-07 21:17+0200\n"
+"Last-Translator: Wolfgang Stoeggl <c72578@yahoo.de>\n"
 "Language-Team: Deutsch <gnome-de@gnome.org>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.2.1\n"
+"X-Generator: Poedit 2.3\n"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -123,8 +123,8 @@ msgstr "Der Befehl, für den eine detaillierte Hilfe ausgegeben wird"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Anwendungsbezeichnung im D-Bus-Format (z.B: org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "DATEI"
@@ -287,7 +287,7 @@ msgstr "Datenstrom ist bereits geschlossen"
 msgid "Truncate not supported on base stream"
 msgstr "Abschneiden wird vom Basis-Datenstrom nicht unterstützt"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -307,22 +307,22 @@ msgstr "Nicht genug Platz im Ziel"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Ungültige Bytefolge in Umwandlungseingabe"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Fehler bei der Umwandlung: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Abbrechbare Initialisierung wird nicht unterstützt"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Umwandlung von Zeichensatz »%s« in »%s« wird nicht unterstützt"
@@ -346,19 +346,23 @@ msgstr "Unbekannter Typ"
 msgid "%s filetype"
 msgstr "%s-Dateityp"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials enthält ungültige Daten"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials ist in diesem Betriebssystem nicht implementiert"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Es gibt auf Ihrer Plattform keine Unterstützung für GCredentials"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials enthält in diesem Betriebssystem keine Prozesskennung"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "Fälschen von Anmeldedaten ist unter diesem Betriebssystem nicht möglich"
@@ -367,7 +371,7 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Unerwartet frühes Datenstromende"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nicht unterstützter Schlüssel »%s« im Adresseintrag »%s«"
@@ -386,32 +390,28 @@ msgstr ""
 "Adresse »%s« ist ungültig (benötigt genau einen der Schlüssel path, dir, "
 "tmpdir oder abstract keys)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Fehler in Adresse »%s« – Das Port-Attribut ist nicht korrekt"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Fehler in Adresse »%s« – Das Familien-Attribut ist nicht korrekt"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Fehler in Adresse »%s« – Das Attribut »%s« ist nicht korrekt"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Unbekannter oder nicht unterstützter Transport »%s« für Adresse »%s«"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adresselement »%s« enthält keinen Doppelpunkt"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Der Transportname im Adresselement »%s« darf nicht leer sein"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -420,7 +420,7 @@ msgstr ""
 "Schlüssel-Wert-Paar %d, »%s«, in Adresselement »%s« enthält kein "
 "Gleichheitszeichen"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -428,7 +428,7 @@ msgstr ""
 "Schlüssel-Wert-Paar %d, »%s«, in Adresselement »%s« darf keinen leeren "
 "Schlüssel enthalten"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -437,7 +437,7 @@ msgstr ""
 "Fehler beim Entfernen von Escape-Zeichen im Schlüssel-Wert-Paar %d, »%s«, im "
 "Adresselement »%s«"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -446,83 +446,83 @@ msgstr ""
 "Fehler in Adresse »%s« - für den Unix-Transport muss genau einer der "
 "Schlüssel »path« oder »abstract« gesetzt sein"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das Host-Attribut fehlt oder ist nicht korrekt"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das Port-Attribut fehlt oder ist nicht korrekt"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das noncefile-Attribut fehlt oder ist nicht korrekt"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Fehler beim automatischen Starten: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Fehler beim Öffnen der Nonce-Datei »%s«: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Fehler beim Lesen der Nonce-Datei »%s«: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Fehler beim Lesen der Nonce-Datei »%s«, erwartet wurden 16 Bytes, jedoch %d "
 "erhalten"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Fehler beim Schreiben des Inhalts der Nonce-Datei »%s« in den Datenstrom:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Die angegebene Adresse ist leer"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Ein Nachrichtenbus kann nicht mit setuid erzeugt werden"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Ein Nachrichtenbus kann nicht ohne eine Rechner-Kennung erzeugt werden: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "D-Bus kann nicht automatisch ohne X11 $DISPLAY gestartet werden"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Fehler beim Erzeugen der Befehlszeile »%s«: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Adresse des Sitzungsbus konnte nicht ermittelt werden (für dieses "
 "Betriebssystem nicht implementiert)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -531,7 +531,7 @@ msgstr ""
 "Bus-Adresse konnte nicht über die Umgebungsvariable DBUS_STARTER_BUS_TYPE "
 "ermittelt werden – unbekannter Wert »%s«"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -539,21 +539,21 @@ msgstr ""
 "Bus-Adresse konnte nicht ermittelt werden, da die Umgebungsvariable "
 "DBUS_STARTER_BUS_TYPE nicht gesetzt ist"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Unbekannter Bus-Typ %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Unerwarteter Mangel an Inhalt beim Versuch, eine Zeile zu lesen"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Unerwarteter Mangel an Inhalt beim Versuch, eine Zeile (sicher) zu lesen"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -561,16 +561,16 @@ msgstr ""
 "Alle verfügbaren Legitimierungsmechanismen sind ausgeschöpft (%s Versuche) "
 "(verfügbar: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Abgebrochen durch GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Fehler beim Holen der Informationen für Ordner »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -578,22 +578,22 @@ msgstr ""
 "Zugriffsrechte des Ordners »%s« sind inkorrekt. Erwarteter Modus ist 0700, "
 "0%o wurde erhalten"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Fehler beim Erstellen des Ordners »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Fehler beim Öffnen des Schlüsselbundes »%s« zum Lesen: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Zeile %d des Schlüsselbundes auf »%s« mit Inhalt »%s« ist inkorrekt"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -601,7 +601,7 @@ msgstr ""
 "Der erste Token in Zeile %d des Schlüsselbundes bei »%s« mit dem Inhalt »%s« "
 "ist inkorrekt"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -609,58 +609,58 @@ msgstr ""
 "Der zweite Token in Zeile %d des Schlüsselbundes bei »%s« mit dem Inhalt "
 "»%s« ist inkorrekt"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 "Cookie mit Kennung %d konnte im Schlüsselbund auf »%s« nicht gefunden werden"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Fehler beim Löschen der alten Sperrdatei »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Fehler beim Erstellen der Sperrdatei »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Fehler beim Schließen der entknüpften Sperrdatei »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Fehler beim Entknüpfen der Sperrdatei »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Fehler beim Öffnen des Schlüsselbundes »%s« zum Schreiben: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Außerdem schlug das Entsperren von »%s« ebenso fehl: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2400
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "Verbindung ist geschlossen"
 
-#: gio/gdbusconnection.c:1901
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "Zeitüberschreitung wurde erreicht"
 
-#: gio/gdbusconnection.c:2522
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Beim Erstellen einer client-seitigen Verbindung wurden nicht unterstützte "
 "Flags entdeckt"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -668,100 +668,100 @@ msgstr ""
 "Keine derartige Schnittstelle »org.freedesktop.DBus.Properties« des Objekts "
 "im Pfad %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4303
 #, c-format
 msgid "No such property “%s”"
 msgstr "Keine derartige Eigenschaft »%s«"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4315
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Eigenschaft »%s« ist nicht lesbar"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4326
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Eigenschaft »%s« ist nicht schreibbar"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4346
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Fehler beim Setzen der Eigenschaft »%s«: Erwarteter Typ war »%s«, aber »%s« "
 "wurde erhalten"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Keine derartige Schnittstelle »%s«"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Keine derartige Schnittstelle »%s« des Objekts im Pfad %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4975
 #, c-format
 msgid "No such method “%s”"
 msgstr "Keine derartige Methode »%s«"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5006
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Der Nachrichtentyp »%s« entspricht nicht dem erwarteten Typ »%s«"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Für die Schnittstelle %s auf %s wurde bereits ein Objekt exportiert"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5430
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Eigenschaft kann nicht abgefragt werden: %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5486
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Eigenschaft kann nicht gesetzt werden: %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5664
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Methode »%s« gab Typ »%s« zurück, aber »%s« wurde erwartet"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6741
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Methode »%s« in Schnittstelle »%s« mit Signatur »%s« existiert nicht"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ein Unterbaum wurde bereits für %s exportiert"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "Typ ist UNGÜLTIG"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL-Meldung: Kopfzeilenfeld PATH oder MEMBER fehlt"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN-Meldung: Kopfzeilenfeld REPLY_SERIAL fehlt"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR-Meldung: Kopfzeilenfeld REPLY_SERIAL oder ERROR_NAME fehlt"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL-Meldung: Kopfzeilenfeld PATH, INTERFACE oder MEMBER fehlt"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -769,7 +769,7 @@ msgstr ""
 "SIGNAL-Meldung: Das Kopfzeilenfeld PATH verwendet den reservierten Wert /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -777,21 +777,21 @@ msgstr ""
 "SIGNAL-Meldung: Das Kopfzeilenfeld INTERFACE verwendet den reservierten Wert "
 "org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "%lu Byte sollte gelesen werden, aber nur %lu erhalten"
 msgstr[1] "%lu Bytes sollten gelesen werden, aber nur %lu erhalten"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Ein NUL-Byte wurde nach der Zeichenkette »%s« erwartet, aber es wurde Byte "
 "%d gefunden"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -801,17 +801,21 @@ msgstr ""
 "Position %d gefunden (Länge der Zeichenkette ist %d). Die gültige UTF-8-"
 "Zeichenkette bis zu diesem Punkt war »%s«."
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Der Wert ist zu tief verschachtelt"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Verarbeiteter Wert »%s« ist kein gültiger D-Bus-Objektpfad"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Verarbeiteter Wert »%s« ist keine gültige D-Bus-Signatur"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -824,7 +828,7 @@ msgstr[1] ""
 "Array der Länge %u Bytes wurde erkannt. Maximale Länge ist 2<<26 Bytes (64 "
 "MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -833,12 +837,12 @@ msgstr ""
 "Es wurde ein Feld des Typs »a%c« gefunden. Erwartet wurde als Länge ein "
 "Vielfaches von %u Byte, aber es waren %u Byte Länge"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Verarbeiteter Wert »%s« für Variante ist keine gültige D-Bus-Signatur"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -846,7 +850,7 @@ msgstr ""
 "Fehler beim Deserialisieren von GVariant mit der Typenzeichenkette »%s« aus "
 "dem D-Bus Wire-Format"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -855,29 +859,29 @@ msgstr ""
 "Ungültiger Wert für die Speicherreihenfolge. Es wird entweder 0x6c (»l«) "
 "oder 0x42 (»B«) erwartet, aber der Wert 0x%02x gefunden"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Ungültige Version des Hauptprotokolls. Erwartet wurde 1, jedoch %d gefunden"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Signatur-Kopfzeilenfeld gefunden, ist aber nicht vom Typ Signatur"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signatur-Kopfzeilenfeld mit Signatur »%s« gefunden, aber Nachrichtenrumpf "
 "ist leer"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Verarbeiteter Wert »%s« ist keine gültige D-Bus-Signatur (für Rumpf)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -888,11 +892,11 @@ msgstr[1] ""
 "Kein Signatur-Kopfzeilenfeld in der Nachricht, aber der Nachrichtenrumpf ist "
 "%u Bytes groß"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Meldung kann nicht deserialisiert werden: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -900,7 +904,7 @@ msgstr ""
 "Fehler beim Deserialisieren von GVariant mit der Typenzeichenkette »%s« in "
 "das D-Bus Wire-Format"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -908,18 +912,18 @@ msgstr ""
 "Anzahl der Dateideskriptoren in Meldung (%d) und Kopfzeilenfeld (%d) ist "
 "unterschiedlich"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Meldung kann nicht serialisiert werden: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Nachrichtenrumpf hat den Signaturtyp »%s«, aber es gibt keine Signatur im "
 "Kopfzeilenfeld"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -928,81 +932,81 @@ msgstr ""
 "Nachrichtenrumpf hat den Signaturtyp »%s«, aber die Signatur im "
 "Kopfzeilenfeld ist »%s«"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Nachrichtenrumpf ist leer, aber die Signatur im Kopfzeilenfeld ist »(%s)«"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Fehlerrückmeldung mit Inhalt des Typs »%s«"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Fehlerrückmeldung mit leerem Inhalt"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr ""
 "(Geben Sie ein beliebiges Zeichen ein, um dieses Fenster zu schließen)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Der Sitzungs-dbus läuft nicht und automatisches Starten schlug fehl"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Hardware-Profil konnte nicht ermittelt werden: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr ""
 "/var/lib/dbus/machine-id oder /etc/machine-id konnte nicht geladen werden: "
 
-#: gio/gdbusproxy.c:1625
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Fehler beim Aufruf von StartServiceByName für %s: "
 
-#: gio/gdbusproxy.c:1648
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Unerwartete Antwort %d von der Methode StartServiceByName(»%s«)"
 
-#: gio/gdbusproxy.c:2748 gio/gdbusproxy.c:2883
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
 "and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
-"Die Methode kann nicht aufgerufen werden; Der Proxy ist fürden allgemein "
+"Die Methode kann nicht aufgerufen werden; Der Proxy ist für den allgemein "
 "bekannten Namen %s ohne Besitzer, und der Proxy wurde mit dem Flag "
 "»G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START« erstellt"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Abstrakter Namensraum wird nicht unterstützt"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Nonce-Datei kann beim Erstellen eines Servers nicht angegeben werden"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Fehler beim Schreiben der Nonce-Datei auf »%s«: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Die Zeichenkette »%s« ist keine gültige GUID für D-Bus"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "An nicht unterstützter Übertragung »%s« kann nicht gelauscht werden"
@@ -1031,13 +1035,13 @@ msgstr ""
 "Mit »%s BEFEHL --help« erhalten Sie Hilfe zu jedem der Befehle.\n"
 
 #: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
-#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:846 gio/gdbus-tool.c:1183
-#: gio/gdbus-tool.c:1668
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Fehler: %s\n"
 
-#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1684
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Fehler beim Verarbeiten des XML-Codes der Inspektion: %s\n"
@@ -1067,17 +1071,17 @@ msgstr "Optionen für Gegenstelle der Verbindung:"
 msgid "Options specifying the connection endpoint"
 msgstr "Optionen zur Gegenstelle der Verbindung"
 
-#: gio/gdbus-tool.c:429
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Keine Gegenstelle der Verbindung angegeben"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Mehrere Gegenstellen der Verbindung angegeben"
 
-#: gio/gdbus-tool.c:509
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
@@ -1085,7 +1089,7 @@ msgstr ""
 "Warnung: Entsprechend den Inspektionsdaten existiert die Schnittstelle »%s« "
 "nicht\n"
 
-#: gio/gdbus-tool.c:518
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1094,164 +1098,164 @@ msgstr ""
 "Warnung: Entsprechend den Inspektionsdaten existiert die Methode »%s« nicht "
 "in der Schnittstelle »%s«\n"
 
-#: gio/gdbus-tool.c:580
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
 msgstr "Optionales Ziel des Signals (eindeutiger Name)"
 
-#: gio/gdbus-tool.c:581
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
 msgstr "Objektpfad, auf den das Signal ausgegeben werden soll"
 
-#: gio/gdbus-tool.c:582
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr "Signal und Schnittstellenname"
 
-#: gio/gdbus-tool.c:615
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "Ein Signal ausgeben."
 
-#: gio/gdbus-tool.c:670 gio/gdbus-tool.c:977 gio/gdbus-tool.c:1771
-#: gio/gdbus-tool.c:2003 gio/gdbus-tool.c:2223
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Fehler beim Verbinden: %s\n"
 
-#: gio/gdbus-tool.c:690
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Fehler: %s ist kein gültiger eindeutiger Bus-Name.\n"
 
-#: gio/gdbus-tool.c:709 gio/gdbus-tool.c:1020 gio/gdbus-tool.c:1814
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
 msgstr "Fehler: Objektpfad wurde nicht angegeben\n"
 
-#: gio/gdbus-tool.c:732 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1834
-#: gio/gdbus-tool.c:2074
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Fehler: %s ist kein gültiger Objektpfad\n"
 
-#: gio/gdbus-tool.c:752
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
 msgstr "Fehler: Signalname wurde nicht angegeben\n"
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:770
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Fehler: Signalname »%s« ist ungültig\n"
 
-#: gio/gdbus-tool.c:778
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Fehler: %s ist kein gültiger Schnittstellenname\n"
 
-#: gio/gdbus-tool.c:784
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Fehler: %s ist kein gültiger Mitgliedsname\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:821 gio/gdbus-tool.c:1152
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Fehler bei der Verarbeitung des Parameters %d: %s\n"
 
-#: gio/gdbus-tool.c:853
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Fehler beim Löschen der Verbindung: %s\n"
 
-#: gio/gdbus-tool.c:880
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
 msgstr "Name des Ziels, für das die Methode aufgerufen werden soll"
 
-#: gio/gdbus-tool.c:881
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
 msgstr "Objektpfad, für den die Methode aufgerufen werden soll"
 
-#: gio/gdbus-tool.c:882
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "Methode und Schnittstellenname"
 
-#: gio/gdbus-tool.c:883
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "Zeitablauf in Sekunden"
 
-#: gio/gdbus-tool.c:922
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr "Eine Methode für ein entferntes Objekt aufrufen."
 
-#: gio/gdbus-tool.c:994 gio/gdbus-tool.c:1788 gio/gdbus-tool.c:2028
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr "Fehler: Ziel wurde nicht angegeben\n"
 
-#: gio/gdbus-tool.c:1005 gio/gdbus-tool.c:1805 gio/gdbus-tool.c:2039
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Fehler: %s ist kein gültiger Bus-Name\n"
 
-#: gio/gdbus-tool.c:1055
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr "Fehler: Name der Methode wurde nicht angegeben\n"
 
-#: gio/gdbus-tool.c:1066
+#: gio/gdbus-tool.c:1070
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Fehler: Name der Methode »%s« ist ungültig\n"
 
-#: gio/gdbus-tool.c:1144
+#: gio/gdbus-tool.c:1148
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Fehler bei der Verarbeitung des Parameters %d vom Typ »%s«: %s\n"
 
-#: gio/gdbus-tool.c:1630
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
 msgstr "Name des Ziels der Inspektion"
 
-#: gio/gdbus-tool.c:1631
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
 msgstr "Zu inspizierender Objektpfad"
 
-#: gio/gdbus-tool.c:1632
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "XML drucken"
 
-#: gio/gdbus-tool.c:1633
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr "Unterelemente inspizieren"
 
-#: gio/gdbus-tool.c:1634
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Nur Eigenschaften ausgeben"
 
-#: gio/gdbus-tool.c:1723
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr "Ein entferntes Objekt inspizieren."
 
-#: gio/gdbus-tool.c:1929
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
 msgstr "Name des zu überwachenden Ziels"
 
-#: gio/gdbus-tool.c:1930
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr "Zu überwachender Objektpfad"
 
-#: gio/gdbus-tool.c:1955
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr "Ein entferntes Objekt überwachen."
 
-#: gio/gdbus-tool.c:2013
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Fehler: eine Nicht-Message-Bus-Verbindung kann nicht überwacht werden\n"
 
-#: gio/gdbus-tool.c:2137
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 "Zu aktivierender Dienst, bevor auf den anderen gewartet wird (allgemein "
 "bekannter Name)"
 
-#: gio/gdbus-tool.c:2140
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1259,68 +1263,68 @@ msgstr ""
 "Zeitspanne, die gewartet werden soll, bis mit einer Fehlermeldung "
 "abgebrochen wird (Sekunden); 0 für keine Zeitspanne (Voreinstellung)"
 
-#: gio/gdbus-tool.c:2188
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTION …] BUS-NAME"
 
-#: gio/gdbus-tool.c:2189
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
 msgstr "Name eines Busses, auf dessen Verfügbarkeit gewartet werden soll."
 
-#: gio/gdbus-tool.c:2265
+#: gio/gdbus-tool.c:2269
 msgid "Error: A service to activate for must be specified.\n"
 msgstr ""
 "Fehler: Es muss ein Dienst angegeben werden, der gestartet werden soll.\n"
 
-#: gio/gdbus-tool.c:2270
+#: gio/gdbus-tool.c:2274
 msgid "Error: A service to wait for must be specified.\n"
 msgstr ""
 "Fehler: Es muss ein Dienst angegeben werden, auf den gewartet werden soll.\n"
 
-#: gio/gdbus-tool.c:2275
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
 msgstr "Fehler: Zu viele Argumente.\n"
 
-#: gio/gdbus-tool.c:2283 gio/gdbus-tool.c:2290
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Fehler: %s ist kein gültiger, bekannter Bus-Name\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Unbenannt"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop-Datei hat kein Exec-Feld angegeben"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "Für die Anwendung benötigtes Terminal konnte nicht gefunden werden"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3413
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Konfigurationsordner %s für Benutzeranwendungen konnte nicht erstellt "
 "werden: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3417
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "MIME-Konfigurationsordner %s des Benutzers konnte nicht erstellt werden: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
 msgstr "Den Anwendungsinformationen fehlt ein Bezeichner"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3915
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Benutzer-Desktop-Datei %s kann nicht erstellt werden"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Benutzerdefinition für %s"
@@ -1348,12 +1352,12 @@ msgstr "Laufwerk unterstützt keinen Startvorgang"
 msgid "drive doesn’t implement stop"
 msgstr "Laufwerk unterstützt keinen Stoppvorgang"
 
-#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
-#: gio/gdummytlsbackend.c:509
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321
+#: gio/gdummytlsbackend.c:513
 msgid "TLS support is not available"
 msgstr "TLS-Unterstützung ist nicht verfügbar"
 
-#: gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:423
 msgid "DTLS support is not available"
 msgstr "DTLS-Unterstützung ist nicht verfügbar"
 
@@ -1381,12 +1385,12 @@ msgstr "Ungültige Symbolanzahl (%d) in GEmblemedIcon-Kodierung"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Es wurde ein GEmblem für GEmblemedIcon erwartet"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Vorgang wird nicht unterstützt"
@@ -1395,70 +1399,74 @@ msgstr "Vorgang wird nicht unterstützt"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Enthaltender Einhängepunkt existiert nicht"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Es kann nicht über den Ordner kopiert werden"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Ordner kann nicht über Ordner kopiert werden"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Zieldatei existiert"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Ordner kann nicht rekursiv kopiert werden"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Zusammenfügen wird nicht unterstützt"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fehler beim Zusammenfügen der Datei: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopieren (reflink/clone) zwischen Einhängepunkten nicht unterstützt"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopieren (reflink/clone) wird nicht unterstützt oder ist ungültig"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "Kopieren (reflink/clone) wird nicht unterstützt oder funktioniert nicht"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Spezielle Datei kann nicht kopiert werden"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Ungültiger Wert für symbolische Verknüpfung angegeben"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Symbolische Verknüpfungen nicht unterstützt"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Papierkorb nicht unterstützt"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Dateinamen dürfen kein »%c« enthalten"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "Datenträger unterstützt Einhängen nicht"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Es wurde keine Anwendung gefunden, die diese Datei verarbeiten kann"
 
@@ -1503,7 +1511,7 @@ msgstr "Abschneiden des Eingabedatenstroms nicht erlaubt"
 msgid "Truncate not supported on stream"
 msgstr "Abschneiden wird vom Datenstrom nicht unterstützt"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Ungültiger Rechnername"
@@ -1620,7 +1628,7 @@ msgstr "Zusammen mit Datei verschieben"
 msgid "“version” takes no arguments"
 msgstr "»version« akzeptiert keine Argumente"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Aufruf:"
 
@@ -1706,10 +1714,10 @@ msgid "Error writing to stdout"
 msgstr "Fehler beim Schreiben in die Standardausgabe"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1729,56 +1737,60 @@ msgstr ""
 "jedoch werden GIO-Orte statt lokaler Dateien verwendet; z.B. können\n"
 "Sie als Ort etwas wie »smb://server/ressource/datei.txt« angeben."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Keine Orte angegeben"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Kein Zielordner"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Fortschritt zeigen"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Vor Überschreiben nachfragen"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Alle Attribute übernehmen"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Vorhandene Zieldateien sichern"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Niemals symbolischen Verknüpfungen folgen"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Voreingestellte Berechtigungen für das Ziel verwenden"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "%s von %s übertragen (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "QUELLE"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "ZIEL"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Eine oder mehrere Dateien von QUELLE nach ZIEL kopieren."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1788,88 +1800,98 @@ msgstr ""
 "jedoch werden GIO-Orte statt lokaler Dateien verwendet; z.B. können\n"
 "Sie als Ort etwas wie »smb://server/ressource/datei.txt« angeben."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Das Ziel »%s« ist kein Ordner"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: Soll »%s« überschrieben werden? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Schreibbare Attribute auflisten"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Informationen zum Dateisystem erhalten"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Das einzulesende Attribut"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTE"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Symbolischen Verknüpfungen nicht folgen"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "Attribute:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "Anzeigename: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "Name bearbeiten: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "Name: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "Typ: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "Größe: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "verborgen\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "Adresse: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "lokaler Pfad: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "Unix-Einbindung: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Setzbare Attribute:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Namensraum der schreibbaren Attribute:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Informationen zu Orten zeigen."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1884,23 +1906,27 @@ msgstr ""
 "anhand des Namensraums, z.B. »unix«, oder durch »*« angegeben werden,\n"
 "was auf alle Attribute passt."
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Verborgene Dateien zeigen"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Langes Listenformat verwenden"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Anzeigenamen ausgeben"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Volle Adressen ausgeben"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Den Inhalt der Orte auflisten."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2033,12 +2059,12 @@ msgid "Mount as mountable"
 msgstr "Als einhängbar einbinden"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Datenträger über Gerätedatei einhängen"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Datenträger über Gerätedatei, oder anderem Bezeichner einhängen"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "GERÄT"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "KENNUNG"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2052,6 +2078,10 @@ msgstr "Auswerfen"
 msgid "Stop drive with device file"
 msgstr "Datenträger über Gerätedatei stoppen"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "GERÄT"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Alle Einhängepunkte passend zum Namensschema aushängen"
@@ -2107,16 +2137,11 @@ msgstr "Der anonyme Zugriff wurde verwehrt"
 msgid "No drive for device file"
 msgstr "Kein Laufwerk für Gerätedatei"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "»%s« wurde unter »%s« eingehängt\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Kein Datenträger für Gerätedatei"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Kein Datenträger für die genannte KENNUG"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Die Orte ein- oder aushängen."
 
@@ -2333,20 +2358,20 @@ msgstr "Fehler beim Lesen der Datei »%s«: %s"
 msgid "Error compressing file %s"
 msgstr "Fehler beim Komprimieren der Datei %s"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "Text könnte nicht innerhalb von <%s> erscheinen"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Programm-Version anzeigen und beenden"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Name der Ausgabedatei"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2354,59 +2379,59 @@ msgstr ""
 "Die Ordner, aus denen in FILE referenzierte Dateien gelesen werden sollen "
 "(Vorgabe ist der aktuelle Ordner)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "ORDNER"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Ausgabe in dem Format generieren, welches durch die Dateiendung der "
 "Zieldatei vorgegeben wird"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Quellcode-Header generieren"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Quellcode zum Verlinken der Ressourcendatei in Ihren Code verwenden"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Abhängigkeitsliste generieren"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Name der zu erzeugenden Abhängigkeitsdatei"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Phony-Ziele in der erzeugten Abhängigkeitsdatei einschließen"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Die Ressource nicht automatisch anlegen und registrieren"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Keine Funktionen exportieren; als G_GNUC_INTERNAL deklarieren"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr ""
-"Ressourcendaten nicht in der C-Datei einbetten; stattdesssen externe "
+"Ressourcendaten nicht in der C-Datei einbetten; stattdessen externe "
 "Verlinkung voraussetzen"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "C-Bezeichnername für den generierten Quellcode"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2417,7 +2442,7 @@ msgstr ""
 "haben,\n"
 "die Ressourcendateien die Erweiterung .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Sie sollten genau einen Dateinamen angeben\n"
 
@@ -2484,7 +2509,7 @@ msgstr "<range> ist für Schlüssel des Typs »%s« nicht erlaubt"
 #: gio/glib-compile-schemas.c:407
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
-msgstr "<range> angebenenes Minimum ist größer als das Maximum"
+msgstr "<range> angegebenes Minimum ist größer als das Maximum"
 
 #: gio/glib-compile-schemas.c:432
 #, c-format
@@ -2947,7 +2972,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Datei kann nicht umbenannt werden, da der Dateiname bereits existiert"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Ungültiger Dateiname"
 
@@ -3027,132 +3052,128 @@ msgstr "Das Dateisystem unterstützt keine symbolische Verknüpfungen"
 msgid "Error making symbolic link %s: %s"
 msgstr "Fehler beim Erstellen der symbolischen Verknüpfung %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Symbolische Verknüpfungen nicht unterstützt"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Fehler beim Verschieben der Datei %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Ordner kann nicht über Ordner verschoben werden"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Erstellen der Sicherungsdatei gescheitert"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Fehler beim Entfernen der Zieldatei: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Verschieben zwischen Einhängepunkten nicht unterstützt"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Konnte die Festplattenbelegung von %s nicht bestimmen: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Attributwert darf nicht NULL sein"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Ungültiger Attributtyp (»string« erwartet)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Ungültiger erweiterter Attributname"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Fehler beim Setzen des erweiterten Attributs »%s«: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (ungültige Kodierung)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Fehler beim Holen der Informationen für Datei »%s«: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Fehler beim Holen der Informationen für Dateideskriptor: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Ungültiger Attributtyp (»uint32« erwartet)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Ungültiger Attributtyp (»uint64« erwartet)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Ungültiger Attributtyp (»byte string« erwartet)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr ""
 "Zugriffsrechte für symbolische Verknüpfungen können nicht gesetzt werden"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Fehler beim Setzen der Zugriffsrechte: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Fehler beim Setzen des Besitzers: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "Symbolische Verknüpfung darf nicht NULL sein"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Fehler beim Setzen der symbolischen Verknüpfung: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Fehler beim Setzen der symbolischen Verknüpfung: Datei ist keine symbolische "
 "Verknüpfung"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Fehler beim Setzen der Zugriffsrechte oder der Zugriffszeit: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux-Kontext darf nicht NULL sein"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Fehler beim Setzen des SELinux-Kontexts: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux ist auf diesem System nicht aktiviert"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Setzen des Attributs %s nicht unterstützt"
@@ -3175,7 +3196,7 @@ msgstr "Fehler beim Suchen in Datei: %s"
 msgid "Error closing file: %s"
 msgstr "Fehler beim Schließen der Datei: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr ""
 "Vorgegebener Überwachungstyp für lokale Dateien konnte nicht gefunden werden"
@@ -3320,11 +3341,11 @@ msgstr "Einhängepunkt unterstützt synchrones Erraten des Inhaltstyps nicht"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Rechnername »%s« enthält »[«, aber nicht »]«"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Das Netzwerk ist nicht erreichbar"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Rechner ist nicht erreichbar"
 
@@ -3365,18 +3386,18 @@ msgstr "An %s übermittelte Vektorsumme ist zu groß"
 msgid "Source stream is already closed"
 msgstr "Quelldatenstrom ist bereits geschlossen"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Fehler beim Auflösen von »%s«: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s ist nicht implementiert"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Ungültige Domain"
 
@@ -3757,176 +3778,176 @@ msgstr "Leerer Schema-Name wurde angegeben\n"
 msgid "No such key “%s”\n"
 msgstr "Kein derartiger Schlüssel »%s«\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Ungültiger Socket, wurde nicht initialisiert"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ungültiger Socket, Initialisierung schlug fehl wegen: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Der Socket ist bereits geschlossen"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Zeitüberschreitung bei Ein-/Ausgabeoperation des Sockets"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "GSocket wird erstellt von Dateideskriptor: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Socket kann nicht angelegt werden: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Eine unbekannte Familie wurde angegeben"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Ein unbekanntes Protokoll wurde angegeben"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Datagramm-Operationen können nicht auf einem Nicht-Datagramm-Socket "
 "ausgeführt werden."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Datagramm-Operationen können nicht auf einem Socket mit gesetzter "
 "Zeitüberschreitung ausgeführt werden."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "Lokale Adresse konnte nicht gelesen werden: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "Entfernte Adresse konnte nicht gelesen werden: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "Es konnte nicht gelauscht werden: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Fehler beim Binden an Adresse: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Fehler beim Binden an Adresse %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Fehler beim Beitreten zur Multicast-Gruppe: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Fehler beim Verlassen der Multicast-Gruppe: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Quellen-spezifisches Multicast wird nicht unterstützt"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Nicht unterstützte Socket-Familie"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "Quellen-spezifisch ist keine IPv4-Adresse"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Schnittstellenname ist zu lang"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Schnittstelle nicht gefunden: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Quellen-spezifisches IPv4-Multicast wird nicht unterstützt"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Quellen-spezifisches IPv6-Multicast wird nicht unterstützt"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fehler bei Annahme der Verbindung: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Verbindungsvorgang läuft"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Ausstehender Fehler konnte nicht erhalten werden: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fehler beim Erhalt von Daten: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fehler beim Senden von Daten: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Socket kann nicht heruntergefahren werden: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Fehler beim Schließen des Sockets: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Es wird auf eine Socket-Bedingung gewartet: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fehler beim Senden der Nachricht: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage wird unter Windows nicht unterstützt"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fehler beim Empfang der Nachricht: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Socket-Berechtigungen konnten nicht gelesen werden: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials ist für dieses Betriebssystem nicht implementiert"
@@ -3945,11 +3966,11 @@ msgstr "Verbindung mit %s ist gescheitert: "
 msgid "Could not connect: "
 msgstr "Verbindung ist gescheitert: "
 
-#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1764
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Unbekannter Fehler bei Verbindungsversuch"
 
-#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1672
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Nicht-TCP-Verbindung über Proxy wird nicht unterstützt."
 
@@ -3988,15 +4009,15 @@ msgstr "Der Server ist kein SOCKSv4-Proxy-Server."
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr "Verbindung durch SOCKSv4-Server wurde abgewiesen"
 
-#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:338 gio/gsocks5proxy.c:348
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr "Der Server ist kein SOCKSv5-Proxy-Server."
 
-#: gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167 gio/gsocks5proxy.c:184
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "Der SOCKSv5-Proxy erfordert Legitimierung."
 
-#: gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:191
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
@@ -4004,54 +4025,54 @@ msgstr ""
 "Der SOCKSv5 erfordert eine Legitimierungsmethode, die durch GLib nicht "
 "unterstützt wird."
 
-#: gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:220
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr "Benutzername oder Passwort ist zu lang für das SOCKSv5-Protokoll."
 
-#: gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:250
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
 "SOCKSv5-Legitimierung scheiterte wegen falschen Benutzernamens oder "
 "Passworts."
 
-#: gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:300
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
 msgstr "Rechnername »%s« ist zu lang für das SOCKSv5-Protokoll"
 
-#: gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:362
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr "Der SOCKSv5-Proxy-Server verwendet einen unbekannten Adresstyp."
 
-#: gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:369
 msgid "Internal SOCKSv5 proxy server error."
 msgstr "Interner Fehler des SOCKSv5-Proxy-Servers."
 
-#: gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:375
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr "SOCKSv5-Verbindung ist aufgrund des Regelwerks nicht erlaubt."
 
-#: gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:382
 msgid "Host unreachable through SOCKSv5 server."
 msgstr "Rechner ist über den SOCKSv5-Server nicht erreichbar."
 
-#: gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:388
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr "Das Netzwerk ist durch den SOCKSv5-Proxy nicht erreichbar."
 
-#: gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:394
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr "Verbindung wurde durch SOCKSv5-Proxy abgewiesen."
 
-#: gio/gsocks5proxy.c:386
+#: gio/gsocks5proxy.c:400
 msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "SOCKSv5-Proxy unterstützt den Befehl »connect« nicht."
 
-#: gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:406
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr "SOCKSv5-Proxy unterstützt den angegebenen Adresstyp nicht."
 
-#: gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:412
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Unbekannter Fehler im SOCKSv5-Proxy."
 
@@ -4193,7 +4214,7 @@ msgstr "Fehler beim Lesen aus dem Dateideskriptor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Fehler beim Schließen des Dateideskriptors: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "Wurzelordner des Dateisystems"
 
@@ -4282,77 +4303,77 @@ msgstr "Falsche Argumente\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Unerwartetes Attribut »%s« des Elements »%s«"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Attribut »%s« des Elements »%s« konnte nicht gefunden werden"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Unerwarteter Tag »%s«; Tag »%s« wird erwartet"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Unerwarteter Tag »%s« innerhalb von »%s«"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Ungültiges Datum bzw. Uhrzeit »%s« in der Lesezeichendatei"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Es wurde keine gültige Lesezeichendatei in den Datenordnern gefunden"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Es existiert bereits ein Lesezeichen für die Adresse »%s«"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Es konnte kein Lesezeichen für die Adresse »%s« gefunden werden."
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Es ist kein MIME-Typ im Lesezeichen für die Adresse »%s« definiert."
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 "Es konnte keine »privat«-Markierung für das Lesezeichen für die Adresse »%s« "
 "gefunden werden."
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr ""
 "Es wurden keine Gruppen für das Lesezeichen für die Adresse »%s« festgelegt."
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
 "Es wurde keine Anwendung namens »%s« gefunden, die ein Lesezeichen für »%s« "
 "registriert hat."
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr ""
@@ -4362,8 +4383,8 @@ msgstr ""
 msgid "Unrepresentable character in conversion input"
 msgstr "Nicht darstellbares Zeichen in Umwandlungsausgabe"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Bruchstückhafte Zeichenfolge am Eingabeende"
 
@@ -4914,24 +4935,24 @@ msgstr "Vorlage »%s« enthält nicht XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Die symbolische Verknüpfung »%s« konnte nicht gelesen werden: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Konverter von »%s« in »%s« konnte nicht geöffnet werden: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Raw-read in g_io_channel_read_line_string nicht möglich"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "Nicht konvertierte Daten befinden sich noch im Lesepuffer"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "Kanal endet mit einem Teilzeichen"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Raw-read in g_io_channel_read_to_end nicht möglich"
 
@@ -4971,8 +4992,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Die Schlüsselwertedatei enthält die nicht unterstützte Kodierung »%s«"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Die Schlüsselwertedatei enthält nicht die Gruppe »%s«"
@@ -5013,32 +5034,32 @@ msgstr ""
 "Der Schlüssel »%s« in der Gruppe »%s« enthält den Wert »%s«, obwohl %s "
 "erwartet wurde"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Die Schlüsselwertedatei enthält ein Escape-Zeichen am Zeilenende"
 
 # CHECK
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Die Schlüsselwertedatei enthält das ungültige Escape-Zeichen »%s«"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Der Wert »%s« konnte nicht als Zahl interpretiert werden."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Ganzzahliger Wert »%s« ist außerhalb des Wertebereiches"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Der Wert »%s« konnte nicht als Gleitkommazahl interpretiert werden."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr ""
@@ -5131,11 +5152,11 @@ msgstr ""
 "Zeichen benutzt, ohne eine Entität beginnen zu wollen – umschreiben Sie das "
 "»&« als &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokument muss mit einem Element beginnen (e.g. <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5144,7 +5165,7 @@ msgstr ""
 "»%s« ist kein gültiges Zeichen nach einem »<«-Zeichen; es darf keinen "
 "Elementnamen beginnen"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5153,7 +5174,12 @@ msgstr ""
 "Seltsames Zeichen »%s«, »>« erwartet um Start-Tag des leeren Elements »%s« "
 "abzuschließen"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Zu viele Attribute im Elements »%s«"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5161,7 +5187,7 @@ msgstr ""
 "Seltsames Zeichen »%s«, »=« wird nach dem Attributnamen »%s« des Elements "
 "»%s« erwartet"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5172,7 +5198,7 @@ msgstr ""
 "»/« erwartet, um das Start-Tag des Elements »%s« abzuschließen; vielleicht "
 "haben Sie ein ungültiges Zeichen in einem Attributnamen benutzt"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5182,7 +5208,7 @@ msgstr ""
 "Elements »%s« wurde ein Anführungszeichen nach dem Gleichheitszeichen "
 "erwartet"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5191,7 +5217,7 @@ msgstr ""
 "»%s« ist kein gültiges Zeichen, wenn es auf die Zeichen »</« folgt; »%s« "
 "darf keinen Elementnamen beginnen"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5200,26 +5226,26 @@ msgstr ""
 "»%s« ist kein gültiges Zeichen, wenn es auf den schließenden Elementnamen "
 "»%s« folgt; das erlaubte Zeichen ist »>«"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Element »%s« wurde geschlossen, kein Element ist derzeit offen"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr ""
 "Element »%s« wurde geschlossen, aber das derzeit offene Element ist »%s«"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokument ist leer oder enthält nur Leerraum"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Dokument endete unerwartet nach einer offenen spitzen Klammer »<«"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5228,7 +5254,7 @@ msgstr ""
 "Dokument endete unerwartet mit noch offenen Elementen – »%s« war das letzte "
 "offene Element"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5237,19 +5263,19 @@ msgstr ""
 "Dokument endete unerwartet, es wurde eine spitze Klammer »>«, die das Tag <"
 "%s/> schließt, erwartet"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokument endete unerwartet innerhalb eines Elementnamens"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokument endete unerwartet innerhalb eines Attributnamens"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokument endete unerwartet innerhalb eines Element-öffnenden Tags."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5257,85 +5283,85 @@ msgstr ""
 "Dokument endete unerwartet nach dem Gleichheitszeichen, das einem "
 "Attributnamen folgt; kein Attributwert"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokument endete unerwartet innerhalb eines Attributwertes"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Dokument endete unerwartet innerhalb eines schließenden Tags für das Element "
 "»%s«"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Dokument endete unerwartet innerhalb eines schließenden Tags für ein "
 "ungeöffnetes Element"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Dokument endete unerwartet innerhalb eines Kommentars oder "
 "Verarbeitungsanweisung"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPTION …]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Hilfeoptionen:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Hilfeoptionen anzeigen"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Alle Hilfeoptionen anzeigen"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Anwendungsoptionen:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Optionen:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "»%s« konnte nicht als ganzzahliger Wert für %s interpretiert werden"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Ganzzahliger Wert »%s« für %s ist außerhalb des Bereiches"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "»%s« konnte nicht als »double«-Wert für %s interpretiert werden"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "»double«-Wert »%s« für %s ist außerhalb des Bereiches"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Fehler beim Verarbeiten der Option: %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Für %s wird ein Argument benötigt"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Unbekannte Option %s"
@@ -5752,78 +5778,77 @@ msgstr "Text war leer (oder enthielt nur Leerraum)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Daten vom Kindprozess konnten nicht gelesen werden (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Unerwarteter Fehler in select() beim Lesen von Daten eines Kindprozesses (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Unerwarteter Fehler beim Lesen von Daten eines Kindprozesses (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Unerwarteter Fehler in waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Der Kindprozess wurde mit Status %ld beendet"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Der Kindprozess wurde mit Signal %ld beendet"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Der Kindprozess wurde mit Signal %ld beendet"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Der Kindprozess wurde gewaltsam beendet"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Lesen aus Weiterleitung zum Kind (%s) gescheitert"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Abspalten des Kindprozesses »%s« gescheitert (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Abspalten gescheitert (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "In Ordner »%s« (%s) konnte nicht gewechselt werden"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Kindprozess »%s« konnte nicht ausgeführt werden (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Umleiten der Ausgabe oder Eingabe des Kindprozesses (%s) gescheitert"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Abspalten des Kindprozesses gescheitert (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Unbekannter Fehler beim Ausführen des Kindprozesses »%s«"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5879,194 +5904,194 @@ msgstr ""
 "Unerwarteter Fehler in g_io_channel_win32_poll() beim Lesen aus dem "
 "Kindprozess"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Leere Zeichenkette ist keine Zahl"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "»%s« ist keine vorzeichenbehaftete Zahl"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Zahl »%s« ist außerhalb des zulässigen Bereichs [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "»%s« ist keine vorzeichenlose Zahl"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Fehler beim Anfordern von Speicher"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Zeichen außerhalb des Bereiches für UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Ungültige Folge in Umwandlungseingabe"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Zeichen außerhalb des Bereiches für UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Ebit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eibit"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u Byte"
 msgstr[1] "%u Bytes"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6074,7 +6099,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6082,7 +6107,7 @@ msgstr[0] "%s Byte"
 msgstr[1] "%s Bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6094,36 +6119,42 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Fehler in Adresse »%s« – Das Familien-Attribut ist nicht korrekt"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "»%s« wurde unter »%s« eingehängt\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; Überschreiben dieses Schlüssels wird ignoriert.\n"
 
index e00301c..37f3959 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -14,8 +14,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib.HEAD\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2018-08-30 18:47+0000\n"
-"PO-Revision-Date: 2018-09-03 12:03+0300\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-19 01:07+0200\n"
 "Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
 "Language-Team: www.gnome.gr\n"
 "Language: el\n"
@@ -23,35 +23,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.1.1\n"
+"X-Generator: Poedit 2.3\n"
 "X-Project-Style: gnome\n"
 
-#: gio/gapplication.c:496
+#: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Επιλογές GApplication"
 
-#: gio/gapplication.c:496
+#: gio/gapplication.c:500
 msgid "Show GApplication options"
 msgstr "Εμφάνιση επιλογών GApplication"
 
-#: gio/gapplication.c:541
+#: gio/gapplication.c:545
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 "Εισαγωγή τρόπου λειτουργίας της εφαρμογής GApplication (χρήση από αρχεία "
 "υπηρεσίας D-Bus)"
 
-#: gio/gapplication.c:553
+#: gio/gapplication.c:557
 #, fuzzy
 #| msgid "Override the application's ID"
 msgid "Override the application’s ID"
 msgstr "Αντικατάσταση αναγνωριστικού της εφαρμογής"
 
+#: gio/gapplication.c:569
+msgid "Replace the running instance"
+msgstr ""
+
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:495 gio/gsettings-tool.c:569
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
 msgid "Print help"
 msgstr "Εμφάνιση βοήθειας"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:496 gio/gresource-tool.c:564
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
 msgid "[COMMAND]"
 msgstr "[ΕΝΤΟΛΗ]"
 
@@ -59,7 +63,7 @@ msgstr "[ΕΝΤΟΛΗ]"
 msgid "Print version"
 msgstr "Εμφάνιση έκδοσης"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:575
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
 msgid "Print version information and exit"
 msgstr "Προβολή πληροφοριών έκδοσης και έξοδος"
 
@@ -82,7 +86,6 @@ msgid "Launch the application (with optional files to open)"
 msgstr "Έναρξη της εφαρμογής (με προαιρετικά αρχεία για άνοιγμα)"
 
 #: gio/gapplication-tool.c:57
-#| msgid "APPID [FILE...]"
 msgid "APPID [FILE…]"
 msgstr "APPID [FILE…]"
 
@@ -110,7 +113,7 @@ msgstr "Κατάλογος στατικών ενεργειών για μια ε
 msgid "APPID"
 msgstr "APPID"
 
-#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:90
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
 #: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "ΕΝΤΟΛΗ"
@@ -123,9 +126,9 @@ msgstr "Η εντολή για εκτύπωση λεπτομερούς βοήθ
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Το αναγνωριστικό εφαρμογής σε μορφή D-Bus (πχ: org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:737
-#: gio/glib-compile-resources.c:743 gio/glib-compile-resources.c:770
-#: gio/gresource-tool.c:502 gio/gresource-tool.c:568
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "ΑΡΧΕΙΟ"
 
@@ -149,7 +152,7 @@ msgstr "ΠΑΡΑΜΕΤΡΟΣ"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Προαιρετική παράμετρος στην κλήση ενέργειας, στη μορφή GVariant"
 
-#: gio/gapplication-tool.c:96 gio/gresource-tool.c:533 gio/gsettings-tool.c:661
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -162,13 +165,12 @@ msgstr ""
 msgid "Usage:\n"
 msgstr "Χρήση:\n"
 
-#: gio/gapplication-tool.c:114 gio/gresource-tool.c:558
-#: gio/gsettings-tool.c:696
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
 msgid "Arguments:\n"
 msgstr "Ορίσματα:\n"
 
 #: gio/gapplication-tool.c:133 gio/gio-tool.c:224
-#| msgid "[ARGS...]"
 msgid "[ARGS…]"
 msgstr "[ARGS…]"
 
@@ -277,8 +279,8 @@ msgstr ""
 
 #: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
 #: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
-#: gio/ginputstream.c:1019 gio/goutputstream.c:203 gio/goutputstream.c:834
-#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:209
+#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "Η τιμή που διαβιβάστηκε στο %s είναι υπερβολικά μεγάλη"
@@ -293,7 +295,7 @@ msgid "Cannot truncate GBufferedInputStream"
 msgstr "Αδυναμία περικοπής του GMemoryInputStream"
 
 #: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
-#: gio/goutputstream.c:1661
+#: gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "Η ροή έχει ήδη κλείσει"
 
@@ -301,7 +303,7 @@ msgstr "Η ροή έχει ήδη κλείσει"
 msgid "Truncate not supported on base stream"
 msgstr "Δεν υποστηρίζεται η περικοπή στη βασική ροή"
 
-#: gio/gcancellable.c:317 gio/gdbusconnection.c:1840 gio/gdbusprivate.c:1402
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -320,64 +322,68 @@ msgid "Not enough space in destination"
 msgstr "Μη επαρκής χώρος στην περιοχή προορισμού"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1261 glib/gconvert.c:454 glib/gconvert.c:883
-#: glib/giochannel.c:1557 glib/giochannel.c:1599 glib/giochannel.c:2443
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Άκυρη σειρά byte στην είσοδο μετατροπής"
 
 # gconf/gconftool.c:1181
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:462 glib/gconvert.c:797
-#: glib/giochannel.c:1564 glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Σφάλμα κατά τη μετατροπή: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1104
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Δεν υποστηρίζεται η ακυρώσιμη αρχικοποίηση"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:327 glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, fuzzy, c-format
 #| msgid "Conversion from character set '%s' to '%s' is not supported"
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Η μετατροπή από την ομάδα χαρακτήρων '%s' σε '%s' δεν υποστηρίζεται"
 
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:331
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, fuzzy, c-format
 #| msgid "Could not open converter from '%s' to '%s'"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Αδυναμία ανοίγματος μετατροπέα από '%s' σε '%s'"
 
-#: gio/gcontenttype.c:358
+#: gio/gcontenttype.c:452
 #, c-format
 msgid "%s type"
 msgstr "Τύπος %s"
 
-#: gio/gcontenttype-win32.c:177
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "Άγνωστος τύπος"
 
-#: gio/gcontenttype-win32.c:179
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
 msgstr "%s τύπος αρχείων"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr ""
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "Το GCredentials δεν έχει υλοποιηθεί σε αυτό το λειτουργικό σύστημα"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Δεν υπάρχει υποστήριξη του GCredentials για το λογισμικό σας"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 "Το GCredentials δεν περιέχει αναγνωριστικό διεργασίας σε αυτό το λειτουργικό "
 "σύστημα"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "Το διαπιστευτήρια αντιποίησης δεν είναι δυνατά σε αυτό το λειτουργικό σύστημα"
@@ -386,56 +392,57 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Αναπάντεχο πρόωρο τέλος ροής"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:246 gio/gdbusaddress.c:327
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, fuzzy, c-format
 #| msgid "Unsupported key '%s' in address entry '%s'"
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Ανυποστήρικτο κλειδί '%s' στην εισαγωγή διεύθυνσης'%s'"
 
-#: gio/gdbusaddress.c:185
+#: gio/gdbusaddress.c:171
+#, fuzzy, c-format
+#| msgid "Meaningless key/value pair combination in address entry '%s'"
+msgid "Meaningless key/value pair combination in address entry “%s”"
+msgstr ""
+"Συνδυασμός χωρίς νόημα ζευγαριού κλειδιού/τιμής στην εισαγόμενη διεύθυνση "
+"'%s'"
+
+#: gio/gdbusaddress.c:180
 #, fuzzy, 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)"
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
 msgstr ""
 "Η διεύθυνση '%s' είναι άκυρη (χρειάζεται ακριβώς μια διαδρομή, tmpdir ή "
 "αφηρημένα κλειδιά)"
 
-#: gio/gdbusaddress.c:198
-#, fuzzy, c-format
-#| msgid "Meaningless key/value pair combination in address entry '%s'"
-msgid "Meaningless key/value pair combination in address entry “%s”"
-msgstr ""
-"Συνδυασμός χωρίς νόημα ζευγαριού κλειδιού/τιμής στην εισαγόμενη διεύθυνση "
-"'%s'"
-
-#: gio/gdbusaddress.c:261 gio/gdbusaddress.c:342
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, fuzzy, c-format
 #| msgid "Error in address '%s' - the port attribute is malformed"
-msgid "Error in address “%s” — the port attribute is malformed"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα θύρας είναι κακοδιατυπωμένη"
 
-#: gio/gdbusaddress.c:272 gio/gdbusaddress.c:353
-#, fuzzy, c-format
-#| msgid "Error in address '%s' - the family attribute is malformed"
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα ομάδας είναι κακοδιατυπωμένη"
-
-#: gio/gdbusaddress.c:423 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, fuzzy, c-format
 #| msgid "Unknown or unsupported transport '%s' for address '%s'"
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Άγνωστη ή ανυποστήρικτη μεταφορά '%s' για τη διεύθυνση '%s'"
 
-#: gio/gdbusaddress.c:467
+#: gio/gdbusaddress.c:461
 #, fuzzy, c-format
 #| msgid "Address element '%s' does not contain a colon (:)"
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Το στοιχείο διευθύνσεως '%s' δεν περιέχει διπλή στιγμή (:)"
 
-#: gio/gdbusaddress.c:488
+#: gio/gdbusaddress.c:470
+#, c-format
+msgid "Transport name in address element “%s” must not be empty"
+msgstr ""
+
+#: gio/gdbusaddress.c:491
 #, fuzzy, c-format
 #| msgid ""
 #| "Key/Value pair %d, '%s', in address element '%s' does not contain an "
@@ -450,6 +457,17 @@ msgstr ""
 #: gio/gdbusaddress.c:502
 #, fuzzy, c-format
 #| msgid ""
+#| "Key/Value pair %d, '%s', in address element '%s' does not contain an "
+#| "equal sign"
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr ""
+"Το δίδυμο κλειδί/τιμή %d, '%s', στο στοιχείο διεύθυνσης'%s' δεν περιέχει τον "
+"τελεστή ίσον"
+
+#: gio/gdbusaddress.c:516
+#, fuzzy, c-format
+#| msgid ""
 #| "Error unescaping key or value in Key/Value pair %d, '%s', in address "
 #| "element '%s'"
 msgid ""
@@ -459,7 +477,7 @@ msgstr ""
 "Σφάλμα στη μη διαφυγή του κλειδιού ή της τιμής στο δίδυμο κλειδί/τιμή %d, "
 "'%s', στο στοιχείο διεύθυνσης '%s'"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, fuzzy, c-format
 #| msgid ""
 #| "Error in address '%s' - the unix transport requires exactly one of the "
@@ -471,7 +489,7 @@ msgstr ""
 "Σφάλμα στη διεύθυνση '%s' – ο μεταφορέας unix απαιτεί ακριβώς ένα από τα "
 "κλειδιά 'path' ή 'abstract' να οριστούν"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, fuzzy, c-format
 #| msgid "Error in address '%s' - the host attribute is missing or malformed"
 msgid "Error in address “%s” — the host attribute is missing or malformed"
@@ -479,14 +497,14 @@ msgstr ""
 "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα κεντρικού υπολογιστή λείπει ή είναι "
 "κακοδιατυπωμένη"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, fuzzy, c-format
 #| msgid "Error in address '%s' - the port attribute is missing or malformed"
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα θύρας λείπει ή είναι κακοδιατυπωμένη"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, fuzzy, c-format
 #| msgid ""
 #| "Error in address '%s' - the noncefile attribute is missing or malformed"
@@ -496,26 +514,26 @@ msgstr ""
 "κακοδιατυπωμένη"
 
 #
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Σφάλμα αυτόματης εκκίνησης: "
 
 #
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, fuzzy, c-format
 #| msgid "Error opening nonce file '%s': %s"
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Σφάλμα ανοίγματος παρόντος αρχείου '%s': %s"
 
 #
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, fuzzy, c-format
 #| msgid "Error reading from nonce file '%s': %s"
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Σφάλμα ανάγνωσης από το παρόν αρχείο '%s': %s"
 
 #
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, fuzzy, c-format
 #| msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
@@ -523,56 +541,45 @@ msgstr ""
 "Σφάλμα ανάγνωσης από το παρόν αρχείο '%s', αναμενόμενες 16 bytes, "
 "παραλήφθηκαν %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, fuzzy, c-format
 #| msgid "Error writing contents of nonce file '%s' to stream:"
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Σφάλμα εγγραφής περιεχομένου του παρόντος αρχείου '%s' στην ροή:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Η δεδομένη διεύθυνση είναι κενή"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Αδυναμία δημιουργίας διαύλου μηνυμάτων όταν χρησιμοποιείται setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Αδυναμία δημιουργίας διαύλου μηνυμάτων χωρίς ταυτότητα μηχανήματος: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr ""
 
 #
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, fuzzy, c-format
 #| msgid "Error spawning command line '%s': "
 msgid "Error spawning command line “%s”: "
 msgstr "Σφάλμα δημιουργίας στη γραμμή εντολών '%s': "
 
-#: gio/gdbusaddress.c:1359
-#, c-format
-msgid "(Type any character to close this window)\n"
-msgstr ""
-"(Πληκτρολογήστε οποιοδήποτε χαρακτήρα για να κλείσετε αυτό το παράθυρο)\n"
-
-#: gio/gdbusaddress.c:1513
-#, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr "Η σύνοδος dbus δεν εκτελείται και η αυτόματη εκκίνηση απέτυχε"
-
-#: gio/gdbusaddress.c:1524
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Αδυναμία καθορισμού της διεύθυνσης διαύλου συνόδου (μη υλοποιημένος σε αυτό "
 "το λειτουργικό)"
 
-#: gio/gdbusaddress.c:1662 gio/gdbusconnection.c:7142
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, fuzzy, c-format
 #| msgid ""
 #| "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment "
@@ -584,7 +591,7 @@ msgstr ""
 "Αδυναμία καθορισμού της διεύθυνση διαύλου από την μεταβλητή περιβάλλοντος "
 "DBUS_STARTER_BUS_TYPE - άγνωστη τιμή '%s'"
 
-#: gio/gdbusaddress.c:1671 gio/gdbusconnection.c:7151
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -592,23 +599,23 @@ msgstr ""
 "Αδυναμία καθορισμού της διεύθυνσης διαύλου επειδή η μεταβλητή περιβάλλοντος "
 "DBUS_STARTER_BUS_TYPE δεν είναι ορισθεί"
 
-#: gio/gdbusaddress.c:1681
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Άγνωστος τύπος διαύλου %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr ""
 "Απροσδόκητη έλλειψη περιεχομένου κατά την προσπάθεια ανάγνωσης μιας γραμμής"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Απροσδόκητη έλλειψη περιεχομένου που προσπαθεί (με ασφάλεια) να διαβάσει μια "
 "γραμμή"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -616,18 +623,18 @@ msgstr ""
 "Εξάντληση όλων των διαθέσιμων μηχανισμών επικύρωσης (χρησιμοποιήθηκε: %s) "
 "(διαθέσιμο: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Ακυρώθηκε μέσω του GDBusAuthObserver::authorize-authenticated-peer"
 
 #
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, fuzzy, c-format
 #| msgid "Error when getting information for directory '%s': %s"
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Σφάλμα λήψης πληροφορίας του καταλόγου '%s': %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, fuzzy, c-format
 #| msgid ""
 #| "Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o"
@@ -637,19 +644,19 @@ msgstr ""
 "Δικαιώματα στον κατάλογο '%s' είναι κακοδιατυπωμένα. Αναμενόμενη κατάσταση "
 "0700, ελήφθη 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Σφάλμα δημιουργίας καταλόγου «%s»: %s"
 
 #
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, fuzzy, c-format
 #| msgid "Error opening keyring '%s' for reading: "
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Σφάλμα ανοίγματος της κλειδοθήκης '%s' για ανάγνωση: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, fuzzy, c-format
 #| msgid "Line %d of the keyring at '%s' with content '%s' is malformed"
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
@@ -657,7 +664,7 @@ msgstr ""
 "Η γραμμή %d από την κλειδοθήκη στο '%s' με το περιεχόμενο '%s' είναι "
 "κακοδιατυπωμένη"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, fuzzy, c-format
 #| msgid ""
 #| "First token of line %d of the keyring at '%s' with content '%s' is "
@@ -668,7 +675,7 @@ msgstr ""
 "Το πρώτο σημείο της γραμμής %d της κλειδοθήκης στο '%s' με περιεχόμενο '%s' "
 "είναι κακοδιατυπωμένο"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, fuzzy, c-format
 #| msgid ""
 #| "Second token of line %d of the keyring at '%s' with content '%s' is "
@@ -679,174 +686,172 @@ msgstr ""
 "Το δεύτερο διακριτικό της γραμμής %d της κλειδοθήκης στο '%s' με περιεχόμενο "
 "'%s' είναι κακοδιατυπωμένο"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, fuzzy, c-format
 #| msgid "Didn't find cookie with id %d in the keyring at '%s'"
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Δεν βρήκε το cookie με ταυτότητα %d στη κλειδοθήκη στο '%s'"
 
 #
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, fuzzy, c-format
 #| msgid "Error deleting stale lock file '%s': %s"
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Σφάλμα διαγραφής ξεπερασμένου αρχείου κλειδαριών '%s': %s"
 
 #
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, fuzzy, c-format
 #| msgid "Error creating lock file '%s': %s"
 msgid "Error creating lock file “%s”: %s"
 msgstr "Σφάλμα δημιουργίας αρχείου κλειδαριών '%s': %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, fuzzy, c-format
 #| msgid "Error closing (unlinked) lock file '%s': %s"
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Σφάλμα στο κλείσιμο (αποσυνδεμένου) αρχείου κλειδαριών '%s': %s"
 
 #
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, fuzzy, c-format
 #| msgid "Error unlinking lock file '%s': %s"
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Σφάλμα αποσύνδεσης αρχείου κλειδαριών '%s': %s"
 
 #
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, fuzzy, c-format
 #| msgid "Error opening keyring '%s' for writing: "
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Σφάλμα στο άνοιγμα της κλειδοθήκης '%s' για εγγραφή: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, fuzzy, c-format
 #| msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Επιπλέον, απελευθερώνοντας το κλείδωμα για '%s' απέτυχε επίσης: %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2369
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2400
 msgid "The connection is closed"
 msgstr "Η σύνδεση είναι κλειστή"
 
-#: gio/gdbusconnection.c:1870
+#: gio/gdbusconnection.c:1901
 msgid "Timeout was reached"
 msgstr "Έφτασε ο χρόνος λήξης"
 
-#: gio/gdbusconnection.c:2491
+#: gio/gdbusconnection.c:2522
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Βρέθηκαν ανυποστήρικτες σημαίες κατά την κατασκευή μίας client-side σύνδεσης"
 
-#: gio/gdbusconnection.c:4115 gio/gdbusconnection.c:4462
-#, fuzzy, c-format
-#| msgid ""
-#| "No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
+#, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
-"Καμία τέτοια διεπαφή 'org.freedesktop.DBus.Properties' στο αντικείμενο στη "
+"Καμία τέτοια διεπαφή «org.freedesktop.DBus.Properties» στο αντικείμενο στη "
 "διαδρομή %s"
 
-#: gio/gdbusconnection.c:4257
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Δεν υπάρχει η ιδιότητα «%s»"
 
-#: gio/gdbusconnection.c:4269
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Η ιδιότητα «%s» δεν είναι αναγνώσιμη"
 
-#: gio/gdbusconnection.c:4280
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Η ιδιότητα «%s» δεν είναι εγγράψιμη"
 
-#: gio/gdbusconnection.c:4300
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Σφάλμα ρύθμισης της ιδιότητας «%s»: Αναμενόμενος τύπος «%s» αλλά βρήκε «%s»"
 
-#: gio/gdbusconnection.c:4405 gio/gdbusconnection.c:4613
-#: gio/gdbusconnection.c:6582
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Δεν υπάρχει η διεπαφή «%s»"
 
-#: gio/gdbusconnection.c:4831 gio/gdbusconnection.c:7091
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Δεν υπάρχει η διεπαφή «%s» στο αντικείμενο στην διαδρομή %s"
 
-#: gio/gdbusconnection.c:4929
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Δεν υπάρχει η μέθοδος «%s»"
 
-#: gio/gdbusconnection.c:4960
+#: gio/gdbusconnection.c:5007
 #, fuzzy, c-format
 #| msgid "Type of message, '%s', does not match expected type '%s'"
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Ο τύπος μηνύματος, '%s', δεν ταιριάζει με τον αναμενόμενο τύπο '%s'"
 
-#: gio/gdbusconnection.c:5158
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Ένα αντικείμενο έχει εξαχθεί ήδη για τη διεπαφή %s στο %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/gdbusconnection.c:5384
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Αδυναμία ανάκτησης της ιδιότητας %s.%s"
 
 # gconf/gconf-internals.c:2416
-#: gio/gdbusconnection.c:5440
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Αδυναμία ορισμού της ιδιότητας %s.%s"
 
-#: gio/gdbusconnection.c:5618
+#: gio/gdbusconnection.c:5665
 #, fuzzy, c-format
 #| msgid "Method '%s' returned type '%s', but expected '%s'"
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Η μέθοδος '%s' επέστρεψε τον τύπο '%s', αλλά αναμενόταν '%s'"
 
-#: gio/gdbusconnection.c:6693
+#: gio/gdbusconnection.c:6742
 #, fuzzy, c-format
 #| msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Η μέθοδος '%s' στη διεπαφή '%s' με υπογραφή '%s' δεν υπάρχει"
 
-#: gio/gdbusconnection.c:6814
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ένα υποδένδρο εξάγεται ήδη για %s"
 
-#: gio/gdbusmessage.c:1248
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "ο τύπος είναι ΑΚΥΡΟΣ"
 
-#: gio/gdbusmessage.c:1259
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Μήνυμα METHOD_CALL: το πεδίο κεφαλίδας PATH ή MEMBER λείπει"
 
-#: gio/gdbusmessage.c:1270
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Μήνυμα METHOD_RETURN: το πεδίο κεφαλίδας REPLY_SERIAL λείπει"
 
-#: gio/gdbusmessage.c:1282
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Μήνυμα σφάλματος: το πεδίο κεφαλίδας REPLY_SERIAL ή ERROR_NAME λείπει"
 
-#: gio/gdbusmessage.c:1295
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Μήνυμα σήματος: το πεδίο κεφαλίδας PATH, INTERFACE ή MEMBER λείπει"
 
-#: gio/gdbusmessage.c:1303
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -854,7 +859,7 @@ msgstr ""
 "Μήνυμα ΣΗΜΑΤΟΣ: Το πεδίο κεφαλίδας PATH χρησιμοποιεί τη δεσμευμένη τιμή /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -862,21 +867,21 @@ msgstr ""
 "Μήνυμα σήματος: Το πεδίο κεφαλίδας INTERFACE χρησιμοποιεί τη δεσμευμένη τιμή "
 "org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1359 gio/gdbusmessage.c:1419
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Απαίτηση για ανάγνωση %lu byte αλλά ελήφθη μόνο %lu"
 msgstr[1] "Απαίτηση για ανάγνωση %lu bytes αλλά ελήφθησαν μόνο %lu"
 
-#: gio/gdbusmessage.c:1373
+#: gio/gdbusmessage.c:1380
 #, fuzzy, c-format
 #| msgid "Expected NUL byte after the string '%s' but found byte %d"
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Αναμενόμενo byte NUL μετά από τη συμβολοσειρά '%s' αλλά βρέθηκε byte %d"
 
-#: gio/gdbusmessage.c:1392
+#: gio/gdbusmessage.c:1399
 #, fuzzy, c-format
 #| msgid ""
 #| "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -890,19 +895,23 @@ msgstr ""
 "μετατόπιση byte %d (μήκος thw συμβολοσειράς %d). Η έγκυρη συμβολοσειρά UTF-8 "
 "μέχρι εκείνο το σημείο ήταν '%s'"
 
-#: gio/gdbusmessage.c:1595
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr ""
+
+#: gio/gdbusmessage.c:1609
 #, fuzzy, c-format
 #| msgid "Parsed value '%s' is not a valid D-Bus object path"
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Η αναλυμένη τιμή '%s' δεν είναι αποδεκτή διαδρομή αντικειμένου D-Bus"
 
-#: gio/gdbusmessage.c:1617
+#: gio/gdbusmessage.c:1631
 #, fuzzy, c-format
 #| msgid "Parsed value '%s' is not a valid D-Bus signature"
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Η αναλυμένη τιμή '%s' δεν είναι έγκυρη υπογραφή D-Bus"
 
-#: gio/gdbusmessage.c:1664
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -913,7 +922,7 @@ msgstr[0] ""
 msgstr[1] ""
 "Βρέθηκε πίνακας μήκους %u bytes. Μέγιστο μήκος είναι 2<<26 bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1684
+#: gio/gdbusmessage.c:1698
 #, fuzzy, c-format
 #| msgid ""
 #| "Encountered array of type 'a%c', expected to have a length a multiple of "
@@ -925,14 +934,14 @@ msgstr ""
 "Βρέθηκε πίνακας τύπου 'a%c', αναμενόταν να έχει μήκος πολλαπλάσιο από %u "
 "bytes, αλλά βρέθηκε να έχει μήκος %u bytes"
 
-#: gio/gdbusmessage.c:1851
+#: gio/gdbusmessage.c:1884
 #, fuzzy, c-format
 #| msgid "Parsed value '%s' for variant is not a valid D-Bus signature"
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "Η αναλυμένη τιμή '%s' για την παραλλαγή δεν είναι αποδεκτή υπογραφή D-Bus"
 
-#: gio/gdbusmessage.c:1875
+#: gio/gdbusmessage.c:1925
 #, fuzzy, c-format
 #| msgid ""
 #| "Error deserializing GVariant with type string '%s' from the D-Bus wire "
@@ -943,7 +952,7 @@ msgstr ""
 "Σφάλμα αποσειριοποίησης GVariant με τον τύπο συμβολοσειράς '%s' από τη μορφή "
 "καλωδίου D-Bus"
 
-#: gio/gdbusmessage.c:2057
+#: gio/gdbusmessage.c:2110
 #, fuzzy, c-format
 #| msgid ""
 #| "Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found "
@@ -955,12 +964,16 @@ msgstr ""
 "Άκυρη τιμή διάταξης ψηφιολέξεων. Αναμενόμενη 0x6c ('l') ή 0x42 ('B') αλλά "
 "βρέθηκε η τιμή 0x%02x"
 
-#: gio/gdbusmessage.c:2070
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Άκυρη κύρια έκδοση πρωτοκόλλου. Αναμενόμενη 1 αλλά βρέθηκε %d"
 
-#: gio/gdbusmessage.c:2126
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
+msgid "Signature header found but is not of type signature"
+msgstr ""
+
+#: gio/gdbusmessage.c:2189
 #, fuzzy, c-format
 #| msgid "Signature header with signature '%s' found but message body is empty"
 msgid "Signature header with signature “%s” found but message body is empty"
@@ -968,13 +981,13 @@ msgstr ""
 "Η κεφαλίδα υπογραφών με υπογραφή '%s' βρέθηκε αλλά το σώμα του μηνύματος "
 "είναι κενό"
 
-#: gio/gdbusmessage.c:2140
+#: gio/gdbusmessage.c:2204
 #, fuzzy, c-format
 #| msgid "Parsed value '%s' is not a valid D-Bus signature (for body)"
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Η αναλυμένη τιμή '%s' δεν είναι αποδεκτή υπογραφή D-Bus (για το σώμα)"
 
-#: gio/gdbusmessage.c:2170
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -985,11 +998,11 @@ msgstr[1] ""
 "Δεν υπάρχει κεφαλίδα υπογραφών στο μήνυμα αλλά το σώμα του μηνυμάτων είναι "
 "%u bytes"
 
-#: gio/gdbusmessage.c:2180
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Αδυναμία αποσειριοποίησης μηνύματος: "
 
-#: gio/gdbusmessage.c:2521
+#: gio/gdbusmessage.c:2590
 #, fuzzy, c-format
 #| msgid ""
 #| "Error serializing GVariant with type string '%s' to the D-Bus wire format"
@@ -999,24 +1012,24 @@ msgstr ""
 "Σφάλμα στην σειριακή διάταξη GVariant με τύπο συμβολοσειράς '%s' στην μορφή "
 "δικτυώματος D-Bus"
 
-#: gio/gdbusmessage.c:2658
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 
-#: gio/gdbusmessage.c:2666
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Αδυναμία σειριακής διάταξης μηνύματος: "
 
-#: gio/gdbusmessage.c:2710
+#: gio/gdbusmessage.c:2788
 #, fuzzy, c-format
 #| msgid "Message body has signature '%s' but there is no signature header"
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Το σώμα του μηνύματος έχει υπογραφή '%s' αλλά δεν υπάρχει κεφαλίδα υπογραφής"
 
-#: gio/gdbusmessage.c:2720
+#: gio/gdbusmessage.c:2798
 #, fuzzy, c-format
 #| msgid ""
 #| "Message body has type signature '%s' but signature in the header field is "
@@ -1028,7 +1041,7 @@ msgstr ""
 "Το σώμα του μηνύματος έχει την υπογραφή τύπου '%s' αλλά η υπογραφή στο πεδίο "
 "κεφαλίδας είναι '%s'"
 
-#: gio/gdbusmessage.c:2736
+#: gio/gdbusmessage.c:2814
 #, fuzzy, c-format
 #| msgid "Message body is empty but signature in the header field is '(%s)'"
 msgid "Message body is empty but signature in the header field is “(%s)”"
@@ -1036,73 +1049,90 @@ msgstr ""
 "Το σώμα του μηνύματος είναι κενό αλλά η υπογραφή στο πεδίο κεφαλίδας είναι "
 "'(%s)'"
 
-#: gio/gdbusmessage.c:3289
+#: gio/gdbusmessage.c:3367
 #, fuzzy, c-format
 #| msgid "Error return with body of type '%s'"
 msgid "Error return with body of type “%s”"
 msgstr "Σφάλμα επιστροφής με σώμα τύπου'%s'"
 
-#: gio/gdbusmessage.c:3297
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Επιστροφή σφάλματος με κενό σώμα"
 
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr ""
+"(Πληκτρολογήστε οποιοδήποτε χαρακτήρα για να κλείσετε αυτό το παράθυρο)\n"
+
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr "Η σύνοδος dbus δεν εκτελείται και η αυτόματη εκκίνηση απέτυχε"
+
 # gconf/gconf-internals.c:2416
-#: gio/gdbusprivate.c:2066
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Αδύνατη η λήψη κατατομής υλικού: %s"
 
-#: gio/gdbusprivate.c:2111
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Αδυναμία φόρτωσης /var/lib/dbus/machine-id ή /etc/machine-id: "
 
-#: gio/gdbusproxy.c:1612
+#: gio/gdbusproxy.c:1625
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Σφάλμα στην κλήση StartServiceByName για το %s: "
 
-#: gio/gdbusproxy.c:1635
+#: gio/gdbusproxy.c:1648
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Απροσδόκητη απάντηση %d από την μέθοδο StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2726 gio/gdbusproxy.c:2860
+#: gio/gdbusproxy.c:2748 gio/gdbusproxy.c:2883
+#, fuzzy, c-format
+#| 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"
 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"
+"Cannot invoke method; proxy is for the well-known name %s without an owner, "
+"and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
 "Αδυναμία επίκλησης της μεθόδου· ο διαμεσολαβητής είναι για ένα γνωστό όνομα "
 "χωρίς ιδιοκτήτη και ο διαμεσολαβητής δημιουργήθηκε με την σημαία "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:708
-msgid "Abstract name space not supported"
+#: gio/gdbusserver.c:755
+#, fuzzy
+#| msgid "Abstract name space not supported"
+msgid "Abstract namespace not supported"
 msgstr "Δεν υποστηρίζονται αφηρημένα ονόματα χώρου"
 
-#: gio/gdbusserver.c:795
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 "Αδυναμία διευκρίνισης του τρέχοντος αρχείου κατά τη δημιουργία διακομιστή"
 
-#: gio/gdbusserver.c:876
+#: gio/gdbusserver.c:930
 #, fuzzy, c-format
 #| msgid "Error writing nonce file at '%s': %s"
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Σφάλμα εγγραφής στο παρόν αρχείο στο '%s': %s"
 
-#: gio/gdbusserver.c:1047
+#: gio/gdbusserver.c:1103
 #, fuzzy, c-format
 #| msgid "The string '%s' is not a valid D-Bus GUID"
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Η συμβολοσειρά '%s' δεν είναι αποδεκτό D-Bus GUID"
 
-#: gio/gdbusserver.c:1087
+#: gio/gdbusserver.c:1143
 #, fuzzy, c-format
 #| msgid "Cannot listen on unsupported transport '%s'"
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Αδυναμία ακρόασης στην ανυποστήρικτη μεταφορά '%s'"
 
-#: gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:107
 #, fuzzy, c-format
 #| msgid ""
 #| "Commands:\n"
@@ -1134,55 +1164,55 @@ msgstr ""
 "Χρησιμοποιείστε \"%s COMMAND --help\" για λήψη βοήθειας για κάθε εντολή.\n"
 
 #
-#: gio/gdbus-tool.c:185 gio/gdbus-tool.c:252 gio/gdbus-tool.c:324
-#: gio/gdbus-tool.c:348 gio/gdbus-tool.c:834 gio/gdbus-tool.c:1171
-#: gio/gdbus-tool.c:1613
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:846 gio/gdbus-tool.c:1183
+#: gio/gdbus-tool.c:1668
 #, c-format
 msgid "Error: %s\n"
 msgstr "Σφάλμα: %s\n"
 
 # gconf/gconftool.c:1181
-#: gio/gdbus-tool.c:196 gio/gdbus-tool.c:265 gio/gdbus-tool.c:1629
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1684
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Ενδοσκόπηση της ανάλυσης λάθους XML: %s\n"
 
-#: gio/gdbus-tool.c:234
+#: gio/gdbus-tool.c:246
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Σφάλμα: το %s δεν είναι έγκυρο όνομα\n"
 
-#: gio/gdbus-tool.c:382
+#: gio/gdbus-tool.c:394
 msgid "Connect to the system bus"
 msgstr "Σύνδεση με το δίαυλο συστήματος"
 
-#: gio/gdbus-tool.c:383
+#: gio/gdbus-tool.c:395
 msgid "Connect to the session bus"
 msgstr "Σύνδεση με το δίαυλο συνόδου"
 
-#: gio/gdbus-tool.c:384
+#: gio/gdbus-tool.c:396
 msgid "Connect to given D-Bus address"
 msgstr "Σύνδεση με δεδομένη διεύθυνση D-Bus"
 
-#: gio/gdbus-tool.c:394
+#: gio/gdbus-tool.c:406
 msgid "Connection Endpoint Options:"
 msgstr "Επιλογές σημείου τέλους σύνδεσης:"
 
-#: gio/gdbus-tool.c:395
+#: gio/gdbus-tool.c:407
 msgid "Options specifying the connection endpoint"
 msgstr "Οι επιλογές που διευκρινίζουν το σημείο τέλους σύνδεσης"
 
-#: gio/gdbus-tool.c:417
+#: gio/gdbus-tool.c:429
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Δεν διευκρινίζεται σημείο τέλους σύνδεσης"
 
-#: gio/gdbus-tool.c:427
+#: gio/gdbus-tool.c:439
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Διευκρινίστηκαν πολλαπλά σημεία τέλους σύνδεσης"
 
-#: gio/gdbus-tool.c:497
+#: gio/gdbus-tool.c:509
 #, fuzzy, c-format
 #| msgid ""
 #| "Warning: According to introspection data, interface '%s' does not exist\n"
@@ -1192,7 +1222,7 @@ msgstr ""
 "Προειδοποίηση: Σύμφωνα με τα στοιχεία ενδοσκόπησης, η διεπαφή '%s' δεν "
 "υπάρχει\n"
 
-#: gio/gdbus-tool.c:506
+#: gio/gdbus-tool.c:518
 #, fuzzy, c-format
 #| msgid ""
 #| "Warning: According to introspection data, method '%s' does not exist on "
@@ -1204,241 +1234,241 @@ msgstr ""
 "Προειδοποίηση: Σύμφωνα με τα στοιχεία ενδοσκόπησης, η μέθοδος '%s' δεν "
 "υπάρχει στη διεπαφή '%s'\n"
 
-#: gio/gdbus-tool.c:568
+#: gio/gdbus-tool.c:580
 msgid "Optional destination for signal (unique name)"
 msgstr "Προαιρετικός προορισμός για σήμα (μοναδικό όνομα)"
 
-#: gio/gdbus-tool.c:569
+#: gio/gdbus-tool.c:581
 msgid "Object path to emit signal on"
 msgstr "Η διαδρομή αντικειμένου για εκπομπή σήματος"
 
-#: gio/gdbus-tool.c:570
+#: gio/gdbus-tool.c:582
 msgid "Signal and interface name"
 msgstr "Σήμα και όνομα διεπαφής"
 
-#: gio/gdbus-tool.c:603
+#: gio/gdbus-tool.c:615
 msgid "Emit a signal."
 msgstr "Εκπομπή σήματος."
 
-#: gio/gdbus-tool.c:658 gio/gdbus-tool.c:965 gio/gdbus-tool.c:1715
-#: gio/gdbus-tool.c:1944 gio/gdbus-tool.c:2164
+#: gio/gdbus-tool.c:670 gio/gdbus-tool.c:977 gio/gdbus-tool.c:1771
+#: gio/gdbus-tool.c:2003 gio/gdbus-tool.c:2223
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Σφάλμα σύνδεσης: %s\n"
 
-#: gio/gdbus-tool.c:678
+#: gio/gdbus-tool.c:690
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Σφάλμα: το %s δεν είναι έγκυρο μοναδικό όνομα διαύλου.\n"
 
-#: gio/gdbus-tool.c:697 gio/gdbus-tool.c:1008 gio/gdbus-tool.c:1758
+#: gio/gdbus-tool.c:709 gio/gdbus-tool.c:1020 gio/gdbus-tool.c:1814
 msgid "Error: Object path is not specified\n"
 msgstr "Σφάλμα: αδιευκρίνιστη διαδρομή αντικειμένου\n"
 
-#: gio/gdbus-tool.c:720 gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1778
-#: gio/gdbus-tool.c:2015
+#: gio/gdbus-tool.c:732 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1834
+#: gio/gdbus-tool.c:2074
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Σφάλμα: το %s δεν είναι έγκυρη διαδρομή αντικειμένου\n"
 
-#: gio/gdbus-tool.c:740
+#: gio/gdbus-tool.c:752
 #, fuzzy
 #| msgid "Error: Method name is not specified\n"
 msgid "Error: Signal name is not specified\n"
 msgstr "Σφάλμα: αδιευκρίνιστο όνομα μεθόδου\n"
 
-#: gio/gdbus-tool.c:754
+#: gio/gdbus-tool.c:766
 #, fuzzy, c-format
 #| msgid "Error: Method name '%s' is invalid\n"
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Σφάλμα: Το όνομα μεθόδου '%s' είναι άκυρο\n"
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:778
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Σφάλμα: Το %s δεν είναι έγκυρο όνομα διεπαφής\n"
 
-#: gio/gdbus-tool.c:772
+#: gio/gdbus-tool.c:784
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Σφάλμα: το %s δεν είναι έγκυρο όνομα μέλους\n"
 
 # gconf/gconftool.c:1181
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:809 gio/gdbus-tool.c:1140
+#: gio/gdbus-tool.c:821 gio/gdbus-tool.c:1152
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Σφάλμα ανάλυσης παραμέτρου %d: %s\n"
 
 # gconf/gconftool.c:1181
-#: gio/gdbus-tool.c:841
+#: gio/gdbus-tool.c:853
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Σφάλμα εκκένωσης σύνδεσης: %s\n"
 
-#: gio/gdbus-tool.c:868
+#: gio/gdbus-tool.c:880
 msgid "Destination name to invoke method on"
 msgstr "Το όνομα προορισμού για την κλήση της μεθόδου"
 
-#: gio/gdbus-tool.c:869
+#: gio/gdbus-tool.c:881
 msgid "Object path to invoke method on"
 msgstr "Η διαδρομή αντικειμένου για κλήση της μεθόδου"
 
-#: gio/gdbus-tool.c:870
+#: gio/gdbus-tool.c:882
 msgid "Method and interface name"
 msgstr "Μέθοδος και όνομα διεπαφής"
 
-#: gio/gdbus-tool.c:871
+#: gio/gdbus-tool.c:883
 msgid "Timeout in seconds"
 msgstr "Ο χρόνος λήξης σε δευτερόλεπτα"
 
-#: gio/gdbus-tool.c:910
+#: gio/gdbus-tool.c:922
 msgid "Invoke a method on a remote object."
 msgstr "Κλήση μεθόδου σε απομακρυσμένο αντικείμενο."
 
-#: gio/gdbus-tool.c:982 gio/gdbus-tool.c:1732 gio/gdbus-tool.c:1969
+#: gio/gdbus-tool.c:994 gio/gdbus-tool.c:1788 gio/gdbus-tool.c:2028
 msgid "Error: Destination is not specified\n"
 msgstr "Σφάλμα: αδιευκρίνιστος προορισμός\n"
 
-#: gio/gdbus-tool.c:993 gio/gdbus-tool.c:1749 gio/gdbus-tool.c:1980
+#: gio/gdbus-tool.c:1005 gio/gdbus-tool.c:1805 gio/gdbus-tool.c:2039
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Σφάλμα: το %s δεν είναι έγκυρο όνομα διαύλου\n"
 
-#: gio/gdbus-tool.c:1043
+#: gio/gdbus-tool.c:1055
 msgid "Error: Method name is not specified\n"
 msgstr "Σφάλμα: αδιευκρίνιστο όνομα μεθόδου\n"
 
-#: gio/gdbus-tool.c:1054
+#: gio/gdbus-tool.c:1066
 #, fuzzy, c-format
 #| msgid "Error: Method name '%s' is invalid\n"
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Σφάλμα: Το όνομα μεθόδου '%s' είναι άκυρο\n"
 
 #
-#: gio/gdbus-tool.c:1132
+#: gio/gdbus-tool.c:1144
 #, fuzzy, c-format
 #| msgid "Error parsing parameter %d of type '%s': %s\n"
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Σφάλμα στην ανάλυσης παραμέτρου %d του τύπου '%s': %s\n"
 
-#: gio/gdbus-tool.c:1576
+#: gio/gdbus-tool.c:1630
 msgid "Destination name to introspect"
 msgstr "Όνομα προορισμού για ενδοσκόπηση"
 
-#: gio/gdbus-tool.c:1577
+#: gio/gdbus-tool.c:1631
 msgid "Object path to introspect"
 msgstr "Διαδρομή αντικειμένου για ενδοσκόπηση"
 
-#: gio/gdbus-tool.c:1578
+#: gio/gdbus-tool.c:1632
 msgid "Print XML"
 msgstr "Εκτύπωση XML"
 
-#: gio/gdbus-tool.c:1579
+#: gio/gdbus-tool.c:1633
 msgid "Introspect children"
 msgstr "Ενδοσκόπηση θυγατρικής"
 
-#: gio/gdbus-tool.c:1580
+#: gio/gdbus-tool.c:1634
 msgid "Only print properties"
 msgstr "Μόνο ιδιότητες εκτύπωσης"
 
-#: gio/gdbus-tool.c:1667
+#: gio/gdbus-tool.c:1723
 msgid "Introspect a remote object."
 msgstr "Ενδοσκόπηση απομακρυσμένου αντικειμένου."
 
-#: gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:1929
 msgid "Destination name to monitor"
 msgstr "Όνομα προορισμού για έλεγχο"
 
-#: gio/gdbus-tool.c:1871
+#: gio/gdbus-tool.c:1930
 msgid "Object path to monitor"
 msgstr "Η διαδρομή αντικειμένου για έλεγχο"
 
-#: gio/gdbus-tool.c:1896
+#: gio/gdbus-tool.c:1955
 msgid "Monitor a remote object."
 msgstr "Έλεγχος απομακρυσμένου αντικειμένου."
 
-#: gio/gdbus-tool.c:1954
+#: gio/gdbus-tool.c:2013
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:2078
+#: gio/gdbus-tool.c:2137
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2081
+#: gio/gdbus-tool.c:2140
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2129
+#: gio/gdbus-tool.c:2188
 msgid "[OPTION…] BUS-NAME"
 msgstr ""
 
-#: gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:2189
 msgid "Wait for a bus name to appear."
 msgstr ""
 
-#: gio/gdbus-tool.c:2206
+#: gio/gdbus-tool.c:2265
 #, fuzzy
 #| msgid "Error: object path not specified.\n"
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Σφάλμα: αδιευκρίνιστη διαδρομή αντικειμένου.\n"
 
-#: gio/gdbus-tool.c:2211
+#: gio/gdbus-tool.c:2270
 #, fuzzy
 #| msgid "Error: object path not specified.\n"
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Σφάλμα: αδιευκρίνιστη διαδρομή αντικειμένου.\n"
 
-#: gio/gdbus-tool.c:2216
+#: gio/gdbus-tool.c:2275
 msgid "Error: Too many arguments.\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:2224 gio/gdbus-tool.c:2231
+#: gio/gdbus-tool.c:2283 gio/gdbus-tool.c:2290
 #, fuzzy, c-format
 #| msgid "Error: %s is not a valid bus name\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Σφάλμα: το %s δεν είναι έγκυρο όνομα διαύλου\n"
 
-#: gio/gdesktopappinfo.c:2023 gio/gdesktopappinfo.c:4633
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Ανώνυμο"
 
-#: gio/gdesktopappinfo.c:2433
+#: gio/gdesktopappinfo.c:2482
 #, fuzzy
 #| msgid "Desktop file didn't specify Exec field"
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Το αρχείο επιφάνειας εργασίας δεν όρισε πεδίο Exec"
 
-#: gio/gdesktopappinfo.c:2692
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Αδυναμία εύρεσης του απαιτούμενου τερματικού για την εφαρμογή"
 
-#: gio/gdesktopappinfo.c:3202
+#: gio/gdesktopappinfo.c:3406
 #, fuzzy, c-format
 #| msgid "Can't create user application configuration folder %s: %s"
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Αδυναμία δημιουργίας φακέλου ρυθμίσεων εφαρμογής %s: %s"
 
-#: gio/gdesktopappinfo.c:3206
+#: gio/gdesktopappinfo.c:3410
 #, fuzzy, c-format
 #| msgid "Can't create user MIME configuration folder %s: %s"
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Αδυναμία δημιουργίας φακέλου ρυθμίσεων MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3446 gio/gdesktopappinfo.c:3470
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Οι πληροφορίες εφαρμογής στερούνται ταυτοποιητή"
 
-#: gio/gdesktopappinfo.c:3704
+#: gio/gdesktopappinfo.c:3908
 #, fuzzy, c-format
 #| msgid "Can't create user desktop file %s"
 msgid "Can’t create user desktop file %s"
 msgstr "Αδυναμία δημιουργίας αρχείου επιφάνειας εργασίας %s"
 
-#: gio/gdesktopappinfo.c:3838
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Προσαρμοσμένος ορισμός του %s"
@@ -1512,12 +1542,12 @@ msgstr ""
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Αναμενόταν GEmblem για το GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3738 gio/gfile.c:3793
-#: gio/gfile.c:4029 gio/gfile.c:4071 gio/gfile.c:4539 gio/gfile.c:4950
-#: gio/gfile.c:5035 gio/gfile.c:5125 gio/gfile.c:5222 gio/gfile.c:5309
-#: gio/gfile.c:5410 gio/gfile.c:7988 gio/gfile.c:8078 gio/gfile.c:8162
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Ανυποστήρικτη λειτουργία"
@@ -1526,85 +1556,89 @@ msgstr "Ανυποστήρικτη λειτουργία"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Δεν υπάρχει η περιέχουσα προσάρτηση"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2399
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 #, fuzzy
 #| msgid "Can't copy over directory"
 msgid "Can’t copy over directory"
 msgstr "Αδυναμία αντιγραφής σε κατάλογο"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 #, fuzzy
 #| msgid "Can't copy directory over directory"
 msgid "Can’t copy directory over directory"
 msgstr "Αδυναμία αντιγραφής καταλόγου σε κατάλογο"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Το αρχείο προορισμού υπάρχει"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 #, fuzzy
 #| msgid "Can't recursively copy directory"
 msgid "Can’t recursively copy directory"
 msgstr "Αδυναμία αναδρομικής αντιγραφής καταλόγου"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Η αρμολόγηση δεν υποστηρίζεται"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Σφάλμα αρμολόγησης αρχείου: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Δεν υποστηρίζεται η αντιγραφή (συνδέσμου αναφοράς/κλώνου) μεταξύ προσαρτήσεων"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
 "Η αντιγραφή (συνδέσμου αναφοράς/κλώνου) δεν υποστηρίζεται ή είναι άκυρη"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 #, fuzzy
 #| msgid "Copy (reflink/clone) is not supported or didn't work"
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "Η αντιγραφή (συνδέσμου αναφοράς/κλώνου) δεν υποστηρίζεται ή δεν δούλεψε"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 #, fuzzy
 #| msgid "Can't copy special file"
 msgid "Can’t copy special file"
 msgstr "Αδυναμία αντιγραφής του ειδικού αρχείου"
 
-#: gio/gfile.c:4019
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Άκυρη τιμή συμβολικού συνδέσμου"
 
-#: gio/gfile.c:4180
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Οι συμβολικοί σύνδεσμοι δεν υποστηρίζονται"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Δεν υποστηρίζονται απορρίμματα"
 
-#: gio/gfile.c:4292
+#: gio/gfile.c:4276
 #, fuzzy, c-format
 #| msgid "File names cannot contain '%c'"
 msgid "File names cannot contain “%c”"
 msgstr "Τα ονόματα των αρχείων δεν μπορούν να περιέχουν '%c'"
 
-#: gio/gfile.c:6773 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 #, fuzzy
 #| msgid "volume doesn't implement mount"
 msgid "volume doesn’t implement mount"
 msgstr "ο τόμος δεν υποστηρίζει προσάρτηση"
 
-#: gio/gfile.c:6882
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Δεν έχουν οριστεί εφαρμογές για το χειρισμό αυτού του αρχείου"
 
@@ -1652,8 +1686,8 @@ msgstr "Δεν επιτρέπεται η περικοπή για τη ροή ε
 msgid "Truncate not supported on stream"
 msgstr "Δεν υποστηρίζεται η περικοπή ροής"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:410 gio/gresolver.c:476
-#: glib/gconvert.c:1786
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Άκυρο όνομα κεντρικού υπολογιστή"
 
@@ -1682,37 +1716,37 @@ msgstr "Απέτυχε η σύνδεση διαμεσολαβητή HTTP: %i"
 msgid "HTTP proxy server closed connection unexpectedly."
 msgstr "Έκλεισε απροσδόκητα η σύνδεση με τον διακομιστή διαμεσολάβησης HTTP."
 
-#: gio/gicon.c:290
+#: gio/gicon.c:298
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "Λανθασμένος αριθμός κουπονιού (%d)"
 
-#: gio/gicon.c:310
+#: gio/gicon.c:318
 #, c-format
 msgid "No type for class name %s"
 msgstr "Χωρίς τύπο ονόματος κλάσης %s"
 
-#: gio/gicon.c:320
+#: gio/gicon.c:328
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr "Ο τύπος %s δεν υποστηρίζει τη διεπαφή GIcon"
 
-#: gio/gicon.c:331
+#: gio/gicon.c:339
 #, c-format
 msgid "Type %s is not classed"
 msgstr "Ο τύπος %s δεν είναι καταχωρημένος"
 
-#: gio/gicon.c:345
+#: gio/gicon.c:353
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "Κακοδιατυπωμένος αριθμός έκδοσης: %s"
 
-#: gio/gicon.c:359
+#: gio/gicon.c:367
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr "Ο τύπος %s δεν υποστηρίζει from_tokens() στη διεπαφή GIcon"
 
-#: gio/gicon.c:461
+#: gio/gicon.c:469
 #, fuzzy
 #| msgid "Can't handle the supplied version of the icon encoding"
 msgid "Can’t handle the supplied version of the icon encoding"
@@ -1759,7 +1793,7 @@ msgstr "Η ροή εισόδου δεν υποστηρίζει την ανάγν
 #. Translators: This is an error you get if there is
 #. * already an operation running against this stream when
 #. * you try to start one
-#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:1671
+#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr "Εκκρεμεί μία ενέργεια για τη ροή"
 
@@ -1781,7 +1815,7 @@ msgstr ""
 "Το '%s' δεν παίρνει ορίσματα\n"
 "\n"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:857
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Χρήση:"
 
@@ -1878,10 +1912,10 @@ msgid "Error writing to stdout"
 msgstr "Σφάλμα εγγραφής στο αρχείο: %s"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:113
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1898,156 +1932,168 @@ msgid ""
 "like smb://server/resource/file.txt as location."
 msgstr ""
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:139
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
-msgstr ""
+msgstr "Δεν δόθηκαν τοποθεσίες"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 #, fuzzy
 #| msgid "Target file is a directory"
 msgid "No target directory"
 msgstr "Το αρχείο προορισμού είναι κατάλογος"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Εμφάνιση προόδου"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr ""
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr ""
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 #, fuzzy
 #| msgid "Backup file creation failed"
 msgid "Backup existing destination files"
 msgstr "Αποτυχία δημιουργίας αντιγράφου ασφαλείας"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
-msgstr ""
+msgstr "Να μην ακολουθούνται οι συμβολικοί σύνδεσμοι"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Χρήση προεπιλεγμένων δικαιωμάτων για τον προορισμό"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr ""
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
-msgstr ""
+msgstr "ΠΗΓΗ"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
-msgstr ""
+msgstr "ΠΡΟΟΡΙΣΜΟΣ"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr ""
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 msgstr ""
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, fuzzy, c-format
 #| msgid "The resource at '%s' is not a directory"
 msgid "Destination %s is not a directory"
 msgstr "Η πηγή στο '%s' δεν είναι κατάλογος"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr ""
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 #, fuzzy
 #| msgid "List available actions"
 msgid "List writable attributes"
 msgstr "Κατάλογος διαθέσιμων ενεργειών"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 #, fuzzy
 #| msgid "Error getting filesystem info: %s"
 msgid "Get file system info"
 msgstr "Σφάλμα λήψης πληροφοριών συστήματος αρχείων: %s"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr ""
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr ""
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr ""
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr ""
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr ""
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "επεξεργασία ονόματος: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
-#| msgid "names"
 msgid "name: %s\n"
 msgstr "όνομα: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "τύπος: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "μέγεθος: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr ""
 
 #
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
-#| msgid "Error: %s\n"
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr ""
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr ""
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr ""
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr ""
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Εμφάνιση πληροφοριών σχετικά με τις τοποθεσίες."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2056,25 +2102,29 @@ msgid ""
 "namespace, e.g. unix, or by “*”, which matches all attributes"
 msgstr ""
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Εμφάνιση κρυφών αρχείων"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 #, fuzzy
 #| msgid "use a long listing format"
 msgid "Use a long listing format"
 msgstr "χρήση αναπτυγμένης μορφής λιστών"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr ""
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr ""
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr ""
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2200,11 +2250,11 @@ msgid "Mount as mountable"
 msgstr ""
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
+msgid "Mount volume with device file, or other identifier"
 msgstr ""
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
 msgstr ""
 
 #: gio/gio-tool-mount.c:65
@@ -2219,6 +2269,10 @@ msgstr "Εξαγωγή"
 msgid "Stop drive with device file"
 msgstr ""
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "ΣΥΣΚΕΥΗ"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr ""
@@ -2277,16 +2331,11 @@ msgstr ""
 msgid "No drive for device file"
 msgstr ""
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
 msgstr ""
 
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr ""
-
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr ""
 
@@ -2311,7 +2360,7 @@ msgstr ""
 msgid "Target %s is not a directory"
 msgstr "Το αρχείο προορισμού είναι κατάλογος"
 
-#: gio/gio-tool-open.c:118
+#: gio/gio-tool-open.c:75
 msgid ""
 "Open files with the default application that\n"
 "is registered to handle files of this type."
@@ -2327,11 +2376,11 @@ msgstr ""
 
 #: gio/gio-tool-rename.c:45
 msgid "NAME"
-msgstr ""
+msgstr "ΟΝΟΜΑ"
 
 #: gio/gio-tool-rename.c:50
 msgid "Rename a file."
-msgstr ""
+msgstr "Μετονομασία αρχείου."
 
 #: gio/gio-tool-rename.c:70
 #, fuzzy
@@ -2350,11 +2399,11 @@ msgstr ""
 
 #: gio/gio-tool-save.c:50
 msgid "Only create if not existing"
-msgstr ""
+msgstr "Να δημιουργείται εάν δεν υπάρχει"
 
 #: gio/gio-tool-save.c:51
 msgid "Append to end of file"
-msgstr ""
+msgstr "Προσάρτηση στο τέλος του αρχείου"
 
 #: gio/gio-tool-save.c:52
 msgid "When creating, restrict access to the current user"
@@ -2386,7 +2435,6 @@ msgstr "Σφάλμα ανάγνωσης χειριστηρίου: %s"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
 #: gio/gio-tool-save.c:139
-#| msgid "TLS support is not available"
 msgid "Etag not available\n"
 msgstr "Μη διαθέσιμη Etag\n"
 
@@ -2454,34 +2502,34 @@ msgstr ""
 msgid "List contents of directories in a tree-like format."
 msgstr ""
 
-#: gio/glib-compile-resources.c:143 gio/glib-compile-schemas.c:1515
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Το στοιχείο <%s> δεν επιτρέπεται μέσα στο <%s>"
 
-#: gio/glib-compile-resources.c:147
+#: gio/glib-compile-resources.c:144
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Το στοιχείο <%s> δεν επιτρέπεται στο κορυφαίο επίπεδο"
 
-#: gio/glib-compile-resources.c:237
+#: gio/glib-compile-resources.c:234
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "Το αρχείο %s φαίνεται πολλές φορές στην πηγή"
 
-#: gio/glib-compile-resources.c:248
+#: gio/glib-compile-resources.c:245
 #, fuzzy, c-format
 #| msgid "Failed to locate '%s' in any source directory"
 msgid "Failed to locate “%s” in any source directory"
 msgstr "Αποτυχία εντοπισμού '%s' σε οποιοδήποτε κατάλογο πηγής"
 
-#: gio/glib-compile-resources.c:259
+#: gio/glib-compile-resources.c:256
 #, fuzzy, c-format
 #| msgid "Failed to locate '%s' in current directory"
 msgid "Failed to locate “%s” in current directory"
 msgstr "Αποτυχία εντοπισμού '%s' στον τρέχοντα κατάλογο"
 
-#: gio/glib-compile-resources.c:293
+#: gio/glib-compile-resources.c:290
 #, fuzzy, c-format
 #| msgid "Unknown processing option \"%s\""
 msgid "Unknown processing option “%s”"
@@ -2491,19 +2539,19 @@ msgstr "Άγνωστη επιλογή διαδικασίας \"%s\""
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
 #.
-#: gio/glib-compile-resources.c:313 gio/glib-compile-resources.c:370
-#: gio/glib-compile-resources.c:427
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
 #, c-format
 msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
 msgstr ""
 
 #
-#: gio/glib-compile-resources.c:460
+#: gio/glib-compile-resources.c:457
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "Σφάλμα ανάγνωσης αρχείου %s: %s"
 
-#: gio/glib-compile-resources.c:480
+#: gio/glib-compile-resources.c:477
 #, c-format
 msgid "Error compressing file %s"
 msgstr "Σφάλμα αρχείου συμπίεσης %s"
@@ -2513,15 +2561,15 @@ msgstr "Σφάλμα αρχείου συμπίεσης %s"
 msgid "text may not appear inside <%s>"
 msgstr "το κείμενο μπορεί να μην εμφανιστεί μέσα στο <%s>"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2139
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
-msgstr ""
+msgstr "Εμφάνιση έκδοσης προγράμματος και έξοδος"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Όνομα του αρχείου εξόδου"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:739
 #, fuzzy
 #| msgid ""
 #| "The directories where files are to be read from (default to current "
@@ -2533,59 +2581,65 @@ msgstr ""
 "Οι κατάλογοι από όπου πρόκειται να διαβαστούν αρχεία (προεπιλογή ο τρέχον "
 "κατάλογος)"
 
-#: gio/glib-compile-resources.c:738 gio/glib-compile-schemas.c:2140
-#: gio/glib-compile-schemas.c:2169
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "ΚΑΤΑΛΟΓΟΣ"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Δημιουργία εξόδου στην επιλεγμένη μορφή από την επέκταση ονόματος αρχείου "
 "προορισμού"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Δημιουργία κεφαλίδας πηγής"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:742
 #, fuzzy
 #| msgid "Generate sourcecode used to link in the resource file into your code"
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Δημιουργία πηγαίου κώδικα για σύνδεση στο πηγαίο αρχείο στον κωδικά σας"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Δημιουργία λίστας εξαρτήσεων"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr ""
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr ""
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:746
 #, fuzzy
 #| msgid "Don't automatically create and register resource"
 msgid "Don’t automatically create and register resource"
 msgstr "Να μην δημιουργείται αυτόματα και καταχωρείται ο πόρος"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:747
 #, fuzzy
 #| msgid "Don't export functions; declare them G_GNUC_INTERNAL"
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Μην εξάγετε συναρτήσεις· δηλώστε τες στο G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:748
+msgid ""
+"Don’t embed resource data in the C file; assume it's linked externally "
+"instead"
+msgstr ""
+
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr ""
 "Το χρησιμοποιούμενο όνομα ταυτοποιητή C για το δημιουργούμενο πηγαίο κώδικα"
 
-#: gio/glib-compile-resources.c:773
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2595,180 +2649,180 @@ msgstr ""
 "Τα αρχεία προδιαγραφής πόρου έχουν την επέκταση .gresource.xml,\n"
 "και το αρχείο πόρου έχει την επέκταση που αποκαλείται .gresource."
 
-#: gio/glib-compile-resources.c:795
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Πρέπει να δώσετε ακριβώς ένα όνομα αρχείου\n"
 
-#: gio/glib-compile-schemas.c:95
+#: gio/glib-compile-schemas.c:92
 #, c-format
 msgid "nick must be a minimum of 2 characters"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:106
+#: gio/glib-compile-schemas.c:103
 #, fuzzy, c-format
 #| msgid "Invalid symlink value given"
 msgid "Invalid numeric value"
 msgstr "Άκυρη τιμή συμβολικού συνδέσμου"
 
-#: gio/glib-compile-schemas.c:114
+#: gio/glib-compile-schemas.c:111
 #, fuzzy, c-format
 #| msgid "<%s id='%s'> already specified"
 msgid "<value nick='%s'/> already specified"
 msgstr "<%s id='%s'> είναι ήδη ορισμένο"
 
-#: gio/glib-compile-schemas.c:122
+#: gio/glib-compile-schemas.c:119
 #, fuzzy, c-format
 #| msgid "<key name='%s'> already specified"
 msgid "value='%s' already specified"
 msgstr "<key name='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:136
+#: gio/glib-compile-schemas.c:133
 #, c-format
 msgid "flags values must have at most 1 bit set"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:161
+#: gio/glib-compile-schemas.c:158
 #, c-format
 msgid "<%s> must contain at least one <value>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:317
+#: gio/glib-compile-schemas.c:314
 #, fuzzy, c-format
 #| msgid "No connection endpoint specified"
 msgid "<%s> is not contained in the specified range"
 msgstr "Δεν διευκρινίζεται σημείο τέλους σύνδεσης"
 
-#: gio/glib-compile-schemas.c:329
+#: gio/glib-compile-schemas.c:326
 #, c-format
 msgid "<%s> is not a valid member of the specified enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:335
+#: gio/glib-compile-schemas.c:332
 #, c-format
 msgid "<%s> contains string not in the specified flags type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:341
+#: gio/glib-compile-schemas.c:338
 #, c-format
 msgid "<%s> contains a string not in <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:375
+#: gio/glib-compile-schemas.c:372
 #, fuzzy
 #| msgid "<key name='%s'> already specified"
 msgid "<range/> already specified for this key"
 msgstr "<key name='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:393
+#: gio/glib-compile-schemas.c:390
 #, c-format
 msgid "<range> not allowed for keys of type “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:410
+#: gio/glib-compile-schemas.c:407
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:435
+#: gio/glib-compile-schemas.c:432
 #, c-format
 msgid "unsupported l10n category: %s"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:443
+#: gio/glib-compile-schemas.c:440
 msgid "l10n requested, but no gettext domain given"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:455
+#: gio/glib-compile-schemas.c:452
 msgid "translation context given for value without l10n enabled"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:477
+#: gio/glib-compile-schemas.c:474
 #, c-format
 msgid "Failed to parse <default> value of type “%s”: "
 msgstr ""
 
-#: gio/glib-compile-schemas.c:494
+#: gio/glib-compile-schemas.c:491
 msgid ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:503
+#: gio/glib-compile-schemas.c:500
 #, fuzzy
 #| msgid "<child name='%s'> already specified"
 msgid "<choices> already specified for this key"
 msgstr "<child name='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:515
+#: gio/glib-compile-schemas.c:512
 #, c-format
 msgid "<choices> not allowed for keys of type “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:531
+#: gio/glib-compile-schemas.c:528
 #, fuzzy, c-format
 #| msgid "<child name='%s'> already specified"
 msgid "<choice value='%s'/> already given"
 msgstr "<child name='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:546
+#: gio/glib-compile-schemas.c:543
 #, c-format
 msgid "<choices> must contain at least one <choice>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:560
+#: gio/glib-compile-schemas.c:557
 #, fuzzy
 #| msgid "<child name='%s'> already specified"
 msgid "<aliases> already specified for this key"
 msgstr "<child name='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:564
+#: gio/glib-compile-schemas.c:561
 msgid ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:583
+#: gio/glib-compile-schemas.c:580
 #, c-format
 msgid ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
 "type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:589
+#: gio/glib-compile-schemas.c:586
 #, c-format
 msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:597
+#: gio/glib-compile-schemas.c:594
 #, fuzzy, c-format
 #| msgid "<%s id='%s'> already specified"
 msgid "<alias value='%s'/> already specified"
 msgstr "<%s id='%s'> είναι ήδη ορισμένο"
 
-#: gio/glib-compile-schemas.c:607
+#: gio/glib-compile-schemas.c:604
 #, c-format
 msgid "alias target “%s” is not in enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:608
+#: gio/glib-compile-schemas.c:605
 #, c-format
 msgid "alias target “%s” is not in <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:623
+#: gio/glib-compile-schemas.c:620
 #, c-format
 msgid "<aliases> must contain at least one <alias>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:798
+#: gio/glib-compile-schemas.c:797
 msgid "Empty names are not permitted"
 msgstr "Κκενά ονόματα δεν επιτρέπονται"
 
-#: gio/glib-compile-schemas.c:808
+#: gio/glib-compile-schemas.c:807
 #, c-format
 msgid "Invalid name “%s”: names must begin with a lowercase letter"
 msgstr "Μη έγκυρο όνομα «%s»: τα ονόματα πρέπει να αρχίσουν με πεζό γράμμα"
 
-#: gio/glib-compile-schemas.c:820
+#: gio/glib-compile-schemas.c:819
 #, c-format
 msgid ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
@@ -2777,40 +2831,40 @@ msgstr ""
 "Μη έγκυρο όνομα «%s»: μη έγκυρος χαρακτήρας «%c»· μόνο πεζά γράμματα, "
 "αριθμοί και παύλες («-») επιτρέπονται"
 
-#: gio/glib-compile-schemas.c:829
+#: gio/glib-compile-schemas.c:828
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr "Μη έγκυρο όνομα «%s»: δύο διαδοχικές παύλες («--») δεν επιτρέπονται"
 
-#: gio/glib-compile-schemas.c:838
+#: gio/glib-compile-schemas.c:837
 #, c-format
 msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 msgstr ""
 "Μη έγκυρο όνομα «%s»: ο τελευταίος χαρακτήρας μπορεί να μην είναι παύλα "
 "(«-»)."
 
-#: gio/glib-compile-schemas.c:846
+#: gio/glib-compile-schemas.c:845
 #, c-format
 msgid "Invalid name “%s”: maximum length is 1024"
 msgstr "Μη έγκυρο όνομα «%s»: το μέγιστο μήκος είναι 1024"
 
-#: gio/glib-compile-schemas.c:918
+#: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr "<child name='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:944
+#: gio/glib-compile-schemas.c:943
 #, fuzzy
 #| msgid "cannot add keys to a 'list-of' schema"
 msgid "Cannot add keys to a “list-of” schema"
 msgstr "αδυναμία προσθήκης κλειδιών σε σχήμα 'list-of'"
 
-#: gio/glib-compile-schemas.c:955
+#: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr "<key name='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:973
+#: gio/glib-compile-schemas.c:972
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
@@ -2819,7 +2873,7 @@ msgstr ""
 "<key name='%s'> σκιές <key name='%s'> στο <schema id='%s'>· χρησιμοποιεί "
 "<override> για τροποποίηση της τιμής"
 
-#: gio/glib-compile-schemas.c:984
+#: gio/glib-compile-schemas.c:983
 #, fuzzy, c-format
 #| msgid ""
 #| "exactly one of 'type', 'enum' or 'flags' must be specified as an "
@@ -2831,64 +2885,64 @@ msgstr ""
 "ακριβώς ένα από 'type', 'enum' ή 'flags' πρέπει να διευκρινιστείτε ως "
 "ιδιότητα στο <key>"
 
-#: gio/glib-compile-schemas.c:1003
+#: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> αδιευκρίνιστη (ακόμα)."
 
-#: gio/glib-compile-schemas.c:1018
+#: gio/glib-compile-schemas.c:1017
 #, fuzzy, c-format
 #| msgid "invalid GVariant type string '%s'"
 msgid "Invalid GVariant type string “%s”"
 msgstr "Άκυρος τύπος συμβολοσειράς GVariant '%s'"
 
-#: gio/glib-compile-schemas.c:1048
+#: gio/glib-compile-schemas.c:1047
 #, fuzzy
 #| msgid "<override> given but schema isn't extending anything"
 msgid "<override> given but schema isn’t extending anything"
 msgstr "<override> δόθηκε αλλά το σχήμα δεν επεκτείνει τίποτα"
 
-#: gio/glib-compile-schemas.c:1061
+#: gio/glib-compile-schemas.c:1060
 #, c-format
 msgid "No <key name='%s'> to override"
 msgstr "Δεν υπάρχει <key name='%s'> για αντικατάσταση"
 
-#: gio/glib-compile-schemas.c:1069
+#: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr "<override name='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:1142
+#: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr "<schema id='%s'> έχει ήδη οριστεί"
 
-#: gio/glib-compile-schemas.c:1154
+#: gio/glib-compile-schemas.c:1153
 #, fuzzy, c-format
 #| msgid "<schema id='%s'> extends not yet existing schema '%s'"
 msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr "<schema id='%s'> επεκτείνει ένα μη υπάρχον ακόμα σχήμα '%s'"
 
-#: gio/glib-compile-schemas.c:1170
+#: gio/glib-compile-schemas.c:1169
 #, fuzzy, c-format
 #| msgid "<schema id='%s'> is list of not yet existing schema '%s'"
 msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr ""
 "<schema id='%s'> είναι κατάλογος ενός μη υπάρχοντος ακόμα σχήματος '%s'"
 
-#: gio/glib-compile-schemas.c:1178
+#: gio/glib-compile-schemas.c:1177
 #, fuzzy, c-format
 #| msgid "Can not be a list of a schema with a path"
 msgid "Cannot be a list of a schema with a path"
 msgstr "Αδυναμία ύπαρξης λίστας σχήματος με διαδρομή"
 
-#: gio/glib-compile-schemas.c:1188
+#: gio/glib-compile-schemas.c:1187
 #, fuzzy, c-format
 #| msgid "Can not extend a schema with a path"
 msgid "Cannot extend a schema with a path"
 msgstr "Αδυναμία επέκτασης σχήματος με διαδρομή"
 
-#: gio/glib-compile-schemas.c:1198
+#: gio/glib-compile-schemas.c:1197
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
@@ -2896,7 +2950,7 @@ msgstr ""
 "Το <schema id='%s'> είναι λίστα, που επεκτείνει το <schema id='%s'> που δεν "
 "είναι λίστα"
 
-#: gio/glib-compile-schemas.c:1208
+#: gio/glib-compile-schemas.c:1207
 #, fuzzy, c-format
 #| msgid ""
 #| "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but "
@@ -2908,156 +2962,209 @@ msgstr ""
 "<schema id='%s' list-of='%s'> επεκτείνει το <schema id='%s' list-of='%s'> "
 "αλλά το '%s' δεν επεκτείνει το '%s'"
 
-#: gio/glib-compile-schemas.c:1225
+#: gio/glib-compile-schemas.c:1224
 #, fuzzy, c-format
 #| msgid "a path, if given, must begin and end with a slash"
 msgid "A path, if given, must begin and end with a slash"
 msgstr ""
 "μία διαδρομή, εάν έχει δοθεί, πρέπει να αρχίζει και να τελειώνει με κάθετο"
 
-#: gio/glib-compile-schemas.c:1232
+#: gio/glib-compile-schemas.c:1231
 #, c-format
 msgid "The path of a list must end with “:/”"
 msgstr "Η διαδρομή μίας λίστας πρέπει να τελειώσει με «:/»"
 
-#: gio/glib-compile-schemas.c:1241
+#: gio/glib-compile-schemas.c:1240
 #, c-format
 msgid ""
 "Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
 "desktop/” or “/system/” are deprecated."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1271
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> είναι ήδη ορισμένο"
 
-#: gio/glib-compile-schemas.c:1421 gio/glib-compile-schemas.c:1437
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
 msgstr "Μόνο ένα στοιχείο <%s> επιτρέπεται μέσα στο <%s>"
 
-#: gio/glib-compile-schemas.c:1519
+#: gio/glib-compile-schemas.c:1518
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "Το στοιχείο <%s> δεν επιτρέπεται στο κορυφαίο επίπεδο"
 
-#: gio/glib-compile-schemas.c:1537
+#: gio/glib-compile-schemas.c:1536
 msgid "Element <default> is required in <key>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1627
+#: gio/glib-compile-schemas.c:1626
 #, fuzzy, c-format
 #| msgid "text may not appear inside <%s>"
 msgid "Text may not appear inside <%s>"
 msgstr "το κείμενο μπορεί να μην εμφανιστεί μέσα στο <%s>"
 
-#: gio/glib-compile-schemas.c:1695
+#: gio/glib-compile-schemas.c:1694
 #, c-format
 msgid "Warning: undefined reference to <schema id='%s'/>"
 msgstr ""
 
 #. Translators: Do not translate "--strict".
-#: gio/glib-compile-schemas.c:1834 gio/glib-compile-schemas.c:1910
-#: gio/glib-compile-schemas.c:2025
-#, c-format
-msgid "--strict was specified; exiting.\n"
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+#, fuzzy
+#| msgid "--strict was specified; exiting.\n"
+msgid "--strict was specified; exiting."
 msgstr "ορίστηκε το --strict· γίνεται έξοδος.\n"
 
-#: gio/glib-compile-schemas.c:1844
-#, c-format
-msgid "This entire file has been ignored.\n"
+#: gio/glib-compile-schemas.c:1845
+#, fuzzy
+#| msgid "This entire file has been ignored.\n"
+msgid "This entire file has been ignored."
 msgstr "Έχει παραβλεφθεί όλο αυτό το αρχείο.\n"
 
-#: gio/glib-compile-schemas.c:1906
-#, c-format
-msgid "Ignoring this file.\n"
+#: gio/glib-compile-schemas.c:1908
+#, fuzzy
+#| msgid "Ignoring this file.\n"
+msgid "Ignoring this file."
 msgstr "Παράβλεψη αυτού του αρχείου.\n"
 
-#: gio/glib-compile-schemas.c:1959
+#: gio/glib-compile-schemas.c:1963
 #, fuzzy, c-format
 #| msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
-msgid "No such key “%s” in schema “%s” as specified in override file “%s”"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
 msgstr ""
 "Δεν υπάρχει τέτοιο κλειδί '%s' στο σχήμα '%s' όπως ορίζεται στο αρχείο "
 "αντικατάστασης '%s'"
 
-#: gio/glib-compile-schemas.c:1965 gio/glib-compile-schemas.c:1990
-#: gio/glib-compile-schemas.c:2050 gio/glib-compile-schemas.c:2079
-#, c-format
-msgid "; ignoring override for this key.\n"
-msgstr "· παράβλεψη αντικατάστασης για αυτό το κλειδί.\n"
+#: gio/glib-compile-schemas.c:1971
+#, fuzzy, c-format
+#| msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
+msgstr ""
+"Δεν υπάρχει τέτοιο κλειδί '%s' στο σχήμα '%s' όπως ορίζεται στο αρχείο "
+"αντικατάστασης '%s'"
 
-#: gio/glib-compile-schemas.c:1969 gio/glib-compile-schemas.c:1994
-#: gio/glib-compile-schemas.c:2054 gio/glib-compile-schemas.c:2083
-#, c-format
-msgid " and --strict was specified; exiting.\n"
-msgstr " και ορίστηκε το --strict· έξοδος.\n"
+#: gio/glib-compile-schemas.c:1993
+#, fuzzy, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is not in the "
+#| "list of valid choices"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
+msgstr ""
+"η αντικατάσταση για το κλειδί'%s' στο σχήμα '%s' στο αρχείο αντικατάστασης "
+"'%s' δεν είναι στον κατάλογο έγκυρων επιλογών"
 
-#: gio/glib-compile-schemas.c:1984
-#, c-format
+#: gio/glib-compile-schemas.c:2002
+#, fuzzy, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is not in the "
+#| "list of valid choices"
 msgid ""
-"cannot provide per-desktop overrides for localised key “%s” in schema "
-"“%s” (override file “%s”)"
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
 msgstr ""
+"η αντικατάσταση για το κλειδί'%s' στο σχήμα '%s' στο αρχείο αντικατάστασης "
+"'%s' δεν είναι στον κατάλογο έγκυρων επιλογών"
 
-#: gio/glib-compile-schemas.c:2011
+#: gio/glib-compile-schemas.c:2026
 #, fuzzy, c-format
 #| msgid ""
 #| "error parsing key '%s' in schema '%s' as specified in override file '%s': "
 #| "%s."
 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. Ignoring override for this key."
 msgstr ""
 "σφάλμα ανάλυσης κλειδιού '%s' στο σχήμα '%s' όπως ορίστηκε στο αρχείο "
 "αντικατάστασης '%s': %s."
 
-#: gio/glib-compile-schemas.c:2021
-#, c-format
-msgid "Ignoring override for this key.\n"
-msgstr "Παράβλεψη αντικατάστασης για αυτό το κλειδί.\n"
+#: gio/glib-compile-schemas.c:2038
+#, fuzzy, c-format
+#| msgid ""
+#| "error parsing key '%s' in schema '%s' as specified in override file '%s': "
+#| "%s."
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
+msgstr ""
+"σφάλμα ανάλυσης κλειδιού '%s' στο σχήμα '%s' όπως ορίστηκε στο αρχείο "
+"αντικατάστασης '%s': %s."
 
-#: gio/glib-compile-schemas.c:2040
+#: gio/glib-compile-schemas.c:2065
 #, fuzzy, c-format
 #| msgid ""
 #| "override for key '%s' in schema '%s' in override file '%s' is outside the "
 #| "range given in the schema"
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is outside the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 msgstr ""
 "η αντικατάσταση για το κλειδί '%s' στο σχήμα '%s' στο αρχείο αντικατάστασης "
 "'%s' είναι εκτός της εμβέλειας που έχει δοθεί στο σχήμα"
 
-#: gio/glib-compile-schemas.c:2069
+#: gio/glib-compile-schemas.c:2075
+#, fuzzy, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is outside the "
+#| "range given in the schema"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
+msgstr ""
+"η αντικατάσταση για το κλειδί '%s' στο σχήμα '%s' στο αρχείο αντικατάστασης "
+"'%s' είναι εκτός της εμβέλειας που έχει δοθεί στο σχήμα"
+
+#: gio/glib-compile-schemas.c:2101
+#, fuzzy, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is not in the "
+#| "list of valid choices"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
+msgstr ""
+"η αντικατάσταση για το κλειδί'%s' στο σχήμα '%s' στο αρχείο αντικατάστασης "
+"'%s' δεν είναι στον κατάλογο έγκυρων επιλογών"
+
+#: gio/glib-compile-schemas.c:2111
 #, fuzzy, c-format
 #| msgid ""
 #| "override for key '%s' in schema '%s' in override file '%s' is not in the "
 #| "list of valid choices"
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 msgstr ""
 "η αντικατάσταση για το κλειδί'%s' στο σχήμα '%s' στο αρχείο αντικατάστασης "
 "'%s' δεν είναι στον κατάλογο έγκυρων επιλογών"
 
-#: gio/glib-compile-schemas.c:2140
-msgid "where to store the gschemas.compiled file"
+#: gio/glib-compile-schemas.c:2173
+#, fuzzy
+#| msgid "where to store the gschemas.compiled file"
+msgid "Where to store the gschemas.compiled file"
 msgstr "πού να αποθηκευτεί το αρχείο gschemas.compiled"
 
-#: gio/glib-compile-schemas.c:2141
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
 msgstr "Εγκατάλειψη σε κάθε σφάλμα σε σχήματα"
 
-#: gio/glib-compile-schemas.c:2142
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
 msgstr "Μην γράφετε το αρχείο gschema.compiled"
 
-#: gio/glib-compile-schemas.c:2143
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
 msgstr "Μην επιβάλετε περιορισμούς στο όνομα κλειδιού"
 
-#: gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-schemas.c:2205
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -3067,32 +3174,30 @@ msgstr ""
 "Τα αρχεία σχημάτων απαιτείται να έχουν την επέκταση.gschema.xml\n"
 "και το αρχείο κρυφής μνήμης καλείται gschemas.compiled."
 
-#: gio/glib-compile-schemas.c:2193
-#, c-format
-msgid "You should give exactly one directory name\n"
+#: gio/glib-compile-schemas.c:2226
+#, fuzzy
+#| msgid "You should give exactly one directory name\n"
+msgid "You should give exactly one directory name"
 msgstr "Πρέπει να δώσετε ακριβώς ένα όνομα καταλόγου\n"
 
-#: gio/glib-compile-schemas.c:2235
-#, c-format
-msgid "No schema files found: "
+#: gio/glib-compile-schemas.c:2269
+#, fuzzy
+#| msgid "No schema files found: "
+msgid "No schema files found: doing nothing."
 msgstr "Κανένα αρχείο σχημάτων δεν βρέθηκε: "
 
-#: gio/glib-compile-schemas.c:2238
-#, c-format
-msgid "doing nothing.\n"
-msgstr "αδρανές.\n"
-
-#: gio/glib-compile-schemas.c:2241
-#, c-format
-msgid "removed existing output file.\n"
+#: gio/glib-compile-schemas.c:2271
+#, fuzzy
+#| msgid "removed existing output file.\n"
+msgid "No schema files found: removed existing output file."
 msgstr "αφαίρεση υπάρχοντος αρχείου εξόδου.\n"
 
-#: gio/glocalfile.c:544 gio/win32/gwinhttpfile.c:420
+#: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
 msgid "Invalid filename %s"
 msgstr "Άκυρο όνομα αρχείου: %s"
 
-#: gio/glocalfile.c:1011
+#: gio/glocalfile.c:1013
 #, fuzzy, c-format
 #| msgid "Error getting filesystem info: %s"
 msgid "Error getting filesystem info for %s: %s"
@@ -3102,339 +3207,335 @@ msgstr "Σφάλμα λήψης πληροφοριών συστήματος αρ
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
 #.
-#: gio/glocalfile.c:1150
+#: gio/glocalfile.c:1152
 #, fuzzy, c-format
 #| msgid "Containing mount does not exist"
 msgid "Containing mount for file %s not found"
 msgstr "Δεν υπάρχει η περιέχουσα προσάρτηση"
 
-#: gio/glocalfile.c:1173
+#: gio/glocalfile.c:1175
 #, fuzzy
 #| msgid "Can't rename root directory"
 msgid "Can’t rename root directory"
 msgstr "Αδυναμία μετονομασίας του καταλόγου root"
 
 #
-#: gio/glocalfile.c:1191 gio/glocalfile.c:1214
+#: gio/glocalfile.c:1193 gio/glocalfile.c:1216
 #, fuzzy, c-format
 #| msgid "Error reading file %s: %s"
 msgid "Error renaming file %s: %s"
 msgstr "Σφάλμα ανάγνωσης αρχείου %s: %s"
 
-#: gio/glocalfile.c:1198
+#: gio/glocalfile.c:1200
 #, fuzzy
 #| msgid "Can't rename file, filename already exists"
 msgid "Can’t rename file, filename already exists"
 msgstr "Αδυναμία μετονομασίας του αρχείου, το όνομα αρχείου υπάρχει ήδη"
 
-#: gio/glocalfile.c:1211 gio/glocalfile.c:2275 gio/glocalfile.c:2303
-#: gio/glocalfile.c:2460 gio/glocalfileoutputstream.c:551
+#: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Άκυρο όνομα αρχείου"
 
 #
-#: gio/glocalfile.c:1379 gio/glocalfile.c:1394
+#: gio/glocalfile.c:1381 gio/glocalfile.c:1396
 #, fuzzy, c-format
 #| msgid "Error opening file '%s': %s"
 msgid "Error opening file %s: %s"
 msgstr "Σφάλμα ανοίγματος αρχείου '%s': %s"
 
-#: gio/glocalfile.c:1519
+#: gio/glocalfile.c:1521
 #, fuzzy, c-format
 #| msgid "Error removing file: %s"
 msgid "Error removing file %s: %s"
 msgstr "Σφάλμα αφαίρεσης αρχείου: %s"
 
-#: gio/glocalfile.c:1916
+#: gio/glocalfile.c:1963
 #, fuzzy, c-format
 #| msgid "Error trashing file: %s"
 msgid "Error trashing file %s: %s"
 msgstr "Σφάλμα μεταφοράς αρχείου στα απορρίμματα: %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/glocalfile.c:1957
+#: gio/glocalfile.c:2004
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "Αποτυχία δημιουργίας καταλόγου απορριμμάτων %s: %s"
 
-#: gio/glocalfile.c:1978
+#: gio/glocalfile.c:2025
 #, fuzzy, c-format
 #| msgid "Unable to find toplevel directory for trash"
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "Αδυναμία εύρεσης καταλόγου ανωτάτου επιπέδου για τα απορρίμματα"
 
-#: gio/glocalfile.c:1987
+#: gio/glocalfile.c:2034
 #, fuzzy, c-format
 #| msgid "Copy (reflink/clone) between mounts is not supported"
 msgid "Trashing on system internal mounts is not supported"
 msgstr ""
 "Δεν υποστηρίζεται η αντιγραφή (συνδέσμου αναφοράς/κλώνου) μεταξύ προσαρτήσεων"
 
-#: gio/glocalfile.c:2071 gio/glocalfile.c:2091
+#: gio/glocalfile.c:2118 gio/glocalfile.c:2138
 #, fuzzy, c-format
 #| msgid "Unable to find or create trash directory"
 msgid "Unable to find or create trash directory for %s"
 msgstr "Αδύνατη η εύρεση ή δημιουργία του καταλόγου απορριμμάτων"
 
 # gconf/gconf-internals.c:2416
-#: gio/glocalfile.c:2126
+#: gio/glocalfile.c:2173
 #, fuzzy, c-format
 #| msgid "Unable to create trashing info file: %s"
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Αποτυχία δημιουργίας αρχείου πληροφοριών απορριμμάτων: %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/glocalfile.c:2186
+#: gio/glocalfile.c:2233
 #, fuzzy, c-format
 #| msgid "Unable to trash file: %s"
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "Αδύνατη η μεταφορά του αρχείου στα απορρίμματα: %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/glocalfile.c:2190 gio/glocalfile.c:2246
+#: gio/glocalfile.c:2237 gio/glocalfile.c:2293
 #, fuzzy, c-format
 #| msgid "Unable to trash file: %s"
 msgid "Unable to trash file %s: %s"
 msgstr "Αδύνατη η μεταφορά του αρχείου στα απορρίμματα: %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/glocalfile.c:2252
+#: gio/glocalfile.c:2299
 #, fuzzy, c-format
 #| msgid "Unable to trash file: %s"
 msgid "Unable to trash file %s"
 msgstr "Αδύνατη η μεταφορά του αρχείου στα απορρίμματα: %s"
 
-#: gio/glocalfile.c:2278
+#: gio/glocalfile.c:2325
 #, fuzzy, c-format
 #| msgid "Error creating directory '%s': %s"
 msgid "Error creating directory %s: %s"
 msgstr "Σφάλμα δημιουργίας καταλόγου '%s': %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/glocalfile.c:2307
+#: gio/glocalfile.c:2354
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Το σύστημα αρχείων δεν υποστηρίζει συμβολικούς συνδέσμους"
 
 # gconf/gconftool.c:1181
-#: gio/glocalfile.c:2310
+#: gio/glocalfile.c:2357
 #, fuzzy, c-format
 #| msgid "Error making symbolic link: %s"
 msgid "Error making symbolic link %s: %s"
 msgstr "Σφάλμα δημιουργίας συμβολικού συνδέσμου: %s"
 
-#: gio/glocalfile.c:2316 glib/gfileutils.c:2138
-msgid "Symbolic links not supported"
-msgstr "Οι συμβολικοί σύνδεσμοι δεν υποστηρίζονται"
-
-#: gio/glocalfile.c:2371 gio/glocalfile.c:2406 gio/glocalfile.c:2463
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, fuzzy, c-format
 #| msgid "Error moving file: %s"
 msgid "Error moving file %s: %s"
 msgstr "Σφάλμα μετακίνησης αρχείου: %s"
 
-#: gio/glocalfile.c:2394
+#: gio/glocalfile.c:2423
 #, fuzzy
 #| msgid "Can't move directory over directory"
 msgid "Can’t move directory over directory"
 msgstr "Αδυναμία μετακίνησης καταλόγου σε άλλον"
 
-#: gio/glocalfile.c:2420 gio/glocalfileoutputstream.c:935
-#: gio/glocalfileoutputstream.c:949 gio/glocalfileoutputstream.c:964
-#: gio/glocalfileoutputstream.c:981 gio/glocalfileoutputstream.c:995
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Αποτυχία δημιουργίας αντιγράφου ασφαλείας"
 
-#: gio/glocalfile.c:2439
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Σφάλμα αφαίρεσης του αρχείου προορισμού: %s"
 
-#: gio/glocalfile.c:2453
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Δεν υποστηρίζεται η μετακίνηση μεταξύ προσαρτήσεων"
 
-#: gio/glocalfile.c:2644
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Αδυναμία προσδιορισμού της χρήσης δίσκου %s: %s"
 
-#: gio/glocalfileinfo.c:745
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Η τιμή του γνωρίσματος πρέπει να είναι μη μηδενική"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Άκυρος τύπος γνωρίσματος (αναμενόταν συμβολοσειρά)"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Άκυρο εκτεταμένο όνομα γνωρίσματος"
 
-#: gio/glocalfileinfo.c:799
+#: gio/glocalfileinfo.c:809
 #, fuzzy, c-format
 #| msgid "Error setting extended attribute '%s': %s"
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Σφάλμα ορισμού εκτεταμένου γνωρίσματος '%s': %s"
 
-#: gio/glocalfileinfo.c:1625
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (άκυρη κωδικοποίηση)"
 
 #
-#: gio/glocalfileinfo.c:1789 gio/glocalfileoutputstream.c:813
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, fuzzy, c-format
 #| msgid "Error when getting information for file '%s': %s"
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Σφάλμα λήψης πληροφοριών αρχείου '%s': %s"
 
-#: gio/glocalfileinfo.c:2053
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Σφάλμα λήψης πληροφοριών για περιγραφέα αρχείου: %s"
 
-#: gio/glocalfileinfo.c:2098
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Άκυρος τύπος γνωρίσματος (αναμένεται uint32)"
 
-#: gio/glocalfileinfo.c:2116
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Άκυρος τύπος γνωρίσματος (αναμένεται uint64)"
 
-#: gio/glocalfileinfo.c:2135 gio/glocalfileinfo.c:2154
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Άκυρος τύπος γνωρίσματος (αναμένεται συμβολοσειρά byte)"
 
 # gconf/gconftool.c:1181
-#: gio/glocalfileinfo.c:2201
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Αδυναμία ορισμού δικαιωμάτων σε συμβολικούς συνδέσμους"
 
 # gconf/gconftool.c:1181
-#: gio/glocalfileinfo.c:2217
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Σφάλμα ρύθμισης δικαιωμάτων: %s"
 
 # gconf/gconftool.c:1181
-#: gio/glocalfileinfo.c:2268
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Σφάλμα ρύθμισης ιδιοκτήτη: %s"
 
-#: gio/glocalfileinfo.c:2291
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "ο συμβολικός σύνδεσμος πρέπει να είναι μη μηδενικός"
 
-#: gio/glocalfileinfo.c:2301 gio/glocalfileinfo.c:2320
-#: gio/glocalfileinfo.c:2331
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Σφάλμα ορισμού συμβολικού συνδέσμου: %s"
 
-#: gio/glocalfileinfo.c:2310
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Σφάλμα ορισμού συμβολικού συνδέσμου: το αρχείο δεν είναι συμβολικός σύνδεσμος"
 
 # gconf/gconftool.c:1181
-#: gio/glocalfileinfo.c:2436
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Σφάλμα ρύθμισης τροποποίησης ή χρόνου πρόσβασης: %s"
 
-#: gio/glocalfileinfo.c:2459
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "Το περιεχόμενο SELinux πρέπει να είναι μη μηδενικό"
 
 # gconf/gconftool.c:1181
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Σφάλμα ρύθμισης του περιεχομένου SELinux: %s"
 
-#: gio/glocalfileinfo.c:2481
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "Το SELinux δεν έχει ενεργοποιηθεί στο σύστημά σας"
 
-#: gio/glocalfileinfo.c:2573
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Δεν υποστηρίζεται ο ορισμός του γνωρίσματος %s"
 
-#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:696
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Σφάλμα ανάγνωσης από το αρχείο: %s"
 
 #: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
 #: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
-#: gio/glocalfileoutputstream.c:458 gio/glocalfileoutputstream.c:1013
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Σφάλμα αναζήτησης στο αρχείο: %s"
 
-#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:248
-#: gio/glocalfileoutputstream.c:342
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Σφάλμα κλεισίματος αρχείου: %s"
 
-#: gio/glocalfilemonitor.c:854
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Δε βρέθηκε ο τύπος παρακολούθησης του προεπιλεγμένου τοπικού αρχείου"
 
-#: gio/glocalfileoutputstream.c:196 gio/glocalfileoutputstream.c:228
-#: gio/glocalfileoutputstream.c:717
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Σφάλμα εγγραφής στο αρχείο: %s"
 
 # gconf/gconftool.c:1181
-#: gio/glocalfileoutputstream.c:275
+#: gio/glocalfileoutputstream.c:371
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Σφάλμα αφαίρεσης παλαιού συνδέσμου αντιγράφου: %s"
 
 #
-#: gio/glocalfileoutputstream.c:289 gio/glocalfileoutputstream.c:302
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Σφάλμα δημιουργίας αντιγράφου ασφαλείας: %s"
 
 #
-#: gio/glocalfileoutputstream.c:320
+#: gio/glocalfileoutputstream.c:416
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Σφάλμα μετονομασίας προσωρινού αρχείου: %s"
 
 #
-#: gio/glocalfileoutputstream.c:504 gio/glocalfileoutputstream.c:1064
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Σφάλμα περικοπής αρχείου: %s"
 
 #
-#: gio/glocalfileoutputstream.c:557 gio/glocalfileoutputstream.c:795
-#: gio/glocalfileoutputstream.c:1045 gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
 #, fuzzy, c-format
 #| msgid "Error opening file '%s': %s"
 msgid "Error opening file “%s”: %s"
 msgstr "Σφάλμα ανοίγματος αρχείου '%s': %s"
 
-#: gio/glocalfileoutputstream.c:826
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
 msgstr "Το αρχείο προορισμού είναι κατάλογος"
 
-#: gio/glocalfileoutputstream.c:831
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
 msgstr "Το αρχείο προορισμού δεν είναι κανονικό αρχείο"
 
-#: gio/glocalfileoutputstream.c:843
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
 msgstr "Το αρχείο τροποποιήθηκε εξωτερικά"
 
-#: gio/glocalfileoutputstream.c:1029
+#: gio/glocalfileoutputstream.c:1125
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Σφάλμα αφαίρεσης παλαιού αρχείου: %s"
@@ -3540,72 +3641,89 @@ msgstr "η προσάρτηση δεν υποστηρίζει την πρόβλ
 msgid "mount doesn’t implement synchronous content type guessing"
 msgstr "η προσάρτηση δεν υποστηρίζει την πρόβλεψη σύγχρονου τύπου περιεχομένου"
 
-#: gio/gnetworkaddress.c:378
+#: gio/gnetworkaddress.c:415
 #, fuzzy, c-format
 #| msgid "Hostname '%s' contains '[' but not ']'"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Το όνομα κεντρικού υπολογιστή '%s' περιέχει το '[' αλλά όχι το ']'"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Απροσπέλαστο δίκτυο"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Απροσπέλαστος κεντρικός υπολογιστής"
 
-#: gio/gnetworkmonitornetlink.c:97 gio/gnetworkmonitornetlink.c:109
-#: gio/gnetworkmonitornetlink.c:128
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111
+#: gio/gnetworkmonitornetlink.c:130
 #, c-format
 msgid "Could not create network monitor: %s"
 msgstr "Αδυναμία δημιουργίας παρακολούθησης δικτύου: %s"
 
-#: gio/gnetworkmonitornetlink.c:118
+#: gio/gnetworkmonitornetlink.c:120
 msgid "Could not create network monitor: "
 msgstr "Αδυναμία δημιουργίας παρακολούθησης δικτύου: "
 
-#: gio/gnetworkmonitornetlink.c:176
+#: gio/gnetworkmonitornetlink.c:183
 msgid "Could not get network status: "
 msgstr "Αδυναμία λήψης κατάστασης δικτύου: "
 
-#: gio/gnetworkmonitornm.c:322
+#: gio/gnetworkmonitornm.c:348
+#, fuzzy, c-format
+#| msgid "NetworkManager version too old"
+msgid "NetworkManager not running"
+msgstr "Πολύ παλιά έκδοση του NetworkManager"
+
+#: gio/gnetworkmonitornm.c:359
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "Πολύ παλιά έκδοση του NetworkManager"
 
-#: gio/goutputstream.c:212 gio/goutputstream.c:560
+#: gio/goutputstream.c:232 gio/goutputstream.c:775
 #, fuzzy
 #| msgid "Output stream doesn't implement write"
 msgid "Output stream doesn’t implement write"
 msgstr "Η ροή εξόδου δεν υποστηρίζει την εγγραφή"
 
-#: gio/goutputstream.c:521 gio/goutputstream.c:1224
+#: gio/goutputstream.c:472 gio/goutputstream.c:1533
+#, c-format
+msgid "Sum of vectors passed to %s too large"
+msgstr ""
+
+#: gio/goutputstream.c:736 gio/goutputstream.c:1761
 msgid "Source stream is already closed"
 msgstr "Η ροή πηγής έχει ήδη κλείσει"
 
 #
-#: gio/gresolver.c:342 gio/gthreadedresolver.c:116 gio/gthreadedresolver.c:126
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, fuzzy, c-format
 #| msgid "Error resolving '%s': %s"
 msgid "Error resolving “%s”: %s"
 msgstr "Σφάλμα επίλυσης του '%s': %s"
 
-#: gio/gresolver.c:729 gio/gresolver.c:781
+#. Translators: The placeholder is for a function name.
+#: gio/gresolver.c:455 gio/gresolver.c:613
+#, c-format
+msgid "%s not implemented"
+msgstr ""
+
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 #, fuzzy
 #| msgid "Invalid filename"
 msgid "Invalid domain"
 msgstr "Άκυρο όνομα αρχείου"
 
-#: gio/gresource.c:644 gio/gresource.c:903 gio/gresource.c:942
-#: gio/gresource.c:1066 gio/gresource.c:1138 gio/gresource.c:1211
-#: gio/gresource.c:1281 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresource.c:665 gio/gresource.c:924 gio/gresource.c:963
+#: gio/gresource.c:1087 gio/gresource.c:1159 gio/gresource.c:1232
+#: gio/gresource.c:1313 gio/gresourcefile.c:476 gio/gresourcefile.c:599
 #: gio/gresourcefile.c:736
 #, fuzzy, c-format
 #| msgid "The resource at '%s' does not exist"
 msgid "The resource at “%s” does not exist"
 msgstr "Η πηγή στο '%s' δεν υπάρχει"
 
-#: gio/gresource.c:809
+#: gio/gresource.c:830
 #, fuzzy, c-format
 #| msgid "The resource at '%s' failed to decompress"
 msgid "The resource at “%s” failed to decompress"
@@ -3623,11 +3741,11 @@ msgstr "Η πηγή στο '%s' δεν είναι κατάλογος"
 msgid "Input stream doesn’t implement seek"
 msgstr "Η ροή εισόδου δεν υποστηρίζει αναζήτηση"
 
-#: gio/gresource-tool.c:501
+#: gio/gresource-tool.c:499
 msgid "List sections containing resources in an elf FILE"
 msgstr "Οι ενότητες λίστας περιέχουν πηγές σε ΑΡΧΕΙΟ elf"
 
-#: gio/gresource-tool.c:507
+#: gio/gresource-tool.c:505
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3637,15 +3755,15 @@ msgstr ""
 "Εάν δίνεται ΕΝΟΤΗΤΑ, μόνο πηγές λίστας σε αυτήν την ενότητα\n"
 "Εάν δίνεται ΔΙΑΔΡΟΜΗ, μόνο λίστα που ταιριάζει στις πηγές"
 
-#: gio/gresource-tool.c:510 gio/gresource-tool.c:520
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
 msgid "FILE [PATH]"
 msgstr "ΑΡΧΕΙΟ [ΔΙΑΔΡΟΜΗ]"
 
-#: gio/gresource-tool.c:511 gio/gresource-tool.c:521 gio/gresource-tool.c:528
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
 msgid "SECTION"
 msgstr "ΕΝΟΤΗΤΑ"
 
-#: gio/gresource-tool.c:516
+#: gio/gresource-tool.c:514
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3657,15 +3775,15 @@ msgstr ""
 "Εάν δίνεται ΔΙΑΔΡΟΜΗ, μόνο λίστα που ταιριάζει στις πηγές\n"
 "Οι λεπτομέρειες περιλαμβάνουν την ενότητα, μέγεθος και συμπίεση"
 
-#: gio/gresource-tool.c:526
+#: gio/gresource-tool.c:524
 msgid "Extract a resource file to stdout"
 msgstr "Εξαγωγή αρχείου πηγής σε τυπική έξοδο"
 
-#: gio/gresource-tool.c:527
+#: gio/gresource-tool.c:525
 msgid "FILE PATH"
 msgstr "ΔΙΑΔΡΟΜΗ ΑΡΧΕΙΟΥ"
 
-#: gio/gresource-tool.c:541
+#: gio/gresource-tool.c:539
 #, fuzzy
 #| msgid ""
 #| "Usage:\n"
@@ -3707,7 +3825,7 @@ msgstr ""
 "Χρήση 'gresource help COMMAND' για λήψη αναλυτικής βοήθειας.\n"
 "\n"
 
-#: gio/gresource-tool.c:555
+#: gio/gresource-tool.c:553
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3722,19 +3840,19 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gresource-tool.c:562
+#: gio/gresource-tool.c:560
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECTION   Ένα (προαιρετικό) όνομα ενότητας elf\n"
 
-#: gio/gresource-tool.c:566 gio/gsettings-tool.c:703
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMMAND   Η (προαιρετική) εντολή για επεξήγηση\n"
 
-#: gio/gresource-tool.c:572
+#: gio/gresource-tool.c:570
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr "  FILE      Ένα αρχείο elf (δυαδικό ή κοινόχρηστης βιβλιοθήκης)\n"
 
-#: gio/gresource-tool.c:575
+#: gio/gresource-tool.c:573
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -3742,86 +3860,86 @@ msgstr ""
 "  FILE      Αρχείο elf (δυαδικό ή κοινόχρηστης βιβλιοθήκης)\n"
 "            ή μεταγλωττισμένο πηγαίο αρχείο\n"
 
-#: gio/gresource-tool.c:579
+#: gio/gresource-tool.c:577
 msgid "[PATH]"
 msgstr "[ΔΙΑΔΡΟΜΗ]"
 
-#: gio/gresource-tool.c:581
+#: gio/gresource-tool.c:579
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr "  PATH      (Προαιρετική) διαδρομή πηγής (μπορεί να είναι μερικό)\n"
 
-#: gio/gresource-tool.c:582
+#: gio/gresource-tool.c:580
 msgid "PATH"
 msgstr "ΔΙΑΔΡΟΜΗ"
 
-#: gio/gresource-tool.c:584
+#: gio/gresource-tool.c:582
 msgid "  PATH      A resource path\n"
 msgstr "  PATH      Διαδρομή πηγής\n"
 
-#: gio/gsettings-tool.c:51 gio/gsettings-tool.c:72 gio/gsettings-tool.c:908
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
 #, fuzzy, c-format
 #| msgid "No such schema '%s'\n"
 msgid "No such schema “%s”\n"
 msgstr "Χωρίς τέτοιο σχήμα '%s'\n"
 
-#: gio/gsettings-tool.c:57
+#: gio/gsettings-tool.c:55
 #, fuzzy, c-format
 #| msgid "Schema '%s' is not relocatable (path must not be specified)\n"
 msgid "Schema “%s” is not relocatable (path must not be specified)\n"
 msgstr ""
 "Το σχήμα '%s' δεν μπορεί να μετακινηθεί (δεν πρέπει να ορισθεί διαδρομή)\n"
 
-#: gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:76
 #, fuzzy, c-format
 #| msgid "Schema '%s' is relocatable (path must be specified)\n"
 msgid "Schema “%s” is relocatable (path must be specified)\n"
 msgstr "Το σχήμα '%s' μπορεί να μετακινηθεί (πρέπει να ορισθεί διαδρομή)\n"
 
-#: gio/gsettings-tool.c:92
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "Δόθηκε κενή διαδρομή.\n"
 
-#: gio/gsettings-tool.c:98
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
 msgstr "Η διαδρομή πρέπει να αρχίζει με μια κάθετο (/)\n"
 
-#: gio/gsettings-tool.c:104
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
 msgstr "Η διαδρομή πρέπει να τελειώνει με μια κάθετο (/)\n"
 
-#: gio/gsettings-tool.c:110
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Η διαδρομή δεν πρέπει να περιέχει δύο συνεχόμενες καθέτους (//)\n"
 
-#: gio/gsettings-tool.c:538
+#: gio/gsettings-tool.c:536
 msgid "The provided value is outside of the valid range\n"
 msgstr "Η παρεχόμενη τιμή είναι εκτός του έγκυρου εύρους\n"
 
-#: gio/gsettings-tool.c:545
+#: gio/gsettings-tool.c:543
 msgid "The key is not writable\n"
 msgstr "Το κλειδί δεν είναι εγγράψιμο\n"
 
-#: gio/gsettings-tool.c:581
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Απαρίθμηση των εγκατεστήμενων (μη μετακινούμενων) σχημάτων"
 
-#: gio/gsettings-tool.c:587
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
 msgstr "Απαρίθμηση των εγκατεστήμενων μετακινούμενων σχημάτων"
 
-#: gio/gsettings-tool.c:593
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
 msgstr "Απαριθμεί τα κλειδιά στο SCHEMA"
 
-#: gio/gsettings-tool.c:594 gio/gsettings-tool.c:600 gio/gsettings-tool.c:643
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: gio/gsettings-tool.c:599
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
 msgstr "Απαριθμεί τις θυγατρικές του SCHEMA"
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3829,50 +3947,50 @@ msgstr ""
 "Απαρίθμηση κλειδιών και τιμών, αναδρομικά\n"
 "Αν δε δίνεται SCHEMA, προβολή όλων των κλειδιών\n"
 
-#: gio/gsettings-tool.c:607
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:612
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
 msgstr "Λήψη τιμής της KEY"
 
-#: gio/gsettings-tool.c:613 gio/gsettings-tool.c:619 gio/gsettings-tool.c:625
-#: gio/gsettings-tool.c:637 gio/gsettings-tool.c:649
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: gio/gsettings-tool.c:618
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
 msgstr "Αναζητεί το εύρος των έγκυρων τιμών για KEY"
 
-#: gio/gsettings-tool.c:624
+#: gio/gsettings-tool.c:622
 #, fuzzy
 #| msgid "Query the range of valid values for KEY"
 msgid "Query the description for KEY"
 msgstr "Αναζητεί το εύρος των έγκυρων τιμών για KEY"
 
-#: gio/gsettings-tool.c:630
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
 msgstr "Ορίζει την τιμή της KEY σε VALUE"
 
-#: gio/gsettings-tool.c:631
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: gio/gsettings-tool.c:636
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
 msgstr "Επαναφέρει την KEY στην προεπιλεγμένη της τιμή"
 
-#: gio/gsettings-tool.c:642
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Επαναφορά όλων των κλειδιών στο SCHEMA στις προεπιλογές τους"
 
-#: gio/gsettings-tool.c:648
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
 msgstr "Έλεγχος εγγραψιμότητας του KEY"
 
-#: gio/gsettings-tool.c:654
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3882,11 +4000,11 @@ msgstr ""
 "Αν δεν έχει ορισθεί KEY, παρακολουθεί όλα τα κλειδιά στο SCHEMA.\n"
 "Χρησιμοποιείστε το ^C για τερματισμό της παρακολούθησης.\n"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: gio/gsettings-tool.c:669
+#: gio/gsettings-tool.c:667
 #, fuzzy
 #| msgid ""
 #| "Usage:\n"
@@ -3956,7 +4074,7 @@ msgstr ""
 "Χρησιμοποιήστε 'gsettings help COMMAND' για αναλυτική βοήθεια.\n"
 "\n"
 
-#: gio/gsettings-tool.c:693
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3971,11 +4089,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:697
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR Κατάλογος αναζήτησης για πρόσθετα σχήματα\n"
 
-#: gio/gsettings-tool.c:707
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3983,255 +4101,257 @@ msgstr ""
 "  SCHEMA     Το όνομα του σχήματος\n"
 "  PATH       Η διαδρομή, για μετακινούμενα σχήματα\n"
 
-#: gio/gsettings-tool.c:712
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       Το (προαιρετικό) κλειδί στο σχήμα\n"
 
-#: gio/gsettings-tool.c:716
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       Το κλειδί στο σχήμα\n"
 
-#: gio/gsettings-tool.c:720
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     Η τιμή που θα ορισθεί\n"
 
-#: gio/gsettings-tool.c:775
+#: gio/gsettings-tool.c:773
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Αδυναμία φόρτωσης διατάξεων από %s: %s\n"
 
-#: gio/gsettings-tool.c:787
+#: gio/gsettings-tool.c:785
 msgid "No schemas installed\n"
 msgstr "Δεν εγκαταστάθηκαν σχήματα\n"
 
-#: gio/gsettings-tool.c:866
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
 msgstr "Δόθηκε κενό όνομα σχήματος\n"
 
-#: gio/gsettings-tool.c:921
+#: gio/gsettings-tool.c:919
 #, fuzzy, c-format
 #| msgid "No such key '%s'\n"
 msgid "No such key “%s”\n"
 msgstr "Χωρίς τέτοιο κλειδί '%s'\n"
 
-#: gio/gsocket.c:384
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Άκυρος υποδοχέας, δεν αρχικοποιήθηκε"
 
-#: gio/gsocket.c:391
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Άκυρος υποδοχέας, η αρχικοποίηση απέτυχε λόγω του: %s"
 
-#: gio/gsocket.c:399
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Ο υποδοχέας είναι ήδη κλειστός"
 
-#: gio/gsocket.c:414 gio/gsocket.c:3034 gio/gsocket.c:4244 gio/gsocket.c:4302
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Η υποδοχή I/O έληξε"
 
-#: gio/gsocket.c:549
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "δημιουργία GSocket από fd: %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/gsocket.c:578 gio/gsocket.c:632 gio/gsocket.c:639
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Αδυναμία δημιουργίας υποδοχέα: %s"
 
-#: gio/gsocket.c:632
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Ορίστηκε άγνωστη οικογένεια"
 
-#: gio/gsocket.c:639
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Ορίστηκε άγνωστο πρωτόκολλο"
 
-#: gio/gsocket.c:1130
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Αδυναμία χρήσης αυτοδύναμων λειτουργιών σε μια μη αυτοδύναμη υποδοχή."
 
-#: gio/gsocket.c:1147
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Αδυναμία χρήσης αυτοδύναμων λειτουργιών σε μια υποδοχή με ορισμένο χρόνο "
 "λήξης."
 
-#: gio/gsocket.c:1954
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "αδυναμία λήψης τοπικής διεύθυνσης: %s"
 
-#: gio/gsocket.c:2000
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "αδυναμία λήψης απομακρυσμένης διεύθυνσης: %s"
 
-#: gio/gsocket.c:2066
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "αδυναμία ακρόασης: %s"
 
-#: gio/gsocket.c:2168
-#, c-format
-msgid "Error binding to address: %s"
+#: gio/gsocket.c:2204
+#, fuzzy, c-format
+#| msgid "Error binding to address: %s"
+msgid "Error binding to address %s: %s"
 msgstr "Σφάλμα σύνδεσης στην διεύθυνση: %s"
 
 # gconf/gconftool.c:1181
-#: gio/gsocket.c:2226 gio/gsocket.c:2263 gio/gsocket.c:2373 gio/gsocket.c:2398
-#: gio/gsocket.c:2471 gio/gsocket.c:2529 gio/gsocket.c:2547
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Σφάλμα ένωσης ομάδας πολυεκπομπής: %s"
 
 # gconf/gconftool.c:1181
-#: gio/gsocket.c:2227 gio/gsocket.c:2264 gio/gsocket.c:2374 gio/gsocket.c:2399
-#: gio/gsocket.c:2472 gio/gsocket.c:2530 gio/gsocket.c:2548
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Σφάλμα απομάκρυνσης ομάδας πολυεκπομπής: %s"
 
-#: gio/gsocket.c:2228
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Χωρίς υποστήριξη για πολυεκπομπή ειδικής πηγής"
 
-#: gio/gsocket.c:2375
+#: gio/gsocket.c:2529
 #, fuzzy
 #| msgid "Unsupported socket address"
 msgid "Unsupported socket family"
 msgstr "Ανυποστήρικτη διεύθυνση υποδοχέα"
 
-#: gio/gsocket.c:2400
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr ""
 
-#: gio/gsocket.c:2418 gio/gsocket.c:2447 gio/gsocket.c:2497
-#, c-format
-msgid "Interface not found: %s"
-msgstr "Δεν βρέθηκε η διεπαφή: %s"
-
-#: gio/gsocket.c:2434
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Το όνομα διεπαφής είναι πολύ μεγάλο"
 
-#: gio/gsocket.c:2473
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Δεν βρέθηκε η διεπαφή: %s"
+
+#: gio/gsocket.c:2617
 #, fuzzy
 #| msgid "No support for source-specific multicast"
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Χωρίς υποστήριξη για πολυεκπομπή ειδικής πηγής"
 
-#: gio/gsocket.c:2531
+#: gio/gsocket.c:2675
 #, fuzzy
 #| msgid "No support for source-specific multicast"
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Χωρίς υποστήριξη για πολυεκπομπή ειδικής πηγής"
 
 # gconf/gconftool.c:1181
-#: gio/gsocket.c:2740
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Σφάλμα αποδοχής σύνδεσης: %s"
 
-#: gio/gsocket.c:2864
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Σύνδεση σε εξέλιξη"
 
 # gconf/gconf-internals.c:2416
-#: gio/gsocket.c:2913
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Αδυναμία λήψης εκκρεμούς σφάλματος: "
 
-#: gio/gsocket.c:3097
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Σφάλμα λήψης δεδομένων: %s"
 
-#: gio/gsocket.c:3292
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Σφάλμα αποστολής δεδομένων: %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/gsocket.c:3479
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Αδυναμία τερματισμού υποδοχής: %s"
 
-#: gio/gsocket.c:3560
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Σφάλμα τερματισμού υποδοχέα: %s"
 
-#: gio/gsocket.c:4237
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Αναμονή για την συνθήκη υποδοχέα: %s"
 
-#: gio/gsocket.c:4711 gio/gsocket.c:4791 gio/gsocket.c:4969
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Σφάλμα αποστολής μηνύματος: %s"
 
-#: gio/gsocket.c:4735
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Το GSocketControlMessage δεν υποστηρίζεται στα Windows"
 
-#: gio/gsocket.c:5188 gio/gsocket.c:5261 gio/gsocket.c:5487
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Σφάλμα λήψης μηνύματος: %s"
 
 # gconf/gconf-internals.c:2416
-#: gio/gsocket.c:5759
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Αδύνατη η ανάγνωση διαπιστευτηρίων υποδοχής: %s"
 
-#: gio/gsocket.c:5768
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "το g_socket_get_credentials δεν έχει υλοποιηθεί για αυτό το λειτουργικό "
 "σύστημα"
 
-#: gio/gsocketclient.c:176
+#: gio/gsocketclient.c:182
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr "Αδυναμία σύνδεσης στον διακομιστή διαμεσολάβησης %s: "
 
-#: gio/gsocketclient.c:190
+#: gio/gsocketclient.c:196
 #, c-format
 msgid "Could not connect to %s: "
 msgstr "Αδυναμία σύνδεσης στο %s: "
 
-#: gio/gsocketclient.c:192
+#: gio/gsocketclient.c:198
 msgid "Could not connect: "
 msgstr "Αδυναμία σύνδεσης: "
 
-#: gio/gsocketclient.c:1027 gio/gsocketclient.c:1599
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1764
 msgid "Unknown error on connect"
 msgstr "Άγνωστο σφάλμα σύνδεσης"
 
-#: gio/gsocketclient.c:1081 gio/gsocketclient.c:1535
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1672
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Η προσπάθεια διαμεσολάβησης σε σύνδεση εκτός TCP δεν υποστηρίζεται."
 
-#: gio/gsocketclient.c:1110 gio/gsocketclient.c:1561
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
 #, fuzzy, c-format
 #| msgid "Proxy protocol '%s' is not supported."
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Το πρωτόκολλο διαμεσολαβητή '%s' δεν υποστηρίζεται."
 
-#: gio/gsocketlistener.c:225
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr "Η ακρόαση έχει ήδη κλείσει"
 
-#: gio/gsocketlistener.c:271
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "Ο πρόσθετος υποδοχέας είναι κλειστός"
 
@@ -4341,54 +4461,54 @@ msgstr "Άγνωστο σφάλμα του διαμεσολαβητή SOCKSv5."
 msgid "Can’t handle version %d of GThemedIcon encoding"
 msgstr "Αδυναμία χειρισμού της έκδοσης %d της κωδικοποίησης GThemedIcon"
 
-#: gio/gthreadedresolver.c:118
+#: gio/gthreadedresolver.c:152
 msgid "No valid addresses were found"
 msgstr "Δεν βρέθηκαν έγκυρες διευθύνσεις"
 
 #
-#: gio/gthreadedresolver.c:213
+#: gio/gthreadedresolver.c:334
 #, fuzzy, c-format
 #| msgid "Error reverse-resolving '%s': %s"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Σφάλμα ανάστροφης επίλυσης του '%s': %s"
 
-#: gio/gthreadedresolver.c:549 gio/gthreadedresolver.c:628
-#: gio/gthreadedresolver.c:726 gio/gthreadedresolver.c:776
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
 #, fuzzy, c-format
 #| msgid "No DNS record of the requested type for '%s'"
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Χωρίς εγγραφή DNS του αιτούμενου τύπου για '%s'"
 
-#: gio/gthreadedresolver.c:554 gio/gthreadedresolver.c:731
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
 #, fuzzy, c-format
 #| msgid "Temporarily unable to resolve '%s'"
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Προσωρινή αδυναμία επίλυσης του '%s'"
 
-#: gio/gthreadedresolver.c:559 gio/gthreadedresolver.c:736
-#: gio/gthreadedresolver.c:844
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
 #, fuzzy, c-format
 #| msgid "Error resolving '%s'"
 msgid "Error resolving “%s”"
 msgstr "Σφάλμα επίλυσης του '%s'"
 
-#: gio/gtlscertificate.c:250
-msgid "Cannot decrypt PEM-encoded private key"
-msgstr "Αδυναμία αποκρυπτογράφησης ιδιωτικού κλειδιού κωδικοποιημένου κατά PEM"
-
-#: gio/gtlscertificate.c:255
+#: gio/gtlscertificate.c:243
 msgid "No PEM-encoded private key found"
 msgstr "Δεν βρέθηκε ιδιωτικό κλειδί κωδικοποιημένο κατά PEM"
 
-#: gio/gtlscertificate.c:265
+#: gio/gtlscertificate.c:253
+msgid "Cannot decrypt PEM-encoded private key"
+msgstr "Αδυναμία αποκρυπτογράφησης ιδιωτικού κλειδιού κωδικοποιημένου κατά PEM"
+
+#: gio/gtlscertificate.c:264
 msgid "Could not parse PEM-encoded private key"
 msgstr "Αδυναμία ανάλυσης ιδιωτικού κλειδιού κωδικοποιημένου κατά PEM"
 
-#: gio/gtlscertificate.c:290
+#: gio/gtlscertificate.c:291
 msgid "No PEM-encoded certificate found"
 msgstr "Δεν βρέθηκε πιστοποιητικό κωδικοποιημένο κατά PEM"
 
-#: gio/gtlscertificate.c:299
+#: gio/gtlscertificate.c:300
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Αδυναμία ανάλυσης πιστοποιητικού κωδικοποιημένου κατά PEM"
 
@@ -4418,14 +4538,14 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Ο εισαγμένος κωδικός είναι λάθος."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:563
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Αναμενόταν 1 μήνυμα έλεγχου, ελήφθη %d"
 msgstr[1] "Αναμενόταν 1 μήνυμα έλεγχου, ελήφθη %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:575
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
 msgstr "Αναπάντεχος τύπος βοηθητικών δεδομένων"
 
@@ -4440,33 +4560,33 @@ msgstr[1] "Αναμενόταν ένα fd, αλλά ελήφθη %d\n"
 msgid "Received invalid fd"
 msgstr "Λήψη άκυρου fd"
 
-#: gio/gunixconnection.c:355
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
 msgstr "Σφάλμα στην αποστολή πιστοποιητικών: "
 
-#: gio/gunixconnection.c:504
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Σφάλμα ελέγχου ενεργοποίησης SO_PASSCRED υποδοχής: %s"
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Σφάλμα ενεργοποίησης SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:549
+#: gio/gunixconnection.c:565
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Αναμονή ανάγνωσης μιας μόνο byte για τη λήψη πιστοποιητικών, αλλά ανάγνωση "
 "μηδέν bytes"
 
-#: gio/gunixconnection.c:589
+#: gio/gunixconnection.c:605
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Χωρίς αναμονή μηνύματος έλεγχου, αλλά λήψη %d"
 
-#: gio/gunixconnection.c:614
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Σφάλμα απενεργοποίησης SO_PASSCRED: %s"
@@ -4476,17 +4596,19 @@ msgstr "Σφάλμα απενεργοποίησης SO_PASSCRED: %s"
 msgid "Error reading from file descriptor: %s"
 msgstr "Σφάλμα ανάγνωσης περιγραφέα αρχείου: %s"
 
-#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:411
+#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:535
 #: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Σφάλμα κλεισίματος περιγραφέα αρχείου: %s"
 
-#: gio/gunixmounts.c:2589 gio/gunixmounts.c:2642
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Διαχειριστής συστήματος αρχείων"
 
-#: gio/gunixoutputstream.c:358 gio/gunixoutputstream.c:378
+#: gio/gunixoutputstream.c:372 gio/gunixoutputstream.c:392
+#: gio/gunixoutputstream.c:479 gio/gunixoutputstream.c:499
+#: gio/gunixoutputstream.c:676
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Σφάλμα εγγραφής περιγραφέα αρχείου: %s"
@@ -4568,76 +4690,81 @@ msgstr "Εκτέλεση υπηρεσίας dbus"
 msgid "Wrong args\n"
 msgstr "Εσφαλμένα ορίσματα\n"
 
-#: glib/gbookmarkfile.c:754
+#: glib/gbookmarkfile.c:756
 #, fuzzy, c-format
 #| msgid "Unexpected attribute '%s' for element '%s'"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Αναπάντεχο γνώρισμα '%s' για το στοιχείο '%s'"
 
-#: glib/gbookmarkfile.c:765 glib/gbookmarkfile.c:836 glib/gbookmarkfile.c:846
-#: glib/gbookmarkfile.c:955
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, fuzzy, c-format
 #| msgid "Attribute '%s' of element '%s' not found"
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Το γνώρισμα '%s' του στοιχείου '%s' δεν βρέθηκε"
 
-#: glib/gbookmarkfile.c:1164 glib/gbookmarkfile.c:1229
-#: glib/gbookmarkfile.c:1293 glib/gbookmarkfile.c:1303
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Απρόσμενη ετικέτα «%s», αναμενόταν ετικέτα «%s»"
 
-#: glib/gbookmarkfile.c:1189 glib/gbookmarkfile.c:1203
-#: glib/gbookmarkfile.c:1271 glib/gbookmarkfile.c:1317
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, fuzzy, c-format
 #| msgid "Unexpected tag '%s' inside '%s'"
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Απρόσμενη ετικέτα '%s' στο '%s'"
 
-#: glib/gbookmarkfile.c:1813
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr ""
+
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Δεν βρέθηκε έγκυρο αρχείο σελιδοδεικτών στους καταλόγους δεδομένων"
 
-#: glib/gbookmarkfile.c:2014
+#: glib/gbookmarkfile.c:2032
 #, fuzzy, c-format
 #| msgid "A bookmark for URI '%s' already exists"
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Υπάρχει ήδη ένας σελιδοδείκτης για το URI '%s'"
 
-#: glib/gbookmarkfile.c:2060 glib/gbookmarkfile.c:2218
-#: glib/gbookmarkfile.c:2303 glib/gbookmarkfile.c:2383
-#: glib/gbookmarkfile.c:2468 glib/gbookmarkfile.c:2551
-#: glib/gbookmarkfile.c:2629 glib/gbookmarkfile.c:2708
-#: glib/gbookmarkfile.c:2750 glib/gbookmarkfile.c:2847
-#: glib/gbookmarkfile.c:2968 glib/gbookmarkfile.c:3158
-#: glib/gbookmarkfile.c:3234 glib/gbookmarkfile.c:3402
-#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3580
-#: glib/gbookmarkfile.c:3696
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, fuzzy, c-format
 #| msgid "No bookmark found for URI '%s'"
 msgid "No bookmark found for URI “%s”"
 msgstr "Δεν βρέθηκε σελιδοδείκτης για το URI '%s'"
 
-#: glib/gbookmarkfile.c:2392
+#: glib/gbookmarkfile.c:2410
 #, fuzzy, c-format
 #| msgid "No MIME type defined in the bookmark for URI '%s'"
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Δεν αναγνωρίστηκε κανένας τύπος MIME στο σελιδοδείκτη για το URI '%s'"
 
-#: glib/gbookmarkfile.c:2477
+#: glib/gbookmarkfile.c:2495
 #, fuzzy, c-format
 #| msgid "No private flag has been defined in bookmark for URI '%s'"
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 "Καμιά προσωπική σημαία δεν έχει αναγνωριστεί στο σελιδοδείκτη για το URI '%s'"
 
-#: glib/gbookmarkfile.c:2856
+#: glib/gbookmarkfile.c:2874
 #, fuzzy, c-format
 #| msgid "No groups set in bookmark for URI '%s'"
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Δεν ορίστηκαν ομάδες στο σελιδοδείκτη για το URI '%s'"
 
-#: glib/gbookmarkfile.c:3255 glib/gbookmarkfile.c:3412
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, fuzzy, c-format
 #| msgid "No application with name '%s' registered a bookmark for '%s'"
 msgid "No application with name “%s” registered a bookmark for “%s”"
@@ -4645,97 +4772,97 @@ msgstr ""
 "Καμιά εφαρμογή με όνομα '%s' δεν έχει καταχωρήσει σελιδοδείκτη για τη '%s'"
 
 # gconf/gconf-internals.c:2416
-#: glib/gbookmarkfile.c:3435
+#: glib/gbookmarkfile.c:3453
 #, fuzzy, c-format
 #| msgid "Failed to expand exec line '%s' with URI '%s'"
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Αποτυχία ανάπτυξης της γραμμής exec '%s' με URI '%s'"
 
-#: glib/gconvert.c:473
+#: glib/gconvert.c:466
 #, fuzzy
 #| msgid "Invalid sequence in conversion input"
 msgid "Unrepresentable character in conversion input"
 msgstr "Άκυρη σειρά στην είσοδο μετατροπής"
 
-#: glib/gconvert.c:500 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Ημιτελής σειρά χαρακτήρα στο τέλος της εισόδου"
 
-#: glib/gconvert.c:769
+#: glib/gconvert.c:762
 #, fuzzy, c-format
 #| msgid "Cannot convert fallback '%s' to codeset '%s'"
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "Αδυναμία μετατροπής υποχώρησης '%s' σε σύνολο κώδικα '%s'"
 
-#: glib/gconvert.c:940
+#: glib/gconvert.c:934
 #, fuzzy
 #| msgid "Invalid byte sequence in conversion input"
 msgid "Embedded NUL byte in conversion input"
 msgstr "Άκυρη σειρά byte στην είσοδο μετατροπής"
 
-#: glib/gconvert.c:961
+#: glib/gconvert.c:955
 #, fuzzy
 #| msgid "Invalid byte sequence in conversion input"
 msgid "Embedded NUL byte in conversion output"
 msgstr "Άκυρη σειρά byte στην είσοδο μετατροπής"
 
-#: glib/gconvert.c:1649
+#: glib/gconvert.c:1640
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr ""
 "Το URI «%s» δεν είναι ένα απόλυτο URI με την χρήση του σχήματος «αρχείου»"
 
-#: glib/gconvert.c:1659
+#: glib/gconvert.c:1650
 #, fuzzy, c-format
 #| msgid "The local file URI '%s' may not include a '#'"
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "Το URI τοπικού αρχείου '%s' μπορεί να μην περιέχει ένα '#'"
 
-#: glib/gconvert.c:1676
+#: glib/gconvert.c:1667
 #, fuzzy, c-format
 #| msgid "The URI '%s' is invalid"
 msgid "The URI “%s” is invalid"
 msgstr "Το URI '%s' δεν είναι έγκυρο"
 
-#: glib/gconvert.c:1688
+#: glib/gconvert.c:1679
 #, fuzzy, c-format
 #| msgid "The hostname of the URI '%s' is invalid"
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "Το όνομα κεντρικού υπολογιστή του URI '%s' είναι άκυρο"
 
-#: glib/gconvert.c:1704
+#: glib/gconvert.c:1695
 #, fuzzy, c-format
 #| msgid "The URI '%s' contains invalidly escaped characters"
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "Το URI '%s' περιέχει άκυρους χαρακτήρες διαφυγής"
 
-#: glib/gconvert.c:1776
+#: glib/gconvert.c:1767
 #, fuzzy, c-format
 #| msgid "The pathname '%s' is not an absolute path"
 msgid "The pathname “%s” is not an absolute path"
 msgstr "Το όνομα διαδρομής '%s' δεν είναι απόλυτη διαδρομή"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: glib/gdatetime.c:213
+#: glib/gdatetime.c:220
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%a %e %b %Y %H:%M:%S"
 
 #. Translators: this is the preferred format for expressing the date
-#: glib/gdatetime.c:216
+#: glib/gdatetime.c:223
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%d/%m/%y"
 
 #. Translators: this is the preferred format for expressing the time
-#: glib/gdatetime.c:219
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: glib/gdatetime.c:222
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%I:%M:%S %p"
@@ -4756,62 +4883,62 @@ msgstr "%I:%M:%S %p"
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
 #.
-#: glib/gdatetime.c:261
+#: glib/gdatetime.c:268
 msgctxt "full month name"
 msgid "January"
 msgstr "Ιανουάριος"
 
-#: glib/gdatetime.c:263
+#: glib/gdatetime.c:270
 msgctxt "full month name"
 msgid "February"
 msgstr "Φεβρουάριος"
 
-#: glib/gdatetime.c:265
+#: glib/gdatetime.c:272
 msgctxt "full month name"
 msgid "March"
 msgstr "Μάρτιος"
 
-#: glib/gdatetime.c:267
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "April"
 msgstr "Απρίλιος"
 
-#: glib/gdatetime.c:269
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "May"
 msgstr "Μάιος"
 
-#: glib/gdatetime.c:271
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "June"
 msgstr "Ιούνιος"
 
-#: glib/gdatetime.c:273
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "July"
 msgstr "Ιούλιος"
 
-#: glib/gdatetime.c:275
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "August"
 msgstr "Αύγουστος"
 
-#: glib/gdatetime.c:277
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "September"
 msgstr "Σεπτέμβριος"
 
-#: glib/gdatetime.c:279
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "October"
 msgstr "Οκτώβριος"
 
-#: glib/gdatetime.c:281
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "November"
 msgstr "Νοέμβριος"
 
-#: glib/gdatetime.c:283
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "December"
 msgstr "Δεκέμβριος"
@@ -4833,132 +4960,132 @@ msgstr "Δεκέμβριος"
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
 #.
-#: glib/gdatetime.c:315
+#: glib/gdatetime.c:322
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "Ιαν"
 
-#: glib/gdatetime.c:317
+#: glib/gdatetime.c:324
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "Φεβ"
 
-#: glib/gdatetime.c:319
+#: glib/gdatetime.c:326
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "Μάρ"
 
-#: glib/gdatetime.c:321
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "Απρ"
 
-#: glib/gdatetime.c:323
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "Μάι"
 
-#: glib/gdatetime.c:325
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "Ιούν"
 
-#: glib/gdatetime.c:327
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "Ιούλ"
 
-#: glib/gdatetime.c:329
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "Αύγ"
 
-#: glib/gdatetime.c:331
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "Σεπ"
 
-#: glib/gdatetime.c:333
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "Οκτ"
 
-#: glib/gdatetime.c:335
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "Νοέ"
 
-#: glib/gdatetime.c:337
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "Δεκ"
 
-#: glib/gdatetime.c:352
+#: glib/gdatetime.c:359
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "Δευτέρα"
 
-#: glib/gdatetime.c:354
+#: glib/gdatetime.c:361
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "Τρίτη"
 
-#: glib/gdatetime.c:356
+#: glib/gdatetime.c:363
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "Τετάρτη"
 
-#: glib/gdatetime.c:358
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "Πέμπτη"
 
-#: glib/gdatetime.c:360
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "Παρασκευή"
 
-#: glib/gdatetime.c:362
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "Σάββατο"
 
-#: glib/gdatetime.c:364
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "Κυριακή"
 
-#: glib/gdatetime.c:379
+#: glib/gdatetime.c:386
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "Δευ"
 
-#: glib/gdatetime.c:381
+#: glib/gdatetime.c:388
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "Τρί"
 
-#: glib/gdatetime.c:383
+#: glib/gdatetime.c:390
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "Τετ"
 
-#: glib/gdatetime.c:385
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "Πέμ"
 
-#: glib/gdatetime.c:387
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "Παρ"
 
-#: glib/gdatetime.c:389
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "Σάβ"
 
-#: glib/gdatetime.c:391
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "Κυρ"
@@ -4980,62 +5107,62 @@ msgstr "Κυρ"
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
 #.
-#: glib/gdatetime.c:455
+#: glib/gdatetime.c:462
 msgctxt "full month name with day"
 msgid "January"
 msgstr "Ιανουαρίου"
 
-#: glib/gdatetime.c:457
+#: glib/gdatetime.c:464
 msgctxt "full month name with day"
 msgid "February"
 msgstr "Φεβρουαρίου"
 
-#: glib/gdatetime.c:459
+#: glib/gdatetime.c:466
 msgctxt "full month name with day"
 msgid "March"
 msgstr "Μαρτίου"
 
-#: glib/gdatetime.c:461
+#: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "April"
 msgstr "Απριλίου"
 
-#: glib/gdatetime.c:463
+#: glib/gdatetime.c:470
 msgctxt "full month name with day"
 msgid "May"
 msgstr "Μαΐου"
 
-#: glib/gdatetime.c:465
+#: glib/gdatetime.c:472
 msgctxt "full month name with day"
 msgid "June"
 msgstr "Ιουνίου"
 
-#: glib/gdatetime.c:467
+#: glib/gdatetime.c:474
 msgctxt "full month name with day"
 msgid "July"
 msgstr "Ιουλίου"
 
-#: glib/gdatetime.c:469
+#: glib/gdatetime.c:476
 msgctxt "full month name with day"
 msgid "August"
 msgstr "Αυγούστου"
 
-#: glib/gdatetime.c:471
+#: glib/gdatetime.c:478
 msgctxt "full month name with day"
 msgid "September"
 msgstr "Σεπτεμβρίου"
 
-#: glib/gdatetime.c:473
+#: glib/gdatetime.c:480
 msgctxt "full month name with day"
 msgid "October"
 msgstr "Οκτωβρίου"
 
-#: glib/gdatetime.c:475
+#: glib/gdatetime.c:482
 msgctxt "full month name with day"
 msgid "November"
 msgstr "Νοεμβρίου"
 
-#: glib/gdatetime.c:477
+#: glib/gdatetime.c:484
 msgctxt "full month name with day"
 msgid "December"
 msgstr "Δεκεμβρίου"
@@ -5057,87 +5184,87 @@ msgstr "Δεκεμβρίου"
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
 #.
-#: glib/gdatetime.c:542
+#: glib/gdatetime.c:549
 msgctxt "abbreviated month name with day"
 msgid "Jan"
 msgstr "Ιαν"
 
-#: glib/gdatetime.c:544
+#: glib/gdatetime.c:551
 msgctxt "abbreviated month name with day"
 msgid "Feb"
 msgstr "Φεβ"
 
-#: glib/gdatetime.c:546
+#: glib/gdatetime.c:553
 msgctxt "abbreviated month name with day"
 msgid "Mar"
 msgstr "Μαρ"
 
-#: glib/gdatetime.c:548
+#: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Apr"
 msgstr "Απρ"
 
-#: glib/gdatetime.c:550
+#: glib/gdatetime.c:557
 msgctxt "abbreviated month name with day"
 msgid "May"
 msgstr "Μαΐ"
 
-#: glib/gdatetime.c:552
+#: glib/gdatetime.c:559
 msgctxt "abbreviated month name with day"
 msgid "Jun"
 msgstr "Ιουν"
 
-#: glib/gdatetime.c:554
+#: glib/gdatetime.c:561
 msgctxt "abbreviated month name with day"
 msgid "Jul"
 msgstr "Ιουλ"
 
-#: glib/gdatetime.c:556
+#: glib/gdatetime.c:563
 msgctxt "abbreviated month name with day"
 msgid "Aug"
 msgstr "Αυγ"
 
-#: glib/gdatetime.c:558
+#: glib/gdatetime.c:565
 msgctxt "abbreviated month name with day"
 msgid "Sep"
 msgstr "Σεπ"
 
-#: glib/gdatetime.c:560
+#: glib/gdatetime.c:567
 msgctxt "abbreviated month name with day"
 msgid "Oct"
 msgstr "Οκτ"
 
-#: glib/gdatetime.c:562
+#: glib/gdatetime.c:569
 msgctxt "abbreviated month name with day"
 msgid "Nov"
 msgstr "Νοε"
 
-#: glib/gdatetime.c:564
+#: glib/gdatetime.c:571
 msgctxt "abbreviated month name with day"
 msgid "Dec"
 msgstr "Δεκ"
 
 #. Translators: 'before midday' indicator
-#: glib/gdatetime.c:581
+#: glib/gdatetime.c:588
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "ΠΜ"
 
 #. Translators: 'after midday' indicator
-#: glib/gdatetime.c:584
+#: glib/gdatetime.c:591
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "ΜΜ"
 
 #
-#: glib/gdir.c:155
+#: glib/gdir.c:154
 #, fuzzy, c-format
 #| msgid "Error opening directory '%s': %s"
 msgid "Error opening directory “%s”: %s"
 msgstr "Σφάλμα ανοίγματος καταλόγου '%s': %s"
 
 #
-#: glib/gfileutils.c:716 glib/gfileutils.c:808
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, fuzzy, c-format
 #| msgid "Could not allocate %lu byte to read file \"%s\""
 #| msgid_plural "Could not allocate %lu bytes to read file \"%s\""
@@ -5147,135 +5274,135 @@ msgstr[0] "Αδυναμία διάθεσης %lu byte για ανάγνωση α
 msgstr[1] "Αδυναμία διάθεσης %lu bytes για ανάγνωση αρχείου \"%s\""
 
 #
-#: glib/gfileutils.c:733
+#: glib/gfileutils.c:750
 #, fuzzy, c-format
 #| msgid "Error reading file %s: %s"
 msgid "Error reading file “%s”: %s"
 msgstr "Σφάλμα ανάγνωσης αρχείου %s: %s"
 
-#: glib/gfileutils.c:769
+#: glib/gfileutils.c:786
 #, fuzzy, c-format
 #| msgid "File \"%s\" is too large"
 msgid "File “%s” is too large"
 msgstr "Το αρχείο \"%s\" είναι υπερβολικά μεγάλο"
 
 # gconf/gconf-internals.c:2416
-#: glib/gfileutils.c:833
+#: glib/gfileutils.c:850
 #, fuzzy, c-format
 #| msgid "Failed to read from file '%s': %s"
 msgid "Failed to read from file “%s”: %s"
 msgstr "Αποτυχία ανάγνωσης από το αρχείο '%s': %s"
 
 # gconf/gconf-internals.c:2416
-#: glib/gfileutils.c:881 glib/gfileutils.c:953
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
 #, fuzzy, c-format
 #| msgid "Failed to open file '%s': %s"
 msgid "Failed to open file “%s”: %s"
 msgstr "Αποτυχία ανοίγματος αρχείου '%s': %s"
 
 # gconf/gconfd.c:1701
-#: glib/gfileutils.c:893
+#: glib/gfileutils.c:910
 #, fuzzy, c-format
 #| msgid "Failed to get attributes of file '%s': fstat() failed: %s"
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "Αποτυχία λήψης γνωρισμάτων αρχείου '%s': fstat() απέτυχε: %s"
 
 # gconf/gconf-internals.c:2416
-#: glib/gfileutils.c:923
+#: glib/gfileutils.c:940
 #, fuzzy, c-format
 #| msgid "Failed to open file '%s': fdopen() failed: %s"
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Αποτυχία ανοίγματος αρχείου '%s': fdopen() απέτυχε: %s"
 
 # gconf/gconf-internals.c:2416
-#: glib/gfileutils.c:1022
+#: glib/gfileutils.c:1039
 #, fuzzy, c-format
 #| msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "Αποτυχία μετονομασίας αρχείου '%s' σε '%s': g_rename() απέτυχε: %s"
 
 # gconf/gconf-internals.c:2416
-#: glib/gfileutils.c:1057 glib/gfileutils.c:1575
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
 #, fuzzy, c-format
 #| msgid "Failed to create file '%s': %s"
 msgid "Failed to create file “%s”: %s"
 msgstr "Αποτυχία δημιουργίας αρχείου '%s': %s"
 
 # gconf/gconf-internals.c:2416
-#: glib/gfileutils.c:1084
+#: glib/gfileutils.c:1101
 #, fuzzy, c-format
 #| msgid "Failed to write file '%s': write() failed: %s"
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Αποτυχία εγγραφής αρχείου '%s': write() απέτυχε: %s"
 
 # gconf/gconf-internals.c:2416
-#: glib/gfileutils.c:1127
+#: glib/gfileutils.c:1144
 #, fuzzy, c-format
 #| msgid "Failed to write file '%s': fsync() failed: %s"
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Αποτυχία εγγραφής αρχείου '%s': fsync() απέτυχε: %s"
 
-#: glib/gfileutils.c:1262
+#: glib/gfileutils.c:1279
 #, fuzzy, c-format
 #| msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
 "Αδυναμία απομάκρυνσης του υπάρχοντος αρχείου '%s': g_unlink() απέτυχε: %s"
 
-#: glib/gfileutils.c:1541
+#: glib/gfileutils.c:1558
 #, fuzzy, c-format
 #| msgid "Template '%s' invalid, should not contain a '%s'"
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Άκυρο πρότυπο '%s', δεν πρέπει να περιέχει '%s'"
 
-#: glib/gfileutils.c:1554
+#: glib/gfileutils.c:1571
 #, fuzzy, c-format
 #| msgid "Template '%s' doesn't contain XXXXXX"
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Το πρότυπο '%s' δεν περιέχει XXXXXX"
 
 # gconf/gconf-internals.c:2416
-#: glib/gfileutils.c:2116
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
 #, fuzzy, c-format
 #| msgid "Failed to read the symbolic link '%s': %s"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Αποτυχία ανάγνωσης συμβολικού συνδέσμου '%s': %s"
 
-#: glib/giochannel.c:1389
+#: glib/giochannel.c:1396
 #, fuzzy, c-format
 #| msgid "Could not open converter from '%s' to '%s': %s"
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Αδυναμία ανοίγματος μετατροπέα από '%s' σε '%s': %s"
 
-#: glib/giochannel.c:1734
+#: glib/giochannel.c:1741
 #, fuzzy
 #| msgid "Can't do a raw read in g_io_channel_read_line_string"
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Αδυναμία ανάγνωσης raw σε g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1781 glib/giochannel.c:2039 glib/giochannel.c:2126
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Εναπομείναντα αμετάτρεπτα δεδομένα σε μνήμη ανάγνωσης"
 
-#: glib/giochannel.c:1862 glib/giochannel.c:1939
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Το κανάλι τερματίζει σε ημιτελή χαρακτήρα"
 
-#: glib/giochannel.c:1925
+#: glib/giochannel.c:1932
 #, fuzzy
 #| msgid "Can't do a raw read in g_io_channel_read_to_end"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Αδυναμία ανάγνωσης raw σε g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:788
+#: glib/gkeyfile.c:789
 msgid "Valid key file could not be found in search dirs"
 msgstr "Αδυναμία εύρεσης έγκυρου αρχείου κλειδιού στους καταλόγους αναζήτησης"
 
-#: glib/gkeyfile.c:825
+#: glib/gkeyfile.c:826
 msgid "Not a regular file"
 msgstr "Δεν είναι κανονικό αρχείο"
 
-#: glib/gkeyfile.c:1270
+#: glib/gkeyfile.c:1275
 #, fuzzy, c-format
 #| msgid ""
 #| "Key file contains line '%s' which is not a key-value pair, group, or "
@@ -5286,48 +5413,48 @@ msgstr ""
 "Το αρχείο κλειδιού περιέχει την γραμμή '%s' που δεν είναι ζεύγος κλειδιού-"
 "τιμής, ομάδας, ή σχολίου"
 
-#: glib/gkeyfile.c:1327
+#: glib/gkeyfile.c:1332
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Άκυρο όνομα ομάδας: %s"
 
-#: glib/gkeyfile.c:1349
+#: glib/gkeyfile.c:1354
 msgid "Key file does not start with a group"
 msgstr "Το αρχείο κλειδιού δεν ξεκινάει με ομάδα"
 
-#: glib/gkeyfile.c:1375
+#: glib/gkeyfile.c:1380
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Άκυρο όνομα κλειδιού: %s"
 
-#: glib/gkeyfile.c:1402
+#: glib/gkeyfile.c:1407
 #, fuzzy, c-format
 #| msgid "Key file contains unsupported encoding '%s'"
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Το αρχείο κλειδιού περιέχει ανυποστήρικτη κωδικοποίηση '%s'"
 
-#: glib/gkeyfile.c:1645 glib/gkeyfile.c:1818 glib/gkeyfile.c:3271
-#: glib/gkeyfile.c:3334 glib/gkeyfile.c:3464 glib/gkeyfile.c:3594
-#: glib/gkeyfile.c:3738 glib/gkeyfile.c:3967 glib/gkeyfile.c:4034
+#: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, fuzzy, c-format
 #| msgid "Key file does not have group '%s'"
 msgid "Key file does not have group “%s”"
 msgstr "Το αρχείο κλειδιού δεν έχει ομάδα '%s'"
 
-#: glib/gkeyfile.c:1773
+#: glib/gkeyfile.c:1778
 #, fuzzy, c-format
 #| msgid "Key file does not have key '%s' in group '%s'"
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Το αρχείο κλειδιού δεν έχει κλειδί '%s' στην ομάδα '%s'"
 
-#: glib/gkeyfile.c:1935 glib/gkeyfile.c:2051
+#: glib/gkeyfile.c:1940 glib/gkeyfile.c:2056
 #, fuzzy, c-format
 #| msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Το αρχείο κλειδιού περιέχει κλειδί '%s' με τιμή '%s' που δεν είναι UTF-8"
 
-#: glib/gkeyfile.c:1955 glib/gkeyfile.c:2071 glib/gkeyfile.c:2513
+#: glib/gkeyfile.c:1960 glib/gkeyfile.c:2076 glib/gkeyfile.c:2518
 #, fuzzy, c-format
 #| msgid ""
 #| "Key file contains key '%s' which has a value that cannot be interpreted."
@@ -5337,7 +5464,7 @@ msgstr ""
 "Το αρχείο κλειδιού περιέχει κλειδί '%s' που περιέχει μια τιμή που δεν μπορεί "
 "να ερμηνευθεί."
 
-#: glib/gkeyfile.c:2731 glib/gkeyfile.c:3100
+#: glib/gkeyfile.c:2736 glib/gkeyfile.c:3105
 #, fuzzy, c-format
 #| msgid ""
 #| "Key file contains key '%s' in group '%s' which has a value that cannot be "
@@ -5349,41 +5476,41 @@ msgstr ""
 "Το αρχείο κλειδιού περιέχει κλειδί '%s' στην ομάδα '%s' που η τιμή του δεν "
 "μπορεί να ερμηνευθεί."
 
-#: glib/gkeyfile.c:2809 glib/gkeyfile.c:2886
+#: glib/gkeyfile.c:2814 glib/gkeyfile.c:2891
 #, fuzzy, c-format
 #| msgid "Key '%s' in group '%s' has value '%s' where %s was expected"
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Το κλειδί '%s' στην ομάδα '%s' έχει τιμή '%s' όταν αναμενόταν %s"
 
-#: glib/gkeyfile.c:4274
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Το αρχείο κλειδιού περιέχει χαρακτήρα διαφυγής στο τέλος της γραμμής"
 
-#: glib/gkeyfile.c:4296
+#: glib/gkeyfile.c:4306
 #, fuzzy, c-format
 #| msgid "Key file contains invalid escape sequence '%s'"
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Το αρχείο κλειδιού περιέχει άκυρη σειρά διαφυγής '%s'"
 
-#: glib/gkeyfile.c:4440
+#: glib/gkeyfile.c:4450
 #, fuzzy, c-format
 #| msgid "Value '%s' cannot be interpreted as a number."
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Η τιμή '%s' δεν μπορεί να ερμηνευθεί ως αριθμός."
 
-#: glib/gkeyfile.c:4454
+#: glib/gkeyfile.c:4464
 #, fuzzy, c-format
 #| msgid "Integer value '%s' out of range"
 msgid "Integer value “%s” out of range"
 msgstr "Η ακέραιη τιμή '%s' είναι εκτός εύρους"
 
-#: glib/gkeyfile.c:4487
+#: glib/gkeyfile.c:4497
 #, fuzzy, c-format
 #| msgid "Value '%s' cannot be interpreted as a float number."
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Η τιμή '%s' δεν μπορεί να ερμηνευθεί ως αριθμός κινητής υποδιαστολής."
 
-#: glib/gkeyfile.c:4526
+#: glib/gkeyfile.c:4536
 #, fuzzy, c-format
 #| msgid "Value '%s' cannot be interpreted as a boolean."
 msgid "Value “%s” cannot be interpreted as a boolean."
@@ -5410,36 +5537,36 @@ msgid "Failed to open file “%s”: open() failed: %s"
 msgstr "Αποτυχία ανοίγματος αρχείου '%s': open() απέτυχε: %s"
 
 # gconf/gconfd.c:1676
-#: glib/gmarkup.c:397 glib/gmarkup.c:439
+#: glib/gmarkup.c:398 glib/gmarkup.c:440
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "Σφάλμα στη γραμμή %d χαρακτήρας %d: "
 
-#: glib/gmarkup.c:461 glib/gmarkup.c:544
+#: glib/gmarkup.c:462 glib/gmarkup.c:545
 #, fuzzy, c-format
 #| msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
 msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
 msgstr "Άκυρο κωδικοποιημένο κείμενο UTF-8 στο όνομα - μη έγκυρο '%s'"
 
-#: glib/gmarkup.c:472
+#: glib/gmarkup.c:473
 #, fuzzy, c-format
 #| msgid "'%s' is not a valid name"
 msgid "“%s” is not a valid name"
 msgstr "'%s' δεν είναι έγκυρο όνομα"
 
-#: glib/gmarkup.c:488
+#: glib/gmarkup.c:489
 #, fuzzy, c-format
 #| msgid "'%s' is not a valid name: '%c'"
 msgid "“%s” is not a valid name: “%c”"
 msgstr "'%s' δεν είναι ένα έγκυρο όνομα: '%c'"
 
 #
-#: glib/gmarkup.c:610
+#: glib/gmarkup.c:613
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "Σφάλμα στη γραμμή %d: %s"
 
-#: glib/gmarkup.c:687
+#: glib/gmarkup.c:690
 #, fuzzy, c-format
 #| msgid ""
 #| "Failed to parse '%-.*s', which should have been a digit inside a "
@@ -5452,7 +5579,7 @@ msgstr ""
 "αναφορά χαρακτήρα (&#234; για παράδειγμα) - ίσως το ψηφίο να είναι πολύ "
 "μεγάλο"
 
-#: glib/gmarkup.c:699
+#: glib/gmarkup.c:702
 #, fuzzy
 #| msgid ""
 #| "Character reference did not end with a semicolon; most likely you used an "
@@ -5467,14 +5594,14 @@ msgstr ""
 "χρησιμοποιήσατε συμπλεκτικό χαρακτήρα χωρίς να θέλετε να ξεκινήσετε μια "
 "οντότητα - διαφυγή συμπλεκτικού ως &amp;"
 
-#: glib/gmarkup.c:725
+#: glib/gmarkup.c:728
 #, fuzzy, c-format
 #| msgid "Character reference '%-.*s' does not encode a permitted character"
 msgid "Character reference “%-.*s” does not encode a permitted character"
 msgstr ""
 "Η αναφορά χαρακτήρα '%-.*s' δεν κωδικοποιεί έναν επιτρεπόμενο χαρακτήρα"
 
-#: glib/gmarkup.c:763
+#: glib/gmarkup.c:766
 #, fuzzy
 #| msgid ""
 #| "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
@@ -5484,13 +5611,13 @@ msgstr ""
 "Κενή οντότητα '&;' παρατηρήθηκε· έγκυρες οντότητες είναι: &amp; &quot; &lt; "
 "&gt; &apos;"
 
-#: glib/gmarkup.c:771
+#: glib/gmarkup.c:774
 #, fuzzy, c-format
 #| msgid "Entity name '%-.*s' is not known"
 msgid "Entity name “%-.*s” is not known"
 msgstr "Το όνομα οντότητας '%-.*s' δεν είναι γνωστό"
 
-#: glib/gmarkup.c:776
+#: glib/gmarkup.c:779
 #, fuzzy
 #| msgid ""
 #| "Entity did not end with a semicolon; most likely you used an ampersand "
@@ -5503,11 +5630,11 @@ msgstr ""
 "συμπλεκτικό χαρακτήρα χωρίς να θέλετε να ξεκινήσετε οντότητα - διαφυγή "
 "συμπλεκτικού ως &amp;"
 
-#: glib/gmarkup.c:1182
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Το έγγραφο πρέπει να ξεκινά με στοιχείο (π.χ. <book>)"
 
-#: glib/gmarkup.c:1222
+#: glib/gmarkup.c:1233
 #, fuzzy, c-format
 #| msgid ""
 #| "'%s' is not a valid character following a '<' character; it may not begin "
@@ -5519,7 +5646,7 @@ msgstr ""
 "Το '%s' δεν είναι έγκυρος χαρακτήρας όταν ακολουθείται από χαρακτήρα '<'· "
 "δεν μπορεί να ξεκινά όνομα στοιχείου"
 
-#: glib/gmarkup.c:1264
+#: glib/gmarkup.c:1276
 #, fuzzy, c-format
 #| msgid ""
 #| "Odd character '%s', expected a '>' character to end the empty-element tag "
@@ -5531,7 +5658,13 @@ msgstr ""
 "Περίεργος χαρακτήρας '%s', αναμενόταν ο χαρακτήρας '>' στο τέλος της "
 "ετικέτας του κενού-στοιχείου '%s'"
 
-#: glib/gmarkup.c:1345
+#: glib/gmarkup.c:1346
+#, fuzzy, c-format
+#| msgid "Unexpected attribute '%s' for element '%s'"
+msgid "Too many attributes in element “%s”"
+msgstr "Αναπάντεχο γνώρισμα '%s' για το στοιχείο '%s'"
+
+#: glib/gmarkup.c:1366
 #, fuzzy, c-format
 #| msgid ""
 #| "Odd character '%s', expected a '=' after attribute name '%s' of element "
@@ -5542,7 +5675,7 @@ msgstr ""
 "Περίεργος χαρακτήρας '%s', αναμενόταν ένα '=' μετά το όνομα γνωρίσματος '%s' "
 "του στοιχείου '%s'"
 
-#: glib/gmarkup.c:1386
+#: glib/gmarkup.c:1408
 #, fuzzy, c-format
 #| msgid ""
 #| "Odd character '%s', expected a '>' or '/' character to end the start tag "
@@ -5557,7 +5690,7 @@ msgstr ""
 "της ετικέτας έναρξης του στοιχείου '%s' ή προαιρετικά ένα γνώρισμα· πιθανόν "
 "να χρησιμοποιήσατε έναν άκυρο χαρακτήρα σε όνομα γνωρίσματος"
 
-#: glib/gmarkup.c:1430
+#: glib/gmarkup.c:1453
 #, fuzzy, c-format
 #| msgid ""
 #| "Odd character '%s', expected an open quote mark after the equals sign "
@@ -5569,7 +5702,7 @@ msgstr ""
 "Περίεργος χαρακτήρας '%s', αναμενόταν ένα ανοικτό εισαγωγικό μετά το σύμβολο "
 "ίσον στην τιμή για το γνώρισμα '%s' του στοιχείου '%s'"
 
-#: glib/gmarkup.c:1563
+#: glib/gmarkup.c:1587
 #, fuzzy, c-format
 #| msgid ""
 #| "'%s' is not a valid character following the characters '</'; '%s' may not "
@@ -5581,7 +5714,7 @@ msgstr ""
 "Το '%s' δεν είναι έγκυρος χαρακτήρας ακολουθούμενος από χαρακτήρες '</'· το "
 "'%s' δεν μπορεί να αρχίζει όνομα στοιχείου"
 
-#: glib/gmarkup.c:1599
+#: glib/gmarkup.c:1625
 #, fuzzy, c-format
 #| msgid ""
 #| "'%s' is not a valid character following the close element name '%s'; the "
@@ -5593,23 +5726,23 @@ msgstr ""
 "Το '%s' δεν είναι έγκυρος χαρακτήρας ακολουθούμενος από το όνομα στοιχείου "
 "κλεισίματος '%s'· ο επιτρεπόμενος χαρακτήρας είναι '>'"
 
-#: glib/gmarkup.c:1610
+#: glib/gmarkup.c:1637
 #, fuzzy, c-format
 #| msgid "Element '%s' was closed, no element is currently open"
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Το στοιχείο '%s' έκλεισε, κανένα στοιχείο δεν είναι ανοικτό"
 
-#: glib/gmarkup.c:1619
+#: glib/gmarkup.c:1646
 #, fuzzy, c-format
 #| msgid "Element '%s' was closed, but the currently open element is '%s'"
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Το στοιχείο '%s' έκλεισε, αλλά το τρέχον ανοικτό στοιχείο είναι '%s'"
 
-#: glib/gmarkup.c:1772
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Το έγγραφο ήταν κενό ή περιέχει μόνο λευκό κενό"
 
-#: glib/gmarkup.c:1786
+#: glib/gmarkup.c:1813
 #, fuzzy
 #| msgid "Document ended unexpectedly just after an open angle bracket '<'"
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
@@ -5617,7 +5750,7 @@ msgstr ""
 "Το έγγραφο τερματίστηκε απρόσμενα αμέσως μετά από μια ανοικτή γωνιακή "
 "παρένθεση '<'"
 
-#: glib/gmarkup.c:1794 glib/gmarkup.c:1839
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, fuzzy, c-format
 #| msgid ""
 #| "Document ended unexpectedly with elements still open - '%s' was the last "
@@ -5629,7 +5762,7 @@ msgstr ""
 "Το έγγραφο τερματίστηκε απρόσμενα με στοιχεία ακόμα ανοικτά - '%s' ήταν το "
 "τελευταίο στοιχείο που ανοίχθηκε"
 
-#: glib/gmarkup.c:1802
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5638,20 +5771,20 @@ msgstr ""
 "Το έγγραφο τερματίστηκε απρόσμενα, αναμενόταν μια γωνιακή παρένθεση "
 "κλεισίματος στο τέλος της ετικέτας <%s/>"
 
-#: glib/gmarkup.c:1808
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Το έγγραφο τερματίστηκε απρόσμενα σε όνομα στοιχείου"
 
-#: glib/gmarkup.c:1814
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Το έγγραφο τερματίστηκε απρόσμενα σε όνομα γνωρίσματος"
 
-#: glib/gmarkup.c:1819
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "Το έγγραφο τερματίστηκε απρόσμενα μέσα σε ετικέτα ανοίγματος στοιχείου."
 
-#: glib/gmarkup.c:1825
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5659,18 +5792,18 @@ msgstr ""
 "Το έγγραφο τερματίστηκε απρόσμενα μετά το σύμβολο ίσον ακολουθούμενο από "
 "όνομα γνωρίσματος· δεν υπάρχει τιμή γνωρίσματος"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Το έγγραφο τερματίστηκε απρόσμενα σε τιμή γνωρίσματος"
 
-#: glib/gmarkup.c:1849
+#: glib/gmarkup.c:1876
 #, fuzzy, c-format
 #| msgid "Document ended unexpectedly inside the close tag for element '%s'"
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Το έγγραφο τερματίστηκε απρόσμενα σε ετικέτα κλεισίματος για στοιχείο '%s'"
 
-#: glib/gmarkup.c:1853
+#: glib/gmarkup.c:1880
 #, fuzzy
 #| msgid "Document ended unexpectedly inside the close tag for element '%s'"
 msgid ""
@@ -5678,72 +5811,72 @@ msgid ""
 msgstr ""
 "Το έγγραφο τερματίστηκε απρόσμενα σε ετικέτα κλεισίματος για στοιχείο '%s'"
 
-#: glib/gmarkup.c:1859
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Το έγγραφο τερματίστηκε απρόσμενα σε σχόλιο ή οδηγία επεξεργασίας"
 
-#: glib/goption.c:861
+#: glib/goption.c:868
 #, fuzzy
 #| msgid "[OPTION...]"
 msgid "[OPTION…]"
 msgstr "[ΕΠΙΛΟΓΗ...]"
 
-#: glib/goption.c:977
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Επιλογές βοήθειας:"
 
-#: glib/goption.c:978
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Εμφάνιση επιλογών βοήθειας"
 
-#: glib/goption.c:984
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Εμφάνιση όλων των επιλογών βοήθειας"
 
-#: glib/goption.c:1047
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Επιλογές εφαρμογής:"
 
-#: glib/goption.c:1049
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Επιλογές:"
 
-#: glib/goption.c:1113 glib/goption.c:1183
+#: glib/goption.c:1120 glib/goption.c:1190
 #, fuzzy, c-format
 #| msgid "Cannot parse integer value '%s' for %s"
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Αδυναμία ανάλυσης ακέραιης τιμής '%s' για %s"
 
-#: glib/goption.c:1123 glib/goption.c:1191
+#: glib/goption.c:1130 glib/goption.c:1198
 #, fuzzy, c-format
 #| msgid "Integer value '%s' for %s out of range"
 msgid "Integer value “%s” for %s out of range"
 msgstr "Ακέραιη τιμή '%s' για %s είναι εκτός περιοχής"
 
-#: glib/goption.c:1148
+#: glib/goption.c:1155
 #, fuzzy, c-format
 #| msgid "Cannot parse double value '%s' for %s"
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Αδυναμία ανάλυσης διπλής τιμής '%s' για %s"
 
-#: glib/goption.c:1156
+#: glib/goption.c:1163
 #, fuzzy, c-format
 #| msgid "Double value '%s' for %s out of range"
 msgid "Double value “%s” for %s out of range"
 msgstr "Η διπλή τιμή '%s' για %s είναι εκτός περιοχής"
 
 # gconf/gconftool.c:1181
-#: glib/goption.c:1448 glib/goption.c:1527
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Σφάλμα επιλογής ανάλυσης %s"
 
-#: glib/goption.c:1558 glib/goption.c:1671
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Λείπει όρισμα για %s"
 
-#: glib/goption.c:2132
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Άγνωστη επιλογή %s"
@@ -6112,17 +6245,17 @@ msgstr "αναμένεται ψηφίο"
 msgid "illegal symbolic reference"
 msgstr "παράνομη συμβολική αναφορά"
 
-#: glib/gregex.c:2582
+#: glib/gregex.c:2583
 #, fuzzy
 #| msgid "stray final '\\'"
 msgid "stray final “\\”"
 msgstr "αδέσποτο τελικό '\\'"
 
-#: glib/gregex.c:2586
+#: glib/gregex.c:2587
 msgid "unknown escape sequence"
 msgstr "άγνωστη ακολουθία διαφυγής"
 
-#: glib/gregex.c:2596
+#: glib/gregex.c:2597
 #, fuzzy, c-format
 #| msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
@@ -6163,138 +6296,139 @@ msgid "Text was empty (or contained only whitespace)"
 msgstr "Το κείμενο ήταν κενό (ή περιέχει μόνο λευκό κενό)"
 
 # gconf/gconf-internals.c:2416
-#: glib/gspawn.c:308
+#: glib/gspawn.c:315
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Αποτυχία ανάγνωσης δεδομένων από θυγατρική διεργασία (%s)"
 
-#: glib/gspawn.c:456
-#, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
+#: glib/gspawn.c:460
+#, fuzzy, c-format
+#| msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
 "Απρόσμενο σφάλμα στο select() ανάγνωσης δεδομένων από θυγατρική διεργασία "
 "(%s)"
 
-#: glib/gspawn.c:541
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Απρόσμενο σφάλμα στη waitpid() (%s)"
 
-#: glib/gspawn.c:1049 glib/gspawn-win32.c:1318
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Η θυγατρική διεργασία τερματίστηκε με κωδικό %ld"
 
-#: glib/gspawn.c:1057
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Η θυγατρική διεργασία τερματίστηκε από το σήμα %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Η θυγατρική διεργασία διακόπηκε από το σήμα %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Η θυγατρική διεργασία τερματίστηκε ασυνήθιστα"
 
 # gconf/gconftool.c:881
-#: glib/gspawn.c:1366 glib/gspawn-win32.c:339 glib/gspawn-win32.c:347
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Αποτυχία ανάγνωσης από τη θυγατρική διοχέτευση (%s)"
 
-#: glib/gspawn.c:1614
+#: glib/gspawn.c:1723
 #, fuzzy, c-format
 #| msgid "Failed to fork child process (%s)"
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Αποτυχία δικράνωσης θυγατρικής διεργασίας (%s)"
 
 # gconf/gconf-internals.c:2416
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Αποτυχία δικράνωσης (%s)"
 
-#: glib/gspawn.c:1802 glib/gspawn-win32.c:370
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, fuzzy, c-format
 #| msgid "Failed to change to directory '%s' (%s)"
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Αποτυχία αλλαγής καταλόγου '%s' (%s)"
 
 # gconf/gconf-internals.c:2416
-#: glib/gspawn.c:1812
+#: glib/gspawn.c:1921
 #, fuzzy, c-format
 #| msgid "Failed to execute child process \"%s\" (%s)"
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Αποτυχία εκτέλεσης θυγατρικής διεργασίας \"%s\" (%s)"
 
-#: glib/gspawn.c:1822
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Αποτυχία ανακατεύθυνσης εισόδου ή εξόδου θυγατρικής διεργασίας (%s)"
 
-#: glib/gspawn.c:1831
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Αποτυχία δικράνωσης θυγατρικής διεργασίας (%s)"
 
-#: glib/gspawn.c:1839
+#: glib/gspawn.c:1948
 #, fuzzy, c-format
 #| msgid "Unknown error executing child process \"%s\""
 msgid "Unknown error executing child process “%s”"
 msgstr "Άγνωστο σφάλμα εκτέλεσης θυγατρικής διεργασίας \"%s\""
 
-#: glib/gspawn.c:1863
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Αποτυχία ανάγνωσης επαρκών δεδομένων από θυγατρική διοχέτευση pid (%s)"
 
-#: glib/gspawn-win32.c:283
+#: glib/gspawn-win32.c:294
 msgid "Failed to read data from child process"
 msgstr "Αποτυχία ανάγνωσης δεδομένων από θυγατρική διεργασία"
 
-#: glib/gspawn-win32.c:300
+#: glib/gspawn-win32.c:311
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
 "Αποτυχία δημιουργίας διοχέτευσης για την επικοινωνία με θυγατρική διεργασία "
 "(%s)"
 
-#: glib/gspawn-win32.c:376 glib/gspawn-win32.c:381 glib/gspawn-win32.c:500
+#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Αποτυχία εκτέλεσης θυγατρικής διεργασίας (%s)"
 
-#: glib/gspawn-win32.c:450
+#: glib/gspawn-win32.c:461
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Άκυρο όνομα προγράμματος: %s"
 
-#: glib/gspawn-win32.c:460 glib/gspawn-win32.c:714
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Άκυρη συμβολοσειρά σε όρισμα διανύσματος στο %d: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:729
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Άκυρη συμβολοσειρά σε περιβάλλον: %s"
 
 #
-#: glib/gspawn-win32.c:710
+#: glib/gspawn-win32.c:721
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Άκυρος κατάλογος εργασίας: %s"
 
-#: glib/gspawn-win32.c:772
+#: glib/gspawn-win32.c:783
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Αποτυχία εκτέλεσης βοηθητικού προγράμματος(%s)"
 
-#: glib/gspawn-win32.c:1045
+#: glib/gspawn-win32.c:1056
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6302,194 +6436,228 @@ msgstr ""
 "Απρόσμενο σφάλμα στο g_io_channel_win32_poll() ανάγνωση δεδομένων από "
 "θυγατρική διεργασία"
 
-#: glib/gstrfuncs.c:3247 glib/gstrfuncs.c:3348
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Το κενό αλφαριθμητικό δεν είναι αριθμός"
 
-#: glib/gstrfuncs.c:3271
+#: glib/gstrfuncs.c:3333
 #, fuzzy, c-format
 #| msgid "'%s' is not a valid name"
 msgid "“%s” is not a signed number"
 msgstr "'%s' δεν είναι έγκυρο όνομα"
 
-#: glib/gstrfuncs.c:3281 glib/gstrfuncs.c:3384
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr ""
 
-#: glib/gstrfuncs.c:3374
+#: glib/gstrfuncs.c:3437
 #, fuzzy, c-format
 #| msgid "'%s' is not a valid name"
 msgid "“%s” is not an unsigned number"
 msgstr "'%s' δεν είναι έγκυρο όνομα"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Αποτυχία κατανομής μνήμης"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Ο χαρακτήρας είναι εκτός περιοχής UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Άκυρη σειρά στην είσοδο μετατροπής"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Ο χαρακτήρας είναι εκτός περιοχής UTF-16"
 
-#: glib/gutils.c:2244
-#, c-format
-msgid "%.1f kB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2756
+#, fuzzy, c-format
+#| msgid "%.1f kB"
+msgid "%.1f kB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2245 glib/gutils.c:2451
-#, c-format
-msgid "%.1f MB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2758
+#, fuzzy, c-format
+#| msgid "%.1f MB"
+msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2246 glib/gutils.c:2456
-#, c-format
-msgid "%.1f GB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2760
+#, fuzzy, c-format
+#| msgid "%.1f GB"
+msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2247 glib/gutils.c:2461
-#, c-format
-msgid "%.1f TB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2762
+#, fuzzy, c-format
+#| msgid "%.1f TB"
+msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2248 glib/gutils.c:2466
-#, c-format
-msgid "%.1f PB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2764
+#, fuzzy, c-format
+#| msgid "%.1f PB"
+msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2249 glib/gutils.c:2471
-#, c-format
-msgid "%.1f EB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2766
+#, fuzzy, c-format
+#| msgid "%.1f EB"
+msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: glib/gutils.c:2252
-#, c-format
-msgid "%.1f KiB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2770
+#, fuzzy, c-format
+#| msgid "%.1f KiB"
+msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
-#: glib/gutils.c:2253
-#, c-format
-msgid "%.1f MiB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2772
+#, fuzzy, c-format
+#| msgid "%.1f MiB"
+msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
-#: glib/gutils.c:2254
-#, c-format
-msgid "%.1f GiB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2774
+#, fuzzy, c-format
+#| msgid "%.1f GiB"
+msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
-#: glib/gutils.c:2255
-#, c-format
-msgid "%.1f TiB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2776
+#, fuzzy, c-format
+#| msgid "%.1f TiB"
+msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
-#: glib/gutils.c:2256
-#, c-format
-msgid "%.1f PiB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2778
+#, fuzzy, c-format
+#| msgid "%.1f PiB"
+msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
-#: glib/gutils.c:2257
-#, c-format
-msgid "%.1f EiB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2780
+#, fuzzy, c-format
+#| msgid "%.1f EiB"
+msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
-#: glib/gutils.c:2260
-#, c-format
-#| msgid "%.1f kB"
-msgid "%.1f kb"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2784
+#, fuzzy, c-format
+#| msgid "%.1f kb"
+msgid "%.1f kb"
 msgstr "%.1f kb"
 
-#: glib/gutils.c:2261
-#, c-format
-#| msgid "%.1f MB"
-msgid "%.1f Mb"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2786
+#, fuzzy, c-format
+#| msgid "%.1f Mb"
+msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
-#: glib/gutils.c:2262
-#, c-format
-#| msgid "%.1f GB"
-msgid "%.1f Gb"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2788
+#, fuzzy, c-format
+#| msgid "%.1f Gb"
+msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
-#: glib/gutils.c:2263
-#, c-format
-#| msgid "%.1f TB"
-msgid "%.1f Tb"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2790
+#, fuzzy, c-format
+#| msgid "%.1f Tb"
+msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
-#: glib/gutils.c:2264
-#, c-format
-#| msgid "%.1f PB"
-msgid "%.1f Pb"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2792
+#, fuzzy, c-format
+#| msgid "%.1f Pb"
+msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
-#: glib/gutils.c:2265
-#, c-format
-#| msgid "%.1f EB"
-msgid "%.1f Eb"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2794
+#, fuzzy, c-format
+#| msgid "%.1f Eb"
+msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
-#: glib/gutils.c:2268
-#, c-format
-#| msgid "%.1f KiB"
-msgid "%.1f Kib"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2798
+#, fuzzy, c-format
+#| msgid "%.1f Kib"
+msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
-#: glib/gutils.c:2269
-#, c-format
-#| msgid "%.1f MiB"
-msgid "%.1f Mib"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2800
+#, fuzzy, c-format
+#| msgid "%.1f Mib"
+msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
-#: glib/gutils.c:2270
-#, c-format
-#| msgid "%.1f GiB"
-msgid "%.1f Gib"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2802
+#, fuzzy, c-format
+#| msgid "%.1f Gib"
+msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
-#: glib/gutils.c:2271
-#, c-format
-#| msgid "%.1f TiB"
-msgid "%.1f Tib"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2804
+#, fuzzy, c-format
+#| msgid "%.1f Tib"
+msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
-#: glib/gutils.c:2272
-#, c-format
-#| msgid "%.1f PiB"
-msgid "%.1f Pib"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2806
+#, fuzzy, c-format
+#| msgid "%.1f Pib"
+msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
-#: glib/gutils.c:2273
-#, c-format
-#| msgid "%.1f EiB"
-msgid "%.1f Eib"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2808
+#, fuzzy, c-format
+#| msgid "%.1f Eib"
+msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2307 glib/gutils.c:2433
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2311
+#: glib/gutils.c:2846
 #, c-format
-#| msgid "%u byte"
-#| msgid_plural "%u bytes"
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2378
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6497,10 +6665,8 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2383
+#: glib/gutils.c:2918
 #, c-format
-#| msgid "%s byte"
-#| msgid_plural "%s bytes"
 msgid "%s bit"
 msgid_plural "%s bits"
 msgstr[0] "%s bit"
@@ -6511,11 +6677,53 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2446
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
+#: glib/gutils.c:2977
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: glib/gutils.c:2982
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: glib/gutils.c:2987
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
+
+#: glib/gutils.c:2992
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
+
+#: glib/gutils.c:2997
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
+
+#, fuzzy
+#~| msgid "Error in address '%s' - the family attribute is malformed"
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα ομάδας είναι κακοδιατυπωμένη"
+
+#~ msgid "; ignoring override for this key.\n"
+#~ msgstr "· παράβλεψη αντικατάστασης για αυτό το κλειδί.\n"
+
+#~ msgid " and --strict was specified; exiting.\n"
+#~ msgstr " και ορίστηκε το --strict· έξοδος.\n"
+
+#~ msgid "Ignoring override for this key.\n"
+#~ msgstr "Παράβλεψη αντικατάστασης για αυτό το κλειδί.\n"
+
+#~ msgid "doing nothing.\n"
+#~ msgstr "αδρανές.\n"
+
 #~ msgid "No such interface"
 #~ msgstr "Δεν υπάρχει τέτοια διεπαφή"
 
index 10e5606..d702c84 100644 (file)
@@ -4,14 +4,14 @@
 # Gareth Owen <gowen72@yahoo.com> 2004
 # Philip Withnall <philip@tecnocode.co.uk>, 2010.
 # Zander Brown <zbrown@gnome.org>, 2019.
-# Bruce Cowan <bruce@bcowan.me.uk>, 2009-2019.
+# Bruce Cowan <bruce@bcowan.me.uk>, 2009-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-25 09:08+0000\n"
-"PO-Revision-Date: 2019-08-26 10:03+0100\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-08 13:05+0000\n"
 "Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
 "Language-Team: English - United Kingdom <en@li.org>\n"
 "Language: en_GB\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 3.32.1\n"
+"X-Generator: Gtranslator 3.34.0\n"
 "X-Project-Style: gnome\n"
 
 #: gio/gapplication.c:500
@@ -279,7 +279,7 @@ msgstr "Stream is already closed"
 msgid "Truncate not supported on base stream"
 msgstr "Truncate not supported on base stream"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -299,22 +299,22 @@ msgstr "Not enough space in destination"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Invalid byte sequence in conversion input"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Error during conversion: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Cancellable initialisation not supported"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Conversion from character set “%s” to “%s” is not supported"
@@ -338,19 +338,23 @@ msgstr "Unknown type"
 msgid "%s filetype"
 msgstr "%s filetype"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials contains invalid data"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials is not implemented on this OS"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "There is no GCredentials support for your platform"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials does not contain a process ID on this OS"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Credentials spoofing is not possible on this OS"
 
@@ -358,7 +362,7 @@ msgstr "Credentials spoofing is not possible on this OS"
 msgid "Unexpected early end-of-stream"
 msgstr "Unexpected early end-of-stream"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Unsupported key “%s” in address entry “%s”"
@@ -377,32 +381,28 @@ msgstr ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Error in address “%s” — the port attribute is malformed"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Error in address “%s” — the family attribute is malformed"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Error in address “%s” — the “%s” attribute is malformed"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Unknown or unsupported transport “%s” for address “%s”"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Address element “%s” does not contain a colon (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transport name in address element “%s” must not be empty"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -411,14 +411,14 @@ msgstr ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -427,7 +427,7 @@ msgstr ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -436,75 +436,75 @@ msgstr ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Error in address “%s” — the host attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Error in address “%s” — the port attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Error in address “%s” — the noncefile attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Error auto-launching: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Error opening nonce file “%s”: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Error reading from nonce file “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Error writing contents of nonce file “%s” to stream:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "The given address is empty"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Cannot spawn a message bus when setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Cannot spawn a message bus without a machine-id: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Cannot autolaunch D-Bus without X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Error spawning command line “%s”: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 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:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -513,7 +513,7 @@ msgstr ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -521,102 +521,102 @@ msgstr ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Unknown bus type %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Unexpected lack of content trying to read a line"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Unexpected lack of content trying to (safely) read a line"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Error when getting information for directory “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Error creating directory “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Error opening keyring “%s” for reading: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Didn’t find cookie with id %d in the keyring at “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Error deleting stale lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Error creating lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Error closing (unlinked) lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Error unlinking lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Error opening keyring “%s” for writing: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Additionally, releasing the lock for “%s” also failed: %s) "
@@ -635,105 +635,105 @@ msgid ""
 msgstr ""
 "Unsupported flags encountered when constructing a client-side connection"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, 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:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "No such property “%s”"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Property “%s” is not readable"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Property “%s” is not writable"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, 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:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "No such interface “%s”"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, 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:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "No such method “%s”"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, 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:5194
+#: gio/gdbusconnection.c:5205
 #, 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:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Unable to retrieve property %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Unable to set property %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Method “%s” returned type “%s”, but expected “%s”"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, 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:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "A subtree is already exported for %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "type is INVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL message: PATH or MEMBER header field is missing"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -741,7 +741,7 @@ msgstr ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -749,19 +749,19 @@ msgstr ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Wanted to read %lu byte but only got %lu"
 msgstr[1] "Wanted to read %lu bytes but only got %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Expected NUL byte after the string “%s” but found byte %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -770,17 +770,21 @@ msgstr ""
 "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”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Value nested too deeply"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Parsed value “%s” is not a valid D-Bus object path"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Parsed value “%s” is not a valid D-Bus signature"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -791,7 +795,7 @@ msgstr[0] ""
 msgstr[1] ""
 "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -800,19 +804,19 @@ msgstr ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
 "bytes, but found to be %u bytes in length"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Parsed value “%s” for variant is not a valid D-Bus signature"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Error deserialising GVariant with type string “%s” from the D-Bus wire format"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -821,60 +825,60 @@ msgstr ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Invalid major protocol version. Expected 1 but found %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Signature header found but is not of type signature"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Signature header with signature “%s” found but message body is empty"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Parsed value “%s” is not a valid D-Bus signature (for body)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "No signature header in message but the message body is %u byte"
 msgstr[1] "No signature header in message but the message body is %u bytes"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Cannot deserialise message: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Error serialising GVariant with type string “%s” to the D-Bus wire format"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Cannot serialise message: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Message body has signature “%s” but there is no signature header"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -883,36 +887,36 @@ msgstr ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Message body is empty but signature in the header field is “(%s)”"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Error return with body of type “%s”"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Error return with empty body"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Type any character to close this window)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Session dbus not running, and autolaunch failed"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Unable to get Hardware profile: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 
@@ -936,25 +940,25 @@ msgstr ""
 "owner, and proxy was constructed with the "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Abstract namespace not supported"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Cannot specify nonce file when creating a server"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Error writing nonce file at “%s”: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "The string “%s” is not a valid D-Bus GUID"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Cannot listen on unsupported transport “%s”"
@@ -1232,38 +1236,38 @@ msgstr "Error: Too many arguments.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Error: %s is not a valid well-known bus name.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Unnamed"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop file didn’t specify Exec field"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Unable to find terminal required for application"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, 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:3383
+#: gio/gdesktopappinfo.c:3410
 #, 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:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Application information lacks an identifier"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Can’t create user desktop file %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Custom definition for %s"
@@ -1324,12 +1328,12 @@ msgstr "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Expected a GEmblem for GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operation not supported"
@@ -1338,69 +1342,73 @@ msgstr "Operation not supported"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Containing mount does not exist"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Can’t copy over directory"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Can’t copy directory over directory"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Target file exists"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Can’t recursively copy directory"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Splice not supported"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Error splicing file: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copy (reflink/clone) between mounts is not supported"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copy (reflink/clone) is not supported or invalid"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copy (reflink/clone) is not supported or didn’t work"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Can’t copy special file"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Invalid symlink value given"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Symbolic links not supported"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Wastebasket not supported"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "File names cannot contain “%c”"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volume doesn’t implement mount"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "No application is registered as handling this file"
 
@@ -1445,7 +1453,7 @@ msgstr "Truncate not allowed on input stream"
 msgid "Truncate not supported on stream"
 msgstr "Truncate not supported on stream"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Invalid hostname"
@@ -1562,7 +1570,7 @@ msgstr "Keep with file when moved"
 msgid "“version” takes no arguments"
 msgstr "“version” takes no arguments"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Usage:"
 
@@ -1648,10 +1656,10 @@ msgid "Error writing to stdout"
 msgstr "Error writing to stdout"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1671,56 +1679,60 @@ msgstr ""
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "No locations given"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "No target directory"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Show progress"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Prompt before overwrite"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Preserve all attributes"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Backup existing destination files"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Never follow symbolic links"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Use default permissions for the destination"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Transferred %s out of %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "SOURCE"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINATION"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copy one or more files from SOURCE to DESTINATION."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1730,88 +1742,98 @@ msgstr ""
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Destination %s is not a directory"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: overwrite “%s”? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "List writable attributes"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Get file system info"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "The attributes to get"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTES"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Don’t follow symbolic links"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "attributes:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "display name: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "edit name: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "name: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "type: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "size: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "hidden\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "local path: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix mount: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Settable attributes:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Writable attribute namespaces:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Show information about locations."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1825,23 +1847,28 @@ msgstr ""
 "be specified with their GIO name, e.g. standard::icon, or just by\n"
 "namespace, e.g. unix, or by “*”, which matches all attributes"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Show hidden files"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Use a long listing format"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+#| msgid "display name: %s\n"
+msgid "Print display names"
+msgstr "Print display names"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Print full URIs"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "List the contents of the locations."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1967,12 +1994,13 @@ msgid "Mount as mountable"
 msgstr "Mount as mountable"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Mount volume with device file"
+#| msgid "Mount volume with device file"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Mount volume with device file, or other identifier"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "DEVICE"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -1986,6 +2014,10 @@ msgstr "Eject"
 msgid "Stop drive with device file"
 msgstr "Stop drive with device file"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DEVICE"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Unmount all mounts with the given scheme"
@@ -2039,16 +2071,12 @@ msgstr "Anonymous access denied"
 msgid "No drive for device file"
 msgstr "No drive for device file"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Mounted %s at %s\n"
+#: gio/gio-tool-mount.c:1014
+#| msgid "No volume for device file"
+msgid "No volume for given ID"
+msgstr "No volume for given ID"
 
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "No volume for device file"
-
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Mount or unmount the locations."
 
@@ -2853,7 +2881,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Can’t rename file, filename already exists"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Invalid filename"
 
@@ -2927,129 +2955,125 @@ msgstr "Filesystem does not support symbolic links"
 msgid "Error making symbolic link %s: %s"
 msgstr "Error making symbolic link %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Symbolic links not supported"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Error moving file %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Can’t move directory over directory"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Backup file creation failed"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Error removing target file: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Move between mounts not supported"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Could not determine the disk usage of %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Attribute value must be non-NULL"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Invalid attribute type (string expected)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Invalid extended attribute name"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Error setting extended attribute “%s”: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (invalid encoding)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Error when getting information for file “%s”: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Error when getting information for file descriptor: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Invalid attribute type (uint32 expected)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Invalid attribute type (uint64 expected)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Invalid attribute type (byte string expected)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Cannot set permissions on symlinks"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Error setting permissions: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Error setting owner: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "symlink must be non-NULL"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Error setting symlink: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Error setting symlink: file is not a symlink"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Error setting modification or access time: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux context must be non-NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Error setting SELinux context: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux is not enabled on this system"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Setting attribute %s not supported"
@@ -3072,7 +3096,7 @@ msgstr "Error seeking in file: %s"
 msgid "Error closing file: %s"
 msgstr "Error closing file: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Unable to find default local file monitor type"
 
@@ -3215,11 +3239,11 @@ msgstr "mount doesn’t implement synchronous content type guessing"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Hostname “%s” contains “[” but not “]”"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Network unreachable"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Host unreachable"
 
@@ -3260,18 +3284,18 @@ msgstr "Sum of vectors passed to %s too large"
 msgid "Source stream is already closed"
 msgstr "Source stream is already closed"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Error resolving “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s not implemented"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Invalid domain"
 
@@ -3645,172 +3669,172 @@ msgstr "Empty schema name given\n"
 msgid "No such key “%s”\n"
 msgstr "No such key “%s”\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Invalid socket, not initialised"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Invalid socket, initialisation failed due to: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Socket is already closed"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Socket I/O timed out"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creating GSocket from fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Unable to create socket: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Unknown family was specified"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Unknown protocol was specified"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Cannot use datagram operations on a non-datagram socket."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Cannot use datagram operations on a socket with a timeout set."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "could not get local address: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "could not get remote address: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "could not listen: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Error binding to address: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Error binding to address %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Error joining multicast group: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Error leaving multicast group: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "No support for source-specific multicast"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Unsupported socket family"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific not an IPv4 address"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Interface name too long"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface not found: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "No support for IPv4 source-specific multicast"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "No support for IPv6 source-specific multicast"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Error accepting connection: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Connection in progress"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Unable to get pending error: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Error receiving data: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Error sending data: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Unable to shutdown socket: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Error closing socket: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Waiting for socket condition: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error sending message: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage not supported on Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Error receiving message: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Unable to read socket credentials: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials not implemented for this OS"
 
@@ -4072,7 +4096,7 @@ msgstr "Error reading from file descriptor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Error closing file descriptor: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Filesystem root"
 
@@ -4159,72 +4183,72 @@ msgstr "Wrong args\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Unexpected attribute “%s” for element “%s”"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Attribute “%s” of element “%s” not found"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Unexpected tag “%s”, tag “%s” expected"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Unexpected tag “%s” inside “%s”"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Invalid date/time ‘%s’ in bookmark file"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "No valid bookmark file found in data dirs"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "A bookmark for URI “%s” already exists"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "No bookmark found for URI “%s”"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "No MIME type defined in the bookmark for URI “%s”"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "No private flag has been defined in bookmark for URI “%s”"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "No groups set in bookmark for URI “%s”"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "No application with name “%s” registered a bookmark for “%s”"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Failed to expand exec line “%s” with URI “%s”"
@@ -4233,8 +4257,8 @@ msgstr "Failed to expand exec line “%s” with URI “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Unrepresentable character in conversion input"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Partial character sequence at end of input"
 
@@ -4776,24 +4800,24 @@ msgstr "Template “%s” doesn’t contain XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Failed to read the symbolic link “%s”: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Could not open converter from “%s” to “%s”: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Can’t do a raw read in g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Leftover unconverted data in read buffer"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Channel terminates in a partial character"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Can’t do a raw read in g_io_channel_read_to_end"
 
@@ -4832,8 +4856,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Key file contains unsupported encoding “%s”"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Key file does not have group “%s”"
@@ -4869,31 +4893,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Key “%s” in group “%s” has value “%s” where %s was expected"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Key file contains escape character at end of line"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Key file contains invalid escape sequence “%s”"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Value “%s” cannot be interpreted as a number."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Integer value “%s” out of range"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Value “%s” cannot be interpreted as a float number."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Value “%s” cannot be interpreted as a boolean."
@@ -4981,11 +5005,11 @@ msgstr ""
 "Entity did not end with a semicolon; most likely you used an ampersand "
 "character without intending to start an entity — escape ampersand as &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Document must begin with an element (e.g. <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -4994,7 +5018,7 @@ msgstr ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5003,14 +5027,19 @@ msgstr ""
 "Odd character “%s”: expected a '>' character to end the empty-element tag "
 "“%s”"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Too many attributes in element “%s”"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr ""
 "Odd character “%s”, expected a '=' after attribute name “%s” of element “%s”"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5021,7 +5050,7 @@ msgstr ""
 "element “%s”, or optionally an attribute; perhaps you used an invalid "
 "character in an attribute name"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5030,7 +5059,7 @@ msgstr ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
 "giving value for attribute “%s” of element “%s”"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5039,7 +5068,7 @@ msgstr ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5048,25 +5077,25 @@ msgstr ""
 "“%s” is not a valid character following the close element name “%s”; the "
 "allowed character is '>'"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Element “%s” was closed, no element is currently open"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Element “%s” was closed, but the currently open element is “%s”"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Document was empty or contained only whitespace"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Document ended unexpectedly just after an open angle bracket “<”"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5075,7 +5104,7 @@ msgstr ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5084,19 +5113,19 @@ msgstr ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
 "the tag <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Document ended unexpectedly inside an element name"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Document ended unexpectedly inside an attribute name"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Document ended unexpectedly inside an element-opening tag."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5104,80 +5133,80 @@ msgstr ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Document ended unexpectedly while inside an attribute value"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Document ended unexpectedly inside the close tag for element “%s”"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Document ended unexpectedly inside a comment or processing instruction"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPTION…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Help Options:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Show help options"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Show all help options"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Application Options:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Options:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Cannot parse integer value “%s” for %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Integer value “%s” for %s out of range"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Cannot parse double value “%s” for %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "Double value “%s” for %s out of range"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Error parsing option %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Missing argument for %s"
 
-#: glib/goption.c:2182
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Unknown option %s"
@@ -5576,77 +5605,77 @@ msgstr "Text was empty (or contained only whitespace)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Failed to read data from child process (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Unexpected error in reading data from a child process (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Unexpected error in waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Child process exited with code %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Child process killed by signal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Child process stopped by signal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Child process exited abnormally"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Failed to read from child pipe (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Failed to spawn child process “%s” (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Failed to fork (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Failed to change to directory “%s” (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Failed to execute child process “%s” (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Failed to redirect output or input of child process (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Failed to fork child process (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Unknown error executing child process “%s”"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Failed to read enough data from child pid pipe (%s)"
@@ -5698,194 +5727,194 @@ msgstr ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Empty string is not a number"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” is not a signed number"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Number “%s” is out of bounds [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” is not an unsigned number"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Failed to allocate memory"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Character out of range for UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Invalid sequence in conversion input"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Character out of range for UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5893,7 +5922,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5901,7 +5930,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5913,36 +5942,45 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "Mounted %s at %s\n"
+
+#~ msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+#~ msgstr "This GTlsBackend does not support creating PKCS #11 certificates"
+
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Error in address “%s” — the family attribute is malformed"
+
 #~ msgid "No such method '%s'"
 #~ msgstr "No such method '%s'"
 
index c6ed83e..cfba3ad 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -8,14 +8,14 @@
 #
 #
 # Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011, 2012.
-# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2019.
+# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib.master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
-"PO-Revision-Date: 2019-08-22 12:16+0200\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-04 10:50+0100\n"
 "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
 "Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
 "Language: es_ES\n"
@@ -23,7 +23,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 3.32.1\n"
+"X-Generator: Gtranslator 3.34.0\n"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -124,8 +124,8 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Identificador de la aplicación en formato D-Bus (ej. org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "ARCHIVO"
@@ -290,7 +290,7 @@ msgstr "El flujo ya se cerró"
 msgid "Truncate not supported on base stream"
 msgstr "No se soporta el truncado en el flujo base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -310,22 +310,22 @@ msgstr "No hay suficiente espacio en el destino"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Hay una secuencia de bytes no válida en la entrada de conversión"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Falló durante la conversión: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "La inicialización cancelable no eestá soportada"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr ""
@@ -350,19 +350,23 @@ msgstr "Tipo desconocido"
 msgid "%s filetype"
 msgstr "tipo de archivo %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials contiene datos no válidos"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials no está implementado en este SO"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "No existe soporte de GCredentials para su plataforma"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials no contiene un ID de proceso en este SO"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "No se soporta la burla de credenciales en este SO"
 
@@ -370,7 +374,7 @@ msgstr "No se soporta la burla de credenciales en este SO"
 msgid "Unexpected early end-of-stream"
 msgstr "Final de flujo inesperadamente prematuro"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Clave «%s» no soportada en la entrada de dirección «%s»"
@@ -390,33 +394,29 @@ msgstr ""
 "La dirección «%s» no es válida (se necesita exactamente una ruta, carpeta, "
 "carpeta temporal o claves abstractas)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Error en la dirección «%s»; el atributo de puerto está mal formado"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Error en la dirección «%s»; el atributo de familia está mal formado"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Error en la dirección «%s» —  el atributo «%s» está mal formado"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transporte «%s» desconocido o no soportado para la dirección «%s»"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "El elemento de dirección «%s» no contiene dos puntos (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "El nombre del transporte en el elemento de dirección «%s» no debe estar vacío"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -425,7 +425,7 @@ msgstr ""
 "El par clave/valor %d, «%s», en el elemento de dirección «%s», no contiene "
 "un signo de igual"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -433,7 +433,7 @@ msgstr ""
 "El par clave/valor %d, «%s», en el elemento de dirección «%s», no debe "
 "contener una clave vacía"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -442,7 +442,7 @@ msgstr ""
 "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:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -451,86 +451,86 @@ msgstr ""
 "Error en la dirección «%s»: el transporte UNIX requiere exactamente que una "
 "de las claves «path» o «abstract» esté establecida"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Error en la dirección «%s»: falta o está mal formado el atributo para el "
 "servidor"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Error en la dirección «%s»: falta o está mal formado el atributo para el "
 "puerto"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Error en la dirección «%s»: falta o está mal formado el atributo para el "
 "archivo de número usado una sola vez"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Error al autolanzar: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Error al abrir el archivo de número usado una sola vez «%s»: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Error al leer el archivo de número usado una sola vez «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Error al leer el archivo de número usado una sola vez «%s», se esperaban 16 "
 "bytes, se obtuvieron %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Error al escribir el contenido del archivo de número usado una sola vez «%s» "
 "al flujo:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "La dirección proporcionada está vacía"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "No se puede lanzar («spawn») un mensaje al bus con setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "No se puede lanzar («spawn») un mensaje al bus sin un ID de máquina: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "No se puede lanzar D-Bus automáticamente sin X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Error al lanzar («spawn») el comando «%s»: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "No se puede determinar la dirección del bus de sesión (no implementado para "
 "este SO)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -539,7 +539,7 @@ msgstr ""
 "No se puede determinar la dirección del bus desde la variable de entorno "
 "DBUS_STARTER_BUS_TYPE; variable «%s» desconocida"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -547,21 +547,21 @@ msgstr ""
 "No se puede determinar la dirección del bus porque la variable de entorno "
 "DBUS_STARTER_BUS_TYPE no está establecida"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo de bus %d desconocido"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Falta de contenido inesperada al intentar leer una línea"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Falta de contenido inesperada al intentar leer (de forma segura) una línea"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -569,16 +569,16 @@ msgstr ""
 "Se agotaron todos los mecanismos de autenticación (intentados: %s) "
 "(disponibles: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelado a través de GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Error al obtener la información de la carpeta «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -586,24 +586,24 @@ msgstr ""
 "Los permisos de la carpeta «%s» están mal formados. Se esperaba el modo "
 "0700, se obtuvo 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Error al crear la carpeta %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Error al abrir el depósito de claves «%s» para su lectura: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, 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"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -611,7 +611,7 @@ msgstr ""
 "El primer token de la línea %d del depósito de claves en «%s» con contenido "
 "«%s» está mal formado"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -619,37 +619,37 @@ msgstr ""
 "El segundo token de la línea %d del depósito de claves en «%s» con contenido "
 "«%s» está mal formado"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "No se encontró la «cookie» con ID %d en el depósito de claves en «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Error al eliminar el archivo de bloqueo antiguo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Error al crear el archivo de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Error al cerrar (desenlazar) el archivo de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Error al desenlazar el archivo de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Error al abrir el depósito de claves «%s» para su escritura:"
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
@@ -670,7 +670,7 @@ msgstr ""
 "Se encontraron opciones no soportadas al construir la conexión del lado del "
 "cliente"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -678,101 +678,101 @@ msgstr ""
 "No existe la interfaz «org.freedesktop.DBus.Properties» en el objeto en la "
 "ruta %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "No existe la propiedad «%s»"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "No se puede leer la propiedad «%s»"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "No se puede escribir la propiedad «%s»"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, 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»."
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "La interfaz «%s» no existe"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, 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:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "No existe el método «%s»"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "El tipo de mensaje, «%s», no coincide con el tipo esperado «%s»"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, 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:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "No se pudo obtener la propiedad %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "No se pudo establecer la propiedad %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, 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:6729
+#: gio/gdbusconnection.c:6742
 #, 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:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ya se ha exportado un subárbol para %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "el tipo no es válido («INVALID»)"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Mensaje de METHOD_CALL: falta el campo de cabecera PATH o MEMEBER"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Mensaje de METHOD_RETURN: falta el campo de cabecera REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Mensaje de ERROR: falta el campo de cabecera REPLY_SERRIAL o ERROR_NAME"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Mensaje de SIGNAL: falta el campo de cabecera PATH, INTERFACE o MEMBER"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -780,7 +780,7 @@ msgstr ""
 "Mensaje de SIGNAL: el campo de cabecera PATH está usando el valor reservado /"
 "org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -788,21 +788,21 @@ msgstr ""
 "Mensaje de SIGNAL: el campo de cabecera INTERFACE está usando el valor "
 "reservado org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Se quería leer %lu byte pero sólo se obtuvo %lu"
 msgstr[1] "Se querían leer %lu bytes pero sólo se obtuvo %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, 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"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -812,17 +812,21 @@ msgstr ""
 "en el byte desplazado %d (la longitud de la cadena es %d). La cadena UTF-8 "
 "válida hasta ese punto era «%s»."
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Valor anidado demasiado profundamente"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "El valor analizado «%s» no es un objeto de ruta D-Bus válido"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "El valor analizado «%s» no es una firma de D-Bus válida"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -835,7 +839,7 @@ msgstr[1] ""
 "Se encontró un array de longitud %u bytes. La longitud máxima es 2<<26 bytes "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -844,13 +848,13 @@ msgstr ""
 "Encontrado un vector de tipo «a%c», esperando que su longitud fuese múltiplo "
 "de %u bytes, pero su longitud es de %u"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "El valor analizado «%s» para la variante no es una firma de D-Bus válida"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -858,7 +862,7 @@ msgstr ""
 "Error al deserializar GVariant con el tipo de cadena «%s» al formato de "
 "mensaje de D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -867,31 +871,31 @@ msgstr ""
 "Valor endian no válido. Se esperaba 0x6c («l») o 0x42 («B»)» pero se obtuvo "
 "el valor 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "La versión principal del protocolo no es válida. Se esperaba 1 pero se "
 "encontró %d."
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Cabecera de firma encontrada pero no es del tipo firma"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Se encontró la cabecera de firma con firma «%s» pero el cuerpo del mensaje "
 "está vacío"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "El valor analizado «%s» no es una firma de D-Bus válida (para el cuerpo)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -902,11 +906,11 @@ msgstr[1] ""
 "No existe la cabecera de firma en el mensaje pero el cuerpo del mensaje "
 "tiene %u bytes"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "No se puede deserializar el mensaje: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -914,7 +918,7 @@ msgstr ""
 "Error al serializar GVariant con el tipo de cadena «%s» al formato de "
 "mensaje de D-Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -922,17 +926,17 @@ msgstr ""
 "El número de descriptores de archivos en el mensaje (%d) es distinto del "
 "campo de cabecera (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "No se puede serializar el mensaje: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "El cuerpo del mensaje tiene la firma «%s» pero no existe la cabecera de firma"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -941,39 +945,39 @@ msgstr ""
 "El cuerpo del mensaje tiene un tipo de firma «%s» pero la firma en el campo "
 "de cabecera es «%s»"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, 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)»"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Error al devolver el cuerpo de tipo «%s»"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Error al devolver un cuepro vacío"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Escriba un carácter cualquiera para cerrar esta ventana)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "La sesión de dbus no está en ejecución, y falló el lanzamiento automático"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "No se pudo obtener el perfil de hardware: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "No se puede cargar /var/lib/dbus/machine-id o /etc/machine-id: "
 
@@ -997,27 +1001,27 @@ msgstr ""
 "%sconocido y el proxy se construyó con la opción "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Espacio de nombres abstracto no soportado"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 "No se puede especificar el archivo de número usado una sola vez al crear un "
 "servidor"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Error al escribir el archivo de número usado una sola vez en «%s»: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "La cadena «%s» no es un GUID válido de D-Bus"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "No se puede escuchar en un transporte no soportado «%s»"
@@ -1297,40 +1301,40 @@ msgstr "Demasiados argumentos.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Error: %s no es un nombre de bus conocido válido\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Sin nombre"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "El archivo de escritorio no especificó el campo Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Imposible encontrar el terminal requerido por la aplicación"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, 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:3383
+#: gio/gdesktopappinfo.c:3410
 #, 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:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "La información de la aplicación carece de un identificador"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, 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:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definición personalizada para %s"
@@ -1391,12 +1395,12 @@ msgstr "Número de tokens (%d) mal formados en la codificación GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Se esperaba un GEmblem para GEmblemedIconjo"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operación no soportada"
@@ -1405,69 +1409,73 @@ msgstr "Operación no soportada"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "El punto de montaje contenido no existe"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "No se puede copiar sobre la carpeta"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "No se puede copiar una carpeta sobre otra"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "El archivo destino ya existe"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "No se puede copiar la carpeta recursivamente"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "La unión no  está soportada"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Error al unir el archivo: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copiar (reflink/clone) entre puntos de montaje no está soportado"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copiar (reflink/clone) no está soportado o no es válido"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copiar (reflink/clone) no está soportado o no ha funcionado"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "No se puede copiar el archivo especial"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "El valor del enlace simbólico dado no es válido"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Enlaces simbólicos no soportados"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "No se soporta mover a la papelera"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Los nombres de archivo no pueden contener «%c»"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "el volumen no implementa el montaje"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "No hay ninguna aplicación registrada para manejar este archivo"
 
@@ -1512,7 +1520,7 @@ msgstr "No se permite truncar en el flujo de entrada"
 msgid "Truncate not supported on stream"
 msgstr "No se soporta el truncamiento en el flujo"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "El nombre del host no es válido"
@@ -1630,7 +1638,7 @@ msgstr "Mantener con archivo cuando se mueva"
 msgid "“version” takes no arguments"
 msgstr "«version» no lleva ningún argumento"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Uso:"
 
@@ -1718,10 +1726,10 @@ msgid "Error writing to stdout"
 msgstr "Error al escribir en la salida estándar"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1741,56 +1749,60 @@ msgstr ""
 "ubicaciones GIO en lugar de archivos locales: por ejemplo, puede\n"
 "usar algo como smb://servidor/recurso/archivo.txt como ubicación."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "No se han proporcionado ubicaciones"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "No hay carpeta de destino"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Mostrar progreso"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Preguntar antes de sobrescribir"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Conservar todos los atributos"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Respaldar los archivos de destino existentes"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "No seguir nunca enlaces simbólicos"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Usar permisos predeterminados para el destino"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Transferido %s de %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "ORIGEN"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINO"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copiar uno o más archivos desde el ORIGEN al DESTINO."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1800,88 +1812,98 @@ msgstr ""
 "ubicaciones GIO en lugar de archivos locales: por ejemplo, puede\n"
 "usar algo como smb://servidor/recurso/archivo.txt como ubicación."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "El destino %s no es una carpeta"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: ¿sobrescribir «%s» ? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Listar los atributos que se pueden escribir"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Obtener información del sistema de archivos"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Los atributos que obtener"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTOS"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "No seguir enlaces simbólicos"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atributos:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "nombre que mostrar: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "nombre editado: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "nombre: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "tipo: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "tamaño: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "oculto\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "URI: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "ruta local: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "montaje unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Atributos que se pueden establecer:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Espacios de nombres de atributos que se pueden escribir:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Mostrar información sobre las ubicaciones."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1896,23 +1918,27 @@ msgstr ""
 "o simplemente por su espacio de nombres, ej. unix o con «*», que obtiene "
 "todos los atributos"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Mostrar archivos ocultos"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Usar un formato de listado largo"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Imprimir nombres que mostrar"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Imprimir URI completos"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Listar el contenido de las ubicaciones."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2044,12 +2070,12 @@ msgid "Mount as mountable"
 msgstr "Montar como montable"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Montar volumen con archivo de dispositivo"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Montar volumen con archivo de dispositivo u otro identificador"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "DISPOSITIVO"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2063,6 +2089,10 @@ msgstr "Expulsar"
 msgid "Stop drive with device file"
 msgstr "Detener unidad con archivo de dispositivo"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DISPOSITIVO"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Desmontar todos los puntos de montaje con el esquema dado"
@@ -2116,16 +2146,11 @@ msgstr "Acceso anónimo denegado"
 msgid "No drive for device file"
 msgstr "No hay unidad para el archivo de dispositivo"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s montado en %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "No hay volumen para el archivo de dispositivo"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "No hay volumen para el ID dado"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Montar o desmontar las ubicaciones."
 
@@ -2341,20 +2366,20 @@ msgstr "Error al leer el archivo %s: %s"
 msgid "Error compressing file %s"
 msgstr "Error al comprimir el archivo %s"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "El texto no debe aparecer dentro de <%s>"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostrar la versión del programa y salir"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Nombre del archivo de salida"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2362,49 +2387,49 @@ msgstr ""
 "La carpeta de la que se tienen que leer los archivos indicados en ARCHIVO "
 "(la predeterminada es la carpeta actual)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "CARPETA"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generar salida en el formato seleccionado por la extensión del nombre del "
 "archivo objetivo"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Generar cabecera fuente"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Generar el código fuente usado para enlazar el archivo del recurso en su "
 "código fuente"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Generar lista de dependencias"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Nombre del archivo de dependencias que generar"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Incluir objetivos falsos en el archivo de dependencias generado"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "No crear y registrar automáticamente un recurso"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "No exportar funciones; declararlas como G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2412,11 +2437,11 @@ msgstr ""
 "No incluir datos de recursos en el archivo C; en su lugar, asumir que está "
 "enlazado de manera externa"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "Nombre del identificador C usado para el código fuente generado"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2427,7 +2452,7 @@ msgstr ""
 "gresource.xml,\n"
 "y el archivo del recurso debe tener la extensión se llama .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Deberá proporcionar exactamente un nombre de archivo\n"
 
@@ -2798,9 +2823,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:1993
 #, c-format
-#| msgid ""
-#| "Cannot provide per-desktop overrides for localised key “%s” in schema "
-#| "“%s” (override file “%s”); ignoring override for this key."
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”); ignoring override for this key."
@@ -2810,9 +2832,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2002
 #, c-format
-#| msgid ""
-#| "Cannot provide per-desktop overrides for localised key “%s” in schema "
-#| "“%s” (override file “%s”) and --strict was specified; exiting."
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”) and --strict was specified; exiting."
@@ -2953,7 +2972,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "No se puede renombrar el archivo, el nombre de archivo ya existe"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Nombre de archivo no válido"
 
@@ -3028,130 +3047,126 @@ msgstr "El sistema de archivos no soporta enlaces simbólicos"
 msgid "Error making symbolic link %s: %s"
 msgstr "Error al crear el enlace simbólico %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Enlaces simbólicos no soportados"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Error al mover el archivo %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "No se puede mover una carpeta sobre una carpeta"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Falló la creación del archivo de respaldo"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Error al eliminar el archivo destino: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "No se soporta mover archivos entre puntos de montaje"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "No se pudo determinar el uso de disco de %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "El valor del atributo de ser no nulo"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Tipo de atributo no válido (se esperaba una cadena)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Nombre extendido del atributo no válido"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Error al establecer el atributo extendido «%s»: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (codificación no válida)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Error al obtener la información del archivo «%s»: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Error al obtener la información del descriptor del archivo: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Tipo de atributo no válido (se esperaba uint32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Tipo de atributo no válido (se esperaba uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Tipo de atributo no válido (se esperaba una cadena byte)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "No se pueden establecer permisos en enlaces simbólicos"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Error al establecer permisos: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Error al establecer el propietario: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "el enlace simbólico debe ser no nulo"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Error al establecer el enlace simbólico: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Error al establecer el enlace simbólico: el archivo no es un enlace simbólico"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Error al establecer o modificar el tiempo de acceso: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "El contexto SELinux debe ser no nulo"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Error al establecer el contexto SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux no está activado en este sistema"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Establecer el atributo %s no está soportado"
@@ -3174,7 +3189,7 @@ msgstr "Error al buscar en el archivo: %s"
 msgid "Error closing file: %s"
 msgstr "Error al cerrar el archivo: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr ""
 "No se pudo encontrar el tipo de monitorización del archivo local "
@@ -3324,11 +3339,11 @@ msgstr ""
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "El nombre del equipo «%s» contiene «[» pero no «]»"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Red no alcanzable"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Equipo no alcanzable"
 
@@ -3369,18 +3384,18 @@ msgstr "La suma de vectores pasada a %s es demasiado grande"
 msgid "Source stream is already closed"
 msgstr "El flujo de origen ya está cerrado"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Error al resolver «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s no está implementado"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Dominio no válido"
 
@@ -3757,176 +3772,176 @@ msgstr "Se proporcionó un nombre de esquema vacío\n"
 msgid "No such key “%s”\n"
 msgstr "No existe la clave «%s»\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Socket no válido, no inicializado"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Socket no válido, falló la instalación debido a: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "El socket ya está cerrado"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Expiró la E/S del socket"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creando el GSocket desde fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "No se pudo crear el socket: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Se especificó una familia desconocida"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Se especificó un protocolo desconocido"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "No se pueden usar operaciones de datagrama en un zócalo que no es de "
 "datagrama."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "No se pueden usar operaciones de datagrama en un zócalo sin un tiempo de "
 "expiración establecido."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "no se pudo obtener la dirección local: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "no se pudo obtener la dirección remota: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "no se pudo escuchar: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Error al vincular con la dirección: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Error al vincular con la dirección %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Error al unirse al grupo de multicast: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Error al abandonar al grupo de multicast: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "No se soporta el multicast específico de la fuente"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Familia del socket no soportada"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "la fuente específica no es una dirección IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "El nombre de la interfaz es demasiado largo"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interfaz no encontrada: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "No se soporta el multicast específico de la fuente para IPv4"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "No se soporta el multicast específico de la fuente para IPv6"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Error al aceptar la conexión: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Conexión en progreso"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "No se pudo obtener el error pendiente: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Error al recibir los datos: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Error al enviar los datos: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "No se pudo desconectar el socket: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Error al cerrar el socket: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Esperando la condición del socket: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error al enviar el mensaje: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage no está soportado en Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Error al recibir el mensaje: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "No se pudieron leer las credenciales del socket: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials no está implementado en este SO"
 
@@ -4194,7 +4209,7 @@ msgstr "Error al leer del descriptor del archivo: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Error al cerrar el descriptor del archivo: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Sistema de archivos raíz"
 
@@ -4282,74 +4297,74 @@ msgstr "Argumentos incorrectos\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Atributo inesperado «%s» para el elemento «%s»"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "El atributo «%s» del elemento «%s» no se ha encontrado"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Etiqueta «%s» inesperada, se esperaba la etiqueta «%s»"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Etiqueta «%s» inesperada dentro de «%s»"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Fecha/hora «%s» no válida en el archivo de marcadores"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 "No se pudo encontrar ningún archivo de marcadores válido en las carpetas de "
 "datos"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Ya existe un marcador para el URI «%s»"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "No se encontró un marcador para el URI «%s»"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Ningún tipo MIME definido en el marcador para la URI «%s»"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "No se ha definido ningún flag privado en el marcador para el URI «%s»"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "No se ha establecido ningún grupo en el marcador para el URI «%s»"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Ninguna aplicación con nombre «%s» registró un marcador para «%s»"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Falló la expansión de lalinea ejecutable «%s» con el URI «%s»"
@@ -4358,8 +4373,8 @@ msgstr "Falló la expansión de lalinea ejecutable «%s» con el URI «%s»"
 msgid "Unrepresentable character in conversion input"
 msgstr "Carácter no representable en entrada de conversión"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Hay una secuencia parcial de caracteres en el final de la entrada"
 
@@ -4901,25 +4916,25 @@ msgstr "La plantilla «%s» no contiene XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Falló al leer el enlace simbólico «%s»: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "No se pudo abrir el conversor de «%s» a «%s»: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 "No se puede hacer una lectura en bruto (raw) en g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Se han dejado datos no convertidos en el búfer de lectura"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "El canal termina en un carácter parcial"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr ""
 "No se puede hacer una lectura en bruto (raw) en g_io_channel_read_to_end"
@@ -4961,8 +4976,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "El archivo de claves contiene una codificación «%s» no soportada"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "El archivo de claves no tiene el grupo «%s»"
@@ -5002,32 +5017,32 @@ msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "La clave «%s» en el grupo «%s» tiene el valor «%s», pero se esperaba %s"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr ""
 "El archivo de claves contiene un carácter de escape al final de la línea"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "El archivo de claves contiene la secuencia de escape no válida «%s»"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "El valor «%s» no puede interpretarse como un número."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "El valor entero «%s» está fuera de rango"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "El valor «%s» no puede interpretarse como un número de coma flotante."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "El valor «%s» no puede interpretarse como un booleano."
@@ -5119,11 +5134,11 @@ msgstr ""
 "\"&\" sin la intención de indicar una entidad, escape el signo \"&\" como "
 "&amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "El documento debe comenzar con un elemento (por ejemplo: <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5132,7 +5147,7 @@ msgstr ""
 "«%s» no es un carácter válido a continuación del carácter '<'; no debe "
 "iniciar un nombre de elemento"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5141,7 +5156,12 @@ msgstr ""
 "Carácter «%s» impropio, se esperaba un carácter «>» para terminar la "
 "etiqueta vacía del elemento «%s»"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Demasiados atributos en el elemento «%s»"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5149,7 +5169,7 @@ msgstr ""
 "Carácter «%s» impropio, se esperaba el carácter '=' después del nombre de "
 "atributo «%s» del elemento «%s»"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5160,7 +5180,7 @@ msgstr ""
 "etiqueta de inicio del elemento «%s» u opcionalmente un atributo; tal vez "
 "utilizó un carácter que no es válido en un nombre de atributo"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5169,7 +5189,7 @@ 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»"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5178,7 +5198,7 @@ msgstr ""
 "«%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:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5187,27 +5207,27 @@ msgstr ""
 "«%s» no es un carácter válido a continuación del nombre del elemento de "
 "cierre «%s»; el carácter permitido es '>'"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Se cerró el elemento «%s», no existe ningún elemento abierto"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, 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»"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "El documento estaba vacío o sólo contenía espacios en blanco"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "El documento termina inesperadamente justo después de un '<'"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5216,7 +5236,7 @@ msgstr ""
 "El documento termina inesperadamente con elementos todavía abiertos - «%s» "
 "fue el último elemento abierto"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5225,21 +5245,21 @@ msgstr ""
 "El documento termina inesperadamente, se esperaba un carácter '>' "
 "finalizando la etiqueta <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "El documento termina inesperadamente dentro de un nombre de elemento"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "El documento termina inesperadamente dentro de un nombre de atributo"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "El documento terminó inesperadamente dentro de una etiqueta de apertura de "
 "elemento."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5247,85 +5267,85 @@ msgstr ""
 "El documento termina inesperadamente después de los signos igual que siguen "
 "al nombre de atributo; sin valor de atributo"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "El documento termina inesperadamente dentro del valor de un atributo"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "El documento termina inesperadamente dentro de la etiqueta de cierre del "
 "elemento «%s»"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "El documento termina inesperadamente dentro de la etiqueta de cierre para un "
 "elemento no abierto"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "El documento termina inesperadamente dentro de un comentario o instrucción "
 "de proceso"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPCIÓN…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Opciones de ayuda:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Mostrar opciones de ayuda"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Muestra todas las opciones de ayuda"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Opciones de la aplicación:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Opciones:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "No se puede analizar el valor entero «%s» para %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "El valor entero «%s» para %s está fuera de rango"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "No se puede analizar el valor doble «%s» para %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "El valor doble «%s» para %s está fuera de rango"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Error al analizar la opción: %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Falta un argumento para %s"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opción desconocida %s"
@@ -5739,77 +5759,77 @@ msgstr "El texto está vacío (o sólo contiene espacios en blanco)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Falló en la lectura de datos desde el proceso hijo (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Falló inesperado en select() leyendo datos desde el proceso hijo (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Error inesperado al leer datos desde el proceso hijo (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Falló inesperado en waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "El proceso hijo terminó con el código %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "El proceso hijo terminado por la señal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "El proceso hijo se detuvo por la señal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "El proceso hijo terminó de forma anormal"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Falló al leer desde el conducto hijo (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Falló al ejecutar el proceso hijo «%s» (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Falló al bifurcar (fork) (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Falló al cambiar a la carpeta «%s» (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Falló al ejecutar el proceso hijo «%s» (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Falló al redirigir la salida o la entrada del proceso hijo (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Falló al bifurcar el proceso hijo (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Error desconocido al ejecutar el proceso hijo «%s»"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Falló al leer suficientes datos desde el conducto del pid hijo (%s)"
@@ -5863,194 +5883,194 @@ msgstr ""
 "Falló inesperado en g_io_channel_win32_poll() al leer datos desde un proceso "
 "hijo"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Una cadena vacía no es un número"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» no es un número con signo"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "El número «%s» está fuera de los límites [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» no es un número sin signo"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Falló al obtener memoria"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "El carácter se sale del rango para UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Secuencia no válida en la entrada de conversión"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "El carácter se sale del rango para UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6058,7 +6078,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6066,7 +6086,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6078,36 +6098,51 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+#~ msgstr "Este GTlsBackend no soporta crear certificados PKCS #11"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "%s montado en %s\n"
+
+#~ msgid "macOS"
+#~ msgstr "macOS"
+
+#~ msgid "Windows"
+#~ msgstr "Windows"
+
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Error en la dirección «%s»; el atributo de familia está mal formado"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; ignorando la sobrescritura para esta clave.\n"
 
index 40424fb..1b0aa15 100644 (file)
--- a/po/eu.po
+++ b/po/eu.po
@@ -5,13 +5,13 @@
 # Hizkuntza Politikarako Sailburuordetza <hizpol@ej-gv.es>, 2004.
 # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2004, 2005, 2006, 2007, 2008, 2009, 2010.
 # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2011, 2012, 2013, 2014, 2015, 2016, 2017.
-# Asier Sarasua Garmendia <asier.sarasua@gmail.com>, 2019.
+# Asier Sarasua Garmendia <asier.sarasua@gmail.com>, 2019, 2020.
 #
 msgid ""
 msgstr "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
-"PO-Revision-Date: 2019-08-23 10:00+0100\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-15 10:00+0100\n"
 "Last-Translator: Asier Sarasua Garmendia <asier.sarasua@gmail.com>\n"
 "Language-Team: Basque <librezale@librezale.eus>\n"
 "Language: eu\n"
@@ -114,8 +114,8 @@ msgstr "Erakutsi komandoaren laguntza xehea"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Aplikazioaren identifikatzailea D-bus formatuan (adib: org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "FITXATEGIA"
@@ -272,7 +272,7 @@ msgstr "Korrontea jadanik itxita dago"
 msgid "Truncate not supported on base stream"
 msgstr "Trunkatzea ez da onartzen oinarrizko korrontean"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -292,22 +292,22 @@ msgstr "Ez dago nahikoa lekurik helburuan"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Byteen sekuentzia baliogabea bihurketa-sarreran"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Errorea bihurtzean: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Hasieratzea bertan behera uztea ez dago onartuta"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "“%s” karaktere-multzoa “%s” bihurtzea ez da onartzen"
@@ -331,19 +331,23 @@ msgstr "Mota ezezaguna"
 msgid "%s filetype"
 msgstr "%s fitxategi mota"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials-ek baliogabeko datuak ditu"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials ez dago inplementatuta SE honetan"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Ez dago GCredentials euskarririk plataforma honetan"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials-ek ez dauka prozesuaren IDrik SE honetan"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Kredentzialak usurpatzea ezinezkoa da SE honetan"
 
@@ -351,7 +355,7 @@ msgstr "Kredentzialak usurpatzea ezinezkoa da SE honetan"
 msgid "Unexpected early end-of-stream"
 msgstr "Ustekabeko korronte-amaiera azkarregia"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Onartu gabeko “%s” gakoa helbidearen “%s” sarreran"
@@ -368,230 +372,226 @@ msgid ""
 "keys)"
 msgstr "“%s” helbidea baliogabea da (gako hauetako bat behar du: “path” (bide-izena), “tmpdir” (aldi baterako direktorioa) edo “abstract” (abstraktua))"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Errorea “%s” helbidean — atakaren atributua gaizki osatuta dago"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Errorea “%s” helbidean — familiaren atributua gaizki osatuta dago"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Errorea “%s” helbidean — “%s” atributua gaizki osatuta dago"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "“%2$s” helbidearen “%1$s” garraioa ezezaguna edo onartu gabea"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "“%s” helbidearen elementuak ez dauka bi punturik (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "“%s” helbidearen elementuko garraio-izenak ez du hutsik egon behar"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr "%d. gakoa/balioa bikoteak, “%s”, “%s” helbidearen elementuan, ez dauka berdina (=) ikurrik"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr "%d. gakoa/balioa bikoteak, “%s”, “%s” helbidearen elementuan, ez du gakoa hutsik eduki behar"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 msgstr "Errorea gakoa edo balioa iheseko modutik kentzean %d. gakoa/balioa bikotean, “%s”, “%s” helbidearen elementuan"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 msgstr "Errorea “%s” helbidean - unix-eko garraioak “path” edo “abstract” gakoetariko bat behar du hain zuzen."
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Errorea “%s” helbidean — ostalariaren atributua falta da edo gaizki osatuta dago"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Errorea “%s” helbidean — atakaren atributua falta da edo gaizki osatuta dago"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Errorea “%s” helbidean — izendapenaren fitxategiaren atributua falta da edo gaizki osatuta dago"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Errorea automatikoki abiaraztean: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Errorea “%s” izendapeneko fitxategia irekitzean: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Errorea “%s” izendapeneko fitxategitik irakurtzean: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Errorea “%s” izendapeneko fitxategitik irakurtzean: 16 byte espero ziren, baina %d lortu dira"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Errorea “%s” izendapeneko fitxategiko edukia korrontean idaztean:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Emandako helbidea hutsik dago"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Ezin da mezuaren deia abiarazi 'setuid' duenean"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Ezin da mezuaren deia abiarazi makinaren IDrik gabe: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Ezin da D-Bus automatikoki abiarazi X11 $DISPLAY gabe"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Errorea “%s” komando-lerroa abiaraztean: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Ezin da saioaren bus-eko helbidea zehaztu (ez dago SE honetan garatuta)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 msgstr "Ezin da bus-aren helbidea zehaztua inguruneko DBUS_STARTER_BUS_TYPE aldagaitik. “%s” balio ezezaguna"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr "Ezin da bus-aren helbidea zehaztua, inguruneko DBUS_STARTER_BUS_TYPE aldagaia ezarri gabe dagoelako"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "%d bus mota ezezaguna"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Edukiaren zati bat falta da lerro bat irakurtzean"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Edukiaren zati bat falta da lerro bat modu seguruan irakurtzean"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr "Autentifikazioko metodo guztiak agortuta (saiatuta: %s) (erabilgarri: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Bertan behera utzita GDBusAuthObserver::authorize-authenticated-peer erabiliz"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Errorea “%s” direktorioaren informazioa eskuratzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr "“%s” direktorioko baimenak gaizki osatuta. 0700 modua espero zen, baina 0%o lortuta"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Errorea “%s” direktorioa sortzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Errorea “%s” gako sorta irakurtzeko irekitzean: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”(e)ngo gako sortako %1$d. lerroa (“%3$s” edukiarekin) gaizki osatuta dago"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”(e)ngo gako sortako %1$d. lerroko aurreneko tokena (“%3$s” edukiarekin) gaizki osatuta dago"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”(e)ngo gako sortako %1$d. lerroko bigarren tokena (“%3$s” edukiarekin) gaizki osatuta dago"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Ez da %d IDko cookie-rik aurkitu “%s”(e)ngo gako sortan"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Errorea blokeoaren “%s” fitxategi zaharkitua ezabatzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Errorea blokeoko “%s” fitxategia sortzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Errorea blokeoko (estekatu gabeko) “%s” fitxategia ixtean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Errorea blokeoko “%s” fitxategia desestekatzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Errorea “%s” gako sorta idazteko irekitzean: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Gainera, “%s”(r)en blokeoa askatzeak ere huts egin du: %s) "
@@ -609,145 +609,149 @@ msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "Onartu gabeko banderak aurkitu dira bezeroaren aldeko konexioa eraikitzean"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr "Ez dago “org.freedesktop.DBus.Properties” interfazerik %s bide-izeneko objektuan"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Ez dago “%s” propietaterik"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "“%s” propietatea ez da irakurgarria"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "“%s” propietatea ez da idazgarria"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "Errorea “%s” propietatea ezartzean: “%s” mota espero zen, baina “%s” lortu da"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Ez dago “%s” interfazerik"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Ez dago “%s” interfazerik %s bide-izeneko objektuan"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Ez dago “%s” metodorik"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "“%s” mezu mota ez dator bat espero zen “%s” motarekin"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Jadanik objektu bat esportatuta dago %s interfazearentzako %s(e)n"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Ezin da %s.%s propietatea eskuratu"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Ezin da %s.%s propietatea ezarri"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "“%s” metodoak “%s” mota itzuli du, baina “%s” espero zen"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "“%s” metodoa, “%s” interfazekoa eta “%s” sinadura duena, ez da existitzen"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Azpizuhaitza jadanik %s(e)ra esportatuta"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "mota baliogabea da"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL-en mezua: goiburuko PATH edo MEMBER eremua falta da"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN-en mezua: goiburuko REPLY_SERIAL eremua falta da"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR-en mezua: goiburuko REPLY_SERIAL edo ERROR_NAME eremua falta da"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL-en mezua: goiburuko PATH, INTERFACE edo MEMBER eremua falta da"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 msgstr "SIGNAL-en mezua: goiburuko PATH eremua '/org/freedesktop/DBus/Local' balio erreserbatua erabiltzen ari da"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 msgstr "SIGNAL-en mezua: goiburuko INTERFACE eremua '/org/freedesktop/DBus/Local' balio erreserbatua erabiltzen ari da"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "byte %lu irakurtzea nahi zen, baina soilik %lu lortu da"
 msgstr[1] "%lu byte irakurtzea nahi ziren, baina %lu lortu da"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "NUL bytea espero zen “%s” katearen ondoren, baina “%d” bytea aurkitu da"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, 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 "Baliozko UTF-8 katea espero zen, baina baliogabeko byte batzuk aurkitu dira byteen %d desplazamenduan (katearen luzera: %d). Ordurarteko baliozko UTF-8 katea honakoa zen: “%s”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Balioa sakonegi habiaratuta dago"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Analizatutako “%s” balioa ez da baliozko D-Bus objektuaren bide-izen bat"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Analizatutako “%s” balioa ez da baliozko D-Bus sinadura"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -756,119 +760,119 @@ msgid_plural ""
 msgstr[0] "%u byte luzerako matrizea aurkituta. Gehieneko luzera 2<<26 byte da (64 MiB)."
 msgstr[1] "%u byte luzerako matrizea aurkituta. Gehieneko luzera 2<<26 byte da (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
 "bytes, but found to be %u bytes in length"
 msgstr "“a%c' motako matrizea aurkitu da, expected to have a length a multiple of %u byteko multiploko luzera edukitzea espero zen, baina %u byteko luzera du"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Analizatutako “%s” balioa aldagaiarentzat ez da baliozko D-Bus sinadura bat"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr "Errorea GVariant deserializatzean “%s” kate motarekin D-Bus konexioko formatutik"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr "Baliogabeko endian balioa. 0x6c (“l“) edo 0x42 (“B“) espero zen, baina 0x%02x balioa aurkitu da."
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Protokoloaren bertsio nagusia baliogabea. 1 espero zen, baina %d aurkitu da"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Sinaduraren goiburua aurkitu da, baina ez da sinadura motakoa"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Sinaduraren goiburua “%s” sinadurarekin aurkitu da, baina gorputza hutsik dago"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Analizatutako “%s” balioa ez da baliozko D-Bus sinadura (gorputzarentzako)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "Ez dago sinaduraren goibururik mezuan, baina mezuaren gorputzak %u byte du"
 msgstr[1] "Ez dago sinaduraren goibururik mezuan, baina mezuaren gorputzak %u byte ditu"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Ezin da mezua deserializatu: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "Errorea GVariant serializatzean “%s” kate motarekin D-Bus konexioaren formatura"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "Mezuko fitxategi-deskriptoreen kopurua (%d) goiburu-eremukoaren (%d) desberdina da"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Ezin da mezua serializatu: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Mezuaren gorputzak “%s” sinadura du, baina ez dago sinaduraren goibururik"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr "Mezuaren gorputzak “%s” sinadura mota du, baina goiburuaren eremuko sinadura “%s” da"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Mezuaren gorputza hutsik dago, baina goiburuaren eremuko sinadura “(%s)“ da"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Errorearen itzulera “'%s” motako gorputzarekin"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Errorearen itzulera gorputz hutsarekin"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Sakatu edozer tekla leihoa ixteko)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Saioaren dbus ez da exekutatzen ari, eta abiarazte automatikoak huts egin du"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Ezin da hardwarearen profila eskuratu: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Ezin da /var/lib/dbus/machine-id edo /etc/machine-id kargatu: "
 
@@ -889,25 +893,25 @@ msgid ""
 "and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr "Ezin da metodoari deitu: proxyak jaberik gabeko %s izen ezaguna du eta G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START banderarekin eraiki zen"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Izen abstraktuen lekua ez da onartzen"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Ezin da izendapeneko fitxategia zehaztu zerbitzari bat sortzean"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Errorea “%s” izendapeneko fitxategian idaztean: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "“%s” katea ez da baliozko D-Bus GUID bat"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Ezin da onartu gabeko “%s” garraioa entzun"
@@ -1179,38 +1183,38 @@ msgstr "Errorea: argumentu gehiegi.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Errorea: '%s' ez da busaren izen ezagun bat\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Izengabea"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Mahaigaineko fitxategiak ez du Exec eremua zehaztu"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Ezin izan da aplikazioak eskatzen duen terminala aurkitu"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Ezin da erabiltzailearen aplikazioaren %s konfigurazio-karpeta sortu: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Ezin da erabiltzailearen MIMEren %s konfigurazio-karpeta sortu: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Aplikazioaren informazioari identifikatzaile bat falta zaio"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Ezin da erabiltzailearen mahaigaineko %s fitxategia sortu"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s(r)en definizio pertsonalizatua"
@@ -1271,12 +1275,12 @@ msgstr "Gaizki osatutako token kopurua (%d) GEmblemedIcon kodeketan"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "GEmblen espero zen GEmblemedIcon-entzako"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Eragiketa ez dago onartuta"
@@ -1285,69 +1289,73 @@ msgstr "Eragiketa ez dago onartuta"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Ontziaren muntaia ez da existitzen"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Ezin da direktorioaren gainean kopiatu"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Ezin da direktorioa kopiatu direktorio gainean"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Helburuko fitxategia existitzen da"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Ezin da direktorioa errekurtsiboki kopiatu"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Lotura ez da onartzen"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Errorea fitxategia batzean: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Muntaien artean kopiatzea (reflink/clone) ez dago onartuta"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiatzea (reflink/clone) ez dago onartuta edo baliogabea da"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiatzea (reflink/clone) ez dago onartuta edo ez du funtzionatzen"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Ezin da fitxategi berezia kopiatu"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Esteka sinbolikoaren baliogabeko balioa eman da"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Esteka sinbolikoak ez dira onartzen"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Zakarrontzira botatzea ez dago onartuta"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Fitxategi-izenek ezin dute “%c” eduki"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "bolumenak ez dauka muntatzea inplementatuta"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Ez da aplikaziorik erregistratu fitxategi hau kudeatzeko"
 
@@ -1393,7 +1401,7 @@ msgid "Truncate not supported on stream"
 msgstr "Trunkatzea ez da onartzen korrontean"
 
 #
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Ostalari-izen baliogabea"
@@ -1510,7 +1518,7 @@ msgstr "Mantendu fitxategiarekin lekuz aldatzean"
 msgid "“version” takes no arguments"
 msgstr "“version” ez du argumenturik hartzen"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Erabilera:"
 
@@ -1596,10 +1604,10 @@ msgid "Error writing to stdout"
 msgstr "Errorea irteera arruntean (stdout) idaztean"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1616,144 +1624,158 @@ msgid ""
 "like smb://server/resource/file.txt as location."
 msgstr "'cat' tresna bezala erabiltzen da 'gio cat', baina GIOren kokalekuak erabiliz lokaleko fitxategien ordez. Adibidez, honelako zerbait erabil dezakezu kokaleku gisa: smb://zerbitzaria/baliabidea/fitxategia.txt"
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Ez da kokalekurik eman"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Ez dago helburuko direktorioa"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Erakutsi jarraipena"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Galdetu gainidatzi aurretik"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Mantendu atributu guztiak"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Egin existitzen diren helburuko fitxategien babeskopia"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Inoiz ez jarraitu esteka sinbolikoak"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Erabili baimen lehenetsiak helbururako"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Transferituta: %s / %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "ITURBURUA"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "HELBURUA"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Kopiatu fitxategi bat edo gehiago ITURBURUtik HELBURUra."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 msgstr "'cp' tresna bezala erabiltzen da 'gio copy', baina GIOren kokalekuak erabiliz lokaleko fitxategien ordez. Adibidez, honelako zerbait erabil dezakezu kokaleku gisa: smb://zerbitzaria/baliabidea/fitxategia.txt"
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "'%s' helburua ez da direktorio bat"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: gainidatzi “%s”? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Zerrendatu atributu idazgarriak"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Lortu fitxategi-sistemako informazioa"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Atributuak lortzeko"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTUAK"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Ez jarraitu esteka sinbolikoak"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atributuak:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "bistaratu izena: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "editatu izena: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "izena: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "mota: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "tamaina: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "ezkutukoa\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "URIa: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "bide-izen lokala: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix muntatzea: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Atributu ezargarriak:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Atributu idazgarrien izen-espazioak:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Erakutsi kokalekuei buruzko informazioa."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1766,23 +1788,27 @@ msgstr "“ls” tresna bezala erabiltzen da “gio info“, baina GIOren kokale
 "atributuak haien GIO izenekin zehatz daiteke, adibidez, standard::icon edo\n"
 "izen-espazioarekin, adib. unix edo “*“ (atributu guztiekin bat datorrelarik)."
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Erakutsi ezkutuko fitxategiak"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Erabili zerrenda luzeen formatua"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Inprimatu bistaratze-izenak"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Erakutsi URI osoak"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Zerrendatu kokalekuen edukia."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1905,12 +1931,12 @@ msgid "Mount as mountable"
 msgstr "Muntatu muntagarri gisa"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Muntatu bolumena gailu-fitxategiarekin"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Muntatu bolumena gailu-fitxategiarekin edo beste identifikatzaile batekin"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "GAILUA"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "IDa"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -1924,6 +1950,10 @@ msgstr "Egotzi"
 msgid "Stop drive with device file"
 msgstr "Gelditu unitatea gailu-fitxategiarekin"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "GAILUA"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Desmuntatu muntatze-puntu guztiak emandako eskemarekin"
@@ -1977,16 +2007,11 @@ msgstr "Anonimoki atzitzea debekatua"
 msgid "No drive for device file"
 msgstr "Ez dago unitaterik gailu-fitxategirako"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s hemen muntatuta: %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Ez dago bolumenik gailu-fitxategiarentzako"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Ez dago bolumenik ID horretarako"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Muntatu edo desmuntatu kokalekuak."
 
@@ -2196,76 +2221,76 @@ msgstr "Errorea '%s' fitxategia irakurtzean: %s"
 #: gio/glib-compile-resources.c:477
 #, c-format
 msgid "Error compressing file %s"
-msgstr "Errorea %s fitxategia konprimitzean"
+msgstr "Errorea %s fitxategia konprimatzean"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "testua ezin da <%s>(r)en barruan egon"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Erakutsi programaren bertsioa eta irten"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Irteerako fitxategiaren izena"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr "FITXATEGIA atributuak erreferentziatutako fitxategiak kargatzeko direktorioak (lehenetsia: uneko direktorioa)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIREKTORIOA"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Sortu irteera hautatutako formatuan helburuko fitxategiaren luzapenaren arabera"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Sortu iturburuaren goiburua"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Sortu iturburu-kodea (baliabidearen fitxategia zure kodean estekatzeko erabilita)"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Sortu mendekotasunen zerrenda"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Sortuko den mendekotasun-fitxategiaren izena"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Sartu helburu faltsuak sortutako mendekotasun-fitxategian"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Ez sortu eta erregistratu baliabidea automatikoki"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Ez esportatu funtzioak: deklaratu haiek G_GNUC_INTERNAL gisa"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr "Ez kapsulatu baliabide-datuak C fitxategian; onartu kanpotik estekatuta dagoela"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "C identifikatzailearen izena (sortutako iturburuaren kodean erabilita)"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2274,7 +2299,7 @@ msgstr "Konpilatu baliabidearen zehaztapen bat baliabideko fitxategi batean.\n"
 "Baliabideen zehaztapenen fitxategiak .gresource.xml luzapena dute,\n"
 "eta baliabideen fitxategiek berriz .gresource luzapena."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Fitxategi baten izena bakarrik eman behar duzu\n"
 
@@ -2731,7 +2756,7 @@ msgstr "Errorea %s(r)en fitxategi-sistemako informazioa lortzean: %s"
 #: gio/glocalfile.c:1152
 #, c-format
 msgid "Containing mount for file %s not found"
-msgstr "Ez da %s fitxategiaren muntai-puntua aurkitzen"
+msgstr "Ez da %s fitxategiaren muntatze-puntua aurkitzen"
 
 #: gio/glocalfile.c:1175
 msgid "Can’t rename root directory"
@@ -2748,7 +2773,7 @@ msgstr "Ezin da fitxategia izenez aldatu, fitxategi-izena badago lehendik ere"
 
 #
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Fitxategi-izen baliogabea"
 
@@ -2822,129 +2847,125 @@ msgstr "Fitxategi-sistemak ez ditu esteka sinbolikorik onartzen"
 msgid "Error making symbolic link %s: %s"
 msgstr "Errorea '%s' esteka sinbolikoa sortzean: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Esteka sinbolikoak ez dira onartzen"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Errorea '%s' fitxategia lekuz aldatzean: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Ezin da direktorioa lekuz aldatu direktorioaren gainera"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Huts egin du babeskopia sortzean"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Errorea helburuko fitxategia kentzean: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Muntaien artean lekuz aldatzea ez dago onartuta"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Ezin izan da '%s' diskoaren erabilpena zehaztu: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Atributuaren balioa NULL ezin da izan"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Atributu mota baliogabea (katea espero zen)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Atributu hedatuaren izen baliogabea"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Errorea “%s” atributu hedatua ezartzean: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (baliogabeko kodeketa)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Errorea “'%s” fitxategiaren informazioa eskuratzean: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Errorea fitxategiaren deskriptorearen informazioa irakurtzean: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Baliogabeko atributu mota (uint32 espero zen)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Baliogabeko atributu mota (uint64 espero zen)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Baliogabeko atributu mota (byte katea espero zen)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Ezin da baimenik ezarri esteka sinbolikoetan"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Errorea baimenak ezartzean: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Errorea jabea ezartzean: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "esteka sinbolikoak NULL-en desberdina izan behar du"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Errorea esteka sinbolikoa ezartzean: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Errorea esteka sinbolikoa ezartzean: fitxategia ez da esteka sinboliko bat"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Errorea eraldaketa edo atzipen ordua ezartzean: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux testuinguruak NULL-en desberdina izan behar du"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Errorea SELinux testuingurua ezartzean: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux ez dago gaituta sistema honetan"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "%s atributuaren ezarpena ez dago onartuta"
@@ -2967,7 +2988,7 @@ msgstr "Errorea fitxategian bilatzean: %s"
 msgid "Error closing file: %s"
 msgstr "Errorea fitxategia ixtean: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Ezin da lokaleko fitxategi lehenetsiaren monitorizazio mota aurkitu"
 
@@ -3109,11 +3130,11 @@ msgstr "muntaiak ez dauka eduki mota sinkronoa asmatzea inplementatuta"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "“%s” ostalariak “[“dauka, baina ez “]“"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Sarea atziezina"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Ostalaria atziezina"
 
@@ -3154,19 +3175,19 @@ msgstr "%s(e)ri pasatutako bektoreen batuketa handiegia da"
 msgid "Source stream is already closed"
 msgstr "Iturburuko korrontea jadanik itxi da"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Errorea “%s” ebaztean: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s ez dago inplementatuta"
 
 #
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Baliogabeko domeinua"
 
@@ -3181,7 +3202,7 @@ msgstr "“%s”(e)ko baliabidea ez da existitzen"
 #: gio/gresource.c:830
 #, c-format
 msgid "The resource at “%s” failed to decompress"
-msgstr "Huts egin du “%s”(e)ko baliabidea deskonprimitzean"
+msgstr "Huts egin du “%s”(e)ko baliabidea deskonprimatzean"
 
 #: gio/gresourcefile.c:732
 #, c-format
@@ -3532,172 +3553,172 @@ msgstr "Eskemaren izen hutsa eman da\n"
 msgid "No such key “%s”\n"
 msgstr "Ez dago “%s” bezalako gakorik\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Baliogabeko socket-a, hasieratu gabe dago"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Baliogabeko socket-a, hasieratzeak huts egin du: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Socket-a jadanik itxita dago"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "S/Iko socketaren denbora-muga gaindituta"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "GSocket sortzen fd-tik: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Ezin da socket-a sortu: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Familia ezezaguna zehaztu da"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Protokolo ezezaguna zehaztu da"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Ezin da datagramen eragiketarik erabili datagramak ez diren socket-etan."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Ezin da datagramen eragiketarik erabili socket-etan iraungitze-denborarik ezarri gabe."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "ezin izan da lokaleko helbidea lortu: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "ezin izan da urruneko helbidea lortu: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "ezin izan da entzun: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Errorea helbidea lotzean: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Errorea %s helbidearekin lotzean: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Errorea multidifusioko taldean elkartzean: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Errorea multidifusioko taldea uztean: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Iturburu zehatzeko multidifusiorik ez da onartzen"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Onartzen ez den socket familia"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "Iturburu zehatzekoa ez IPv4 helbidea"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Interfaze-izena luzeegia da"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interfazea ez da aurkitu: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "IPv4 iturburu zehatzeko multidifusiorik ez da onartzen"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "IPv6 iturburu zehatzeko multidifusiorik ez da onartzen"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Errorea konexioa onartzean: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Konexioa lantzen"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Ezin da falta diren erroreak lortu: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Errorea datuak jasotzean: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Errorea datuak bidaltzean: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Ezin da socket-a itzali: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Errorea socket-a ixtean: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Socket-aren baldintzen zai: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Errorea mezua bidaltzean: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage ez da Windows sisteman onartzen"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Errorea mezua jasotzean: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Ezin da socket-aren kredentzialik irakurri: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials ez dago S.E. honetan inplementatuta"
 
@@ -3952,7 +3973,7 @@ msgstr "Errorea fitxategiaren deskriptoretik irakurtzean: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Errorea fitxategiaren deskriptorea ixtean: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Fitxategi-sistemaren erroa"
 
@@ -4009,7 +4030,7 @@ msgstr "Sarrera gehiago behar dira"
 #
 #: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
-msgstr "Konprimitutako datu baliogabeak"
+msgstr "Konprimatutako datu baliogabeak"
 
 #: gio/tests/gdbus-daemon.c:18
 msgid "Address to listen on"
@@ -4040,72 +4061,72 @@ msgstr "Okerreko argumentuak\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "“%2$s” elementuaren ustekabeko “%1$s” atributua"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "“%2$s” elementuaren “%1$s” atributua ez da aurkitu"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Ustekabeko “%s” etiketa, “%s” espero zen"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "“%2$s” barruan ustekabeko “%1$s” etiketa"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Baliogabeko ‘%s’ data/ordua laster-marken fitxategian"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Ezin izan da baliozko laster-marken fitxategia aurkitu datuen direktorioan"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "“%s” URIaren laster-marka badago lehendik ere"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Ez da “%s” URIaren laster-markarik aurkitu"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Ez dago “%s” URIaren laster-markan MIME motarik definituta"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "“%s” URIaren laster-markan ez dago bandera pribaturik definituta"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "“%s” URIaren laster-markan ez dago talderik ezarrita"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "“%s” izeneko aplikaziorik ez du erregistratu laster-markarik '%s'(e)n"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Huts egin du “%s” exekuzioko lerroa “%s” URIarekin hedatzean"
@@ -4114,8 +4135,8 @@ msgstr "Huts egin du “%s” exekuzioko lerroa “%s” URIarekin hedatzean"
 msgid "Unrepresentable character in conversion input"
 msgstr "Adierazi ezin den karakterea bihurketa-sarreran"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Karaktere-sekuentzia partziala sarreraren amaieran"
 
@@ -4657,24 +4678,24 @@ msgstr "“%s” txantiloiak ez dauka: XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Ezin izan da “%s” esteka sinbolikorik irakurri: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Ezin izan da “%s”(e)tik “%s”(e)rako bihurtzailea ireki: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Ezin dira datu gordinak irakurri “g_io_channel_read_line_string“-en"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Irakurketa-bufferrean geratu diren bihurtu gabeko datuak"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Kanala karaktere partzial batean bukatzen da"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Ezin dira datu gordinak irakurri “g_io_channel_read_to_end“-etik"
 
@@ -4714,8 +4735,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Gako-fitxategiak onartzen ez den “%s” kodeketa du"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Gako-fitxategiak ez dauka “%s” taldea"
@@ -4748,31 +4769,31 @@ msgstr "Gako-fitxategiak “%s” gakoa dauka ('%s taldean), baina dagokion bali
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "“%2$s” taldeko “%1$s” gakoaren balioa “%3$s” da, “%4$s” izan ordez."
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Gako-fitxategiak ihes-karakterea dauka lerro amaieran"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Gako-fitxategiak “%s” ihes-sekuentzia baliogabea dauka"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "“%s” balioa ezin da zenbaki gisa interpretatu"
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "“%s” osoko balioa barrutitik kanpo"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "“%s” balioa ezin da zenbaki mugikor gisa interpretatu."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "“%s” balioa ezin da boolear gisa interpretatu"
@@ -4852,31 +4873,36 @@ msgid ""
 "character without intending to start an entity — escape ampersand as &amp;"
 msgstr "Entitatea ez da puntu eta komaz bukatzen; normalean & ikurra erabiltzen da entitatea hasteko asmorik gabe; izendatu & karakterea &amp; gisa"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokumentuak elementu batez hasi behar du (adibidez, <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 msgstr "“%s”  ez da baliozko karakterea '<' karakterearen atzetik; baliteke elementu baten izena ez hastea"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
 "“%s”"
 msgstr "“%s” karaktere bitxia, '>' karakterea espero zen “%s” elementuaren etiketa hutsa amaitzeko"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Atributu gehiegi “%s” elementuan"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr "“%s” karaktere bitxia, '=' espero zen “%s” atributuaren ondoren “%s” elementuan"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -4884,150 +4910,150 @@ msgid ""
 "character in an attribute name"
 msgstr "“%s” atributuaren ondoren karaktere bitxia, “>“ edo “/“ karakterea espero zen “%s” atributuaren ondoren elementuaren hasiera-etiketa bukatzeko, edo bestela atributu bat. Agian karaktere baliogabea erabili duzu atributu-izen batean"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, 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 "“%s” karaktere bitxia, komatxo irekia espero zen berdin ikurraren ondoren “%s” atributuari balioa ematean “%s” elementuan"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
 msgstr "“%s” ez da karaktere balioduna “</“; karaktereen atzetik; baliteke “%s” atributuak elementu baten izena ez hastea"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
 "allowed character is “>”"
 msgstr "“%s” ez da baliozko karakterea da “%s” itxiera-elementuaren izenaren atzetik; baimendutako karakterea “>“ da"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "“%s” elementua itxi egin da, unean ez dago elementurik irekita"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "“%s” elementua itxi egin da, baina unean “%s” elementua dago irekita"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokumentua hutsik dago edo zuriuneak bakarrik ditu"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Dokumentua ustekabean itxi da “<“ angelu-parentesi ireki baten ondoren"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 msgstr "Dokumentua ustekabean amaitu da oraindik irekita zeuden elementuekin. “%s” irekitako azken elementua da"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
 "the tag <%s/>"
 msgstr "Dokumentua ustekabean amaitu da, angelu-parentesi itxia ikustea espero zen <%s/> etiketa amaitzen"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokumentua ustekabean amaitu da elementu-izen baten barruan"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokumentua ustekabean amaitu da atributu-izen baten barruan"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokumentua ustekabean amaitu da elementua irekitzeko etiketa baten barruan."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
 msgstr "Dokumentua ustekabean amaitu da atributu-izen baten ondorengo berdin ikurraren atzetik; ez dago atributu-baliorik"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokumentua ustekabean amaitu da atributu-balio baten barruan"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Dokumentua ustekabean amaitu da “%s” elementuaren itxiera-etiketaren barruan"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr "Dokumentua ustekabean amaitu da ireki gabeko elementu baten itxiera-etiketaren barruan"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Dokumentua ustekabean amaitu da iruzkin baten barruan edo prozesatzen ari zen instrukzio baten barruan"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[AUKERA…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Laguntzako aukerak:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Erakutsi laguntzako aukerak"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Erakutsi laguntzako aukera guztiak"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Aplikazio-aukerak:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Aukerak:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Ezin da “%2$s“(r)en “%1$s” osoko balioa analizatu"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "%2$s(r)en “%1$s” osoko balioa barrutitik kanpo"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Ezin da “%2$s“(r)en “%1$s” balio bikoitza analizatu"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "%2$s(r)en “%1$s” balio bikoitza barrutitik kanpo"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Errorea %s aukera analizatzean"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "%s(e)ko argumentua falta da"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "%s aukera ezezaguna"
@@ -5261,7 +5287,7 @@ msgstr "DEFINE taldeak adar bat baino gehiago ditu"
 
 #: glib/gregex.c:473
 msgid "inconsistent NEWLINE options"
-msgstr "NEWLINE aukera kontraesankorra"
+msgstr "NEWLINE aukera inkoherentea"
 
 #: glib/gregex.c:476
 msgid ""
@@ -5424,77 +5450,77 @@ msgstr "Testua hutsik dago (edo zuriuneak bakarrik ditu)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Ezin izan da daturik irakurri prozesu umetik (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Ustekabeko errorea select()-en, datuak prozesu umetik irakurtzen (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Ustekabeko errorea datuak prozesu umetik irakurtzean (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Ustekabeko errorea waitpid()-en (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Prozesu haurra amaitu da %ld kodearekin"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Prozesu haurra %ld seinaleak hilda"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Prozesu haurra %ld seinaleak geldituta"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Prozesu haurra ustekabean amaituta"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Ezin izan da kanalizazio umetik irakurri (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Ezin izan da “%s” prozesu haurra abiarazi (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Ezin da sardetu (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Ezin izan da “%s” direktoriora aldatu (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Ezin izan da “%s” prozesu haurra exekutatu (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Ezin izan da prozesu haurraren irteera edo sarrera birbideratu (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Ezin izan da prozesu haurra sardetu (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Errore ezezaguna “%s” prozesu haurra exekutatzean"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Ezin izan da nahikoa datu irakurri pid kanalizazio umetik (%s)"
@@ -5546,194 +5572,194 @@ msgid ""
 "process"
 msgstr "Ustekabeko errorea gertatu da 'g_io_channel_win32_poll()'-en prozesu umetik datuak irakurtzean"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Kate hutsa ez da zenbaki bat"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” ez da zeinudun zenbaki bat"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "“%s” zenbakia barrutitik kanpo [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” ez da zeinurik gabeko zenbaki bat"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Huts egin du memoria esleitzean"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Karakterea UTF-8 barrutitik kanpo"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Sekuentzia baliogabea bihurketa-sarreran"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Karakterea UTF-16 barrutitik kanpo"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "byte %u"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5741,7 +5767,7 @@ msgstr[0] "bit %u"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5749,7 +5775,7 @@ msgstr[0] "byte %s"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5761,36 +5787,42 @@ msgstr[1] "%s byte"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Errorea “%s” helbidean — familiaren atributua gaizki osatuta dago"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "%s hemen muntatuta: %s\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; gainidazketari ezikusi egiten gako honentzako.\n"
 
index 535b2ad..fde1c51 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,5 +1,5 @@
 # French translation of glib.
-# Copyright (C) 2001-2019 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 # This file is distributed under the same license as the glib package.
 #
 # Christophe Merlet <redfox@redfoxcenter.org>, 2001-2006.
@@ -7,7 +7,7 @@
 # Jonathan Ernst <jonathan@ernstfamily.ch>, 2006.
 # Robert-André Mauchin <zebob.m@pengzone.org>, 2006-2008.
 # Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007.
-# Claude Paroz <claude@2xlibre.net>, 2007-2019.
+# Claude Paroz <claude@2xlibre.net>, 2007-2020.
 # Bruno Brouard <annoa.b@gmail.com>, 2010-2012.
 # Gérard Baylard <Geodebay@gmail.com>, 2010.
 # Alexandre Franke <alexandre.franke@gmail.com>, 2012.
@@ -17,16 +17,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-24 14:23+0000\n"
-"PO-Revision-Date: 2019-08-25 10:57+0200\n"
-"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-09 10:07+0100\n"
+"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
 "Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1)\n"
-"X-Generator: Gtranslator 3.32.1\n"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -292,7 +291,7 @@ msgstr "Le flux est déjà fermé"
 msgid "Truncate not supported on base stream"
 msgstr "La troncature n’est pas prise en charge sur le flux de base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -312,22 +311,22 @@ msgstr "Espace insuffisant dans la destination"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Séquence d’octets incorrecte en entrée du convertisseur"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Erreur lors de la conversion : %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Initialisation annulable non prise en charge"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr ""
@@ -353,21 +352,25 @@ msgstr "Type inconnu"
 msgid "%s filetype"
 msgstr "Type de fichier %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials contient des données non valables"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials n’est pas implémenté sur ce système d’exploitation"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Il n’y a pas de prise en charge de GCredentials pour votre plate-forme"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 "GCredentials ne contient pas d’identifiant de processus sur ce système "
 "d’exploitation"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "L’usurpation d’identité n’est pas possible sur ce système d’exploitation"
@@ -376,7 +379,7 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Fin précoce de flux inattendue"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Clé « %s » non prise en charge dans l’élément d’adresse « %s »"
@@ -396,34 +399,30 @@ msgstr ""
 "L’adresse « %s » n’est pas valide (nécessite exactement une des clés de "
 "« path », « dir », « tmpdir » ou « abstract »)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Erreur dans l’adresse « %s » — l’attribut du port est mal formé"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Erreur dans l’adresse « %s » — l’attribut de la famille est mal formé"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Erreur dans l’adresse « %s » — l’attribut « %s » est mal formé"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transport « %s » inconnu ou non pris en charge pour l’adresse « %s »"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr ""
 "L’élément d’adresse « %s » ne comporte pas de caractère deux-points (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "Le nom de transport dans l’élément d’adresse « %s » ne doit pas être vide"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -432,7 +431,7 @@ msgstr ""
 "Le couple clé/valeur %d, « %s », dans l’élément d’adresse « %s » ne comporte "
 "pas de signe égal"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -440,7 +439,7 @@ msgstr ""
 "Le couple clé/valeur %d, « %s », dans l’élément d’adresse « %s » ne doit pas "
 "avoir une clé vide"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -449,7 +448,7 @@ msgstr ""
 "Erreur lors du décodage de la clé ou de la valeur dans le couple clé/valeur "
 "%d, « %s », dans l’élément d’adresse « %s »"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -458,89 +457,89 @@ msgstr ""
 "Erreur dans l’adresse « %s » — le transport Unix requiert que soit "
 "exactement définie une des clés « path » ou « abstract »"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut de l’hôte est manquant ou mal formé"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut du port est manquant ou mal formé"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut du fichier à dénomination unique "
 "est manquant ou mal formé"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Erreur de lancement automatique :"
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr ""
 "Erreur lors de l’ouverture du fichier à dénomination unique « %s » : %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Erreur de lecture du fichier à dénomination unique « %s » : %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Erreur de lecture du fichier à dénomination unique « %s », 16 octets "
 "attendus, %d reçus"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Erreur d’écriture du contenu du fichier à numérotation unique « %s » sur le "
 "flux :"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "L’adresse indiquée est vide"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr ""
 "Impossible de générer dynamiquement un bus messages quand le drapeau setuid "
 "est mis"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Impossible de générer dynamiquement un bus messages sans identifiant "
 "machine : "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Impossible de lancer automatiquement D-Bus sans $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Erreur lors de la génération de la ligne de commande « %s » : "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Impossible de déterminer l’adresse du bus de session (non pris en charge "
 "pour ce système d’exploitation)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -549,7 +548,7 @@ msgstr ""
 "Impossible de déterminer l’adresse du bus à partir de la variable "
 "d’environnement DBUS_STARTER_BUS_TYPE — valeur inconnue « %s »"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -557,22 +556,22 @@ msgstr ""
 "Impossible de déterminer l’adresse du bus étant donné que la variable "
 "d’environnement DBUS_STARTER_BUS_TYPE n’est pas définie"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Type de bus %d inconnu"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Manque de contenu imprévu lors de la tentative de lecture d’une ligne"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Manque de contenu imprévu lors de la tentative de lecture (sécurisée) d’une "
 "ligne"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -580,17 +579,17 @@ msgstr ""
 "Tous les mécanismes d’authentification disponibles ont été épuisés (tentés : "
 "%s) (disponibles : %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Annulé via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr ""
 "Erreur lors de la récupération d’information sur le répertoire « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -598,24 +597,24 @@ msgstr ""
 "Les droits d’accès au répertoire « %s » sont mal formés. Mode 0700 attendu, "
 "0%o obtenu"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Erreur lors de la création du répertoire « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Erreur lors de l’ouverture du trousseau de clés « %s » en lecture : "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "La ligne %d du trousseau de clés de « %s » avec le contenu « %s » est mal "
 "formée"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -623,7 +622,7 @@ msgstr ""
 "Le premier jeton de la ligne %d du trousseau de clés de « %s » avec le "
 "contenu « %s » est mal formé"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -631,40 +630,40 @@ msgstr ""
 "Le deuxième jeton de la ligne %d du trousseau de clés de « %s » avec le "
 "contenu « %s » est mal formé"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 "Impossible de trouver un cookie avec l’identifiant %d dans le trousseau de "
 "clés de « %s »"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Erreur lors de la destruction de l’ancien fichier verrou « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Erreur lors de la création du fichier verrou « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Erreur lors de la fermeture du fichier verrou (non lié) « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr ""
 "Erreur lors de la suppression du lien avec le fichier verrou « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Erreur lors de l’ouverture du trousseau de clés « %s » en écriture : "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(en outre, le relèvement du verrou pour « %s » a aussi échoué : %s) "
@@ -684,7 +683,7 @@ msgstr ""
 "Marqueurs non pris en charge rencontrés lors de la construction d’une "
 "connexion côté client"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -692,102 +691,102 @@ msgstr ""
 "Pas d’interface « org.freedesktop.DBus.Properties » pour l’objet à "
 "l’emplacement %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "La propriété « %s » n’existe pas"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "La propriété « %s » ne peut pas être lue"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "La propriété « %s » ne peut pas être écrite"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Erreur lors de la définition de la propriété « %s » : type attendu « %s », "
 "« %s » obtenu"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "L’interface « %s » n’existe pas"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "L’interface « %s » n’existe pas pour l’objet à l’emplacement %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "La méthode « %s » n’existe pas"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Le type du message, « %s », ne correspond pas au type attendu « %s »"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Un objet est déjà exporté pour l’interface « %s » en « %s »"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Impossible d’obtenir la propriété %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Impossible de définir la propriété %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "La méthode « %s » a renvoyé le type « %s », mais « %s » était attendu"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
 "La méthode « %s » sur l’interface « %s » avec la signature « %s » n’existe "
 "pas"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Une sous-arborescence est déjà exportée pour « %s »"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "le type est « INVALID »"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Message de METHOD_CALL : champ d’en-tête PATH ou MEMBER manquant"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Message de METHOD_RETURN : champ d’en-tête REPLY_SERIAL manquant"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Message d’ERREUR : champ d’en-tête REPLY_SERIAL ou ERROR_NAME manquant"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Message de SIGNAL : champ d’en-tête PATH, INTERFACE ou MEMBER manquant"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -795,7 +794,7 @@ msgstr ""
 "Message de SIGNAL : le champ d’en-tête PATH utilise la valeur réservée /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -803,21 +802,21 @@ msgstr ""
 "Message de SIGNAL : le champ d’en-tête INTERFACE utilise la valeur réservée "
 "org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Lecture de %lu octet demandée, mais seulement %lu reçu(s)"
 msgstr[1] "Lecture de %lu octets demandée, mais seulement %lu reçu(s)"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Octet 00 (NUL) attendu à la fin de la chaîne « %s » mais un octet %d a été "
 "trouvé"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -827,19 +826,23 @@ msgstr ""
 "rencontrés à la position %d (longueur de la chaîne : %d octets). La chaîne "
 "UTF-8 valide jusqu’à cet endroit est « %s »"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Valeur imbriquée trop profondément"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 "La valeur analysée « %s » n’est pas un chemin vers un objet D-Bus valide"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "La valeur analysée « %s » n’est pas une signature D-Bus valide"
 
 # 2<<26  donne 128 Mo, 2^26 donne 64 Mo, 1<<26 donne 64 Mo
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -852,7 +855,7 @@ msgstr[1] ""
 "Un tableau de %u octets de long a été trouvé. La longueur maximale est de "
 "2<<26 octets (64 Mo)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -861,14 +864,14 @@ msgstr ""
 "Un tableau de type « a%c » a été trouvé, avec une longueur attendue multiple "
 "de %u octets, mais la longueur réelle est de %u octets"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "La valeur « %s » analysée en tant que variant n’est pas une signature valide "
 "de D-Bus"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -876,7 +879,7 @@ msgstr ""
 "Erreur en désérialisant le GVariant en chaîne de type « %s » à partir du "
 "format de transmission D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -885,30 +888,30 @@ msgstr ""
 "Valeur de boutisme non valide. 0x6c (« l ») ou 0x42 (« B ») attendus, mais 0x"
 "%02x trouvé"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Version majeure du protocole non valide. 1 attendu, %d trouvé"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "En-tête de signature trouvé mais n’est pas de type signature"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "En-tête de signature trouvé avec la signature « %s », mais le corps du "
 "message est vide"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "La valeur analysée « %s » n’est pas une signature valide de D-Bus (pour le "
 "corps)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -919,11 +922,11 @@ msgstr[1] ""
 "Pas de signature d’en-tête dans le message, mais le corps du message est de "
 "%u octets"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Impossible de désérialiser le message : "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -931,7 +934,7 @@ msgstr ""
 "Erreur en sérialisant le GVariant en chaîne de type « %s » dans le format de "
 "transmission D-Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -939,18 +942,18 @@ msgstr ""
 "Le nombre de descripteurs de fichiers dans le message (%d) diffère de celui "
 "du champ d’en-tête (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Impossible de sérialiser le message : "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Le corps du message a la signature « %s », mais il n’y a pas d’en-tête de "
 "signature"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -959,40 +962,40 @@ msgstr ""
 "Le corps du message a une signature de type « %s », mais celle dans le champ "
 "d’en-tête est « %s »"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Le corps du message est vide mais sa signature dans le champ d’en-tête est "
 "« (%s) »"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Retour d’erreur avec un corps de type « %s »"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Retour d’erreur avec un corps vide"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(saisissez n’importe quel caractère pour fermer cette fenêtre)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "La session dbus n’est pas lancée et autolaunch (le lancement automatique) a "
 "échoué"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Impossible d’obtenir le profil matériel : %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr ""
 "Chargement de /var/lib/dbus/machine-id ou /etc/machine-id impossible : "
@@ -1018,28 +1021,28 @@ msgstr ""
 "%s sans propriétaire alors que le proxy a été construit avec le marqueur "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "L’espace de noms abstrait n’est pas pris en charge"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 "Impossible de définir un fichier à dénomination unique lors de la création "
 "d’un serveur"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr ""
 "Erreur lors de l’écriture du fichier à dénomination unique à « %s » : %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "La chaîne « %s » n’est pas un GUID valide de D-Bus"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Impossible d’écouter sur le transport « %s » non pris en charge"
@@ -1321,42 +1324,42 @@ msgstr "Erreur : trop de paramètres.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erreur : %s n’est pas un nom de bus bien connu valide\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Sans nom"
 
 # Un fichier Desktop n’est pas forcément sur le bureau...
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Le fichier .desktop n’a pas précisé son champ Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Impossible de trouver le terminal requis par l’application"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Impossible de créer le dossier de configuration utilisateur d’application "
 "%s : %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "Impossible de créer le dossier de configuration utilisateur MIME %s : %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Les informations de l’application ne comportent pas d’identifiant"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Impossible de créer le fichier .desktop utilisateur %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Définition personnalisée pour %s"
@@ -1419,12 +1422,12 @@ msgstr "Nombre de jetons incorrect (%d) dans le codage GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Un GEmblem est attendu pour le GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Opération non prise en charge"
@@ -1433,72 +1436,76 @@ msgstr "Opération non prise en charge"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Le point de montage conteneur n’existe pas"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Impossible d’écraser un répertoire"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Impossible d’écraser un répertoire par un autre répertoire"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Le fichier cible existe"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Impossible de copier récursivement un répertoire"
 
 # http://en.wikipedia.org/wiki/Splice_(system_call)
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "L’opération « splice » n’est pas prise en charge"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Erreur lors de l’opération de « splicing » sur le fichier : %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "La copie (reflink/clone) entre points de montage n’est pas prise en charge"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "La copie (reflink/clone) n’est pas prise en charge ou n’est pas valide"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "La copie (reflink/clone) n’est pas prise en charge ou n’a pas fonctionné"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Impossible de copier le fichier spécial"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Valeur de lien symbolique donnée non valide"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Liens symboliques non pris en charge"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "La corbeille n’est pas prise en charge"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Les noms de fichiers ne peuvent comporter de « %c »"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "le volume n’implémente pas le montage"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Aucune application n’est enregistrée pour gérer ce fichier"
 
@@ -1543,7 +1550,7 @@ msgstr "La troncature n’est pas autorisée sur un flux d’entrée"
 msgid "Truncate not supported on stream"
 msgstr "La troncature n’est pas prise en charge sur le flux"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Nom d’hôte non valide"
@@ -1662,7 +1669,7 @@ msgstr "Conserver avec le fichier lors du déplacement"
 msgid "“version” takes no arguments"
 msgstr "« version » n’accepte aucun paramètre"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Utilisation :"
 
@@ -1748,10 +1755,10 @@ msgid "Error writing to stdout"
 msgstr "Erreur lors de l’écriture vers stdout"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1771,56 +1778,60 @@ msgstr ""
 "utilisant des emplacements GIO au lieu de fichiers locaux : par exemple,\n"
 "on peut indiquer un emplacement comme smb://serveur/ressource/fichier.txt."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Aucun emplacement indiqué"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Aucun répertoire cible"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Afficher la progression"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Demander avant d’écraser"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Préserver tous les attributs"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Créer une sauvegarde des fichiers de destination existants"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Ne jamais suivre les liens symboliques"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Utiliser les permissions par défaut de la destination"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "%s sur %s transférés (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "SOURCE"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINATION"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copier un ou plusieurs fichiers de SOURCE vers DESTINATION."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1830,88 +1841,98 @@ msgstr ""
 "utilisant des emplacements GIO au lieu de fichiers locaux : par exemple,\n"
 "on peut indiquer un emplacement comme smb://serveur/ressource/fichier.txt."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "La destination « %s » n’est pas un répertoire"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s : écraser « %s » ? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Afficher les attributs en écriture"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Obtenir les informations du système de fichiers"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Les attributs à obtenir"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTS"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Ne pas suivre les liens symboliques"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "attributs :\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "nom d’affichage : %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "nom d’édition : %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "nom : %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "type : %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "taille : "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "caché\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri : %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "chemin local : %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "montage unix : %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Attributs pouvant être définis :\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Espaces de noms des attributs en écriture :\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Afficher des informations à propos des emplacements."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1926,23 +1947,27 @@ msgstr ""
 "standard::icon), par leur espace de nom (exemple : unix) ou par « * » qui\n"
 "correspond à tous les attributs"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Afficher les fichiers cachés"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Utiliser une mise en forme de liste étendue"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Afficher les noms d’affichage"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Afficher les URI complets"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Énumérer le contenu des emplacements."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2076,12 +2101,13 @@ msgid "Mount as mountable"
 msgstr "Monter comme montable"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Monter le volume selon le fichier de périphérique"
+msgid "Mount volume with device file, or other identifier"
+msgstr ""
+"Monter le volume selon le fichier de périphérique ou autre identifiant"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "PÉRIPHÉRIQUE"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2095,6 +2121,10 @@ msgstr "Éjecter"
 msgid "Stop drive with device file"
 msgstr "Arrêter le disque selon le fichier de périphérique"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "PÉRIPHÉRIQUE"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Démonter tous les montages du protocole donné"
@@ -2149,16 +2179,11 @@ msgstr "Accès anonyme refusé"
 msgid "No drive for device file"
 msgstr "Aucun disque correspondant au fichier de périphérique"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s a été monté sur %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Aucun volume pour le fichier de périphérique"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Aucun volume pour l’identifiant donné"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Monter ou démonter les emplacements."
 
@@ -2989,7 +3014,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Impossible de renommer le fichier car ce nom est déjà utilisé"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Nom de fichier non valide"
 
@@ -3070,133 +3095,129 @@ msgstr "Le système de fichiers ne gère pas les liens symboliques"
 msgid "Error making symbolic link %s: %s"
 msgstr "Erreur lors de la création du lien symbolique %s : %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Liens symboliques non pris en charge"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Erreur lors du déplacement du fichier %s : %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Impossible de déplacer un répertoire par dessus un autre"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "La création du fichier de sauvegarde a échoué"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Erreur lors de la suppression du fichier cible : %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Le déplacement entre points de montage n’est pas pris en charge"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Impossible de déterminer l’utilisation disque de %s : %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "La valeur d’attribut ne doit pas être « NULL »"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Type d’attribut non valide (une chaîne est attendue)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Nom d’attribut étendu non valide"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Erreur lors de la définition de l’attribut étendu « %s » : %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (codage non valide)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Erreur lors de l’obtention des informations du fichier « %s » : %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr ""
 "Erreur lors de l’obtention des informations du descripteur de fichier : %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Type d’attribut non valide (uint32 attendu)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Type d’attribut non valide (uint64 attendu)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Type d’attribut non valide (chaîne d’octets attendue)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Impossible de définir des permissions sur les liens symboliques"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Erreur lors de la définition des permissions : %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Erreur lors de la définition du propriétaire : %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "un lien symbolique ne doit pas être « NULL »"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Erreur lors de la définition du lien symbolique : %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Erreur lors de la définition du lien symbolique : le fichier n’est pas un "
 "lien symbolique"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr ""
 "Erreur lors de la définition de l’heure de modification ou d’accès : %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "Le contexte SELinux ne doit pas être « NULL »"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Erreur lors de la définition du contexte SELinux : %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux n’est pas activé sur ce système"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "La définition de l’attribut %s n’est pas prise en charge"
@@ -3219,7 +3240,7 @@ msgstr "Erreur de positionnement dans le fichier : %s"
 msgid "Error closing file: %s"
 msgstr "Erreur lors de la fermeture du fichier : %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Impossible de trouver le type de moniteur de fichier local par défaut"
 
@@ -3365,11 +3386,11 @@ msgstr "mount n’implémente pas la supposition d’un type de contenu synchron
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Le nom d’hôte « %s » comporte « [ » mais pas « ] »"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Réseau inaccessible"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Hôte inaccessible"
 
@@ -3410,18 +3431,18 @@ msgstr "Somme des vecteurs passés à %s trop grande"
 msgid "Source stream is already closed"
 msgstr "Le flux source est déjà fermé"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Erreur de résolution de « %s » : %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s non implémentée"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Domaine non valide"
 
@@ -3801,176 +3822,176 @@ msgstr "Nom de schéma fourni vide\n"
 msgid "No such key “%s”\n"
 msgstr "La clé « %s » n’existe pas\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Connecteur non valide, non initialisé"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Connecteur non valide, l’initialisation a échoué en raison de : %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Le connecteur est déjà fermé"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Entrées/sorties hors délai sur le connecteur"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "création de GSocket à partir du descripteur de fichier : %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Impossible de créer le connecteur : %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Indication d’une famille inconnue"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Indication d’un protocole inconnu"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Impossible d’utiliser des opérations datagramme sur un connecteur non "
 "datagramme."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Impossible d’utiliser des opérations datagramme sur un connecteur doté d’un "
 "délai d’expiration."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "impossible d’obtenir l’adresse locale : %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "impossible d’obtenir l’adresse distante : %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "impossible d’écouter : %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Erreur lors de liaison à l’adresse : %s"
+msgid "Error binding to address %s: %s"
+msgstr "Erreur lors de la liaison à l’adresse %s : %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Erreur lors de la connexion au groupe multicast : %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Erreur lors de la déconnexion du groupe multicast : %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Aucune prise en charge pour le multicast spécifique à la source"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Famille de connecteur réseau non prise en charge"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific n’est pas une adresse IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Nom d’interface trop long"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface introuvable : %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Aucune prise en charge pour le multicast IPv4 spécifique à la source"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Aucune prise en charge pour le multicast IPv6 spécifique à la source"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Erreur d’acceptation de la connexion : %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Connexion en cours"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Impossible d’obtenir l’erreur actuelle : "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Erreur lors de la réception des données : %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Erreur lors de l’envoi des données : %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Impossible de fermer le connecteur : %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Erreur lors de la fermeture du connecteur : %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "En attente de l’état du connecteur : %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Erreur d’envoi de message : %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage n’est pas pris en charge par Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Erreur lors de la réception du message : %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Impossible de lire les données d’authentification du connecteur : %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials n’est pas implémenté sur ce système d’exploitation"
@@ -4244,7 +4265,7 @@ msgstr "Erreur de lecture à partir du descripteur de fichier : %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Erreur de fermeture du descripteur de fichier : %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Racine du système de fichiers"
 
@@ -4334,74 +4355,74 @@ msgstr "Arguments incorrects\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Attribut « %s » inattendu pour l’élément « %s »"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "L’attribut « %s » de l’élément « %s » est introuvable"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Balise « %s » inattendue. La balise « %s » était attendue"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Balise « %s » inattendue à l’intérieur de « %s »"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Date et heure « %s » non valide dans le fichier de signets"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 "Impossible de trouver un fichier de signets valide dans les répertoires de "
 "données"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Un signet pour l’URI « %s » existe déjà"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Aucun signet trouvé pour l’URI « %s »"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Aucun type MIME défini dans le signet pour l’URI « %s »"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Aucun indicateur privé n’est défini dans le signet pour l’URI « %s »"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Aucun groupe n’est défini dans le signet pour l’URI « %s »"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Aucune application nommée « %s » n’a enregistré un signet pour « %s »"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr ""
@@ -4411,8 +4432,8 @@ msgstr ""
 msgid "Unrepresentable character in conversion input"
 msgstr "Caractère non affichable dans l’entrée du convertisseur"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Séquence de caractères incomplète en fin d’entrée"
 
@@ -4962,25 +4983,25 @@ msgstr "Le modèle « %s » ne contient pas XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "La lecture du lien symbolique « %s » a échoué : %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Impossible d’ouvrir le convertisseur de « %s » vers « %s » : %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 "Lecture de données brutes impossible dans g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Données restantes non converties dans le tampon de lecture"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "La canal se termine avec un caractère partiel"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Lecture de données brutes impossible dans g_io_channel_read_to_end"
 
@@ -5023,8 +5044,8 @@ msgstr ""
 "Le fichier de clés contient un codage de caractères non pris en charge « %s »"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Le fichier de clés n’a pas de groupe « %s »"
@@ -5065,34 +5086,34 @@ msgstr ""
 "La clé « %s » dans le groupe « %s » a une valeur « %s » alors que %s était "
 "attendu"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Le fichier de clés contient un caractère d’échappement en fin de ligne"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr ""
 "Le fichier de clés contient une séquence d’échappement non valide « %s »"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "La valeur « %s » ne peut pas être interprétée comme un nombre."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "La valeur entière « %s » est hors plage"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 "La valeur « %s » ne peut pas être interprétée comme un nombre à virgule "
 "flottante."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "La valeur « %s » ne peut pas être interprétée comme un booléen."
@@ -5185,11 +5206,11 @@ msgstr ""
 "utilisé une esperluette sans intention d’écrire une entité — échappez "
 "l’esperluette avec &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Le document doit commencer avec un élément (par ex. <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5198,7 +5219,7 @@ msgstr ""
 "« %s » n’est pas un caractère valide à la suite du caractère « < » ; il ne "
 "semble pas commencer un nom d’élément"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5207,7 +5228,12 @@ msgstr ""
 "Caractère anormal « %s », un caractère « > » est requis pour terminer la "
 "balise d’élément vide « %s »"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Trop d’attributs dans l’élément « %s »"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5215,7 +5241,7 @@ msgstr ""
 "Caractère anormal « %s », un caractère « = » est requis après le nom de "
 "l’attribut « %s » de l’élément « %s »"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5227,7 +5253,7 @@ msgstr ""
 "« %s » ; peut-être avez-vous utilisé un caractère non valide dans un nom "
 "d’attribut"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5236,7 +5262,7 @@ msgstr ""
 "Caractère anormal « %s », un guillemet d’ouverture après le signe égal est "
 "requis quand on affecte une valeur à l’attribut « %s » de l’élément « %s »"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5245,7 +5271,7 @@ msgstr ""
 "« %s » n’est pas un caractère valide à la suite des caractères « </ » ; "
 "« %s » ne peut pas commencer un nom d’élément"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5254,28 +5280,28 @@ msgstr ""
 "« %s » n’est pas un caractère valide à la suite du nom d’élément « %s » à "
 "fermer ; le caractère autorisé est « > »"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "L’élément « %s » a été fermé, aucun élément n’est actuellement ouvert"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr ""
 "L’élément « %s » a été fermé, mais l’élément actuellement ouvert est « %s »"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Le document était vide ou ne contenait que des espaces"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "Le document s’est terminé de manière inattendue juste après un crochet "
 "ouvrant « < »"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5284,7 +5310,7 @@ msgstr ""
 "Le document s’est terminé de manière inattendue avec des éléments encore "
 "ouverts — « %s » était le dernier élément ouvert"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5293,25 +5319,25 @@ msgstr ""
 "Le document s’est terminé de manière inattendue, un crochet fermant pour la "
 "balise <%s/> est requis"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr ""
 "Le document s’est terminé de manière inattendue à l’intérieur d’un nom "
 "d’élément"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr ""
 "Le document s’est terminé de manière inattendue à l’intérieur d’un nom "
 "d’attribut"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "Le document s’est terminé de manière inattendue à l’intérieur d’une balise "
 "d’ouverture d’élément."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5319,87 +5345,87 @@ msgstr ""
 "Le document s’est terminé de manière inattendue après le signe égal suivant "
 "un nom d’attribut ; aucune valeur d’attribut"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr ""
 "Le document s’est terminé de manière inattendue alors qu’il était à "
 "l’intérieur d’une valeur d’attribut"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Le document s’est terminé de manière inattendue à l’intérieur de la balise "
 "de fermeture pour l’élément « %s »"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Le document s’est terminé de manière inattendue à l’intérieur de la balise "
 "de fermeture pour un élément non ouvert"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Le document s’est terminé de manière inattendue à l’intérieur d’un "
 "commentaire ou d’une instruction de traitement"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPTION…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Options de l’aide :"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Affiche les options de l’aide"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Affiche toutes les options de l’aide"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Options de l’application :"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Options :"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Impossible d’analyser la valeur entière « %s » pour %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "La valeur entière « %s » pour %s est hors plage"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Impossible d’analyser la valeur double « %s » pour %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "La valeur double « %s » pour %s est hors plage"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Erreur lors de l’analyse de l’option %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Argument manquant pour %s"
 
-#: glib/goption.c:2182
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Option inconnue %s"
@@ -5820,80 +5846,80 @@ msgstr "Le texte était vide (ou ne contenait que des espaces)"
 msgid "Failed to read data from child process (%s)"
 msgstr "La lecture des données depuis le processus fils a échoué (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
-"Erreur inattendue dans select() à la lecture des données depuis un processus "
+"Erreur inattendue lors de la lecture de données depuis un processus "
 "fils (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Erreur inattendue dans waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Le processus fils s’est terminé avec le code %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Le processus fils a été tué par le signal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Le processus fils a été arrêté par le signal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Le processus fils s’est terminé anormalement"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "La lecture depuis un tube fils a échoué (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "L’exécution du processus fils « %s » a échoué (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Le clonage a échoué (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Le changement de répertoire « %s » a échoué (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "L’exécution du processus fils « %s » a échoué (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr ""
 "La redirection de la sortie ou de l’entrée du processus fils a échoué (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Le clonage du processus fils a échoué (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Erreur inconnue à l’exécution du processus fils « %s »"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5948,194 +5974,194 @@ msgstr ""
 "Erreur inattendue dans g_io_channel_win32_poll() lors de la lecture des "
 "données depuis un processus fils"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Une chaîne vide n’est pas un nombre"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "« %s » n’est pas un nom valide"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Le nombre « %s » est hors limites [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "« %s » n’est pas un nombre non signé"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Impossible d’allouer de la mémoire"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Caractère hors plage pour UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Séquence non valide dans l’entrée du convertisseur"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Caractère hors plage pour UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f ko"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f Mo"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f Go"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f To"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f Po"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f Eo"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f Kio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f Mio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f Gio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f Tio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f Pio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f Eio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u octet"
 msgstr[1] "%u octets"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6143,7 +6169,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6151,7 +6177,7 @@ msgstr[0] "%s octet"
 msgstr[1] "%s octets"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6163,32 +6189,39 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f Ko"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f Mo"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f Go"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f To"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f Po"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f Eo"
+
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr ""
+#~ "Erreur dans l’adresse « %s » — l’attribut de la famille est mal formé"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "%s a été monté sur %s\n"
index 45ffd1a..5e8de13 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
@@ -16,16 +16,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib.master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
-"PO-Revision-Date: 2019-08-25 18:21+0200\n"
-"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
+"POT-Creation-Date: 2020-02-12 17:05+0000\n"
+"PO-Revision-Date: 2020-02-14 21:38+0100\n"
+"Last-Translator: Fran Diéguez <frandieguez@gnome.org>\n"
 "Language-Team: Galician\n"
 "Language: gl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.2.1\n"
+"X-Generator: Poedit 2.3\n"
 "X-Project-Style: gnome\n"
 
 #: gio/gapplication.c:500
@@ -44,7 +44,7 @@ msgstr ""
 
 #: gio/gapplication.c:557
 msgid "Override the application’s ID"
-msgstr "Omitir o ID do aplicativo"
+msgstr "Omitir o ID da aplicación"
 
 #: gio/gapplication.c:569
 msgid "Replace the running instance"
@@ -69,20 +69,20 @@ msgstr "Mostrar información da versión e saír"
 
 #: gio/gapplication-tool.c:52
 msgid "List applications"
-msgstr "Listar aplicativos"
+msgstr "Listar aplicacións"
 
 #: gio/gapplication-tool.c:53
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr ""
-"Lista os aplicativos activábeis por D-Bus instalados (por ficheiros .desktop)"
+"Lista as aplicacións activábeis por D-Bus instalados (por ficheiros .desktop)"
 
 #: gio/gapplication-tool.c:55
 msgid "Launch an application"
-msgstr "Iniciar un aplicativo"
+msgstr "Iniciar unha aplicación"
 
 #: gio/gapplication-tool.c:56
 msgid "Launch the application (with optional files to open)"
-msgstr "Inicia un aplicativo (con ficheiros opcionais a abrir)"
+msgstr "Inicia unha aplicación (con ficheiros opcionais a abrir)"
 
 #: gio/gapplication-tool.c:57
 msgid "APPID [FILE…]"
@@ -94,7 +94,7 @@ msgstr "Activar unha acción"
 
 #: gio/gapplication-tool.c:60
 msgid "Invoke an action on the application"
-msgstr "Invocar unha acción no aplicativo"
+msgstr "Invocar unha acción na aplicación"
 
 #: gio/gapplication-tool.c:61
 msgid "APPID ACTION [PARAMETER]"
@@ -107,7 +107,7 @@ msgstr "Listar as accións dispoñíbeis"
 #: gio/gapplication-tool.c:64
 msgid "List static actions for an application (from .desktop file)"
 msgstr ""
-"Listar as accións estáticas para un aplicativo (desde un ficheiro .desktop)"
+"Listar as accións estáticas para unha aplicación (desde un ficheiro .desktop)"
 
 #: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
 msgid "APPID"
@@ -125,10 +125,10 @@ msgstr "A orde para imprimir a axuda detallada"
 #: gio/gapplication-tool.c:71
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
-"Identificador de aplicativo en formato D-Bus (p.ex.: org.exemplo.visor)"
+"Identificador de aplicacións en formato D-Bus (p.ex.: org.exemplo.visor)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "FICHEIRO"
@@ -196,13 +196,13 @@ msgid ""
 "%s command requires an application id to directly follow\n"
 "\n"
 msgstr ""
-"A orde %s require un id de aplicativo ao que seguir directamente\n"
+"A orde %s require un id de aplicación ao que seguir directamente\n"
 "\n"
 
 #: gio/gapplication-tool.c:171
 #, c-format
 msgid "invalid application id: “%s”\n"
-msgstr "id de aplicativo non válido: «%s»\n"
+msgstr "id de aplicación non válido: «%s»\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
 #: gio/gapplication-tool.c:182
@@ -222,11 +222,11 @@ msgstr "non foi posíbel conectar ao D-Bus: %s\n"
 #: gio/gapplication-tool.c:286
 #, c-format
 msgid "error sending %s message to application: %s\n"
-msgstr "produciuse un erro ao enviar a mensaxe %s ao aplicativo: %s\n"
+msgstr "produciuse un erro ao enviar a mensaxe %s á aplicación: %s\n"
 
 #: gio/gapplication-tool.c:317
 msgid "action name must be given after application id\n"
-msgstr "o nome da acción debe fornecerse logo do id de aplicativo\n"
+msgstr "o nome da acción debe fornecerse logo do id de aplicación\n"
 
 #: gio/gapplication-tool.c:325
 #, c-format
@@ -248,12 +248,12 @@ msgstr "as accións aceptan un máximo dun parámetro\n"
 
 #: gio/gapplication-tool.c:411
 msgid "list-actions command takes only the application id"
-msgstr "a orde list-actions recolle só o id de aplicativo"
+msgstr "a orde list-actions recolle só o id de aplicación"
 
 #: gio/gapplication-tool.c:421
 #, c-format
 msgid "unable to find desktop file for application %s\n"
-msgstr "non é posíbel atopar o ficheiro desktop para o aplicativo %s\n"
+msgstr "non é posíbel atopar o ficheiro desktop para a aplicación %s\n"
 
 #: gio/gapplication-tool.c:466
 #, c-format
@@ -290,7 +290,7 @@ msgstr "O fluxo xa se pechou"
 msgid "Truncate not supported on base stream"
 msgstr "Non se permite truncar no fluxo base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -310,22 +310,22 @@ msgstr "Non hai espazo abondo para o enderezo do socket"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "A secuencia de bytes non é válida na entrada da conversión"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Produciuse un erro durante a conversión: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Non se permite a inicialización cancelábel"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Non se admite a conversión do conxunto de caracteres «%s» a «%s»"
@@ -349,19 +349,23 @@ msgstr "Tipo descoñecido"
 msgid "%s filetype"
 msgstr "tipo de ficheiro %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials contén datos non válidos"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials non está implementado neste SO"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "A súa plataforma non ten compatibilidade con GCredentials"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials non contén un ID de proceso para este SO"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Non é posíbel burlar as credenciais neste SO"
 
@@ -369,7 +373,7 @@ msgstr "Non é posíbel burlar as credenciais neste SO"
 msgid "Unexpected early end-of-stream"
 msgstr "Final de fluxo inesperadamente prematuro"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Clave «%s» non admitida na entrada do enderezo «%s»"
@@ -388,33 +392,29 @@ msgstr ""
 "O enderezo «%s» non é válido (necesítase exactamente unha ruta, directorio, "
 "directorio temporal ou claves abstractas)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Erro no enderezo «%s» — o atributo do porto está mal formado"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Erro no enderezo «%s» — o atributo da familia está mal formado"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Erro no enderezo «%s» — o atributo «%s» está mal formado"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transporte «%s» descoñecido ou non compatíbel para o enderezo «%s»"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "O elemento do enderezo «%s» non contén un caracter dous puntos (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "O nome de transporte do elemento de enderezo «%s» non pode estar baleiro"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -423,7 +423,7 @@ msgstr ""
 "O par clave/valor %d, «%s» no elemento do enderezo «%s» non contén un signo "
 "de igual"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -431,7 +431,7 @@ msgstr ""
 "O par clave/valor %d, «%s» no elemento do enderezo «%s» non debe ter unha "
 "chave baleira"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -440,7 +440,7 @@ msgstr ""
 "Produciuse un erro ao desescapar a clave ou o valor no par clave/valor %d, "
 "«%s», no elemento de enderezo «%s»"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -449,83 +449,83 @@ msgstr ""
 "Erro no enderezo «%s» — o transporte unix require que se estabeleza "
 "exactamente unha das claves «path» ou «abstract»"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Erro no enderezo «%s» — falta o atributo do equipo ou está mal formado"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Erro no enderezo «%s» — falta o atributo do porto ou está mal formado"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Erro no enderezo «%s» — falta o atributo do ficheiro de uso de unha vez ou "
 "está mal formado"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Produciuse un erro ao autoiniciar: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Produciuse un erro ao abrir o ficheiro de uso de unha vez «%s»: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Produciuse un erro ao ler o ficheiro de uso de unha vez «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Produciuse un erro ao ler o ficheiro de uso de unha vez «%s»:, esperábanse "
 "16 bytes, obtivéronse %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Produciuse un erro ao gravar os contidos do ficheiro de uso de unha vez «%s» "
 "ao fluxo:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "O enderezo fornecido está baleiro"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Non é posíbel iniciar («spawn») unha bus de mensaxe sen setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Non é posíbel iniciar («spawn») unha mensaxe ao bus sen un ID de máquina: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Non é posíbel autoiniciar D-Bus sen un $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Produciuse un erro ao iniciar («spawn») a orde «%s»: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Non é posíbel determinar o enderezo do bus de sesión (non está implementado "
 "para este SO)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -534,7 +534,7 @@ msgstr ""
 "Non é posíbel determinar o enderezo do bus desde a variábel de ambiente "
 "DBUS_STARTER_BUS_TYPE - valor descoñecido «%s»"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -542,20 +542,20 @@ msgstr ""
 "Non é posíbel determinar o enderezo do bus xa que a variábel de ambiente "
 "DBUS_STARTER_BUS_TYPE non está estabelecida"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo de bus %d descoñecido"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Falta o contido inesperada ao tentar ler unha liña"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Falta de contido inesperada ao tentar ler (de forma segura) unha liña"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -563,16 +563,16 @@ msgstr ""
 "Agotáronse todos os mecanismos de autenticación dispoñíbel (tentaronse: %s) "
 "(dispoñíbeis: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelando mediante GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Produciuse un erro ao obter a información do directorio «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -580,22 +580,22 @@ msgstr ""
 "Os permisos no directorio «%s» están malformados. Esperábase o modo 0700 e "
 "obtívose 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Produciuse un erro ao crear o directorio %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Produciuse un erro ao abrir o anel de chaves «%s» para a súa lectura: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "A liña %d do anel de chaves en «%s» con contido «%s» está malformada"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -603,7 +603,7 @@ msgstr ""
 "O primeiro token da liña %d no anel de chaves en «%s» co contido «%s» está "
 "malformado"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -611,37 +611,37 @@ msgstr ""
 "O segundo token da liña %d no anel de chaves en «%s» co contido «%s» está "
 "malformado"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Non foi posíbel atopar a cookie co id %d no anel de chave en «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Produciuse un erro ao eliminar o ficheiro de bloqueo antigo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Produciuse un erro ao crear o ficheiro de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Produciuse un erro ao pechar o ficheiro de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Produciuse un erro ao abrir o ficheiro de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Produciuse un erro ao abrir o anel de chaves «%s» para escribir: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Ademais, a liberación do bloqueo para «%s» tamén fallou: %s) "
@@ -660,7 +660,7 @@ msgid ""
 msgstr ""
 "Atopáronse opcións non compatíbeis ao construír a conexión da parte cliente"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -668,100 +668,100 @@ msgstr ""
 "Non existe a interface «org.freedesktop.DBus.Properties» no obxecto coa ruta "
 "%s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Non existe a propiedade «%s»"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Non é posíbel escribir a propiedade «%s»"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Non é posíbel escribir a propiedade «%s»"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, 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:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Non existe a interface «%s»"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Non existe a interface «%s» no obxecto coa ruta %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Non existe a clave «%s»"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, 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:5194
+#: gio/gdbusconnection.c:5205
 #, 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:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Non é posíbel obter a propiedade %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Non é posíbel estabelecer a propiedade %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, 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:6729
+#: gio/gdbusconnection.c:6742
 #, 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:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Xa se exportou un subárbore para %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "o tipo é INVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Mensaxe METHOD_CALL: falta o campo da cabeceira PATH ou MEMBER"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Mensaxe METHOD_RETURN: falta o campo da cabeceira REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Mensaxe ERROR: falta o campo da cabeceira REPLY_SERIAL ou ERROR_NAME"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Mensaxe SIGNAL: falta o campo da cabeceira PATH, INTERFACE ou MEMBER"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -769,7 +769,7 @@ msgstr ""
 "Mensaxe SIGNAL: o campo da cabeceira PATH está usando un valor reservado /"
 "org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -777,19 +777,19 @@ msgstr ""
 "Mensaxe SIGNAL: O campo da cabeceira INTERFACE está usando un valor "
 "reservado org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Quíxose ler %lu byte pero obtívose un %lu"
 msgstr[1] "Quixéronse ler %lu bytes pero obtívose un %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Esperábase un byte NUL despois da cadea «%s» pero atopouse o byte %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -799,17 +799,21 @@ msgstr ""
 "byte desvío %d (a lonxitude da cadea é %d). A cadea UTF-8 correcta até ese "
 "punto foi «%s»"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Valor aniñado demasiado profundo"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "O valor analizado «%s» non é unha ruta de obxecto D-Bus correcta"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "O valor analizado «%s» non é unha sinatura D-Bus correcta"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -822,7 +826,7 @@ msgstr[1] ""
 "Atopouse unha matriz cunha lonxitude de %u bytes. A lonxitude máxima é 2<<26 "
 "bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -831,13 +835,13 @@ msgstr ""
 "Atopouse unha matriz de tipo «a%c», agardábase ter unha de lonxitude de "
 "varios %u bytes, aínda que se atopou unha de %u bytes"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "O valor «%s» analizado para a variante non é unha sinatura de D-Bus correcta"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -845,7 +849,7 @@ msgstr ""
 "Produciuse un erro ao deserializar o GVariant co tipo cadea «%s» desde o "
 "formato ligado D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -854,30 +858,30 @@ msgstr ""
 "Valor de «endianness» non válido. Esperábase 0x6c («|») ou 0x42 («B») pero "
 "atopouse 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "A versión maior do protocolo non é válida. Esperábase 1 pero atopouse a %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Atopouse a cabeceira da sinatura pero non é do tipo sinatura"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Atopouse a cabeceira de sinatura coa sinatura «%s» máis o corpo da mensaxe "
 "está baleiro"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "O valor analizado «%s» non é unha sinatura D-Bus correcta (para o corpo)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -888,11 +892,11 @@ msgstr[1] ""
 "Non hai unha cabeceira da sinatura na mensaxe pero o corpo da mensaxe ten %u "
 "bytes"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Non foi posíbel deserializar a mensaxe: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -900,7 +904,7 @@ msgstr ""
 "Produciuse un erro ao serializar o GVariant co tipo cadea «%s» desde o "
 "formato ligado D-Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -908,18 +912,18 @@ msgstr ""
 "O número de descritores de ficheiro no mensaxe (%d) difire do campo "
 "cabeceira (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Non foi posíbel serializar a mensaxe: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "O corpo da mensaxe ten a sinatura «%s» máis non está presente a cabeceira de "
 "sinatura"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -928,38 +932,38 @@ msgstr ""
 "O corpo da mensaxe ten a sinatura de tipo «%s» pero a sintura no campo da "
 "cabeceira é «%s»"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "O corpo da mensaxe está baleiro máis a sinatura do campo da cabeceira é "
 "«(%s)»"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Produciuse un erro ao devolver co corpo de tipo «%s»"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Produciuse un erro ao devolver co corpo baleiro"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Prema calquera caracter para pechar esta xanela)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "O DBus de sesión non está executándose e o autoiniciado fallou"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Non é posíbel obter o perfil de hardware: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Non é posíbel ler /var/lib/dbus/machine-id ou /etc/machine-id: "
 
@@ -982,27 +986,27 @@ msgstr ""
 "Non é posíbel invocar ao método; o proxy non ten dono para un nome coñecido "
 "%s e o proxy construíuse coa opción G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Non se admite un espazo de nomes abstracto"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 "Non é posíbel especificar o ficheiro de uso de unha vez ao crear un servidor"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr ""
 "Produciuse un erro ao escribir no ficheiro de uso de unha vez en «%s»: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "A cadea «%s» non é un GUID de D-BUS correcta"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Non é posíbel escoitar nun transporte «%s» non admitido"
@@ -1279,41 +1283,41 @@ msgstr "Erro: Demasiados argumentos.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erro: %s non é un nome de bus válido e coñecido.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Sen nome"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "O ficheiro de escritorio non especificou o campo Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
-msgstr "Non é posíbel atopar o terminal requirido polo aplicativo"
+msgstr "Non é posíbel atopar o terminal requirido pola aplicación"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
-"Non é posíbel crear o directorio de configuración do aplicativo de usuario "
+"Non é posíbel crear o directorio de configuración da aplicación de usuario "
 "%s: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "Non é posíbel crear o directorio de configuración MIME %s do usuario: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
-msgstr "A información do aplicativo carece dun identificador"
+msgstr "A información da aplicación carece dun identificador"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, 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:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definición personalizada para %s"
@@ -1377,12 +1381,12 @@ msgstr ""
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Esperábase un GEmblem para o GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operación non permitida"
@@ -1391,71 +1395,75 @@ msgstr "Operación non permitida"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "O punto de montaxe contido non existe"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Non é posíbel copiar sobre o directorio"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Non é posíbel copiar un directorio sobre o directorio"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "O ficheiro de destino xa existe"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Non é posíbel copiar o directorio recursivamente"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Non se admite a unión"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Produciuse un erro ao empalmar o ficheiro: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copiar (reflink/clonar) entre montaxes non é compatíbel"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copiar (reflink/clone) non é compatíbel ou non é válido"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copiar (reflink/clone) non é compatíbel ou non funciona"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Non é posíbel copiar o ficheiro especial"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "O valor da ligazón simbólica dada non é válido"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "As ligazóns simbólicas non se admiten"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "O Lixo non é compatíbel"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Os nomes de ficheiro non poden conter «%c»"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "o volume non implementa o montado"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
-msgstr "Non hai ningún aplicativo rexistrado para manexar este ficheiro"
+msgstr "Non hai ningunha aplicación rexistrado para manexar este ficheiro"
 
 #: gio/gfileenumerator.c:212
 msgid "Enumerator is closed"
@@ -1498,7 +1506,7 @@ msgstr "Non se permite truncar no fluxo de entrada"
 msgid "Truncate not supported on stream"
 msgstr "Non se permite truncar no fluxo"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "O nome do host non é válido"
@@ -1615,7 +1623,7 @@ msgstr "Manter co ficheiro ao mover"
 msgid "“version” takes no arguments"
 msgstr "«version» non recolle argumentos"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Uso:"
 
@@ -1665,7 +1673,7 @@ msgstr "Mover un ou máis ficheiros"
 
 #: gio/gio-tool.c:238
 msgid "Open files with the default application"
-msgstr "Abrir ficheiros con un aplicativo predeterminado"
+msgstr "Abrir ficheiros con unha aplicación predeterminado"
 
 #: gio/gio-tool.c:239
 msgid "Rename a file"
@@ -1701,10 +1709,10 @@ msgid "Error writing to stdout"
 msgstr "Produciuse un erro ao escribir ao stdout"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1725,56 +1733,60 @@ msgstr ""
 "GIO no lugar de ficheiros locais: por exemplo, pode usar algo así como \n"
 "smb:////server/resource/file.txt como localización."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Non se forneceron localizacións"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Non hai un directorio obxectivo"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Mostrar progreso"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Preguntar antes de sobrescribir"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Manter todos os atributos"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Facer unha copia de respaldo para os ficheiros de destino"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Non mostrar nunha as ligazóns simbólicas"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Usar os permisos predeterminados para o destino"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Transferíronse %s de %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "ORIXE"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINO"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copia un ou máis ficheiros desde ORIXE a DESTINO."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1784,88 +1796,98 @@ msgstr ""
 "GIO no lugar de ficheiros locais: por exemplo, pode usar algo así como \n"
 "smb:////server/resource/file.txt como localización."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "O destino %s non é un cartafol"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: sobrescribir «%s»? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Lista de atributos escribíbeis"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Obter a información do sistema de ficheiros"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Os atributos a obter"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTOS"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Non seguir as ligazóns simbólicas"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atributos:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "nome en pantalla: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "nome de edición: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "nome: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "tipo: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "tamaño: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "oculto\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "ruta local: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "montaxe unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Atributos estabelecíbeis:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Espazos de nomes de atributo escribíbeis:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Mostrar información sobre as localizacións."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1880,23 +1902,27 @@ msgstr ""
 "ou simplemente polo espazo de nomes, p.ex. unix. ou por «*», que\n"
 "coincide con todos os atributos"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Mostrar os ficheiros ocultos"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Usar un formato de listado longo"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Imprimir nomes que mostrar"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Mostrar os URIs completos"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Lista os contidos das localizacións."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1928,7 +1954,7 @@ msgid ""
 "for the mimetype. If a handler is given, it is set as the default\n"
 "handler for the mimetype."
 msgstr ""
-"Se non se fornece un xestor, mostra os aplicativos rexistrados e\n"
+"Se non se fornece un xestor, mostra as aplicacións rexistrados e\n"
 "recomendados para o tipo mime. Se se fornece o xestor, estabelecese\n"
 "o xestor predeterminado para o tipo mime."
 
@@ -1939,28 +1965,28 @@ msgstr "Debe especificar un tipo mime único, e pode que un xestor"
 #: gio/gio-tool-mime.c:116
 #, c-format
 msgid "No default applications for “%s”\n"
-msgstr "Non hai ningún aplicativo predeterminado para «%s»\n"
+msgstr "Non hai ningunha aplicación predeterminado para «%s»\n"
 
 #: gio/gio-tool-mime.c:122
 #, c-format
 msgid "Default application for “%s”: %s\n"
-msgstr "Aplicativo predeterminado para «%s»: %s\n"
+msgstr "Aplicación predeterminada para «%s»: %s\n"
 
 #: gio/gio-tool-mime.c:127
 msgid "Registered applications:\n"
-msgstr "Aplicativos rexistrados:\n"
+msgstr "Aplicacións rexistradas:\n"
 
 #: gio/gio-tool-mime.c:129
 msgid "No registered applications\n"
-msgstr "Non hai aplicativos rexistrados\n"
+msgstr "Non hai aplicacións rexistrados\n"
 
 #: gio/gio-tool-mime.c:140
 msgid "Recommended applications:\n"
-msgstr "Aplicativos recomendados:\n"
+msgstr "Aplicacións recomendadas:\n"
 
 #: gio/gio-tool-mime.c:142
 msgid "No recommended applications\n"
-msgstr "Non hai aplicativos recomendados\n"
+msgstr "Non hai aplicacións recomendadas\n"
 
 #: gio/gio-tool-mime.c:162
 #, c-format
@@ -2030,12 +2056,12 @@ msgid "Mount as mountable"
 msgstr "Monitorizar como montábel"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Montar volume como ficheiro de dispositivo"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Montar volume como ficheiro de dispositivo, ou outro identificador"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "DISPOSITIVO"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2049,6 +2075,10 @@ msgstr "Expulsar"
 msgid "Stop drive with device file"
 msgstr "Deter a unidade con ficheiro de dispositivo"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DISPOSITIVO"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Desmonta todos os puntos de montaxe co esquema fornecido"
@@ -2102,16 +2132,11 @@ msgstr "Acceso anónimo denegado"
 msgid "No drive for device file"
 msgstr "Non hai unha unidade para o ficheiro de dispositivo"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Montado %s en  %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Non hai un volume para o ficheiro de dispositivo"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Non hai un volume para o ID fornecido"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Montar ou desmontar as localizacións."
 
@@ -2143,8 +2168,8 @@ msgid ""
 "Open files with the default application that\n"
 "is registered to handle files of this type."
 msgstr ""
-"Abrir os ficheiros co aplicativo predeterminado\n"
-"que está rexistrado para xestionar ficheiros\n"
+"Abrir os ficheiros coa aplicación predeterminada\n"
+"que está rexistrada para xestionar ficheiros\n"
 "deste tipo."
 
 #: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:31
@@ -2328,20 +2353,20 @@ msgstr "Produciuse un erro ao ler o ficheiro %s: %s"
 msgid "Error compressing file %s"
 msgstr "Produciuse un erro ao comprimir o ficheiro: %s"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "o texto non debe aparecer dentro de <%s>"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostrar a versión do programa e saír"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Nome do ficheiro de saída"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2349,48 +2374,48 @@ msgstr ""
 "Os directorios dos que ler ficheiros referenciados en FILE (por omisión: o "
 "directorio actual)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRECTORIO"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Xerar saída no formato seleccionado pola extensión do nome do ficheiro "
 "obxetivo"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Xerar unha cabeceira de orixe"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Xera o código fonte usado para ligar o ficheiro do recurso no seu código"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Xerar lista de dependencias"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Nome do ficheiro de dependencia a xerar"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inclúe obxectivos phony no ficheiro de dependencias xerado"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Non crear e rexistrar o recurso automaticamente"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Non exporte as funcións; decláreas en G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2398,11 +2423,11 @@ msgstr ""
 "Non incrustar os datos do recurso no ficheiro C; asúmese que é ligado "
 "externamente no lugar"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "O nome de identificador C usado para xerar o código fonte"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2413,7 +2438,7 @@ msgstr ""
 "xml,\n"
 "e o ficheiro do recurso ten a extensión .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Debería fornecer exactamente un nome de ficheiro\n"
 
@@ -2935,7 +2960,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Non é posíbel renomear o ficheiro, o ficheiro xa existe"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "O nome do ficheiro non é válido"
 
@@ -3012,132 +3037,128 @@ msgstr "O sistema de ficheiros non é compatíbel coas ligazóns simbólicas"
 msgid "Error making symbolic link %s: %s"
 msgstr "Produciuse un erro ao crear a ligazón simbólica %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "As ligazóns simbólicas non se admiten"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Produciuse un erro ao mover o ficheiro %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Non é posíbel mover o directorio sobre un directorio"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Fallou a creación do ficheiro de seguranza"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Produciuse un erro ao retirar o ficheiro obxectivo: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Non se permite mover entre puntos de montaxe"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Non foi posíbel determinar o uso de disco de %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "O valor do atributo debe ser non nulo"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Tipo de atributo non válido (esperábase unha cadea)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Nome estendido do atributo non válido"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Produciuse un erro ao estabelecer o atributo estendido «%s»: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (codificación non válida)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Produciuse un erro ao obter a información do ficheiro «%s»: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Produciuse un erro ao obter información do descritor do ficheiro: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "O tipo de atributo non é válido (esperábase uint32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "O tipo de atributo non é válido (esperábase uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "O tipo de atributo non é válido (esperábase unha cadea de bytes)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Non foi posíbel estabelecer os permisos nas ligazóns simbólicas"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Produciuse un erro ao estabelecer os permisos: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Produciuse un erro ao estabelecer o propietario: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "a ligazón simbólica debe ser non nula"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Produciuse un erro ao estabelecer a ligazón simbólica: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Produciuse un erro ao estabelecer a ligazón simbólica: o ficheiro non é unha "
 "ligazón"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr ""
 "Produciuse un erro ao modificar a configuración ou o tempo de acceso: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "O contexto SELinux debe ser non-NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Produciuse un erro ao estabelecer o contexto SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux non está activado neste sistema"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Non se permite estabelecer o atributo %s"
@@ -3160,7 +3181,7 @@ msgstr "Produciuse un erro ao buscar no ficheiro: %s"
 msgid "Error closing file: %s"
 msgstr "Produciuse un erro ao pechar o ficheiro: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr ""
 "Non é posíbel atopar o tipo de monitorización do ficheiro local "
@@ -3306,11 +3327,11 @@ msgstr "a montaxe non implementa a averiguación síncrona do tipo de contido"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "O nome do host «%s» contén «[» mais non «]»"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "A rede non é atinxíbel"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Equipo non atinxíbel"
 
@@ -3351,18 +3372,18 @@ msgstr "A suma de vectores pasados a %s é demasiado longa"
 msgid "Source stream is already closed"
 msgstr "O fluxo de orixe xa está pechado"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Produciuse un erro ao resolver «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s non implementado"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Dominio non válido"
 
@@ -3739,176 +3760,176 @@ msgstr "Forneceuse un nome de esquema baleiro\n"
 msgid "No such key “%s”\n"
 msgstr "Non existe a clave «%s»\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "O socket non é válido, non se inicializou"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "O socket non é válido, a inicialización fallou debido a: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "O fluxo de orixe xa está pechado"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Tempo de espera do Socket de E/S superado"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creando o GSocket a partir de fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Non é posíbel crear o socket: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Especificouse unha familia descoñecida"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Especificouse un protocolo descoñecido"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Non é posíbel usar as operacions de datagramas nun socket que non é de "
 "datagramas."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Non é posíbel usar operacións de datagramas nun socket con un tempo de "
 "espera máximo estabelecido."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "non foi posíbel obter un enderezo local: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "non foi posíbel obter un enderezo remoto: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "non foi posíbel escoitar: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Produciuse un erro ao conectar co enderezo: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Produciuse un erro ao ligar co enderezo %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Produciuse un erro ao unirse ao grupo multicast: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Produciuse un erro ao deixar o grupo multicast: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Non se admite o multicast específico da fonte"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Familia de socket non admitida"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "o source-specific non é un enderezo IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Nome da interface demasiado larga"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface non atopada: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Non se admite o multicast IPv4 específico da fonte"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Non se admite o multicast IPv6 específico da fonte"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Produciuse un erro ao aceptar a conexión: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Conexión en marcha"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Non é posíbel obter o erro pendente: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Produciuse un erro ao recibir datos: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Produciuse un erro ao enviar datos: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Non é posíbel desconectar o socket: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Produciuse un erro ao pechar o socket: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Agardando pola situación do socket: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Produciuse un erro ao enviar a mensaxe: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "O GSocketControlMessage non está permitido en Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Produciuse un erro ao recibir a mensaxe: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Non é posíbel ler as credenciais do socket: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials non está implementado para este sistema operativo"
@@ -4177,7 +4198,7 @@ msgstr "Produciuse un erro ao ler do descritor do ficheiro: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Produciuse un erro ao pechar o descritor do ficheiro: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Raíz do sistema de ficheiros"
 
@@ -4265,74 +4286,74 @@ msgstr "Argumentos incorrectos\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Atributo «%s» inesperado para o elemento «%s»"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Non se atopou o atributo «%s» do elemento «%s»"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Etiqueta «%s» inesperada, esperábase a etiqueta «%s»"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Etiqueta «%s» inesperada dentro de «%s»"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Data/Hora «%s» non válida no ficheiro de marcador"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 "Non foi posíbel atopar un ficheiro de marcadores válido nos directorios de "
 "datos"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Xa existe un marcador para o URI «%s»"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Non se atopou ningún marcador para o URI «%s»"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Non hai ningún tipo MIME definido no marcador para o URI «%s»"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Non se definiu ningún parámetro privado no marcador para o URI «%s»"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Non existe ningún grupo definido no marcador para o URI «%s»"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
-msgstr "Ningún aplicativo denominado «%s» rexistrou un marcador para «%s»"
+msgstr "Ningunha aplicación denominada «%s» rexistrou un marcador para «%s»"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Produciuse un erro ao expandir a liña executábel «%s» co URI «%s»"
@@ -4341,8 +4362,8 @@ msgstr "Produciuse un erro ao expandir a liña executábel «%s» co URI «%s»"
 msgid "Unrepresentable character in conversion input"
 msgstr "Caracter non representábel na entrada da conversión"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Hai unha secuencia de carácter parcial ao final da entrada"
 
@@ -4890,25 +4911,25 @@ msgstr "O modelo «%s» non contén XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Produciuse un erro ao ler a ligazón simbólica «%s»: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Non foi posíbel abrir o conversor de «%s» a «%s»: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 "Non é posíbel facer unha lectura en bruto en g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Datos restantes non convertidos no búfer de lectura"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "O canal termina nun carácter parcial"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Non é posíbel facer unha lectura en bruto en g_io_channel_read_to_end"
 
@@ -4949,8 +4970,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "O ficheiro clave contén unha codificación non permitida «%s»"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "O ficheiro clave non ten un grupo «%s»"
@@ -4987,31 +5008,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "A clave «%s» do grupo «%s» ten o valor «%s», pero agardábase %s"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "O ficheiro clave contén un carácter de escape ao final da liña"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "O ficheiro clave contén a secuencia de escape non válida «%s»"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, 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:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "O valor enteiro «%s» está fóra do intervalo"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, 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:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Non é posíbel interpretar o valor «%s» como un booleano."
@@ -5103,11 +5124,11 @@ msgstr ""
 "A entidade non remata cun punto e coma, probabelmente usou o carácter & sen "
 "a intención de comezar unha entidade, escriba o & como &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "O documento debe comezar cun elemento (por exemplo <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5116,7 +5137,7 @@ msgstr ""
 "«%s» non é un carácter válido despois dun carácter «<»; non pode iniciar un "
 "nome de elemento"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5125,7 +5146,12 @@ msgstr ""
 "Carácter estraño «%s», esperábase un carácter «>» para pechar a etiqueta de "
 "elemento baleiro «%s»"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Hai demasiados atributos no elemento «%s»"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5133,7 +5159,7 @@ msgstr ""
 "Carácter estraño «%s», esperábase un «=» despois do nome do atributo «%s» do "
 "elemento «%s»"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5144,7 +5170,7 @@ msgstr ""
 "etiqueta de comezo do elemento «%s» ou opcionalmente un atributo; quizais "
 "usou un carácter non válido no nome dun atributo"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5153,7 +5179,7 @@ msgstr ""
 "Carácter estraño «%s», esperábase unhas comiñas de apertura despois do signo "
 "igual para dar un valor ao atributo «%s» do elemento «%s»"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5162,7 +5188,7 @@ msgstr ""
 "«%s» non é un carácter válido despois dos caracteres «</»; «%s» non pode "
 "comezar o nome dun elemento"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5171,25 +5197,25 @@ msgstr ""
 "«%s» non é un carácter válido despois do nome de elemento de peche «%s»; o "
 "carácter permitido é «>»"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Pechouse o elemento «%s», actualmente non hai ningún elemento aberto"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Pechouse o elemento «%s», mais o elemento aberto actualmente é «%s»"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "O documento estaba baleiro ou só contiña espazos en branco"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "O documento rematou inesperadamente despois dun símbolo menor que «<»"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5198,7 +5224,7 @@ msgstr ""
 "O documento rematou inesperadamente con elementos aínda abertos - «%s» foi o "
 "último elemento aberto"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5207,21 +5233,21 @@ msgstr ""
 "O documento rematou inesperadamente, esperábase ver un símbolo maior que '>' "
 "que pechase a etiqueta <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "O documento rematou inesperadamente dentro dun nome de elemento"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "O documento rematou inesperadamente dentro dun nome de atributo"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "O documento rematou inesperadamente dentro dunha etiqueta de comezo de "
 "elemento."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5229,85 +5255,85 @@ msgstr ""
 "O documento rematou inesperadamente despois do signo igual que segue a un "
 "nome de atributo; non hai valor de atributo"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "O documento rematou inesperadamente dentro dun valor de atributo"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "O documento rematou inesperadamente dentro da etiqueta que pechaba o "
 "elemento «%s»"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "O documento rematou inesperadamente dentro da etiqueta que pechaba o "
 "elemento «%s»"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "O documento rematou inesperadamente dentro dun comentario ou instrución de "
 "procesamento"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPCIÓN…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Opcións de axuda:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Mostrar as opcións de axuda"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Mostrar todas as opcións de axuda"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
-msgstr "Opcións do aplicativo:"
+msgstr "Opcións da aplicación:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Opcións:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Non é posíbel analizar o valor enteiro «%s» para %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "O valor enteiro «%s» para %s está fóra do intervalo"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Non é posíbel analizar o valor \"double\" «%s» para %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "O valor \"double\" «%s» para %s está fóra do intervalo"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Produciuse un erro ao analizar a opción %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Argumento que falta para %s"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opción %s descoñecida"
@@ -5719,78 +5745,78 @@ msgstr "O texto estaba baleiro (ou só contiña espazos en branco)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Produciuse un erro ao ler datos desde un proceso fillo (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Erro inesperado en select() ao ler datos dun proceso fillo (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Produciuse un erro ao ler os datos dun proceso fillo (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Erro inesperado en waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "O proceso fillo rematou co código %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "O proceso fillo rematou polo sinal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "O proceso fillo detívose polo sinal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "O proceso fillo rematou de forma anormal"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Produciuse un erro ao ler desde a canalización filla (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Produciuse un erro ao executar o proceso fillo «%s» (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Produciuse un erro ao facer fork (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Produciuse un erro ao cambiar ao directorio «%s» (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Produciuse un erro ao executar o proceso fillo «%s» (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr ""
 "Produciuse un erro ao redireccionar a saída ou entrada do proceso fillo (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Produciuse un erro ao facer fork ao proceso fillo (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Produciuse un erro descoñecido ao executar o proceso fillo «%s»"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5845,194 +5871,194 @@ msgstr ""
 "Erro inesperado en g_io_channel_win32_poll() ao ler datos desde un proceso "
 "fillo"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "A cadea baleira non é un número"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» non é un número con signo"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "O número «%s» está fóra de rango [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» non é un número sen signo"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Produciuse un erro ao reservar memoria"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Carácter fóra do intervalo para UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Secuencia non válida na entrada da conversión"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Carácter fóra de intervalo para UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6040,7 +6066,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6048,7 +6074,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6060,337 +6086,35 @@ msgstr[1] "%s bit"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#~ msgid "; ignoring override for this key.\n"
-#~ msgstr "; ignorando a sobrescritura para esta clave.\n"
-
-#~ msgid " and --strict was specified; exiting.\n"
-#~ msgstr "e --strict foi especificado; saíndo.\n"
-
-#~ msgid "Ignoring override for this key.\n"
-#~ msgstr "Ignorando a sobrescritura para esta clave.\n"
-
-#~ msgid "doing nothing.\n"
-#~ msgstr "sen facer nada.\n"
-
-#~ msgid "No such method '%s'"
-#~ msgstr "Non existe o método «%s»"
-
-#~ msgid ""
-#~ "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment "
-#~ "variable - unknown value '%s'"
-#~ msgstr ""
-#~ "Non é posíbel determinar o enderezo do bus desde a variábel de ambiente "
-#~ "DBUS_STARTER_BUS_TYPE - valor descoñecido «%s»"
-
-#~ msgid "[ARGS...]"
-#~ msgstr "[ARGS...]"
-
-#~ msgid "Failed to create temp file: %s"
-#~ msgstr "Produciuse un erro ao crear o ficheiro temporal: %s"
-
-#~ msgid ""
-#~ "Message has %d file descriptors but the header field indicates %d file "
-#~ "descriptors"
-#~ msgstr ""
-#~ "A mensaxe ten %d descritores de ficheiro pero o campo da cabeceira indica "
-#~ "%d descritores de ficheiro"
-
-#~ msgid "Error: object path not specified.\n"
-#~ msgstr "Erro: non se especificou unha ruta de obxecto.\n"
-
-#~ msgid "Error: signal not specified.\n"
-#~ msgstr "Erro: non se especificou o sinal.\n"
-
-#~ msgid "Error: signal must be the fully-qualified name.\n"
-#~ msgstr "Erro: o sinal debe ser un nome cualificado completo.\n"
-
-#~ msgid "No such interface"
-#~ msgstr "Non existe a interface"
-
-#~ msgid "No files given"
-#~ msgstr "Non se forneceu ningún ficheiro"
-
-#~ msgid "Error getting writable attributes: %s\n"
-#~ msgstr "Produciuse un erro ao escribir os atributos: %s\n"
-
-#~ msgid "Error mounting location: %s\n"
-#~ msgstr "Produciuse un erro ao montar a localización: %s\n"
-
-#~ msgid "Error unmounting mount: %s\n"
-#~ msgstr "Produciuse un erro ao desmontar o montaxe: %s\n"
-
-#~ msgid "Error finding enclosing mount: %s\n"
-#~ msgstr "Produciuse un erro ao pechar unix: %s\n"
-
-#~ msgid "Error ejecting mount: %s\n"
-#~ msgstr "Produciuse un erro ao expulsar o montaxe: %s\n"
-
-#~ msgid "Error mounting %s: %s\n"
-#~ msgstr "Produciuse un erro ao montar %s: %s\n"
-
-#~ msgid "No files to open"
-#~ msgstr "Non hai ningún ficheiro para abrir"
-
-#~ msgid "No files to delete"
-#~ msgstr "Non hai ningún ficheiro a eliminar"
-
-#~ msgid "Error setting attribute: %s\n"
-#~ msgstr "Produciuse un erro ao estabelecer o atributo: %s\n"
-
-#~ msgid "Error creating directory '%s': %s"
-#~ msgstr "Produciuse un erro ao crear o directorio «%s»: %s"
-
-#~ msgid "Error opening file '%s': %s"
-#~ msgstr "Produciuse un erro ao abrir o ficheiro «%s»: %s"
-
-#~ msgid "Error reading file '%s': %s"
-#~ msgstr "Produciuse un erro ao ler o ficheiro «%s»: %s"
-
-#~ msgid "Error renaming file: %s"
-#~ msgstr "Produciuse un erro ao renomear o ficheiro: %s"
-
-#~ msgid "Error opening file: %s"
-#~ msgstr "Produciuse un erro ao abrir o ficheiro: %s"
-
-#~ msgid "Error creating directory: %s"
-#~ msgstr "Produciuse un erro ao crear o directorio: %s"
-
-#~ msgid "Unable to find default local directory monitor type"
-#~ msgstr ""
-#~ "Non é posíbel atopar o tipo de monitorización do directorio local "
-#~ "predeterminado"
-
-#~ msgid "association changes not supported on win32"
-#~ msgstr "os cambios de asociación non son compatíbeis con win32"
-
-#~ msgid "Association creation not supported on win32"
-#~ msgstr "A creación de asociación non é compatíbel con win32"
-
-#~ msgid "URIs not supported"
-#~ msgstr "Os URI non son compatíbeis"
-
-#~ msgid "Key file does not have key '%s'"
-#~ msgstr "O ficheiro clave non ten a chave «%s»"
-
-#~ msgid ""
-#~ "Error processing input file with xmllint:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Produciuse un erro ao procesar o ficheiro de entrada con xmllint:\n"
-#~ "%s"
-
-#~ msgid ""
-#~ "Error processing input file with to-pixdata:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Produciuse un erro ao procesar o ficheiro de entrada con to-pixdata:\n"
-#~ "%s"
-
-#~ msgid "Unable to get pending error: %s"
-#~ msgstr "Non é posíbel obter o erro pendente: %s"
-
-#~ msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
-#~ msgstr ""
-#~ "Produciuse un erro ao abrir o ficheiro «%s» para escritura: fdopen() "
-#~ "fallou: %s"
-
-#~ msgid "Failed to write file '%s': fflush() failed: %s"
-#~ msgstr "Produciuse un erro ao escribir o ficheiro «%s»: fflush() fallou: %s"
-
-#~ msgid "Failed to close file '%s': fclose() failed: %s"
-#~ msgstr "Produciuse un erro ao pechar o ficheiro «%s»: fclose() fallou: %s"
-
-#~ msgid "Incomplete data received for '%s'"
-#~ msgstr "Datos recibidos incompletos para «%s»"
-
-#~ msgid ""
-#~ "Unexpected option length while checking if SO_PASSCRED is enabled for "
-#~ "socket. Expected %d bytes, got %d"
-#~ msgstr ""
-#~ "Opción de lonxitude inesperada ao comprobar se SO_PASSCRED estaba "
-#~ "activada para o socket. Esperábanse %d bytes, obtivéronse %d"
-
-#~ msgid "Abnormal program termination spawning command line '%s': %s"
-#~ msgstr "Terminación anómala do programa ao iniciar («spawn») a orde «%s»:%s"
-
-#~ msgid "Command line '%s' exited with non-zero exit status %d: %s"
-#~ msgstr ""
-#~ "A orde de liña «%s» rematou con un estado de saída distinto de cero %d: %s"
-
-#~ msgid "workspace limit for empty substrings reached"
-#~ msgstr "atinxiuse o límite do espazo de traballo para subcadeas baleiras"
-
-#~ msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here"
-#~ msgstr ""
-#~ "aquí non se permiten as letras con maiúsculas e minúsculas escapadas "
-#~ "(\\l, \\L, \\u, \\U)"
-
-#~ msgid "repeating a DEFINE group is not allowed"
-#~ msgstr "non se permite repetir un grupo DEFINE"
-
-#~ msgid "No service record for '%s'"
-#~ msgstr "Non hai rexistro de servizo de «%s»"
-
-#~ msgid "Could not bind netlink socket: %s"
-#~ msgstr "Non foi posíbel conectar ao socket netlink: %s:"
-
-#~ msgid "Could not set options on netlink socket: %s"
-#~ msgstr "Non foi posíbel estabelecer as opcións do socket netlink: %s"
-
-#, fuzzy
-#~ msgid "Could not wrap netlink socket: "
-#~ msgstr "Non é posíbel envolver o socket netlink:"
-
-#~ msgid "Could not send netlink request: "
-#~ msgstr "Non foi posíbel enviar a solicitude netlink:"
-
-#~ msgid "File is empty"
-#~ msgstr "O ficheiro está baleiro"
-
-#~ msgid "Error connecting: "
-#~ msgstr "Produciuse un erro ao conectar: "
-
-#~ msgid "Error connecting: %s"
-#~ msgstr "Produciuse un erro ao conectar: %s"
-
-#~ msgid "Error reading from unix: %s"
-#~ msgstr "Produciuse un erro ao ler de unix: %s"
-
-#~ msgid "Error writing to unix: %s"
-#~ msgstr "Produciuse un erro ao escribir a unix: %s"
-
-#~ 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."
-
-#~ msgid "This option will be removed soon."
-#~ msgstr "Esta opción eliminarase pronto"
-
-#~ msgid "Error stating file '%s': %s"
-#~ msgstr "Produciuse un erro ao iniciar o ficheiro «%s»: %s"
-
-#~ msgid "SOCKSv4 implementation limits username to %i characters"
-#~ msgstr ""
-#~ "A implementación de SOCKSv4 limita o nome de usuario a %i caracteres"
-
-#~ msgid "SOCKSv4a implementation limits hostname to %i characters"
-#~ msgstr ""
-#~ "A implementación de SOCKSv4a limita o nome de computador a %i caracteres"
-
-#~ msgctxt "GDateTime"
-#~ msgid "am"
-#~ msgstr "am"
-
-#~ msgctxt "GDateTime"
-#~ msgid "pm"
-#~ msgstr "pm"
-
-#~ msgid "Type of return value is incorrect, got '%s', expected '%s'"
-#~ msgstr ""
-#~ "O tipo do valor de retorno é incorrecto, obtívose «%s» e esperábase «%s»"
-
-#~ msgid ""
-#~ "Trying to set property %s of type %s but according to the expected "
-#~ "interface the type is %s"
-#~ msgstr ""
-#~ "Tentouse estabelecer a propiedade %s do tipo %s pero segundo á interface "
-#~ "esperada o tipo é %s"
-
-#~ 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"
-#~ "\n"
-#~ "Use '%s COMMAND --help' to get help for individual commands.\n"
-#~ msgstr ""
-#~ "Ordes:\n"
-#~ "  help        Mostrar esta información\n"
-#~ "  get         Obter o valor dunha chave\n"
-#~ "  set         Estabelecer o valor dunha chave\n"
-#~ "  reset       Restabelecer o valor dunha chave\n"
-#~ "  monitor     Monitorizar se hai cambios nunha chave\n"
-#~ "  writable    Comprobar se se pode escribir unha clave\n"
-#~ "\n"
-#~ "Use «%s COMANDO --help» para obter axuda das ordes individualmente.\n"
-
-#~ msgid "Specify the path for the schema"
-#~ msgstr "Especifique o camiño para o esquema"
-
-#~ 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 ""
-#~ "Argumentos:\n"
-#~ "  SCHEMA      O id do esquema\n"
-#~ "  KEY         O nome da chave\n"
-#~ "  VALUE       O valor da chave para estabelecer como unha GVariant "
-#~ "serializada\n"
-
-#~ msgid ""
-#~ "Monitor KEY for changes and print the changed values.\n"
-#~ "Monitoring will continue until the process is terminated."
-#~ msgstr ""
-#~ "Monitorizar a CHAVE por cambios e imprimir os valores cambiados.\n"
-#~ "A monitorización continuará até que o proceso remate."
-
-#~ msgid "No such schema '%s' specified in override file '%s'"
-#~ msgstr ""
-#~ "Non existe o esquema «%s» especificado no ficheiro de sobrescritura «%s»"
-
-#~ msgid "Error writing first 16 bytes of message to socket: "
-#~ msgstr ""
-#~ "Produciuse un erro ao escribir os primeiros 16 bytes da mensaxe no socket:"
-
-#~ msgid "The nonce-file '%s' was %lu bytes. Expected 16 bytes."
-#~ msgstr ""
-#~ "O ficheiro de uso de unha vez «%s» tiña %lu bytes. Esperábanse 16 bytes."
-
-#~ msgid "Encountered array of length %"
-#~ msgstr "Encontrouse unha matriz de lonxitude %"
-
-#~ msgid "Do not give error for empty directory"
-#~ msgstr "Non é posíbel mover o directorio sobre un directorio"
-
-#~ msgid "Error: Result is type '%s', expected '(s)'\n"
-#~ msgstr "Erro: o tipo do resultado é «%s», esperábase «(s)»\n"
-
-#~ msgid "Error: Result is type '%s', expected '(as)'\n"
-#~ msgstr "Erro: o tipo do resultado «%s» esperábase «(as)»\n"
+#~ msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+#~ msgstr "Este GTlsBackend non admite a creación de certificados PKCS #11"
index e668567..3233241 100644 (file)
--- a/po/he.po
+++ b/po/he.po
 # Gil 'Dolfin' Osher <dolfin@rpg.org.il>, 2002.
 # Gil Osher <dolfin@rpg.org.il>, 2004.
 # Yaron Shahrabani <sh.yaron@gmail.com>, 2010.
-# Yosef Or Boczko <yoseforb@gnome.org>, 2014.
+# Yosef Or Boczko <yoseforb@gmail.com>, 2014-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib.HEAD.he\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-11-26 15:37+0200\n"
-"PO-Revision-Date: 2017-11-26 15:45+0200\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
+"POT-Creation-Date: 2020-03-06 13:00+0000\n"
+"PO-Revision-Date: 2020-03-30 20:35+0300\n"
 "Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
-"Language-Team: עברית <>\n"
+"Language-Team: Hebrew <yoseforb@gmail.com>\n"
 "Language: he\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 2.91.6\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: Gtranslator 3.36.0\n"
 
-#: ../gio/gapplication.c:490
+#: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication options"
 
-#: ../gio/gapplication.c:490
+#: gio/gapplication.c:500
 msgid "Show GApplication options"
 msgstr "Show GApplication options"
 
-#: ../gio/gapplication.c:535
+#: gio/gapplication.c:545
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr "Enter GApplication service mode (use from D-Bus service files)"
 
-#: ../gio/gapplication.c:547
+#: gio/gapplication.c:557
 msgid "Override the application’s ID"
 msgstr "Override the application’s ID"
 
-#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
-#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:522
+#: gio/gapplication.c:569
+msgid "Replace the running instance"
+msgstr "Replace the running instance"
+
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
 msgid "Print help"
 msgstr "Print help"
 
-#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489
-#: ../gio/gresource-tool.c:557
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
 msgid "[COMMAND]"
 msgstr "[COMMAND]"
 
-#: ../gio/gapplication-tool.c:49 ../gio/gio-tool.c:228
+#: gio/gapplication-tool.c:49 gio/gio-tool.c:228
 msgid "Print version"
 msgstr "Print version"
 
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:528
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
 msgid "Print version information and exit"
 msgstr "Print version information and exit"
 
-#: ../gio/gapplication-tool.c:52
+#: gio/gapplication-tool.c:52
 msgid "List applications"
 msgstr "List applications"
 
-#: ../gio/gapplication-tool.c:53
+#: gio/gapplication-tool.c:53
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr "List the installed D-Bus activatable applications (by .desktop files)"
 
-#: ../gio/gapplication-tool.c:55
+#: gio/gapplication-tool.c:55
 msgid "Launch an application"
 msgstr "Launch an application"
 
-#: ../gio/gapplication-tool.c:56
+#: gio/gapplication-tool.c:56
 msgid "Launch the application (with optional files to open)"
 msgstr "Launch the application (with optional files to open)"
 
-#: ../gio/gapplication-tool.c:57
+#: gio/gapplication-tool.c:57
 msgid "APPID [FILE…]"
 msgstr "APPID [FILE…]"
 
-#: ../gio/gapplication-tool.c:59
+#: gio/gapplication-tool.c:59
 msgid "Activate an action"
 msgstr "Activate an action"
 
-#: ../gio/gapplication-tool.c:60
+#: gio/gapplication-tool.c:60
 msgid "Invoke an action on the application"
 msgstr "Invoke an action on the application"
 
-#: ../gio/gapplication-tool.c:61
+#: gio/gapplication-tool.c:61
 msgid "APPID ACTION [PARAMETER]"
 msgstr "APPID ACTION [PARAMETER]"
 
-#: ../gio/gapplication-tool.c:63
+#: gio/gapplication-tool.c:63
 msgid "List available actions"
 msgstr "List available actions"
 
-#: ../gio/gapplication-tool.c:64
+#: gio/gapplication-tool.c:64
 msgid "List static actions for an application (from .desktop file)"
 msgstr "List static actions for an application (from .desktop file)"
 
-#: ../gio/gapplication-tool.c:65 ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
 msgid "APPID"
 msgstr "APPID"
 
-#: ../gio/gapplication-tool.c:70 ../gio/gapplication-tool.c:133
-#: ../gio/gdbus-tool.c:90 ../gio/gio-tool.c:224
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
+#: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "COMMAND"
 
-#: ../gio/gapplication-tool.c:70
+#: gio/gapplication-tool.c:70
 msgid "The command to print detailed help for"
 msgstr "The command to print detailed help for"
 
-#: ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:71
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Application identifier in D-Bus format (eg: org.example.viewer)"
 
-#: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:665
-#: ../gio/glib-compile-resources.c:671 ../gio/glib-compile-resources.c:698
-#: ../gio/gresource-tool.c:495 ../gio/gresource-tool.c:561
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "FILE"
 
-#: ../gio/gapplication-tool.c:72
+#: gio/gapplication-tool.c:72
 msgid "Optional relative or absolute filenames, or URIs to open"
 msgstr "Optional relative or absolute filenames, or URIs to open"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:73
 msgid "ACTION"
 msgstr "ACTION"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:73
 msgid "The action name to invoke"
 msgstr "The action name to invoke"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:74
 msgid "PARAMETER"
 msgstr "PARAMETER"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:74
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Optional parameter to the action invocation, in GVariant format"
 
-#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:614
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -153,26 +154,26 @@ msgstr ""
 "Unknown command %s\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:101
+#: gio/gapplication-tool.c:101
 msgid "Usage:\n"
 msgstr "Usage:\n"
 
-#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:649
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
 msgid "Arguments:\n"
 msgstr "Arguments:\n"
 
-#: ../gio/gapplication-tool.c:133
+#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
 msgid "[ARGS…]"
 msgstr "[ARGS…]"
 
-#: ../gio/gapplication-tool.c:134
+#: gio/gapplication-tool.c:134
 #, c-format
 msgid "Commands:\n"
 msgstr "Commands:\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
-#: ../gio/gapplication-tool.c:146
+#: gio/gapplication-tool.c:146
 #, c-format
 msgid ""
 "Use “%s help COMMAND” to get detailed help.\n"
@@ -181,7 +182,7 @@ msgstr ""
 "Use “%s help COMMAND” to get detailed help.\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:165
+#: gio/gapplication-tool.c:165
 #, c-format
 msgid ""
 "%s command requires an application id to directly follow\n"
@@ -190,13 +191,13 @@ msgstr ""
 "%s command requires an application id to directly follow\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:171
+#: gio/gapplication-tool.c:171
 #, c-format
 msgid "invalid application id: “%s”\n"
 msgstr "invalid application id: “%s”\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
-#: ../gio/gapplication-tool.c:182
+#: gio/gapplication-tool.c:182
 #, c-format
 msgid ""
 "“%s” takes no arguments\n"
@@ -205,22 +206,21 @@ msgstr ""
 "“%s” takes no arguments\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:266
+#: gio/gapplication-tool.c:266
 #, c-format
 msgid "unable to connect to D-Bus: %s\n"
 msgstr "unable to connect to D-Bus: %s\n"
 
-#: ../gio/gapplication-tool.c:286
+#: gio/gapplication-tool.c:286
 #, c-format
 msgid "error sending %s message to application: %s\n"
 msgstr "error sending %s message to application: %s\n"
 
-#: ../gio/gapplication-tool.c:317
-#, c-format
+#: gio/gapplication-tool.c:317
 msgid "action name must be given after application id\n"
 msgstr "action name must be given after application id\n"
 
-#: ../gio/gapplication-tool.c:325
+#: gio/gapplication-tool.c:325
 #, c-format
 msgid ""
 "invalid action name: “%s”\n"
@@ -229,27 +229,25 @@ msgstr ""
 "invalid action name: “%s”\n"
 "action names must consist of only alphanumerics, “-” and “.”\n"
 
-#: ../gio/gapplication-tool.c:344
+#: gio/gapplication-tool.c:344
 #, c-format
 msgid "error parsing action parameter: %s\n"
 msgstr "error parsing action parameter: %s\n"
 
-#: ../gio/gapplication-tool.c:356
-#, c-format
+#: gio/gapplication-tool.c:356
 msgid "actions accept a maximum of one parameter\n"
 msgstr "actions accept a maximum of one parameter\n"
 
-#: ../gio/gapplication-tool.c:411
-#, c-format
+#: gio/gapplication-tool.c:411
 msgid "list-actions command takes only the application id"
 msgstr "list-actions command takes only the application id"
 
-#: ../gio/gapplication-tool.c:421
+#: gio/gapplication-tool.c:421
 #, c-format
 msgid "unable to find desktop file for application %s\n"
 msgstr "unable to find desktop file for application %s\n"
 
-#: ../gio/gapplication-tool.c:466
+#: gio/gapplication-tool.c:466
 #, c-format
 msgid ""
 "unrecognised command: %s\n"
@@ -258,150 +256,162 @@ msgstr ""
 "unrecognised command: %s\n"
 "\n"
 
-#: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498
-#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379
-#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1019
-#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
+#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "Too large count value passed to %s"
 
-#: ../gio/gbufferedinputstream.c:891 ../gio/gbufferedoutputstream.c:575
-#: ../gio/gdataoutputstream.c:562
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575
+#: gio/gdataoutputstream.c:562
 msgid "Seek not supported on base stream"
 msgstr "Seek not supported on base stream"
 
-#: ../gio/gbufferedinputstream.c:937
+#: gio/gbufferedinputstream.c:937
 msgid "Cannot truncate GBufferedInputStream"
 msgstr "Cannot truncate GBufferedInputStream"
 
-#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1208
-#: ../gio/giostream.c:300 ../gio/goutputstream.c:1660
+#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "Stream is already closed"
 
-#: ../gio/gbufferedoutputstream.c:612 ../gio/gdataoutputstream.c:592
+#: gio/gbufferedoutputstream.c:612 gio/gdataoutputstream.c:592
 msgid "Truncate not supported on base stream"
 msgstr "Truncate not supported on base stream"
 
-#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1849
-#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:871
-#: ../gio/gsimpleasyncresult.c:897
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
+#: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
 msgstr "Operation was cancelled"
 
-#: ../gio/gcharsetconverter.c:260
+#: gio/gcharsetconverter.c:260
 msgid "Invalid object, not initialized"
 msgstr "Invalid object, not initialized"
 
-#: ../gio/gcharsetconverter.c:281 ../gio/gcharsetconverter.c:309
+#: gio/gcharsetconverter.c:281 gio/gcharsetconverter.c:309
 msgid "Incomplete multibyte sequence in input"
 msgstr "Incomplete multibyte sequence in input"
 
-#: ../gio/gcharsetconverter.c:315 ../gio/gcharsetconverter.c:324
+#: gio/gcharsetconverter.c:315 gio/gcharsetconverter.c:324
 msgid "Not enough space in destination"
 msgstr "Not enough space in destination"
 
-#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:437 ../glib/gconvert.c:844
-#: ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
-#: ../glib/giochannel.c:2443 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
+#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Invalid byte sequence in conversion input"
 
-#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:445 ../glib/gconvert.c:769
-#: ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Error during conversion: %s"
 
-#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1101
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Cancellable initialization not supported"
 
 # *** This file should not be translated to hebrew, please only copy the english text ***
 # *** Old hebrew ranslation is commented for backup sake                              ***
-#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:320
-#: ../glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Conversion from character set “%s” to “%s” is not supported"
 
-#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:324
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Could not open converter from “%s” to “%s”"
 
-#: ../gio/gcontenttype.c:358
+#: gio/gcontenttype.c:452
 #, c-format
 msgid "%s type"
 msgstr "%s type"
 
-#: ../gio/gcontenttype-win32.c:177
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "Unknown type"
 
-#: ../gio/gcontenttype-win32.c:179
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
 msgstr "%s filetype"
 
-#: ../gio/gcredentials.c:312 ../gio/gcredentials.c:571
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials contains invalid data"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials is not implemented on this OS"
 
-#: ../gio/gcredentials.c:467
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "There is no GCredentials support for your platform"
 
-#: ../gio/gcredentials.c:513
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials does not contain a process ID on this OS"
 
-#: ../gio/gcredentials.c:565
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Credentials spoofing is not possible on this OS"
 
-#: ../gio/gdatainputstream.c:304
+#: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
 msgstr "Unexpected early end-of-stream"
 
-#: ../gio/gdbusaddress.c:155 ../gio/gdbusaddress.c:243
-#: ../gio/gdbusaddress.c:324
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Unsupported key “%s” in address entry “%s”"
 
-#: ../gio/gdbusaddress.c:182
-#, c-format
-msgid ""
-"Address “%s” is invalid (need exactly one of path, tmpdir or abstract keys)"
-msgstr ""
-"Address “%s” is invalid (need exactly one of path, tmpdir or abstract keys)"
-
-#: ../gio/gdbusaddress.c:195
+#: gio/gdbusaddress.c:171
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Meaningless key/value pair combination in address entry “%s”"
 
-#: ../gio/gdbusaddress.c:258 ../gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:180
+#, 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, dir, tmpdir, or abstract "
+"keys)"
+msgstr ""
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
+
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Error in address “%s” — the port attribute is malformed"
+#| msgid "Error in address “%s” — the port attribute is malformed"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Error in address “%s” — the “%s” attribute is malformed"
 
-#: ../gio/gdbusaddress.c:269 ../gio/gdbusaddress.c:350
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Error in address “%s” — the family attribute is malformed"
+msgid "Unknown or unsupported transport “%s” for address “%s”"
+msgstr "Unknown or unsupported transport “%s” for address “%s”"
 
-#: ../gio/gdbusaddress.c:460
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Address element “%s” does not contain a colon (:)"
 
-#: ../gio/gdbusaddress.c:481
+#: gio/gdbusaddress.c:470
+#, c-format
+msgid "Transport name in address element “%s” must not be empty"
+msgstr "Transport name in address element “%s” must not be empty"
+
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -410,7 +420,17 @@ msgstr ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 
-#: ../gio/gdbusaddress.c:495
+#: gio/gdbusaddress.c:502
+#, c-format
+#| msgid ""
+#| "Key/Value pair %d, “%s”, in address element “%s” does not contain an "
+#| "equal sign"
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -419,7 +439,7 @@ msgstr ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 
-#: ../gio/gdbusaddress.c:573
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -428,90 +448,75 @@ msgstr ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 
-#: ../gio/gdbusaddress.c:609
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Error in address “%s” — the host attribute is missing or malformed"
 
-#: ../gio/gdbusaddress.c:623
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Error in address “%s” — the port attribute is missing or malformed"
 
-#: ../gio/gdbusaddress.c:637
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Error in address “%s” — the noncefile attribute is missing or malformed"
 
-#: ../gio/gdbusaddress.c:658
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Error auto-launching: "
 
-#: ../gio/gdbusaddress.c:666
-#, c-format
-msgid "Unknown or unsupported transport “%s” for address “%s”"
-msgstr "Unknown or unsupported transport “%s” for address “%s”"
-
-#: ../gio/gdbusaddress.c:704
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Error opening nonce file “%s”: %s"
 
-#: ../gio/gdbusaddress.c:723
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Error reading from nonce file “%s”: %s"
 
-#: ../gio/gdbusaddress.c:732
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 
-#: ../gio/gdbusaddress.c:750
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Error writing contents of nonce file “%s” to stream:"
 
-#: ../gio/gdbusaddress.c:959
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "The given address is empty"
 
-#: ../gio/gdbusaddress.c:1072
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Cannot spawn a message bus when setuid"
 
-#: ../gio/gdbusaddress.c:1079
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Cannot spawn a message bus without a machine-id: "
 
-#: ../gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Cannot autolaunch D-Bus without X11 $DISPLAY"
 
-#: ../gio/gdbusaddress.c:1128
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Error spawning command line “%s”: "
 
-#: ../gio/gdbusaddress.c:1345
-#, c-format
-msgid "(Type any character to close this window)\n"
-msgstr "(Type any character to close this window)\n"
-
-#: ../gio/gdbusaddress.c:1499
-#, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr "Session dbus not running, and autolaunch failed"
-
-#: ../gio/gdbusaddress.c:1510
+#: gio/gdbusaddress.c:1219
 #, c-format
 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:1648
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -520,7 +525,7 @@ msgstr ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 
-#: ../gio/gdbusaddress.c:1657 ../gio/gdbusconnection.c:7155
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -528,228 +533,231 @@ msgstr ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 
-#: ../gio/gdbusaddress.c:1667
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Unknown bus type %d"
 
-#: ../gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Unexpected lack of content trying to read a line"
 
-#: ../gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Unexpected lack of content trying to (safely) read a line"
 
-#: ../gio/gdbusauth.c:508
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 
-#: ../gio/gdbusauth.c:1171
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: ../gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Error when getting information for directory “%s”: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 
-#: ../gio/gdbusauthmechanismsha1.c:296
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Error creating directory “%s”: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:379
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Error opening keyring “%s” for reading: "
 
-#: ../gio/gdbusauthmechanismsha1.c:402 ../gio/gdbusauthmechanismsha1.c:720
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: ../gio/gdbusauthmechanismsha1.c:416 ../gio/gdbusauthmechanismsha1.c:734
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:748
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: ../gio/gdbusauthmechanismsha1.c:454
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Didn’t find cookie with id %d in the keyring at “%s”"
 
-#: ../gio/gdbusauthmechanismsha1.c:536
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Error deleting stale lock file “%s”: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:568
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Error creating lock file “%s”: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:599
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Error closing (unlinked) lock file “%s”: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:610
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Error unlinking lock file “%s”: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Error opening keyring “%s” for writing: "
 
-#: ../gio/gdbusauthmechanismsha1.c:883
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Additionally, releasing the lock for “%s” also failed: %s) "
 
-#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2378
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "The connection is closed"
 
-#: ../gio/gdbusconnection.c:1879
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "Timeout was reached"
 
-#: ../gio/gdbusconnection.c:2500
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Unsupported flags encountered when constructing a client-side connection"
 
-#: ../gio/gdbusconnection.c:4124 ../gio/gdbusconnection.c:4471
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
 #, 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"
+"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"
+"No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 
-#: ../gio/gdbusconnection.c:4266
+#: gio/gdbusconnection.c:4303
 #, c-format
-msgid "No such property '%s'"
-msgstr "No such property '%s'"
+#| msgid "No such property '%s'"
+msgid "No such property “%s”"
+msgstr "No such property “%s”"
 
-#: ../gio/gdbusconnection.c:4278
+#: gio/gdbusconnection.c:4315
 #, c-format
-msgid "Property '%s' is not readable"
-msgstr "Property '%s' is not readable"
+#| msgid "Property '%s' is not readable"
+msgid "Property “%s” is not readable"
+msgstr "Property “%s” is not readable"
 
-#: ../gio/gdbusconnection.c:4289
+#: gio/gdbusconnection.c:4326
 #, c-format
-msgid "Property '%s' is not writable"
-msgstr "Property '%s' is not writable"
+#| msgid "Property '%s' is not writable"
+msgid "Property “%s” is not writable"
+msgstr "Property “%s” is not writable"
 
-#: ../gio/gdbusconnection.c:4309
+#: gio/gdbusconnection.c:4346
 #, c-format
-msgid "Error setting property '%s': Expected type '%s' but got '%s'"
-msgstr "Error setting property '%s': Expected type '%s' but got '%s'"
+#| msgid "Error setting property '%s': Expected type '%s' but got '%s'"
+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:4414 ../gio/gdbusconnection.c:4622
-#: ../gio/gdbusconnection.c:6586
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
 #, c-format
-msgid "No such interface '%s'"
-msgstr "No such interface '%s'"
+#| msgid "No such interface '%s'"
+msgid "No such interface “%s”"
+msgstr "No such interface “%s”"
 
-#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7095
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
 #, c-format
-msgid "No such interface '%s' on object at path %s"
-msgstr "No such interface '%s' on object at path %s"
+#| msgid "No such interface '%s' on object at path %s"
+msgid "No such interface “%s” on object at path %s"
+msgstr "No such interface “%s” on object at path %s"
 
-#: ../gio/gdbusconnection.c:4938
+#: gio/gdbusconnection.c:4975
 #, c-format
-msgid "No such method '%s'"
-msgstr "No such method '%s'"
+#| msgid "No such key “%s”\n"
+msgid "No such method “%s”"
+msgstr "No such method “%s”"
 
-#: ../gio/gdbusconnection.c:4969
+#: gio/gdbusconnection.c:5006
 #, c-format
-msgid "Type of message, '%s', does not match expected type '%s'"
-msgstr "Type of message, '%s', does not match expected type '%s'"
+#| msgid "Type of message, '%s', does not match expected type '%s'"
+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:5167
+#: gio/gdbusconnection.c:5204
 #, 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:5393
+#: gio/gdbusconnection.c:5430
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Unable to retrieve property %s.%s"
 
-#: ../gio/gdbusconnection.c:5449
+#: gio/gdbusconnection.c:5486
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Unable to set property %s.%s"
 
-#: ../gio/gdbusconnection.c:5625
+#: gio/gdbusconnection.c:5664
 #, c-format
-msgid "Method '%s' returned type '%s', but expected '%s'"
-msgstr "Method '%s' returned type '%s', but expected '%s'"
+#| msgid "Method '%s' returned type '%s', but expected '%s'"
+msgid "Method “%s” returned type “%s”, but expected “%s”"
+msgstr "Method “%s” returned type “%s”, but expected “%s”"
 
-#: ../gio/gdbusconnection.c:6697
+#: gio/gdbusconnection.c:6741
 #, 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"
+#| msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
+msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
+msgstr "Method “%s” on interface “%s” with signature “%s” does not exist"
 
-#: ../gio/gdbusconnection.c:6818
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "A subtree is already exported for %s"
 
-#: ../gio/gdbusconnection.c:7146
-#, c-format
-msgid ""
-"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"- unknown value '%s'"
-msgstr ""
-"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"- unknown value '%s'"
-
-#: ../gio/gdbusmessage.c:1246
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "type is INVALID"
 
-#: ../gio/gdbusmessage.c:1257
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL message: PATH or MEMBER header field is missing"
 
-#: ../gio/gdbusmessage.c:1268
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 
-#: ../gio/gdbusmessage.c:1280
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 
-#: ../gio/gdbusmessage.c:1293
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 
-#: ../gio/gdbusmessage.c:1301
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -757,7 +765,7 @@ msgstr ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 
-#: ../gio/gdbusmessage.c:1309
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -765,19 +773,19 @@ msgstr ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 
-#: ../gio/gdbusmessage.c:1357 ../gio/gdbusmessage.c:1417
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Wanted to read %lu byte but only got %lu"
 msgstr[1] "Wanted to read %lu bytes but only got %lu"
 
-#: ../gio/gdbusmessage.c:1371
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Expected NUL byte after the string “%s” but found byte %d"
 
-#: ../gio/gdbusmessage.c:1390
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -786,17 +794,21 @@ msgstr ""
 "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”"
 
-#: ../gio/gdbusmessage.c:1593
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Value nested too deeply"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Parsed value “%s” is not a valid D-Bus object path"
 
-#: ../gio/gdbusmessage.c:1615
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Parsed value “%s” is not a valid D-Bus signature"
 
-#: ../gio/gdbusmessage.c:1662
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -807,7 +819,7 @@ msgstr[0] ""
 msgstr[1] ""
 "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 
-#: ../gio/gdbusmessage.c:1682
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -816,19 +828,19 @@ msgstr ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
 "bytes, but found to be %u bytes in length"
 
-#: ../gio/gdbusmessage.c:1849
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Parsed value “%s” for variant is not a valid D-Bus signature"
 
-#: ../gio/gdbusmessage.c:1873
+#: gio/gdbusmessage.c:1925
 #, c-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"
 
-#: ../gio/gdbusmessage.c:2055
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -837,58 +849,60 @@ msgstr ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 
-#: ../gio/gdbusmessage.c:2068
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Invalid major protocol version. Expected 1 but found %d"
 
-#: ../gio/gdbusmessage.c:2124
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
+msgid "Signature header found but is not of type signature"
+msgstr "Signature header found but is not of type signature"
+
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Signature header with signature “%s” found but message body is empty"
 
-#: ../gio/gdbusmessage.c:2138
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Parsed value “%s” is not a valid D-Bus signature (for body)"
 
-#: ../gio/gdbusmessage.c:2168
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "No signature header in message but the message body is %u byte"
 msgstr[1] "No signature header in message but the message body is %u bytes"
 
-#: ../gio/gdbusmessage.c:2178
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Cannot deserialize message: "
 
-#: ../gio/gdbusmessage.c:2519
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 
-#: ../gio/gdbusmessage.c:2656
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
-"Message has %d file descriptors but the header field indicates %d file "
-"descriptors"
+"Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
-"Message has %d file descriptors but the header field indicates %d file "
-"descriptors"
+"Number of file descriptors in message (%d) differs from header field (%d)"
 
-#: ../gio/gdbusmessage.c:2664
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Cannot serialize message: "
 
-#: ../gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Message body has signature “%s” but there is no signature header"
 
-#: ../gio/gdbusmessage.c:2718
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -897,71 +911,86 @@ msgstr ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 
-#: ../gio/gdbusmessage.c:2734
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Message body is empty but signature in the header field is “(%s)”"
 
-#: ../gio/gdbusmessage.c:3287
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Error return with body of type “%s”"
 
-#: ../gio/gdbusmessage.c:3295
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Error return with empty body"
 
-#: ../gio/gdbusprivate.c:2066
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr "(Type any character to close this window)\n"
+
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr "Session dbus not running, and autolaunch failed"
+
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Unable to get Hardware profile: %s"
 
-#: ../gio/gdbusprivate.c:2111
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 
-#: ../gio/gdbusproxy.c:1611
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Error calling StartServiceByName for %s: "
 
-#: ../gio/gdbusproxy.c:1634
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Unexpected reply %d from StartServiceByName(\"%s\") method"
 
-#: ../gio/gdbusproxy.c:2719 ../gio/gdbusproxy.c:2853
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
+#, c-format
+#| 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"
 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"
+"Cannot invoke method; proxy is for the well-known name %s without an owner, "
+"and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
-"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"
+"Cannot invoke method; proxy is for the well-known name %s without an owner, "
+"and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 
-#: ../gio/gdbusserver.c:708
-msgid "Abstract name space not supported"
-msgstr "Abstract name space not supported"
+#: gio/gdbusserver.c:755
+#| msgid "Abstract name space not supported"
+msgid "Abstract namespace not supported"
+msgstr "Abstract namespace not supported"
 
-#: ../gio/gdbusserver.c:795
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Cannot specify nonce file when creating a server"
 
-#: ../gio/gdbusserver.c:876
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Error writing nonce file at “%s”: %s"
 
-#: ../gio/gdbusserver.c:1047
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "The string “%s” is not a valid D-Bus GUID"
 
-#: ../gio/gdbusserver.c:1087
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Cannot listen on unsupported transport “%s”"
 
-#: ../gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:107
 #, c-format
 msgid ""
 "Commands:\n"
@@ -984,61 +1013,61 @@ msgstr ""
 "\n"
 "Use “%s COMMAND --help” to get help on each command.\n"
 
-#: ../gio/gdbus-tool.c:167 ../gio/gdbus-tool.c:234 ../gio/gdbus-tool.c:306
-#: ../gio/gdbus-tool.c:330 ../gio/gdbus-tool.c:811 ../gio/gdbus-tool.c:1150
-#: ../gio/gdbus-tool.c:1592
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Error: %s\n"
 
-#: ../gio/gdbus-tool.c:178 ../gio/gdbus-tool.c:247 ../gio/gdbus-tool.c:1608
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Error parsing introspection XML: %s\n"
 
-#: ../gio/gdbus-tool.c:216
+#: gio/gdbus-tool.c:246
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Error: %s is not a valid name\n"
 
-#: ../gio/gdbus-tool.c:364
+#: gio/gdbus-tool.c:394
 msgid "Connect to the system bus"
 msgstr "Connect to the system bus"
 
-#: ../gio/gdbus-tool.c:365
+#: gio/gdbus-tool.c:395
 msgid "Connect to the session bus"
 msgstr "Connect to the session bus"
 
-#: ../gio/gdbus-tool.c:366
+#: gio/gdbus-tool.c:396
 msgid "Connect to given D-Bus address"
 msgstr "Connect to given D-Bus address"
 
-#: ../gio/gdbus-tool.c:376
+#: gio/gdbus-tool.c:406
 msgid "Connection Endpoint Options:"
 msgstr "Connection Endpoint Options:"
 
-#: ../gio/gdbus-tool.c:377
+#: gio/gdbus-tool.c:407
 msgid "Options specifying the connection endpoint"
 msgstr "Options specifying the connection endpoint"
 
-#: ../gio/gdbus-tool.c:399
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "No connection endpoint specified"
 
-#: ../gio/gdbus-tool.c:409
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Multiple connection endpoints specified"
 
-#: ../gio/gdbus-tool.c:479
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 
-#: ../gio/gdbus-tool.c:488
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1047,167 +1076,161 @@ msgstr ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
 
-#: ../gio/gdbus-tool.c:550
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
 msgstr "Optional destination for signal (unique name)"
 
-#: ../gio/gdbus-tool.c:551
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
 msgstr "Object path to emit signal on"
 
-#: ../gio/gdbus-tool.c:552
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr "Signal and interface name"
 
-#: ../gio/gdbus-tool.c:587
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "Emit a signal."
 
-#: ../gio/gdbus-tool.c:642 ../gio/gdbus-tool.c:944 ../gio/gdbus-tool.c:1698
-#: ../gio/gdbus-tool.c:1931 ../gio/gdbus-tool.c:2152
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Error connecting: %s\n"
 
-#: ../gio/gdbus-tool.c:659 ../gio/gdbus-tool.c:961 ../gio/gdbus-tool.c:1715
-#: ../gio/gdbus-tool.c:1956
-#, c-format
-msgid "Error: Destination is not specified\n"
-msgstr "Error: Destination is not specified\n"
-
-#: ../gio/gdbus-tool.c:670
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Error: %s is not a valid unique bus name.\n"
 
-#: ../gio/gdbus-tool.c:685 ../gio/gdbus-tool.c:987 ../gio/gdbus-tool.c:1741
-#, c-format
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
 msgstr "Error: Object path is not specified\n"
 
-#: ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1007 ../gio/gdbus-tool.c:1761
-#: ../gio/gdbus-tool.c:2002
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Error: %s is not a valid object path\n"
 
-#: ../gio/gdbus-tool.c:720
-#, c-format
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
 msgstr "Error: Signal name is not specified\n"
 
-#: ../gio/gdbus-tool.c:731
+#: gio/gdbus-tool.c:770
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Error: Signal name “%s” is invalid\n"
 
-#: ../gio/gdbus-tool.c:743
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Error: %s is not a valid interface name\n"
 
-#: ../gio/gdbus-tool.c:749
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Error: %s is not a valid member name\n"
 
 #. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:786 ../gio/gdbus-tool.c:1119
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Error parsing parameter %d: %s\n"
 
-#: ../gio/gdbus-tool.c:818
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Error flushing connection: %s\n"
 
-#: ../gio/gdbus-tool.c:845
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
 msgstr "Destination name to invoke method on"
 
-#: ../gio/gdbus-tool.c:846
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
 msgstr "Object path to invoke method on"
 
-#: ../gio/gdbus-tool.c:847
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "Method and interface name"
 
-#: ../gio/gdbus-tool.c:848
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "Timeout in seconds"
 
-#: ../gio/gdbus-tool.c:889
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr "Invoke a method on a remote object."
 
-#: ../gio/gdbus-tool.c:972 ../gio/gdbus-tool.c:1732 ../gio/gdbus-tool.c:1967
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
+msgid "Error: Destination is not specified\n"
+msgstr "Error: Destination is not specified\n"
+
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Error: %s is not a valid bus name\n"
 
-#: ../gio/gdbus-tool.c:1022
-#, c-format
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr "Error: Method name is not specified\n"
 
-#: ../gio/gdbus-tool.c:1033
+#: gio/gdbus-tool.c:1070
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Error: Method name “%s” is invalid\n"
 
-#: ../gio/gdbus-tool.c:1111
+#: gio/gdbus-tool.c:1148
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Error parsing parameter %d of type “%s”: %s\n"
 
-#: ../gio/gdbus-tool.c:1555
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
 msgstr "Destination name to introspect"
 
-#: ../gio/gdbus-tool.c:1556
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
 msgstr "Object path to introspect"
 
-#: ../gio/gdbus-tool.c:1557
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "Print XML"
 
-#: ../gio/gdbus-tool.c:1558
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr "Introspect children"
 
-#: ../gio/gdbus-tool.c:1559
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Only print properties"
 
-#: ../gio/gdbus-tool.c:1650
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr "Introspect a remote object."
 
-#: ../gio/gdbus-tool.c:1853
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
 msgstr "Destination name to monitor"
 
-#: ../gio/gdbus-tool.c:1854
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr "Object path to monitor"
 
-#: ../gio/gdbus-tool.c:1883
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr "corrupted object"
 
-#: ../gio/gdbus-tool.c:1941
-#, c-format
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Error: can’t monitor a non-message-bus connection\n"
 
-#: ../gio/gdbus-tool.c:2065
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Service to activate before waiting for the other one (well-known name)"
 
-#: ../gio/gdbus-tool.c:2068
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1215,135 +1238,130 @@ msgstr ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 
-#: ../gio/gdbus-tool.c:2116
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTION…] BUS-NAME"
 
-#: ../gio/gdbus-tool.c:2118
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
 msgstr "Wait for a bus name to appear."
 
-#: ../gio/gdbus-tool.c:2194
-#, c-format
+#: gio/gdbus-tool.c:2269
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Error: A service to activate for must be specified.\n"
 
-#: ../gio/gdbus-tool.c:2199
-#, c-format
+#: gio/gdbus-tool.c:2274
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Error: A service to wait for must be specified.\n"
 
-#: ../gio/gdbus-tool.c:2204
-#, c-format
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
 msgstr "Error: Too many arguments.\n"
 
-#: ../gio/gdbus-tool.c:2212 ../gio/gdbus-tool.c:2219
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Error: %s is not a valid well-known bus name.\n"
 
-#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4531
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Unnamed"
 
-#: ../gio/gdesktopappinfo.c:2411
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop file didn’t specify Exec field"
 
-#: ../gio/gdesktopappinfo.c:2694
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "Unable to find terminal required for application"
 
-#: ../gio/gdesktopappinfo.c:3127
+#: gio/gdesktopappinfo.c:3413
 #, 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:3131
+#: gio/gdesktopappinfo.c:3417
 #, 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:3371 ../gio/gdesktopappinfo.c:3395
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
 msgstr "Application information lacks an identifier"
 
-#: ../gio/gdesktopappinfo.c:3629
+#: gio/gdesktopappinfo.c:3915
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Can’t create user desktop file %s"
 
-#: ../gio/gdesktopappinfo.c:3763
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Custom definition for %s"
 
-#: ../gio/gdrive.c:417
+#: gio/gdrive.c:417
 msgid "drive doesn’t implement eject"
 msgstr "drive doesn’t implement eject"
 
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:495
+#: gio/gdrive.c:495
 msgid "drive doesn’t implement eject or eject_with_operation"
 msgstr "drive doesn’t implement eject or eject_with_operation"
 
-#: ../gio/gdrive.c:571
+#: gio/gdrive.c:571
 msgid "drive doesn’t implement polling for media"
 msgstr "drive doesn’t implement polling for media"
 
-#: ../gio/gdrive.c:776
+#: gio/gdrive.c:778
 msgid "drive doesn’t implement start"
 msgstr "drive doesn’t implement start"
 
-#: ../gio/gdrive.c:878
+#: gio/gdrive.c:880
 msgid "drive doesn’t implement stop"
 msgstr "drive doesn’t implement stop"
 
-#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317
-#: ../gio/gdummytlsbackend.c:509
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
+#: gio/gdummytlsbackend.c:509
 msgid "TLS support is not available"
 msgstr "TLS support is not available"
 
-#: ../gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:419
 msgid "DTLS support is not available"
 msgstr "DTLS support is not available"
 
-#: ../gio/gemblem.c:323
+#: gio/gemblem.c:323
 #, c-format
 msgid "Can’t handle version %d of GEmblem encoding"
 msgstr "Can’t handle version %d of GEmblem encoding"
 
-#: ../gio/gemblem.c:333
+#: gio/gemblem.c:333
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Malformed number of tokens (%d) in GEmblem encoding"
 
-#: ../gio/gemblemedicon.c:362
+#: gio/gemblemedicon.c:362
 #, c-format
 msgid "Can’t handle version %d of GEmblemedIcon encoding"
 msgstr "Can’t handle version %d of GEmblemedIcon encoding"
 
-#: ../gio/gemblemedicon.c:372
+#: gio/gemblemedicon.c:372
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 
-#: ../gio/gemblemedicon.c:395
+#: gio/gemblemedicon.c:395
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Expected a GEmblem for GEmblemedIcon"
 
-#: ../gio/gfile.c:970 ../gio/gfile.c:1208 ../gio/gfile.c:1346
-#: ../gio/gfile.c:1584 ../gio/gfile.c:1639 ../gio/gfile.c:1697
-#: ../gio/gfile.c:1781 ../gio/gfile.c:1838 ../gio/gfile.c:1902
-#: ../gio/gfile.c:1957 ../gio/gfile.c:3603 ../gio/gfile.c:3658
-#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404
-#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990
-#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275
-#: ../gio/gfile.c:7853 ../gio/gfile.c:7943 ../gio/gfile.c:8027
-#: ../gio/win32/gwinhttpfile.c:437
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
+#: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operation not supported"
 
@@ -1351,205 +1369,209 @@ msgstr "Operation not supported"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: ../gio/gfile.c:1469
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Containing mount does not exist"
 
-#: ../gio/gfile.c:2516 ../gio/glocalfile.c:2380
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Can’t copy over directory"
 
-#: ../gio/gfile.c:2576
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Can’t copy directory over directory"
 
-#: ../gio/gfile.c:2584
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Target file exists"
 
-#: ../gio/gfile.c:2603
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Can’t recursively copy directory"
 
-#: ../gio/gfile.c:2878
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Symbolic links not supported"
 
-#: ../gio/gfile.c:2882
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Error opening file: %s"
 
-#: ../gio/gfile.c:3014
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copy (reflink/clone) between mounts is not supported"
 
-#: ../gio/gfile.c:3018
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copy (reflink/clone) is not supported or invalid"
 
-#: ../gio/gfile.c:3023
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copy (reflink/clone) is not supported or didn’t work"
 
-#: ../gio/gfile.c:3086
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Can’t copy special file"
 
-#: ../gio/gfile.c:3884
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Invalid symlink value given"
 
-#: ../gio/gfile.c:4045
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Symbolic links not supported"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Trash not supported"
 
-#: ../gio/gfile.c:4157
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "File names cannot contain “%c”"
 
-#: ../gio/gfile.c:6638 ../gio/gvolume.c:363
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volume doesn’t implement mount"
 
-#: ../gio/gfile.c:6747
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "No application is registered as handling this file"
 
-#: ../gio/gfileenumerator.c:212
+#: gio/gfileenumerator.c:212
 msgid "Enumerator is closed"
 msgstr "Enumerator is closed"
 
-#: ../gio/gfileenumerator.c:219 ../gio/gfileenumerator.c:278
-#: ../gio/gfileenumerator.c:377 ../gio/gfileenumerator.c:476
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
+#: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
 msgid "File enumerator has outstanding operation"
 msgstr "File enumerator has outstanding operation"
 
-#: ../gio/gfileenumerator.c:368 ../gio/gfileenumerator.c:467
+#: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
 msgid "File enumerator is already closed"
 msgstr "File enumerator is already closed"
 
-#: ../gio/gfileicon.c:236
+#: gio/gfileicon.c:236
 #, c-format
 msgid "Can’t handle version %d of GFileIcon encoding"
 msgstr "Can’t handle version %d of GFileIcon encoding"
 
-#: ../gio/gfileicon.c:246
+#: gio/gfileicon.c:246
 msgid "Malformed input data for GFileIcon"
 msgstr "Malformed input data for GFileIcon"
 
-#: ../gio/gfileinputstream.c:149 ../gio/gfileinputstream.c:394
-#: ../gio/gfileiostream.c:167 ../gio/gfileoutputstream.c:164
-#: ../gio/gfileoutputstream.c:497
+#: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
+#: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
+#: gio/gfileoutputstream.c:497
 msgid "Stream doesn’t support query_info"
 msgstr "Stream doesn’t support query_info"
 
-#: ../gio/gfileinputstream.c:325 ../gio/gfileiostream.c:379
-#: ../gio/gfileoutputstream.c:371
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379
+#: gio/gfileoutputstream.c:371
 msgid "Seek not supported on stream"
 msgstr "Seek not supported on stream"
 
-#: ../gio/gfileinputstream.c:369
+#: gio/gfileinputstream.c:369
 msgid "Truncate not allowed on input stream"
 msgstr "Truncate not allowed on input stream"
 
-#: ../gio/gfileiostream.c:455 ../gio/gfileoutputstream.c:447
+#: gio/gfileiostream.c:455 gio/gfileoutputstream.c:447
 msgid "Truncate not supported on stream"
 msgstr "Truncate not supported on stream"
 
-#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
-#: ../glib/gconvert.c:1649
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Invalid hostname"
 
-#: ../gio/ghttpproxy.c:143
+#: gio/ghttpproxy.c:143
 msgid "Bad HTTP proxy reply"
 msgstr "Bad HTTP proxy reply"
 
-#: ../gio/ghttpproxy.c:159
+#: gio/ghttpproxy.c:159
 msgid "HTTP proxy connection not allowed"
 msgstr "HTTP proxy connection not allowed"
 
-#: ../gio/ghttpproxy.c:164
+#: gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
 msgstr "HTTP proxy authentication failed"
 
-#: ../gio/ghttpproxy.c:167
+#: gio/ghttpproxy.c:167
 msgid "HTTP proxy authentication required"
 msgstr "HTTP proxy authentication required"
 
-#: ../gio/ghttpproxy.c:171
+#: gio/ghttpproxy.c:171
 #, c-format
 msgid "HTTP proxy connection failed: %i"
 msgstr "HTTP proxy connection failed: %i"
 
-#: ../gio/ghttpproxy.c:269
+#: gio/ghttpproxy.c:269
 msgid "HTTP proxy server closed connection unexpectedly."
 msgstr "HTTP proxy server closed connection unexpectedly."
 
-#: ../gio/gicon.c:290
+#: gio/gicon.c:298
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "Wrong number of tokens (%d)"
 
-#: ../gio/gicon.c:310
+#: gio/gicon.c:318
 #, c-format
 msgid "No type for class name %s"
 msgstr "No type for class name %s"
 
-#: ../gio/gicon.c:320
+#: gio/gicon.c:328
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr "Type %s does not implement the GIcon interface"
 
-#: ../gio/gicon.c:331
+#: gio/gicon.c:339
 #, c-format
 msgid "Type %s is not classed"
 msgstr "Type %s is not classed"
 
-#: ../gio/gicon.c:345
+#: gio/gicon.c:353
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "Malformed version number: %s"
 
-#: ../gio/gicon.c:359
+#: gio/gicon.c:367
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr "Type %s does not implement from_tokens() on the GIcon interface"
 
-#: ../gio/gicon.c:461
+#: gio/gicon.c:469
 msgid "Can’t handle the supplied version of the icon encoding"
 msgstr "Can’t handle the supplied version of the icon encoding"
 
-#: ../gio/ginetaddressmask.c:182
+#: gio/ginetaddressmask.c:182
 msgid "No address specified"
 msgstr "No address specified"
 
-#: ../gio/ginetaddressmask.c:190
+#: gio/ginetaddressmask.c:190
 #, c-format
 msgid "Length %u is too long for address"
 msgstr "Length %u is too long for address"
 
-#: ../gio/ginetaddressmask.c:223
+#: gio/ginetaddressmask.c:223
 msgid "Address has bits set beyond prefix length"
 msgstr "Address has bits set beyond prefix length"
 
-#: ../gio/ginetaddressmask.c:300
+#: gio/ginetaddressmask.c:300
 #, c-format
 msgid "Could not parse “%s” as IP address mask"
 msgstr "Could not parse “%s” as IP address mask"
 
-#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220
-#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:218
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
 msgid "Not enough space for socket address"
 msgstr "Not enough space for socket address"
 
-#: ../gio/ginetsocketaddress.c:235
+#: gio/ginetsocketaddress.c:235
 msgid "Unsupported socket address"
 msgstr "Unsupported socket address"
 
-#: ../gio/ginputstream.c:188
+#: gio/ginputstream.c:188
 msgid "Input stream doesn’t implement read"
 msgstr "Input stream doesn’t implement read"
 
@@ -1559,129 +1581,122 @@ msgstr "Input stream doesn’t implement read"
 #. Translators: This is an error you get if there is
 #. * already an operation running against this stream when
 #. * you try to start one
-#: ../gio/ginputstream.c:1218 ../gio/giostream.c:310
-#: ../gio/goutputstream.c:1670
+#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr "Stream has outstanding operation"
 
-#: ../gio/gio-tool.c:160
+#: gio/gio-tool.c:160
 msgid "Copy with file"
 msgstr "Copy with file"
 
-#: ../gio/gio-tool.c:164
+#: gio/gio-tool.c:164
 msgid "Keep with file when moved"
 msgstr "Keep with file when moved"
 
-#: ../gio/gio-tool.c:205
+#: gio/gio-tool.c:205
 msgid "“version” takes no arguments"
 msgstr "“version” takes no arguments"
 
-#: ../gio/gio-tool.c:207 ../gio/gio-tool.c:223 ../glib/goption.c:857
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Usage:"
 
-#: ../gio/gio-tool.c:210
+#: gio/gio-tool.c:210
 msgid "Print version information and exit."
 msgstr "Print version information and exit."
 
-#: ../gio/gio-tool.c:224
-msgid "[ARGS...]"
-msgstr "[ARGS...]"
-
-#: ../gio/gio-tool.c:226
+#: gio/gio-tool.c:226
 msgid "Commands:"
 msgstr "Commands:"
 
-#: ../gio/gio-tool.c:229
+#: gio/gio-tool.c:229
 msgid "Concatenate files to standard output"
 msgstr "Concatenate files to standard output"
 
-#: ../gio/gio-tool.c:230
+#: gio/gio-tool.c:230
 msgid "Copy one or more files"
 msgstr "Copy one or more files"
 
-#: ../gio/gio-tool.c:231
+#: gio/gio-tool.c:231
 msgid "Show information about locations"
 msgstr "Show information about locations"
 
-#: ../gio/gio-tool.c:232
+#: gio/gio-tool.c:232
 msgid "List the contents of locations"
 msgstr "List the contents of locations"
 
-#: ../gio/gio-tool.c:233
+#: gio/gio-tool.c:233
 msgid "Get or set the handler for a mimetype"
 msgstr "Get or set the handler for a mimetype"
 
-#: ../gio/gio-tool.c:234
+#: gio/gio-tool.c:234
 msgid "Create directories"
 msgstr "Create directories"
 
-#: ../gio/gio-tool.c:235
+#: gio/gio-tool.c:235
 msgid "Monitor files and directories for changes"
 msgstr "Monitor files and directories for changes"
 
-#: ../gio/gio-tool.c:236
+#: gio/gio-tool.c:236
 msgid "Mount or unmount the locations"
 msgstr "Mount or unmount the locations"
 
-#: ../gio/gio-tool.c:237
+#: gio/gio-tool.c:237
 msgid "Move one or more files"
 msgstr "Move one or more files"
 
-#: ../gio/gio-tool.c:238
+#: gio/gio-tool.c:238
 msgid "Open files with the default application"
 msgstr "Open files with the default application"
 
-#: ../gio/gio-tool.c:239
+#: gio/gio-tool.c:239
 msgid "Rename a file"
 msgstr "Rename a file"
 
-#: ../gio/gio-tool.c:240
+#: gio/gio-tool.c:240
 msgid "Delete one or more files"
 msgstr "Delete one or more files"
 
-#: ../gio/gio-tool.c:241
+#: gio/gio-tool.c:241
 msgid "Read from standard input and save"
 msgstr "Read from standard input and save"
 
-#: ../gio/gio-tool.c:242
+#: gio/gio-tool.c:242
 msgid "Set a file attribute"
 msgstr "Set a file attribute"
 
-#: ../gio/gio-tool.c:243
+#: gio/gio-tool.c:243
 msgid "Move files or directories to the trash"
 msgstr "Move files or directories to the trash"
 
-#: ../gio/gio-tool.c:244
+#: gio/gio-tool.c:244
 msgid "Lists the contents of locations in a tree"
 msgstr "Lists the contents of locations in a tree"
 
-#: ../gio/gio-tool.c:246
+#: gio/gio-tool.c:246
 #, c-format
 msgid "Use %s to get detailed help.\n"
 msgstr "Use %s to get detailed help.\n"
 
-#: ../gio/gio-tool-cat.c:87
+#: gio/gio-tool-cat.c:87
 msgid "Error writing to stdout"
 msgstr "Error writing to stdout"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-cat.c:133 ../gio/gio-tool-info.c:282
-#: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
-#: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
-#: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
-#: ../gio/gio-tool-monitor.c:203 ../gio/gio-tool-mount.c:1141
-#: ../gio/gio-tool-open.c:113 ../gio/gio-tool-remove.c:48
-#: ../gio/gio-tool-rename.c:45 ../gio/gio-tool-set.c:89
-#: ../gio/gio-tool-trash.c:81 ../gio/gio-tool-tree.c:239
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
+#: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
 msgstr "LOCATION"
 
-#: ../gio/gio-tool-cat.c:138
+#: gio/gio-tool-cat.c:138
 msgid "Concatenate files and print to standard output."
 msgstr "Concatenate files and print to standard output."
 
-#: ../gio/gio-tool-cat.c:140
+#: gio/gio-tool-cat.c:140
 msgid ""
 "gio cat works just like the traditional cat utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1691,58 +1706,60 @@ msgstr ""
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 
-#: ../gio/gio-tool-cat.c:162 ../gio/gio-tool-info.c:313
-#: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
-#: ../gio/gio-tool-open.c:139 ../gio/gio-tool-remove.c:72
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
+#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "No locations given"
 
-#: ../gio/gio-tool-copy.c:42 ../gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "No target directory"
 
-#: ../gio/gio-tool-copy.c:43 ../gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Show progress"
 
-#: ../gio/gio-tool-copy.c:44 ../gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Prompt before overwrite"
 
-#: ../gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Preserve all attributes"
 
-#: ../gio/gio-tool-copy.c:46 ../gio/gio-tool-move.c:41
-#: ../gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Backup existing destination files"
 
-#: ../gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Never follow symbolic links"
 
-#: ../gio/gio-tool-copy.c:72 ../gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Use default permissions for the destination"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Transferred %s out of %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "SOURCE"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
-#: ../gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINATION"
 
-#: ../gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copy one or more files from SOURCE to DESTINATION."
 
-#: ../gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1752,93 +1769,98 @@ msgstr ""
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 
-#: ../gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Destination %s is not a directory"
 
-#: ../gio/gio-tool-copy.c:192 ../gio/gio-tool-move.c:185
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: overwrite “%s”? "
 
-#: ../gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "List writable attributes"
 
-#: ../gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Get file system info"
 
-#: ../gio/gio-tool-info.c:36 ../gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "The attributes to get"
 
-#: ../gio/gio-tool-info.c:36 ../gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTES"
 
-#: ../gio/gio-tool-info.c:37 ../gio/gio-tool-list.c:38 ../gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Don’t follow symbolic links"
 
-#: ../gio/gio-tool-info.c:75
-#, c-format
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "attributes:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: ../gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "display name: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: ../gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "edit name: %s\n"
 
-#: ../gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "name: %s\n"
 
-#: ../gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "type: %s\n"
 
-#: ../gio/gio-tool-info.c:151
-#, c-format
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "size: "
 
-#: ../gio/gio-tool-info.c:156
-#, c-format
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "hidden\n"
 
-#: ../gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: ../gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "local path: %s\n"
+
+#: gio/gio-tool-info.c:199
 #, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix mount: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Settable attributes:\n"
 
-#: ../gio/gio-tool-info.c:252
-#, c-format
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Writable attribute namespaces:\n"
 
-#: ../gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Show information about locations."
 
-#: ../gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1852,23 +1874,28 @@ msgstr ""
 "be specified with their GIO name, e.g. standard::icon, or just by\n"
 "namespace, e.g. unix, or by “*”, which matches all attributes"
 
-#: ../gio/gio-tool-list.c:36 ../gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Show hidden files"
 
-#: ../gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Use a long listing format"
 
-#: ../gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+#| msgid "display name: %s\n"
+msgid "Print display names"
+msgstr "Print display names"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Print full URIs"
 
-#: ../gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "List the contents of the locations."
 
-#: ../gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1881,19 +1908,19 @@ msgstr ""
 "be specified with their GIO name, e.g. standard::icon"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-mime.c:71
+#: gio/gio-tool-mime.c:71
 msgid "MIMETYPE"
 msgstr "MIMETYPE"
 
-#: ../gio/gio-tool-mime.c:71
+#: gio/gio-tool-mime.c:71
 msgid "HANDLER"
 msgstr "HANDLER"
 
-#: ../gio/gio-tool-mime.c:76
+#: gio/gio-tool-mime.c:76
 msgid "Get or set the handler for a mimetype."
 msgstr "Get or set the handler for a mimetype."
 
-#: ../gio/gio-tool-mime.c:78
+#: gio/gio-tool-mime.c:78
 msgid ""
 "If no handler is given, lists registered and recommended applications\n"
 "for the mimetype. If a handler is given, it is set as the default\n"
@@ -1903,59 +1930,55 @@ msgstr ""
 "for the mimetype. If a handler is given, it is set as the default\n"
 "handler for the mimetype."
 
-#: ../gio/gio-tool-mime.c:100
+#: gio/gio-tool-mime.c:100
 msgid "Must specify a single mimetype, and maybe a handler"
 msgstr "Must specify a single mimetype, and maybe a handler"
 
-#: ../gio/gio-tool-mime.c:116
+#: gio/gio-tool-mime.c:116
 #, c-format
 msgid "No default applications for “%s”\n"
 msgstr "No default applications for “%s”\n"
 
-#: ../gio/gio-tool-mime.c:122
+#: gio/gio-tool-mime.c:122
 #, c-format
 msgid "Default application for “%s”: %s\n"
 msgstr "Default application for “%s”: %s\n"
 
-#: ../gio/gio-tool-mime.c:127
-#, c-format
+#: gio/gio-tool-mime.c:127
 msgid "Registered applications:\n"
 msgstr "Registered applications:\n"
 
-#: ../gio/gio-tool-mime.c:129
-#, c-format
+#: gio/gio-tool-mime.c:129
 msgid "No registered applications\n"
 msgstr "No registered applications\n"
 
-#: ../gio/gio-tool-mime.c:140
-#, c-format
+#: gio/gio-tool-mime.c:140
 msgid "Recommended applications:\n"
 msgstr "Recommended applications:\n"
 
-#: ../gio/gio-tool-mime.c:142
-#, c-format
+#: gio/gio-tool-mime.c:142
 msgid "No recommended applications\n"
 msgstr "No recommended applications\n"
 
-#: ../gio/gio-tool-mime.c:162
+#: gio/gio-tool-mime.c:162
 #, c-format
 msgid "Failed to load info for handler “%s”"
 msgstr "Failed to load info for handler “%s”"
 
-#: ../gio/gio-tool-mime.c:168
+#: gio/gio-tool-mime.c:168
 #, c-format
 msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
 msgstr "Failed to set “%s” as the default handler for “%s”: %s\n"
 
-#: ../gio/gio-tool-mkdir.c:31
+#: gio/gio-tool-mkdir.c:31
 msgid "Create parent directories"
 msgstr "Create parent directories"
 
-#: ../gio/gio-tool-mkdir.c:52
+#: gio/gio-tool-mkdir.c:52
 msgid "Create directories."
 msgstr "Create directories."
 
-#: ../gio/gio-tool-mkdir.c:54
+#: gio/gio-tool-mkdir.c:54
 msgid ""
 "gio mkdir is similar to the traditional mkdir utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1965,109 +1988,138 @@ msgstr ""
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/mydir as location."
 
-#: ../gio/gio-tool-monitor.c:37
+#: gio/gio-tool-monitor.c:37
 msgid "Monitor a directory (default: depends on type)"
 msgstr "Monitor a directory (default: depends on type)"
 
-#: ../gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:39
 msgid "Monitor a file (default: depends on type)"
 msgstr "Monitor a file (default: depends on type)"
 
-#: ../gio/gio-tool-monitor.c:41
+#: gio/gio-tool-monitor.c:41
 msgid "Monitor a file directly (notices changes made via hardlinks)"
 msgstr "Monitor a file directly (notices changes made via hardlinks)"
 
-#: ../gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:43
 msgid "Monitors a file directly, but doesn’t report changes"
 msgstr "Monitors a file directly, but doesn’t report changes"
 
-#: ../gio/gio-tool-monitor.c:45
+#: gio/gio-tool-monitor.c:45
 msgid "Report moves and renames as simple deleted/created events"
 msgstr "Report moves and renames as simple deleted/created events"
 
-#: ../gio/gio-tool-monitor.c:47
+#: gio/gio-tool-monitor.c:47
 msgid "Watch for mount events"
 msgstr "Watch for mount events"
 
-#: ../gio/gio-tool-monitor.c:208
+#: gio/gio-tool-monitor.c:208
 msgid "Monitor files or directories for changes."
 msgstr "Monitor files or directories for changes."
 
-#: ../gio/gio-tool-mount.c:58
+#: gio/gio-tool-mount.c:63
 msgid "Mount as mountable"
 msgstr "Mount as mountable"
 
-#: ../gio/gio-tool-mount.c:59
-msgid "Mount volume with device file"
-msgstr "Mount volume with device file"
+#: gio/gio-tool-mount.c:64
+#| msgid "Mount volume with device file"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Mount volume with device file, or other identifier"
 
-#: ../gio/gio-tool-mount.c:59
-msgid "DEVICE"
-msgstr "DEVICE"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
-#: ../gio/gio-tool-mount.c:60
+#: gio/gio-tool-mount.c:65
 msgid "Unmount"
 msgstr "Unmount"
 
-#: ../gio/gio-tool-mount.c:61
+#: gio/gio-tool-mount.c:66
 msgid "Eject"
 msgstr "Eject"
 
-#: ../gio/gio-tool-mount.c:62
+#: gio/gio-tool-mount.c:67
+#| msgid "Mount volume with device file"
+msgid "Stop drive with device file"
+msgstr "Stop drive with device file"
+
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DEVICE"
+
+#: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Unmount all mounts with the given scheme"
 
-#: ../gio/gio-tool-mount.c:62
+#: gio/gio-tool-mount.c:68
 msgid "SCHEME"
 msgstr "SCHEME"
 
-#: ../gio/gio-tool-mount.c:63
+#: gio/gio-tool-mount.c:69
 msgid "Ignore outstanding file operations when unmounting or ejecting"
 msgstr "Ignore outstanding file operations when unmounting or ejecting"
 
-#: ../gio/gio-tool-mount.c:64
+#: gio/gio-tool-mount.c:70
 msgid "Use an anonymous user when authenticating"
 msgstr "Use an anonymous user when authenticating"
 
 #. Translator: List here is a verb as in 'List all mounts'
-#: ../gio/gio-tool-mount.c:66
+#: gio/gio-tool-mount.c:72
 msgid "List"
 msgstr "List"
 
-#: ../gio/gio-tool-mount.c:67
+#: gio/gio-tool-mount.c:73
 msgid "Monitor events"
 msgstr "Monitor events"
 
-#: ../gio/gio-tool-mount.c:68
+#: gio/gio-tool-mount.c:74
 msgid "Show extra information"
 msgstr "Show extra information"
 
-#: ../gio/gio-tool-mount.c:246 ../gio/gio-tool-mount.c:276
+#: gio/gio-tool-mount.c:75
+msgid "The numeric PIM when unlocking a VeraCrypt volume"
+msgstr "The numeric PIM when unlocking a VeraCrypt volume"
+
+#: gio/gio-tool-mount.c:75
+#| msgctxt "GDateTime"
+#| msgid "PM"
+msgid "PIM"
+msgstr "PIM"
+
+#: gio/gio-tool-mount.c:76
+msgid "Mount a TCRYPT hidden volume"
+msgstr "Mount a TCRYPT hidden volume"
+
+#: gio/gio-tool-mount.c:77
+msgid "Mount a TCRYPT system volume"
+msgstr "Mount a TCRYPT system volume"
+
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
 msgid "Anonymous access denied"
 msgstr "Anonymous access denied"
 
-#: ../gio/gio-tool-mount.c:897
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Mounted %s at %s\n"
+#: gio/gio-tool-mount.c:522
+#| msgid "No volume for device file"
+msgid "No drive for device file"
+msgstr "No drive for device file"
 
-#: ../gio/gio-tool-mount.c:950
-msgid "No volume for device file"
-msgstr "No volume for device file"
+#: gio/gio-tool-mount.c:1014
+#| msgid "No volume for device file"
+msgid "No volume for given ID"
+msgstr "No volume for given ID"
 
-#: ../gio/gio-tool-mount.c:1145
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Mount or unmount the locations."
 
-#: ../gio/gio-tool-move.c:42
+#: gio/gio-tool-move.c:42
 msgid "Don’t use copy and delete fallback"
 msgstr "Don’t use copy and delete fallback"
 
-#: ../gio/gio-tool-move.c:99
+#: gio/gio-tool-move.c:99
 msgid "Move one or more files from SOURCE to DEST."
 msgstr "Move one or more files from SOURCE to DEST."
 
-#: ../gio/gio-tool-move.c:101
+#: gio/gio-tool-move.c:101
 msgid ""
 "gio move is similar to the traditional mv utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2077,12 +2129,12 @@ msgstr ""
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location"
 
-#: ../gio/gio-tool-move.c:142
+#: gio/gio-tool-move.c:143
 #, c-format
 msgid "Target %s is not a directory"
 msgstr "Target %s is not a directory"
 
-#: ../gio/gio-tool-open.c:118
+#: gio/gio-tool-open.c:75
 msgid ""
 "Open files with the default application that\n"
 "is registered to handle files of this type."
@@ -2090,247 +2142,264 @@ msgstr ""
 "Open files with the default application that\n"
 "is registered to handle files of this type."
 
-#: ../gio/gio-tool-remove.c:31 ../gio/gio-tool-trash.c:31
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:31
 msgid "Ignore nonexistent files, never prompt"
 msgstr "Ignore nonexistent files, never prompt"
 
-#: ../gio/gio-tool-remove.c:52
+#: gio/gio-tool-remove.c:52
 msgid "Delete the given files."
 msgstr "Delete the given files."
 
-#: ../gio/gio-tool-rename.c:45
+#: gio/gio-tool-rename.c:45
 msgid "NAME"
 msgstr "NAME"
 
-#: ../gio/gio-tool-rename.c:50
+#: gio/gio-tool-rename.c:50
 msgid "Rename a file."
 msgstr "Rename a file."
 
-#: ../gio/gio-tool-rename.c:70
+#: gio/gio-tool-rename.c:70
 msgid "Missing argument"
 msgstr "Missing argument"
 
-#: ../gio/gio-tool-rename.c:76 ../gio/gio-tool-save.c:190
-#: ../gio/gio-tool-set.c:137
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
 msgid "Too many arguments"
 msgstr "Too many arguments"
 
-#: ../gio/gio-tool-rename.c:95
+#: gio/gio-tool-rename.c:95
 #, c-format
 msgid "Rename successful. New uri: %s\n"
 msgstr "Rename successful. New uri: %s\n"
 
-#: ../gio/gio-tool-save.c:50
+#: gio/gio-tool-save.c:50
 msgid "Only create if not existing"
 msgstr "Only create if not existing"
 
-#: ../gio/gio-tool-save.c:51
+#: gio/gio-tool-save.c:51
 msgid "Append to end of file"
 msgstr "Append to end of file"
 
-#: ../gio/gio-tool-save.c:52
+#: gio/gio-tool-save.c:52
 msgid "When creating, restrict access to the current user"
 msgstr "When creating, restrict access to the current user"
 
-#: ../gio/gio-tool-save.c:53
+#: gio/gio-tool-save.c:53
 msgid "When replacing, replace as if the destination did not exist"
 msgstr "When replacing, replace as if the destination did not exist"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:55
+#: gio/gio-tool-save.c:55
 msgid "Print new etag at end"
 msgstr "Print new etag at end"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:57
+#: gio/gio-tool-save.c:57
 msgid "The etag of the file being overwritten"
 msgstr "The etag of the file being overwritten"
 
-#: ../gio/gio-tool-save.c:57
+#: gio/gio-tool-save.c:57
 msgid "ETAG"
 msgstr "ETAG"
 
-#: ../gio/gio-tool-save.c:113
+#: gio/gio-tool-save.c:113
 msgid "Error reading from standard input"
 msgstr "Error reading from standard input"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:139
-#, c-format
+#: gio/gio-tool-save.c:139
 msgid "Etag not available\n"
 msgstr "Etag not available\n"
 
-#: ../gio/gio-tool-save.c:163
+#: gio/gio-tool-save.c:163
 msgid "Read from standard input and save to DEST."
 msgstr "Read from standard input and save to DEST."
 
-#: ../gio/gio-tool-save.c:183
+#: gio/gio-tool-save.c:183
 msgid "No destination given"
 msgstr "No destination given"
 
-#: ../gio/gio-tool-set.c:33
+#: gio/gio-tool-set.c:33
 msgid "Type of the attribute"
 msgstr "Type of the attribute"
 
-#: ../gio/gio-tool-set.c:33
+#: gio/gio-tool-set.c:33
 msgid "TYPE"
 msgstr "TYPE"
 
-#: ../gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:89
 msgid "ATTRIBUTE"
 msgstr "ATTRIBUTE"
 
-#: ../gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:89
 msgid "VALUE"
 msgstr "VALUE"
 
-#: ../gio/gio-tool-set.c:93
+#: gio/gio-tool-set.c:93
 msgid "Set a file attribute of LOCATION."
 msgstr "Set a file attribute of LOCATION."
 
-#: ../gio/gio-tool-set.c:113
+#: gio/gio-tool-set.c:113
 msgid "Location not specified"
 msgstr "Location not specified"
 
-#: ../gio/gio-tool-set.c:120
+#: gio/gio-tool-set.c:120
 msgid "Attribute not specified"
 msgstr "Attribute not specified"
 
-#: ../gio/gio-tool-set.c:130
+#: gio/gio-tool-set.c:130
 msgid "Value not specified"
 msgstr "Value not specified"
 
-#: ../gio/gio-tool-set.c:180
+#: gio/gio-tool-set.c:180
 #, c-format
 msgid "Invalid attribute type “%s”"
 msgstr "Invalid attribute type “%s”"
 
-#: ../gio/gio-tool-trash.c:32
+#: gio/gio-tool-trash.c:32
 msgid "Empty the trash"
 msgstr "Empty the trash"
 
-#: ../gio/gio-tool-trash.c:86
+#: gio/gio-tool-trash.c:86
 msgid "Move files or directories to the trash."
 msgstr "Move files or directories to the trash."
 
-#: ../gio/gio-tool-tree.c:33
+#: gio/gio-tool-tree.c:33
 msgid "Follow symbolic links, mounts and shortcuts"
 msgstr "Follow symbolic links, mounts and shortcuts"
 
-#: ../gio/gio-tool-tree.c:244
+#: gio/gio-tool-tree.c:244
 msgid "List contents of directories in a tree-like format."
 msgstr "List contents of directories in a tree-like format."
 
-#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1501
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Element <%s> not allowed inside <%s>"
 
-#: ../gio/glib-compile-resources.c:146
+#: gio/glib-compile-resources.c:144
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Element <%s> not allowed at toplevel"
 
-#: ../gio/glib-compile-resources.c:237
+#: gio/glib-compile-resources.c:234
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "File %s appears multiple times in the resource"
 
-#: ../gio/glib-compile-resources.c:248
+#: gio/glib-compile-resources.c:245
 #, c-format
 msgid "Failed to locate “%s” in any source directory"
 msgstr "Failed to locate “%s” in any source directory"
 
-#: ../gio/glib-compile-resources.c:259
+#: gio/glib-compile-resources.c:256
 #, c-format
 msgid "Failed to locate “%s” in current directory"
 msgstr "Failed to locate “%s” in current directory"
 
-#: ../gio/glib-compile-resources.c:290
+#: gio/glib-compile-resources.c:290
 #, c-format
 msgid "Unknown processing option “%s”"
 msgstr "Unknown processing option “%s”"
 
-#: ../gio/glib-compile-resources.c:308 ../gio/glib-compile-resources.c:354
+#. Translators: the first %s is a gresource XML attribute,
+#. * the second %s is an environment variable, and the third
+#. * %s is a command line tool
+#.
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
 #, c-format
-msgid "Failed to create temp file: %s"
-msgstr "Failed to create temp file: %s"
+msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
+msgstr "%s preprocessing requested, but %s is not set, and %s is not in PATH"
 
-#: ../gio/glib-compile-resources.c:382
+#: gio/glib-compile-resources.c:457
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "Error reading file %s: %s"
 
-#: ../gio/glib-compile-resources.c:402
+#: gio/glib-compile-resources.c:477
 #, c-format
 msgid "Error compressing file %s"
 msgstr "Error compressing file %s"
 
-#: ../gio/glib-compile-resources.c:469
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "text may not appear inside <%s>"
 
-#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2067
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Show program version and exit"
 
-#: ../gio/glib-compile-resources.c:665
-msgid "name of the output file"
-msgstr "name of the output file"
+#: gio/glib-compile-resources.c:738
+#| msgid "name of the output file"
+msgid "Name of the output file"
+msgstr "Name of the output file"
 
-#: ../gio/glib-compile-resources.c:666
+#: gio/glib-compile-resources.c:739
+#| msgid ""
+#| "The directories where files are to be read from (default to current "
+#| "directory)"
 msgid ""
-"The directories where files are to be read from (default to current "
+"The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr ""
-"The directories where files are to be read from (default to current "
+"The directories to load files referenced in FILE from (default: current "
 "directory)"
 
-#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2068
-#: ../gio/glib-compile-schemas.c:2096
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRECTORY"
 
-#: ../gio/glib-compile-resources.c:667
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generate output in the format selected for by the target filename extension"
 
-#: ../gio/glib-compile-resources.c:668
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Generate source header"
 
-#: ../gio/glib-compile-resources.c:669
-msgid "Generate sourcecode used to link in the resource file into your code"
-msgstr "Generate sourcecode used to link in the resource file into your code"
+#: gio/glib-compile-resources.c:742
+#| msgid "Generate sourcecode used to link in the resource file into your code"
+msgid "Generate source code used to link in the resource file into your code"
+msgstr "Generate source code used to link in the resource file into your code"
 
-#: ../gio/glib-compile-resources.c:670
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Generate dependency list"
 
-#: ../gio/glib-compile-resources.c:671
-msgid "name of the dependency file to generate"
-msgstr "name of the dependency file to generate"
+#: gio/glib-compile-resources.c:744
+#| msgid "name of the dependency file to generate"
+msgid "Name of the dependency file to generate"
+msgstr "Name of the dependency file to generate"
 
-#: ../gio/glib-compile-resources.c:672
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Include phony targets in the generated dependency file"
 
-#: ../gio/glib-compile-resources.c:673
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Don’t automatically create and register resource"
 
-#: ../gio/glib-compile-resources.c:674
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Don’t export functions; declare them G_GNUC_INTERNAL"
 
-#: ../gio/glib-compile-resources.c:675
+#: gio/glib-compile-resources.c:748
+msgid ""
+"Don’t embed resource data in the C file; assume it's linked externally "
+"instead"
+msgstr ""
+"Don’t embed resource data in the C file; assume it's linked externally "
+"instead"
+
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "C identifier name used for the generated source code"
 
-#: ../gio/glib-compile-resources.c:701
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2340,123 +2409,122 @@ msgstr ""
 "Resource specification files have the extension .gresource.xml,\n"
 "and the resource file have the extension called .gresource."
 
-#: ../gio/glib-compile-resources.c:723
-#, c-format
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "You should give exactly one file name\n"
 
-#: ../gio/glib-compile-schemas.c:95
+#: gio/glib-compile-schemas.c:92
 #, c-format
 msgid "nick must be a minimum of 2 characters"
 msgstr "nick must be a minimum of 2 characters"
 
-#: ../gio/glib-compile-schemas.c:106
+#: gio/glib-compile-schemas.c:103
 #, c-format
 msgid "Invalid numeric value"
 msgstr "Invalid numeric value"
 
-#: ../gio/glib-compile-schemas.c:114
+#: gio/glib-compile-schemas.c:111
 #, c-format
 msgid "<value nick='%s'/> already specified"
 msgstr "<value nick='%s'/> already specified"
 
-#: ../gio/glib-compile-schemas.c:122
+#: gio/glib-compile-schemas.c:119
 #, c-format
 msgid "value='%s' already specified"
 msgstr "value='%s' already specified"
 
-#: ../gio/glib-compile-schemas.c:136
+#: gio/glib-compile-schemas.c:133
 #, c-format
 msgid "flags values must have at most 1 bit set"
 msgstr "flags values must have at most 1 bit set"
 
-#: ../gio/glib-compile-schemas.c:161
+#: gio/glib-compile-schemas.c:158
 #, c-format
 msgid "<%s> must contain at least one <value>"
 msgstr "<%s> must contain at least one <value>"
 
-#: ../gio/glib-compile-schemas.c:315
+#: gio/glib-compile-schemas.c:314
 #, c-format
 msgid "<%s> is not contained in the specified range"
 msgstr "<%s> is not contained in the specified range"
 
-#: ../gio/glib-compile-schemas.c:327
+#: gio/glib-compile-schemas.c:326
 #, c-format
 msgid "<%s> is not a valid member of the specified enumerated type"
 msgstr "<%s> is not a valid member of the specified enumerated type"
 
-#: ../gio/glib-compile-schemas.c:333
+#: gio/glib-compile-schemas.c:332
 #, c-format
 msgid "<%s> contains string not in the specified flags type"
 msgstr "<%s> contains string not in the specified flags type"
 
-#: ../gio/glib-compile-schemas.c:339
+#: gio/glib-compile-schemas.c:338
 #, c-format
 msgid "<%s> contains a string not in <choices>"
 msgstr "<%s> contains a string not in <choices>"
 
-#: ../gio/glib-compile-schemas.c:373
+#: gio/glib-compile-schemas.c:372
 msgid "<range/> already specified for this key"
 msgstr "<range/> already specified for this key"
 
-#: ../gio/glib-compile-schemas.c:391
+#: gio/glib-compile-schemas.c:390
 #, c-format
 msgid "<range> not allowed for keys of type “%s”"
 msgstr "<range> not allowed for keys of type “%s”"
 
-#: ../gio/glib-compile-schemas.c:408
+#: gio/glib-compile-schemas.c:407
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
 msgstr "<range> specified minimum is greater than maximum"
 
-#: ../gio/glib-compile-schemas.c:433
+#: gio/glib-compile-schemas.c:432
 #, c-format
 msgid "unsupported l10n category: %s"
 msgstr "unsupported l10n category: %s"
 
-#: ../gio/glib-compile-schemas.c:441
+#: gio/glib-compile-schemas.c:440
 msgid "l10n requested, but no gettext domain given"
 msgstr "l10n requested, but no gettext domain given"
 
-#: ../gio/glib-compile-schemas.c:453
+#: gio/glib-compile-schemas.c:452
 msgid "translation context given for value without l10n enabled"
 msgstr "translation context given for value without l10n enabled"
 
-#: ../gio/glib-compile-schemas.c:475
+#: gio/glib-compile-schemas.c:474
 #, c-format
 msgid "Failed to parse <default> value of type “%s”: "
 msgstr "Failed to parse <default> value of type “%s”: "
 
-#: ../gio/glib-compile-schemas.c:492
+#: gio/glib-compile-schemas.c:491
 msgid ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
 
-#: ../gio/glib-compile-schemas.c:501
+#: gio/glib-compile-schemas.c:500
 msgid "<choices> already specified for this key"
 msgstr "<choices> already specified for this key"
 
-#: ../gio/glib-compile-schemas.c:513
+#: gio/glib-compile-schemas.c:512
 #, c-format
 msgid "<choices> not allowed for keys of type “%s”"
 msgstr "<choices> not allowed for keys of type “%s”"
 
-#: ../gio/glib-compile-schemas.c:529
+#: gio/glib-compile-schemas.c:528
 #, c-format
 msgid "<choice value='%s'/> already given"
 msgstr "<choice value='%s'/> already given"
 
-#: ../gio/glib-compile-schemas.c:544
+#: gio/glib-compile-schemas.c:543
 #, c-format
 msgid "<choices> must contain at least one <choice>"
 msgstr "<choices> must contain at least one <choice>"
 
-#: ../gio/glib-compile-schemas.c:558
+#: gio/glib-compile-schemas.c:557
 msgid "<aliases> already specified for this key"
 msgstr "<aliases> already specified for this key"
 
-#: ../gio/glib-compile-schemas.c:562
+#: gio/glib-compile-schemas.c:561
 msgid ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
@@ -2464,7 +2532,7 @@ msgstr ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
 
-#: ../gio/glib-compile-schemas.c:581
+#: gio/glib-compile-schemas.c:580
 #, c-format
 msgid ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
@@ -2473,41 +2541,41 @@ msgstr ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
 "type"
 
-#: ../gio/glib-compile-schemas.c:587
+#: gio/glib-compile-schemas.c:586
 #, c-format
 msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
 msgstr "<alias value='%s'/> given when <choice value='%s'/> was already given"
 
-#: ../gio/glib-compile-schemas.c:595
+#: gio/glib-compile-schemas.c:594
 #, c-format
 msgid "<alias value='%s'/> already specified"
 msgstr "<alias value='%s'/> already specified"
 
-#: ../gio/glib-compile-schemas.c:605
+#: gio/glib-compile-schemas.c:604
 #, c-format
 msgid "alias target “%s” is not in enumerated type"
 msgstr "alias target “%s” is not in enumerated type"
 
-#: ../gio/glib-compile-schemas.c:606
+#: gio/glib-compile-schemas.c:605
 #, c-format
 msgid "alias target “%s” is not in <choices>"
 msgstr "alias target “%s” is not in <choices>"
 
-#: ../gio/glib-compile-schemas.c:621
+#: gio/glib-compile-schemas.c:620
 #, c-format
 msgid "<aliases> must contain at least one <alias>"
 msgstr "<aliases> must contain at least one <alias>"
 
-#: ../gio/glib-compile-schemas.c:786
+#: gio/glib-compile-schemas.c:797
 msgid "Empty names are not permitted"
 msgstr "Empty names are not permitted"
 
-#: ../gio/glib-compile-schemas.c:796
+#: gio/glib-compile-schemas.c:807
 #, c-format
 msgid "Invalid name “%s”: names must begin with a lowercase letter"
 msgstr "Invalid name “%s”: names must begin with a lowercase letter"
 
-#: ../gio/glib-compile-schemas.c:808
+#: gio/glib-compile-schemas.c:819
 #, c-format
 msgid ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
@@ -2516,36 +2584,36 @@ msgstr ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
 "and hyphen (“-”) are permitted"
 
-#: ../gio/glib-compile-schemas.c:817
+#: gio/glib-compile-schemas.c:828
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 
-#: ../gio/glib-compile-schemas.c:826
+#: gio/glib-compile-schemas.c:837
 #, c-format
 msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 msgstr "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 
-#: ../gio/glib-compile-schemas.c:834
+#: gio/glib-compile-schemas.c:845
 #, c-format
 msgid "Invalid name “%s”: maximum length is 1024"
 msgstr "Invalid name “%s”: maximum length is 1024"
 
-#: ../gio/glib-compile-schemas.c:904
+#: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr "<child name='%s'> already specified"
 
-#: ../gio/glib-compile-schemas.c:930
+#: gio/glib-compile-schemas.c:943
 msgid "Cannot add keys to a “list-of” schema"
 msgstr "Cannot add keys to a “list-of” schema"
 
-#: ../gio/glib-compile-schemas.c:941
+#: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr "<key name='%s'> already specified"
 
-#: ../gio/glib-compile-schemas.c:959
+#: gio/glib-compile-schemas.c:972
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
@@ -2554,7 +2622,7 @@ msgstr ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
 "to modify value"
 
-#: ../gio/glib-compile-schemas.c:970
+#: gio/glib-compile-schemas.c:983
 #, c-format
 msgid ""
 "Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
@@ -2563,63 +2631,63 @@ msgstr ""
 "Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
 
-#: ../gio/glib-compile-schemas.c:989
+#: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> not (yet) defined."
 
-#: ../gio/glib-compile-schemas.c:1004
+#: gio/glib-compile-schemas.c:1017
 #, c-format
 msgid "Invalid GVariant type string “%s”"
 msgstr "Invalid GVariant type string “%s”"
 
-#: ../gio/glib-compile-schemas.c:1034
+#: gio/glib-compile-schemas.c:1047
 msgid "<override> given but schema isn’t extending anything"
 msgstr "<override> given but schema isn’t extending anything"
 
-#: ../gio/glib-compile-schemas.c:1047
+#: gio/glib-compile-schemas.c:1060
 #, c-format
 msgid "No <key name='%s'> to override"
 msgstr "No <key name='%s'> to override"
 
-#: ../gio/glib-compile-schemas.c:1055
+#: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr "<override name='%s'> already specified"
 
-#: ../gio/glib-compile-schemas.c:1128
+#: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr "<schema id='%s'> already specified"
 
-#: ../gio/glib-compile-schemas.c:1140
+#: gio/glib-compile-schemas.c:1153
 #, c-format
 msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr "<schema id='%s'> extends not yet existing schema “%s”"
 
-#: ../gio/glib-compile-schemas.c:1156
+#: gio/glib-compile-schemas.c:1169
 #, c-format
 msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr "<schema id='%s'> is list of not yet existing schema “%s”"
 
-#: ../gio/glib-compile-schemas.c:1164
+#: gio/glib-compile-schemas.c:1177
 #, c-format
 msgid "Cannot be a list of a schema with a path"
 msgstr "Cannot be a list of a schema with a path"
 
-#: ../gio/glib-compile-schemas.c:1174
+#: gio/glib-compile-schemas.c:1187
 #, c-format
 msgid "Cannot extend a schema with a path"
 msgstr "Cannot extend a schema with a path"
 
-#: ../gio/glib-compile-schemas.c:1184
+#: gio/glib-compile-schemas.c:1197
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 
-#: ../gio/glib-compile-schemas.c:1194
+#: gio/glib-compile-schemas.c:1207
 #, c-format
 msgid ""
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
@@ -2628,17 +2696,17 @@ msgstr ""
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
 "does not extend “%s”"
 
-#: ../gio/glib-compile-schemas.c:1211
+#: gio/glib-compile-schemas.c:1224
 #, c-format
 msgid "A path, if given, must begin and end with a slash"
 msgstr "A path, if given, must begin and end with a slash"
 
-#: ../gio/glib-compile-schemas.c:1218
+#: gio/glib-compile-schemas.c:1231
 #, c-format
 msgid "The path of a list must end with “:/”"
 msgstr "The path of a list must end with “:/”"
 
-#: ../gio/glib-compile-schemas.c:1227
+#: gio/glib-compile-schemas.c:1240
 #, c-format
 msgid ""
 "Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
@@ -2647,116 +2715,179 @@ msgstr ""
 "Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
 "desktop/” or “/system/” are deprecated."
 
-#: ../gio/glib-compile-schemas.c:1257
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> already specified"
 
-#: ../gio/glib-compile-schemas.c:1407 ../gio/glib-compile-schemas.c:1423
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
 msgstr "Only one <%s> element allowed inside <%s>"
 
-#: ../gio/glib-compile-schemas.c:1505
+#: gio/glib-compile-schemas.c:1518
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "Element <%s> not allowed at the top level"
 
-#: ../gio/glib-compile-schemas.c:1523
+#: gio/glib-compile-schemas.c:1536
 msgid "Element <default> is required in <key>"
 msgstr "Element <default> is required in <key>"
 
-#: ../gio/glib-compile-schemas.c:1613
+#: gio/glib-compile-schemas.c:1626
 #, c-format
 msgid "Text may not appear inside <%s>"
 msgstr "Text may not appear inside <%s>"
 
-#: ../gio/glib-compile-schemas.c:1681
+#: gio/glib-compile-schemas.c:1694
 #, c-format
 msgid "Warning: undefined reference to <schema id='%s'/>"
 msgstr "Warning: undefined reference to <schema id='%s'/>"
 
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1820 ../gio/glib-compile-schemas.c:1894
-#: ../gio/glib-compile-schemas.c:1970
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+#| msgid "--strict was specified; exiting.\n"
+msgid "--strict was specified; exiting."
+msgstr "--strict was specified; exiting."
+
+#: gio/glib-compile-schemas.c:1845
+#| msgid "This entire file has been ignored.\n"
+msgid "This entire file has been ignored."
+msgstr "This entire file has been ignored."
+
+#: gio/glib-compile-schemas.c:1908
+#| msgid "Ignoring this file.\n"
+msgid "Ignoring this file."
+msgstr "Ignoring this file."
+
+#: gio/glib-compile-schemas.c:1963
 #, c-format
-msgid "--strict was specified; exiting.\n"
-msgstr "--strict was specified; exiting.\n"
+#| msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
+msgstr ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
 
-#: ../gio/glib-compile-schemas.c:1830
+#: gio/glib-compile-schemas.c:1971
 #, c-format
-msgid "This entire file has been ignored.\n"
-msgstr "This entire file has been ignored.\n"
+#| msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
+msgstr ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
 
-#: ../gio/glib-compile-schemas.c:1890
+#: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "Ignoring this file.\n"
-msgstr "Ignoring this file.\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
+msgstr ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
 
-#: ../gio/glib-compile-schemas.c:1930
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
-msgstr "No such key '%s' in schema '%s' as specified in override file '%s'"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
+msgstr ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
 
-#: ../gio/glib-compile-schemas.c:1936 ../gio/glib-compile-schemas.c:1994
-#: ../gio/glib-compile-schemas.c:2022
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid "; ignoring override for this key.\n"
-msgstr "; ignoring override for this key.\n"
+#| msgid ""
+#| "error parsing key '%s' in schema '%s' as specified in override file '%s': "
+#| "%s."
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
+msgstr ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
 
-#: ../gio/glib-compile-schemas.c:1940 ../gio/glib-compile-schemas.c:1998
-#: ../gio/glib-compile-schemas.c:2026
+#: gio/glib-compile-schemas.c:2038
 #, c-format
-msgid " and --strict was specified; exiting.\n"
-msgstr " and --strict was specified; exiting.\n"
+#| msgid ""
+#| "error parsing key '%s' in schema '%s' as specified in override file '%s': "
+#| "%s."
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
+msgstr ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
 
-#: ../gio/glib-compile-schemas.c:1956
+#: gio/glib-compile-schemas.c:2065
 #, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is outside the "
+#| "range given in the schema"
 msgid ""
-"error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 msgstr ""
-"error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 
-#: ../gio/glib-compile-schemas.c:1966
+#: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "Ignoring override for this key.\n"
-msgstr "Ignoring override for this key.\n"
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is outside the "
+#| "range given in the schema"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
+msgstr ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
 
-#: ../gio/glib-compile-schemas.c:1984
+#: gio/glib-compile-schemas.c:2101
 #, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is not in the "
+#| "list of valid choices"
 msgid ""
-"override for key '%s' in schema '%s' in override file '%s' is outside the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
 msgstr ""
-"override for key '%s' in schema '%s' in override file '%s' is outside the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
 
-#: ../gio/glib-compile-schemas.c:2012
+#: gio/glib-compile-schemas.c:2111
 #, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is not in the "
+#| "list of valid choices"
 msgid ""
-"override for key '%s' in schema '%s' in override file '%s' is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 msgstr ""
-"override for key '%s' in schema '%s' in override file '%s' is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 
-#: ../gio/glib-compile-schemas.c:2068
-msgid "where to store the gschemas.compiled file"
-msgstr "where to store the gschemas.compiled file"
+#: gio/glib-compile-schemas.c:2173
+#| msgid "where to store the gschemas.compiled file"
+msgid "Where to store the gschemas.compiled file"
+msgstr "Where to store the gschemas.compiled file"
 
-#: ../gio/glib-compile-schemas.c:2069
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
 msgstr "Abort on any errors in schemas"
 
-#: ../gio/glib-compile-schemas.c:2070
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
 msgstr "Do not write the gschema.compiled file"
 
-#: ../gio/glib-compile-schemas.c:2071
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
 msgstr "Do not enforce key name restrictions"
 
-#: ../gio/glib-compile-schemas.c:2099
+#: gio/glib-compile-schemas.c:2205
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -2766,32 +2897,27 @@ msgstr ""
 "Schema files are required to have the extension .gschema.xml,\n"
 "and the cache file is called gschemas.compiled."
 
-#: ../gio/glib-compile-schemas.c:2120
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr "You should give exactly one directory name\n"
+#: gio/glib-compile-schemas.c:2226
+#| msgid "You should give exactly one directory name\n"
+msgid "You should give exactly one directory name"
+msgstr "You should give exactly one directory name"
 
-#: ../gio/glib-compile-schemas.c:2162
-#, c-format
-msgid "No schema files found: "
-msgstr "No schema files found: "
+#: gio/glib-compile-schemas.c:2269
+#| msgid "No schema files found: "
+msgid "No schema files found: doing nothing."
+msgstr "No schema files found: doing nothing."
 
-#: ../gio/glib-compile-schemas.c:2165
-#, c-format
-msgid "doing nothing.\n"
-msgstr "doing nothing.\n"
+#: gio/glib-compile-schemas.c:2271
+#| msgid "removed existing output file.\n"
+msgid "No schema files found: removed existing output file."
+msgstr "No schema files found: removed existing output file."
 
-#: ../gio/glib-compile-schemas.c:2168
-#, c-format
-msgid "removed existing output file.\n"
-msgstr "removed existing output file.\n"
-
-#: ../gio/glocalfile.c:643 ../gio/win32/gwinhttpfile.c:420
+#: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
 msgid "Invalid filename %s"
 msgstr "Invalid filename %s"
 
-#: ../gio/glocalfile.c:1039
+#: gio/glocalfile.c:1013
 #, c-format
 msgid "Error getting filesystem info for %s: %s"
 msgstr "Error getting filesystem info for %s: %s"
@@ -2800,314 +2926,316 @@ msgstr "Error getting filesystem info for %s: %s"
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
 #.
-#: ../gio/glocalfile.c:1178
+#: gio/glocalfile.c:1152
 #, c-format
 msgid "Containing mount for file %s not found"
 msgstr "Containing mount for file %s not found"
 
-#: ../gio/glocalfile.c:1201
+#: gio/glocalfile.c:1175
 msgid "Can’t rename root directory"
 msgstr "Can’t rename root directory"
 
-#: ../gio/glocalfile.c:1219 ../gio/glocalfile.c:1242
+#: gio/glocalfile.c:1193 gio/glocalfile.c:1216
 #, c-format
 msgid "Error renaming file %s: %s"
 msgstr "Error renaming file %s: %s"
 
-#: ../gio/glocalfile.c:1226
+#: gio/glocalfile.c:1200
 msgid "Can’t rename file, filename already exists"
 msgstr "Can’t rename file, filename already exists"
 
-#: ../gio/glocalfile.c:1239 ../gio/glocalfile.c:2256 ../gio/glocalfile.c:2284
-#: ../gio/glocalfile.c:2441 ../gio/glocalfileoutputstream.c:551
+#: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Invalid filename"
 
-#: ../gio/glocalfile.c:1407 ../gio/glocalfile.c:1422
+#: gio/glocalfile.c:1381 gio/glocalfile.c:1396
 #, c-format
 msgid "Error opening file %s: %s"
 msgstr "Error opening file %s: %s"
 
-#: ../gio/glocalfile.c:1547
+#: gio/glocalfile.c:1521
 #, c-format
 msgid "Error removing file %s: %s"
 msgstr "Error removing file %s: %s"
 
-#: ../gio/glocalfile.c:1931
+#: gio/glocalfile.c:1963
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Error trashing file %s: %s"
 
-#: ../gio/glocalfile.c:1954
+#: gio/glocalfile.c:2004
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "Unable to create trash dir %s: %s"
 
-#: ../gio/glocalfile.c:1974
+#: gio/glocalfile.c:2025
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "Unable to find toplevel directory to trash %s"
 
-#: ../gio/glocalfile.c:2053 ../gio/glocalfile.c:2073
+#: gio/glocalfile.c:2034
+#, c-format
+#| msgid "Copy (reflink/clone) between mounts is not supported"
+msgid "Trashing on system internal mounts is not supported"
+msgstr "Trashing on system internal mounts is not supported"
+
+#: gio/glocalfile.c:2118 gio/glocalfile.c:2138
 #, c-format
 msgid "Unable to find or create trash directory for %s"
 msgstr "Unable to find or create trash directory for %s"
 
-#: ../gio/glocalfile.c:2108
+#: gio/glocalfile.c:2173
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Unable to create trashing info file for %s: %s"
 
-#: ../gio/glocalfile.c:2167
+#: gio/glocalfile.c:2233
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "Unable to trash file %s across filesystem boundaries"
 
-#: ../gio/glocalfile.c:2171 ../gio/glocalfile.c:2227
+#: gio/glocalfile.c:2237 gio/glocalfile.c:2293
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Unable to trash file %s: %s"
 
-#: ../gio/glocalfile.c:2233
+#: gio/glocalfile.c:2299
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Unable to trash file %s"
 
-#: ../gio/glocalfile.c:2259
+#: gio/glocalfile.c:2325
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Error creating directory %s: %s"
 
-#: ../gio/glocalfile.c:2288
+#: gio/glocalfile.c:2354
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Filesystem does not support symbolic links"
 
-#: ../gio/glocalfile.c:2291
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Error making symbolic link %s: %s"
 
-#: ../gio/glocalfile.c:2297 ../glib/gfileutils.c:2127
-msgid "Symbolic links not supported"
-msgstr "Symbolic links not supported"
-
-#: ../gio/glocalfile.c:2352 ../gio/glocalfile.c:2387 ../gio/glocalfile.c:2444
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Error moving file %s: %s"
 
-#: ../gio/glocalfile.c:2375
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Can’t move directory over directory"
 
-#: ../gio/glocalfile.c:2401 ../gio/glocalfileoutputstream.c:935
-#: ../gio/glocalfileoutputstream.c:949 ../gio/glocalfileoutputstream.c:964
-#: ../gio/glocalfileoutputstream.c:981 ../gio/glocalfileoutputstream.c:995
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Backup file creation failed"
 
-#: ../gio/glocalfile.c:2420
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Error removing target file: %s"
 
-#: ../gio/glocalfile.c:2434
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Move between mounts not supported"
 
-#: ../gio/glocalfile.c:2625
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Could not determine the disk usage of %s: %s"
 
-#: ../gio/glocalfileinfo.c:745
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Attribute value must be non-NULL"
 
-#: ../gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Invalid attribute type (string expected)"
 
-#: ../gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Invalid extended attribute name"
 
-#: ../gio/glocalfileinfo.c:799
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Error setting extended attribute “%s”: %s"
 
-#: ../gio/glocalfileinfo.c:1607
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (invalid encoding)"
 
-#: ../gio/glocalfileinfo.c:1776 ../gio/glocalfileoutputstream.c:813
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Error when getting information for file “%s”: %s"
 
-#: ../gio/glocalfileinfo.c:2034
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Error when getting information for file descriptor: %s"
 
-#: ../gio/glocalfileinfo.c:2079
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Invalid attribute type (uint32 expected)"
 
-#: ../gio/glocalfileinfo.c:2097
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Invalid attribute type (uint64 expected)"
 
-#: ../gio/glocalfileinfo.c:2116 ../gio/glocalfileinfo.c:2135
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Invalid attribute type (byte string expected)"
 
-#: ../gio/glocalfileinfo.c:2180
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Cannot set permissions on symlinks"
 
-#: ../gio/glocalfileinfo.c:2196
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Error setting permissions: %s"
 
-#: ../gio/glocalfileinfo.c:2247
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Error setting owner: %s"
 
-#: ../gio/glocalfileinfo.c:2270
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "symlink must be non-NULL"
 
-#: ../gio/glocalfileinfo.c:2280 ../gio/glocalfileinfo.c:2299
-#: ../gio/glocalfileinfo.c:2310
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Error setting symlink: %s"
 
-#: ../gio/glocalfileinfo.c:2289
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Error setting symlink: file is not a symlink"
 
-#: ../gio/glocalfileinfo.c:2415
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Error setting modification or access time: %s"
 
 # c-format
-#: ../gio/glocalfileinfo.c:2438
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux context must be non-NULL"
 
-#: ../gio/glocalfileinfo.c:2453
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Error setting SELinux context: %s"
 
-#: ../gio/glocalfileinfo.c:2460
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux is not enabled on this system"
 
-#: ../gio/glocalfileinfo.c:2552
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Setting attribute %s not supported"
 
-#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:696
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Error reading from file: %s"
 
-#: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
-#: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:458 ../gio/glocalfileoutputstream.c:1013
+#: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
+#: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Error seeking in file: %s"
 
-#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:248
-#: ../gio/glocalfileoutputstream.c:342
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Error closing file: %s"
 
-#: ../gio/glocalfilemonitor.c:840
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Unable to find default local file monitor type"
 
-#: ../gio/glocalfileoutputstream.c:196 ../gio/glocalfileoutputstream.c:228
-#: ../gio/glocalfileoutputstream.c:717
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Error writing to file: %s"
 
-#: ../gio/glocalfileoutputstream.c:275
+#: gio/glocalfileoutputstream.c:371
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Error removing old backup link: %s"
 
-#: ../gio/glocalfileoutputstream.c:289 ../gio/glocalfileoutputstream.c:302
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Error creating backup copy: %s"
 
-#: ../gio/glocalfileoutputstream.c:320
+#: gio/glocalfileoutputstream.c:416
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Error renaming temporary file: %s"
 
-#: ../gio/glocalfileoutputstream.c:504 ../gio/glocalfileoutputstream.c:1064
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Error truncating file: %s"
 
-#: ../gio/glocalfileoutputstream.c:557 ../gio/glocalfileoutputstream.c:795
-#: ../gio/glocalfileoutputstream.c:1045 ../gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Error opening file “%s”: %s"
 
-#: ../gio/glocalfileoutputstream.c:826
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
 msgstr "Target file is a directory"
 
-#: ../gio/glocalfileoutputstream.c:831
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
 msgstr "Target file is not a regular file"
 
-#: ../gio/glocalfileoutputstream.c:843
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
 msgstr "The file was externally modified"
 
-#: ../gio/glocalfileoutputstream.c:1029
+#: gio/glocalfileoutputstream.c:1125
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Error removing old file: %s"
 
-#: ../gio/gmemoryinputstream.c:474 ../gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
 msgid "Invalid GSeekType supplied"
 msgstr "Invalid GSeekType supplied"
 
-#: ../gio/gmemoryinputstream.c:484
+#: gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
 msgstr "Invalid seek request"
 
-#: ../gio/gmemoryinputstream.c:508
+#: gio/gmemoryinputstream.c:508
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Cannot truncate GMemoryInputStream"
 
-#: ../gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:567
 msgid "Memory output stream not resizable"
 msgstr "Memory output stream not resizable"
 
-#: ../gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:583
 msgid "Failed to resize memory output stream"
 msgstr "Failed to resize memory output stream"
 
-#: ../gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:673
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3115,136 +3243,157 @@ msgstr ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 
-#: ../gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:782
 msgid "Requested seek before the beginning of the stream"
 msgstr "Requested seek before the beginning of the stream"
 
-#: ../gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:797
 msgid "Requested seek beyond the end of the stream"
 msgstr "Requested seek beyond the end of the stream"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
-#: ../gio/gmount.c:396
+#: gio/gmount.c:399
 msgid "mount doesn’t implement “unmount”"
 msgstr "mount doesn’t implement “unmount”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
-#: ../gio/gmount.c:472
+#: gio/gmount.c:475
 msgid "mount doesn’t implement “eject”"
 msgstr "mount doesn’t implement “eject”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:550
+#: gio/gmount.c:553
 msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
 msgstr "mount doesn’t implement “unmount” or “unmount_with_operation”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gmount.c:635
+#: gio/gmount.c:638
 msgid "mount doesn’t implement “eject” or “eject_with_operation”"
 msgstr "mount doesn’t implement “eject” or “eject_with_operation”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: ../gio/gmount.c:723
+#: gio/gmount.c:726
 msgid "mount doesn’t implement “remount”"
 msgstr "mount doesn’t implement “remount”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:805
+#: gio/gmount.c:808
 msgid "mount doesn’t implement content type guessing"
 msgstr "mount doesn’t implement content type guessing"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:892
+#: gio/gmount.c:895
 msgid "mount doesn’t implement synchronous content type guessing"
 msgstr "mount doesn’t implement synchronous content type guessing"
 
-#: ../gio/gnetworkaddress.c:378
+#: gio/gnetworkaddress.c:415
 #, c-format
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Hostname “%s” contains “[” but not “]”"
 
-#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:310
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Network unreachable"
 
-#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Host unreachable"
 
-#: ../gio/gnetworkmonitornetlink.c:96 ../gio/gnetworkmonitornetlink.c:108
-#: ../gio/gnetworkmonitornetlink.c:127
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111
+#: gio/gnetworkmonitornetlink.c:130
 #, c-format
 msgid "Could not create network monitor: %s"
 msgstr "Could not create network monitor: %s"
 
-#: ../gio/gnetworkmonitornetlink.c:117
+#: gio/gnetworkmonitornetlink.c:120
 msgid "Could not create network monitor: "
 msgstr "Could not create network monitor: "
 
-#: ../gio/gnetworkmonitornetlink.c:175
+#: gio/gnetworkmonitornetlink.c:183
 msgid "Could not get network status: "
 msgstr "Could not get network status: "
 
-#: ../gio/gnetworkmonitornm.c:329
+#: gio/gnetworkmonitornm.c:348
+#, c-format
+#| msgid "NetworkManager version too old"
+msgid "NetworkManager not running"
+msgstr "NetworkManager not running"
+
+#: gio/gnetworkmonitornm.c:359
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager version too old"
 
-#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560
+#: gio/goutputstream.c:232 gio/goutputstream.c:775
 msgid "Output stream doesn’t implement write"
 msgstr "Output stream doesn’t implement write"
 
-#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1224
+#: gio/goutputstream.c:472 gio/goutputstream.c:1533
+#, c-format
+msgid "Sum of vectors passed to %s too large"
+msgstr "Sum of vectors passed to %s too large"
+
+#: gio/goutputstream.c:736 gio/goutputstream.c:1761
 msgid "Source stream is already closed"
 msgstr "Source stream is already closed"
 
-#: ../gio/gresolver.c:342 ../gio/gthreadedresolver.c:116
-#: ../gio/gthreadedresolver.c:126
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Error resolving “%s”: %s"
 
-#: ../gio/gresource.c:621 ../gio/gresource.c:880 ../gio/gresource.c:919
-#: ../gio/gresource.c:1043 ../gio/gresource.c:1115 ../gio/gresource.c:1188
-#: ../gio/gresource.c:1258 ../gio/gresourcefile.c:476
-#: ../gio/gresourcefile.c:599 ../gio/gresourcefile.c:736
+#. Translators: The placeholder is for a function name.
+#: gio/gresolver.c:455 gio/gresolver.c:613
+#, c-format
+msgid "%s not implemented"
+msgstr "%s not implemented"
+
+#: gio/gresolver.c:981 gio/gresolver.c:1033
+#| msgid "Invalid hostname"
+msgid "Invalid domain"
+msgstr "Invalid domain"
+
+#: gio/gresource.c:665 gio/gresource.c:924 gio/gresource.c:963
+#: gio/gresource.c:1087 gio/gresource.c:1159 gio/gresource.c:1232
+#: gio/gresource.c:1313 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresourcefile.c:736
 #, c-format
 msgid "The resource at “%s” does not exist"
 msgstr "The resource at “%s” does not exist"
 
-#: ../gio/gresource.c:786
+#: gio/gresource.c:830
 #, c-format
 msgid "The resource at “%s” failed to decompress"
 msgstr "The resource at “%s” failed to decompress"
 
-#: ../gio/gresourcefile.c:732
+#: gio/gresourcefile.c:732
 #, c-format
 msgid "The resource at “%s” is not a directory"
 msgstr "The resource at “%s” is not a directory"
 
-#: ../gio/gresourcefile.c:940
+#: gio/gresourcefile.c:940
 msgid "Input stream doesn’t implement seek"
 msgstr "Input stream doesn’t implement seek"
 
-#: ../gio/gresource-tool.c:494
+#: gio/gresource-tool.c:499
 msgid "List sections containing resources in an elf FILE"
 msgstr "List sections containing resources in an elf FILE"
 
-#: ../gio/gresource-tool.c:500
+#: gio/gresource-tool.c:505
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3254,16 +3403,15 @@ msgstr ""
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources"
 
-#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
 msgid "FILE [PATH]"
 msgstr "FILE [PATH]"
 
-#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514
-#: ../gio/gresource-tool.c:521
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
 msgid "SECTION"
 msgstr "SECTION"
 
-#: ../gio/gresource-tool.c:509
+#: gio/gresource-tool.c:514
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3275,15 +3423,15 @@ msgstr ""
 "If PATH is given, only list matching resources\n"
 "Details include the section, size and compression"
 
-#: ../gio/gresource-tool.c:519
+#: gio/gresource-tool.c:524
 msgid "Extract a resource file to stdout"
 msgstr "Extract a resource file to stdout"
 
-#: ../gio/gresource-tool.c:520
+#: gio/gresource-tool.c:525
 msgid "FILE PATH"
 msgstr "FILE PATH"
 
-#: ../gio/gresource-tool.c:534
+#: gio/gresource-tool.c:539
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3311,7 +3459,7 @@ msgstr ""
 "Use “gresource help COMMAND” to get detailed help.\n"
 "\n"
 
-#: ../gio/gresource-tool.c:548
+#: gio/gresource-tool.c:553
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3326,19 +3474,19 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gresource-tool.c:555
+#: gio/gresource-tool.c:560
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECTION   An (optional) elf section name\n"
 
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:656
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMMAND   The (optional) command to explain\n"
 
-#: ../gio/gresource-tool.c:565
+#: gio/gresource-tool.c:570
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr "  FILE      An elf file (a binary or a shared library)\n"
 
-#: ../gio/gresource-tool.c:568
+#: gio/gresource-tool.c:573
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -3346,90 +3494,82 @@ msgstr ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
 
-#: ../gio/gresource-tool.c:572
+#: gio/gresource-tool.c:577
 msgid "[PATH]"
 msgstr "[PATH]"
 
-#: ../gio/gresource-tool.c:574
+#: gio/gresource-tool.c:579
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr "  PATH      An (optional) resource path (may be partial)\n"
 
-#: ../gio/gresource-tool.c:575
+#: gio/gresource-tool.c:580
 msgid "PATH"
 msgstr "PATH"
 
-#: ../gio/gresource-tool.c:577
+#: gio/gresource-tool.c:582
 msgid "  PATH      A resource path\n"
 msgstr "  PATH      A resource path\n"
 
-#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:853
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "No such schema “%s”\n"
 
-#: ../gio/gsettings-tool.c:57
+#: gio/gsettings-tool.c:55
 #, c-format
 msgid "Schema “%s” is not relocatable (path must not be specified)\n"
 msgstr "Schema “%s” is not relocatable (path must not be specified)\n"
 
-#: ../gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:76
 #, c-format
 msgid "Schema “%s” is relocatable (path must be specified)\n"
 msgstr "Schema “%s” is relocatable (path must be specified)\n"
 
-#: ../gio/gsettings-tool.c:92
-#, c-format
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "Empty path given.\n"
 
-#: ../gio/gsettings-tool.c:98
-#, c-format
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
 msgstr "Path must begin with a slash (/)\n"
 
-#: ../gio/gsettings-tool.c:104
-#, c-format
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
 msgstr "Path must end with a slash (/)\n"
 
-#: ../gio/gsettings-tool.c:110
-#, c-format
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Path must not contain two adjacent slashes (//)\n"
 
-#: ../gio/gsettings-tool.c:491
-#, c-format
+#: gio/gsettings-tool.c:536
 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:498
-#, c-format
+#: gio/gsettings-tool.c:543
 msgid "The key is not writable\n"
 msgstr "The key is not writable\n"
 
-#: ../gio/gsettings-tool.c:534
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
 msgstr "List the installed (non-relocatable) schemas"
 
-#: ../gio/gsettings-tool.c:540
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
 msgstr "List the installed relocatable schemas"
 
-#: ../gio/gsettings-tool.c:546
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
 msgstr "List the keys in SCHEMA"
 
-#: ../gio/gsettings-tool.c:547 ../gio/gsettings-tool.c:553
-#: ../gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: ../gio/gsettings-tool.c:552
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
 msgstr "List the children of SCHEMA"
 
-#: ../gio/gsettings-tool.c:558
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3437,49 +3577,48 @@ msgstr ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 
-#: ../gio/gsettings-tool.c:560
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: ../gio/gsettings-tool.c:565
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
 msgstr "Get the value of KEY"
 
-#: ../gio/gsettings-tool.c:566 ../gio/gsettings-tool.c:572
-#: ../gio/gsettings-tool.c:578 ../gio/gsettings-tool.c:590
-#: ../gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: ../gio/gsettings-tool.c:571
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
 msgstr "Query the range of valid values for KEY"
 
-#: ../gio/gsettings-tool.c:577
+#: gio/gsettings-tool.c:622
 msgid "Query the description for KEY"
 msgstr "Query the description for KEY"
 
-#: ../gio/gsettings-tool.c:583
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
 msgstr "Set the value of KEY to VALUE"
 
-#: ../gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: ../gio/gsettings-tool.c:589
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
 msgstr "Reset KEY to its default value"
 
-#: ../gio/gsettings-tool.c:595
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Reset all keys in SCHEMA to their defaults"
 
-#: ../gio/gsettings-tool.c:601
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
 msgstr "Check if KEY is writable"
 
-#: ../gio/gsettings-tool.c:607
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3489,11 +3628,11 @@ msgstr ""
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 
-#: ../gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: ../gio/gsettings-tool.c:622
+#: gio/gsettings-tool.c:667
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3541,7 +3680,7 @@ msgstr ""
 "Use “gsettings help COMMAND” to get detailed help.\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3556,11 +3695,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:697
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR A directory to search for additional schemas\n"
 
-#: ../gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3568,276 +3707,272 @@ msgstr ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 
-#: ../gio/gsettings-tool.c:665
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       The (optional) key within the schema\n"
 
-#: ../gio/gsettings-tool.c:669
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       The key within the schema\n"
 
-#: ../gio/gsettings-tool.c:673
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     The value to set\n"
 
-#: ../gio/gsettings-tool.c:728
+#: gio/gsettings-tool.c:773
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Could not load schemas from %s: %s\n"
 
-#: ../gio/gsettings-tool.c:740
-#, c-format
+#: gio/gsettings-tool.c:785
 msgid "No schemas installed\n"
 msgstr "No schemas installed\n"
 
-#: ../gio/gsettings-tool.c:811
-#, c-format
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
 msgstr "Empty schema name given\n"
 
-#: ../gio/gsettings-tool.c:866
+#: gio/gsettings-tool.c:919
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "No such key “%s”\n"
 
-#: ../gio/gsocket.c:384
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Invalid socket, not initialized"
 
-#: ../gio/gsocket.c:391
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Invalid socket, initialization failed due to: %s"
 
-#: ../gio/gsocket.c:399
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Socket is already closed"
 
-#: ../gio/gsocket.c:414 ../gio/gsocket.c:2995 ../gio/gsocket.c:4205
-#: ../gio/gsocket.c:4263
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Socket I/O timed out"
 
-#: ../gio/gsocket.c:546
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creating GSocket from fd: %s"
 
-#: ../gio/gsocket.c:575 ../gio/gsocket.c:629 ../gio/gsocket.c:636
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Unable to create socket: %s"
 
-#: ../gio/gsocket.c:629
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Unknown family was specified"
 
-#: ../gio/gsocket.c:636
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Unknown protocol was specified"
 
-#: ../gio/gsocket.c:1127
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Cannot use datagram operations on a non-datagram socket."
 
-#: ../gio/gsocket.c:1144
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Cannot use datagram operations on a socket with a timeout set."
 
-#: ../gio/gsocket.c:1948
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "could not get local address: %s"
 
-#: ../gio/gsocket.c:1991
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "could not get remote address: %s"
 
-#: ../gio/gsocket.c:2057
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "could not listen: %s"
 
-#: ../gio/gsocket.c:2156
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Error binding to address: %s"
+#| msgid "Error binding to address: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Error binding to address %s: %s"
 
-#: ../gio/gsocket.c:2214 ../gio/gsocket.c:2251 ../gio/gsocket.c:2361
-#: ../gio/gsocket.c:2379 ../gio/gsocket.c:2449 ../gio/gsocket.c:2507
-#: ../gio/gsocket.c:2525
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Error joining multicast group: %s"
 
-#: ../gio/gsocket.c:2215 ../gio/gsocket.c:2252 ../gio/gsocket.c:2362
-#: ../gio/gsocket.c:2380 ../gio/gsocket.c:2450 ../gio/gsocket.c:2508
-#: ../gio/gsocket.c:2526
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Error leaving multicast group: %s"
 
-#: ../gio/gsocket.c:2216
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "No support for source-specific multicast"
 
-#: ../gio/gsocket.c:2363
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Unsupported socket family"
 
-#: ../gio/gsocket.c:2381
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific not an IPv4 address"
 
-#: ../gio/gsocket.c:2399 ../gio/gsocket.c:2428 ../gio/gsocket.c:2475
-#, c-format
-msgid "Interface not found: %s"
-msgstr "Interface not found: %s"
-
-#: ../gio/gsocket.c:2415
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Interface name too long"
 
-#: ../gio/gsocket.c:2451
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Interface not found: %s"
+
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "No support for IPv4 source-specific multicast"
 
-#: ../gio/gsocket.c:2509
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "No support for IPv6 source-specific multicast"
 
-#: ../gio/gsocket.c:2718
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Error accepting connection: %s"
 
-#: ../gio/gsocket.c:2839
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Connection in progress"
 
-#: ../gio/gsocket.c:2888
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Unable to get pending error: "
 
-#: ../gio/gsocket.c:3058
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Error receiving data: %s"
 
-#: ../gio/gsocket.c:3253
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Error sending data: %s"
 
-#: ../gio/gsocket.c:3440
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Unable to shutdown socket: %s"
 
-#: ../gio/gsocket.c:3521
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Error closing socket: %s"
 
-#: ../gio/gsocket.c:4198
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Waiting for socket condition: %s"
 
-#: ../gio/gsocket.c:4672 ../gio/gsocket.c:4752 ../gio/gsocket.c:4930
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error sending message: %s"
 
-#: ../gio/gsocket.c:4696
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage not supported on Windows"
 
-#: ../gio/gsocket.c:5149 ../gio/gsocket.c:5222 ../gio/gsocket.c:5448
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Error receiving message: %s"
 
-#: ../gio/gsocket.c:5720
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Unable to read socket credentials: %s"
 
-#: ../gio/gsocket.c:5729
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials not implemented for this OS"
 
-#: ../gio/gsocketclient.c:176
+#: gio/gsocketclient.c:182
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr "Could not connect to proxy server %s: "
 
-#: ../gio/gsocketclient.c:190
+#: gio/gsocketclient.c:196
 #, c-format
 msgid "Could not connect to %s: "
 msgstr "Could not connect to %s: "
 
-#: ../gio/gsocketclient.c:192
+#: gio/gsocketclient.c:198
 msgid "Could not connect: "
 msgstr "Could not connect: "
 
-#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Unknown error on connect"
 
-#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Proxying over a non-TCP connection is not supported."
 
-#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxy protocol “%s” is not supported."
 
-#: ../gio/gsocketlistener.c:218
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr "Listener is already closed"
 
-#: ../gio/gsocketlistener.c:264
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "Added socket is closed"
 
-#: ../gio/gsocks4aproxy.c:118
+#: gio/gsocks4aproxy.c:118
 #, c-format
 msgid "SOCKSv4 does not support IPv6 address “%s”"
 msgstr "SOCKSv4 does not support IPv6 address “%s”"
 
-#: ../gio/gsocks4aproxy.c:136
+#: gio/gsocks4aproxy.c:136
 msgid "Username is too long for SOCKSv4 protocol"
 msgstr "Username is too long for SOCKSv4 protocol"
 
-#: ../gio/gsocks4aproxy.c:153
+#: gio/gsocks4aproxy.c:153
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv4 protocol"
 msgstr "Hostname “%s” is too long for SOCKSv4 protocol"
 
-#: ../gio/gsocks4aproxy.c:179
+#: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
 msgstr "The server is not a SOCKSv4 proxy server."
 
-#: ../gio/gsocks4aproxy.c:186
+#: gio/gsocks4aproxy.c:186
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr "Connection through SOCKSv4 server was rejected"
 
-#: ../gio/gsocks5proxy.c:153 ../gio/gsocks5proxy.c:324
-#: ../gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr "The server is not a SOCKSv5 proxy server."
 
-#: ../gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "The SOCKSv5 proxy requires authentication."
 
-#: ../gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:177
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
@@ -3845,106 +3980,107 @@ msgstr ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
 
-#: ../gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:206
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr "Username or password is too long for SOCKSv5 protocol."
 
-#: ../gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:236
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr "SOCKSv5 authentication failed due to wrong username or password."
 
-#: ../gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:286
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
 msgstr "Hostname “%s” is too long for SOCKSv5 protocol"
 
-#: ../gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:348
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr "The SOCKSv5 proxy server uses unknown address type."
 
-#: ../gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:355
 msgid "Internal SOCKSv5 proxy server error."
 msgstr "Internal SOCKSv5 proxy server error."
 
-#: ../gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:361
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr "SOCKSv5 connection not allowed by ruleset."
 
-#: ../gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:368
 msgid "Host unreachable through SOCKSv5 server."
 msgstr "Host unreachable through SOCKSv5 server."
 
-#: ../gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:374
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr "Network unreachable through SOCKSv5 proxy."
 
-#: ../gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:380
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr "Connection refused through SOCKSv5 proxy."
 
-#: ../gio/gsocks5proxy.c:386
+#: gio/gsocks5proxy.c:386
 msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "SOCKSv5 proxy does not support “connect” command."
 
-#: ../gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:392
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr "SOCKSv5 proxy does not support provided address type."
 
-#: ../gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:398
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Unknown SOCKSv5 proxy error."
 
-#: ../gio/gthemedicon.c:518
+#: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
 msgstr "Can’t handle version %d of GThemedIcon encoding"
 
-#: ../gio/gthreadedresolver.c:118
+#: gio/gthreadedresolver.c:152
 msgid "No valid addresses were found"
 msgstr "No valid addresses were found"
 
-#: ../gio/gthreadedresolver.c:213
+#: gio/gthreadedresolver.c:334
 #, c-format
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Error reverse-resolving “%s”: %s"
 
-#: ../gio/gthreadedresolver.c:549 ../gio/gthreadedresolver.c:628
-#: ../gio/gthreadedresolver.c:726 ../gio/gthreadedresolver.c:776
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "No DNS record of the requested type for “%s”"
 
-#: ../gio/gthreadedresolver.c:554 ../gio/gthreadedresolver.c:731
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Temporarily unable to resolve “%s”"
 
-#: ../gio/gthreadedresolver.c:559 ../gio/gthreadedresolver.c:736
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Error resolving “%s”"
 
-#: ../gio/gtlscertificate.c:250
-msgid "Cannot decrypt PEM-encoded private key"
-msgstr "Cannot decrypt PEM-encoded private key"
-
-#: ../gio/gtlscertificate.c:255
+#: gio/gtlscertificate.c:243
 msgid "No PEM-encoded private key found"
 msgstr "No PEM-encoded private key found"
 
-#: ../gio/gtlscertificate.c:265
+#: gio/gtlscertificate.c:253
+msgid "Cannot decrypt PEM-encoded private key"
+msgstr "Cannot decrypt PEM-encoded private key"
+
+#: gio/gtlscertificate.c:264
 msgid "Could not parse PEM-encoded private key"
 msgstr "Could not parse PEM-encoded private key"
 
-#: ../gio/gtlscertificate.c:290
+#: gio/gtlscertificate.c:291
 msgid "No PEM-encoded certificate found"
 msgstr "No PEM-encoded certificate found"
 
-#: ../gio/gtlscertificate.c:299
+#: gio/gtlscertificate.c:300
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Could not parse PEM-encoded certificate"
 
-#: ../gio/gtlspassword.c:111
+#: gio/gtlspassword.c:111
 msgid ""
 "This is the last chance to enter the password correctly before your access "
 "is locked out."
@@ -3954,7 +4090,7 @@ msgstr ""
 
 #. Translators: This is not the 'This is the last chance' string. It is
 #. * displayed when more than one attempt is allowed.
-#: ../gio/gtlspassword.c:115
+#: gio/gtlspassword.c:115
 msgid ""
 "Several passwords entered have been incorrect, and your access will be "
 "locked out after further failures."
@@ -3962,653 +4098,860 @@ msgstr ""
 "Several passwords entered have been incorrect, and your access will be "
 "locked out after further failures."
 
-#: ../gio/gtlspassword.c:117
+#: gio/gtlspassword.c:117
 msgid "The password entered is incorrect."
 msgstr "The password entered is incorrect."
 
-#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:563
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Expecting 1 control message, got %d"
 msgstr[1] "Expecting 1 control message, got %d"
 
-#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:575
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
 msgstr "Unexpected type of ancillary data"
 
-#: ../gio/gunixconnection.c:200
+#: gio/gunixconnection.c:200
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Expecting one fd, but got %d\n"
 msgstr[1] "Expecting one fd, but got %d\n"
 
-#: ../gio/gunixconnection.c:219
+#: gio/gunixconnection.c:219
 msgid "Received invalid fd"
 msgstr "Received invalid fd"
 
-#: ../gio/gunixconnection.c:355
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
 msgstr "Error sending data: %s"
 
-#: ../gio/gunixconnection.c:504
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Error checking if SO_PASSCRED is enabled for socket: %s"
 
-#: ../gio/gunixconnection.c:520
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Error enabling SO_PASSCRED: %s"
 
-#: ../gio/gunixconnection.c:549
+#: gio/gunixconnection.c:565
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 
-#: ../gio/gunixconnection.c:589
+#: gio/gunixconnection.c:605
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Not expecting control message, but got %d"
 
-#: ../gio/gunixconnection.c:614
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Error while disabling SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:372 ../gio/gunixinputstream.c:393
+#: gio/gunixinputstream.c:372 gio/gunixinputstream.c:393
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "Error reading from file descriptor: %s"
 
-#: ../gio/gunixinputstream.c:426 ../gio/gunixoutputstream.c:411
-#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204
+#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:535
+#: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Error closing file descriptor: %s"
 
-#: ../gio/gunixmounts.c:2539 ../gio/gunixmounts.c:2592
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "Filesystem root"
 
-#: ../gio/gunixoutputstream.c:358 ../gio/gunixoutputstream.c:378
+#: gio/gunixoutputstream.c:372 gio/gunixoutputstream.c:392
+#: gio/gunixoutputstream.c:479 gio/gunixoutputstream.c:499
+#: gio/gunixoutputstream.c:676
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Error writing to file descriptor: %s"
 
-#: ../gio/gunixsocketaddress.c:241
+#: gio/gunixsocketaddress.c:243
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstract UNIX domain socket addresses not supported on this system"
 
-#: ../gio/gvolume.c:437
+#: gio/gvolume.c:438
 msgid "volume doesn’t implement eject"
 msgstr "volume doesn’t implement eject"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gvolume.c:514
+#: gio/gvolume.c:515
 msgid "volume doesn’t implement eject or eject_with_operation"
 msgstr "volume doesn’t implement eject or eject_with_operation"
 
-#: ../gio/gwin32inputstream.c:185
+#: gio/gwin32inputstream.c:185
 #, c-format
 msgid "Error reading from handle: %s"
 msgstr "Error reading from file: %s"
 
-#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219
+#: gio/gwin32inputstream.c:232 gio/gwin32outputstream.c:219
 #, c-format
 msgid "Error closing handle: %s"
 msgstr "Error closing file: %s"
 
-#: ../gio/gwin32outputstream.c:172
+#: gio/gwin32outputstream.c:172
 #, c-format
 msgid "Error writing to handle: %s"
 msgstr "Error writing to file: %s"
 
-#: ../gio/gzlibcompressor.c:394 ../gio/gzlibdecompressor.c:347
+#: gio/gzlibcompressor.c:394 gio/gzlibdecompressor.c:347
 msgid "Not enough memory"
 msgstr "out of memory"
 
-#: ../gio/gzlibcompressor.c:401 ../gio/gzlibdecompressor.c:354
+#: gio/gzlibcompressor.c:401 gio/gzlibdecompressor.c:354
 #, c-format
 msgid "Internal error: %s"
 msgstr "Internal error: %s"
 
-#: ../gio/gzlibcompressor.c:414 ../gio/gzlibdecompressor.c:368
+#: gio/gzlibcompressor.c:414 gio/gzlibdecompressor.c:368
 msgid "Need more input"
 msgstr "Need more input"
 
-#: ../gio/gzlibdecompressor.c:340
+#: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
 msgstr "Invalid hostname"
 
-#: ../gio/tests/gdbus-daemon.c:18
+#: gio/tests/gdbus-daemon.c:18
 msgid "Address to listen on"
 msgstr "Address to listen on"
 
-#: ../gio/tests/gdbus-daemon.c:19
+#: gio/tests/gdbus-daemon.c:19
 msgid "Ignored, for compat with GTestDbus"
 msgstr "Ignored, for compat with GTestDbus"
 
-#: ../gio/tests/gdbus-daemon.c:20
+#: gio/tests/gdbus-daemon.c:20
 msgid "Print address"
 msgstr "Print address"
 
-#: ../gio/tests/gdbus-daemon.c:21
+#: gio/tests/gdbus-daemon.c:21
 msgid "Print address in shell mode"
 msgstr "Print address in shell mode"
 
-#: ../gio/tests/gdbus-daemon.c:28
+#: gio/tests/gdbus-daemon.c:28
 msgid "Run a dbus service"
 msgstr "Run a dbus service"
 
-#: ../gio/tests/gdbus-daemon.c:42
-#, c-format
+#: gio/tests/gdbus-daemon.c:42
 msgid "Wrong args\n"
 msgstr "Wrong args\n"
 
-#: ../glib/gbookmarkfile.c:754
+#: glib/gbookmarkfile.c:756
 #, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Unexpected attribute “%s” for element “%s”"
 
-#: ../glib/gbookmarkfile.c:765 ../glib/gbookmarkfile.c:836
-#: ../glib/gbookmarkfile.c:846 ../glib/gbookmarkfile.c:953
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Attribute “%s” of element “%s” not found"
 
-#: ../glib/gbookmarkfile.c:1123 ../glib/gbookmarkfile.c:1188
-#: ../glib/gbookmarkfile.c:1252 ../glib/gbookmarkfile.c:1262
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Unexpected tag “%s”, tag “%s” expected"
 
-#: ../glib/gbookmarkfile.c:1148 ../glib/gbookmarkfile.c:1162
-#: ../glib/gbookmarkfile.c:1230
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Unexpected tag “%s” inside “%s”"
 
-#: ../glib/gbookmarkfile.c:1756
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr "Invalid date/time ‘%s’ in bookmark file"
+
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "No valid bookmark file found in data dirs"
 
-#: ../glib/gbookmarkfile.c:1957
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "A bookmark for URI “%s” already exists"
 
-#: ../glib/gbookmarkfile.c:2003 ../glib/gbookmarkfile.c:2161
-#: ../glib/gbookmarkfile.c:2246 ../glib/gbookmarkfile.c:2326
-#: ../glib/gbookmarkfile.c:2411 ../glib/gbookmarkfile.c:2494
-#: ../glib/gbookmarkfile.c:2572 ../glib/gbookmarkfile.c:2651
-#: ../glib/gbookmarkfile.c:2693 ../glib/gbookmarkfile.c:2790
-#: ../glib/gbookmarkfile.c:2910 ../glib/gbookmarkfile.c:3100
-#: ../glib/gbookmarkfile.c:3176 ../glib/gbookmarkfile.c:3344
-#: ../glib/gbookmarkfile.c:3433 ../glib/gbookmarkfile.c:3522
-#: ../glib/gbookmarkfile.c:3638
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "No bookmark found for URI “%s”"
 
-#: ../glib/gbookmarkfile.c:2335
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "No MIME type defined in the bookmark for URI “%s”"
 
-#: ../glib/gbookmarkfile.c:2420
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "No private flag has been defined in bookmark for URI “%s”"
 
-#: ../glib/gbookmarkfile.c:2799
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "No groups set in bookmark for URI “%s”"
 
-#: ../glib/gbookmarkfile.c:3197 ../glib/gbookmarkfile.c:3354
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "No application with name “%s” registered a bookmark for “%s”"
 
-#: ../glib/gbookmarkfile.c:3377
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Failed to expand exec line “%s” with URI “%s”"
 
-#: ../glib/gconvert.c:476 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
-#: ../glib/gutf8.c:1211 ../glib/gutf8.c:1315
+#: glib/gconvert.c:466
+#| msgid "Invalid sequence in conversion input"
+msgid "Unrepresentable character in conversion input"
+msgstr "Unrepresentable character in conversion input"
+
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Partial character sequence at end of input"
 
-#: ../glib/gconvert.c:741
+#: glib/gconvert.c:762
 #, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "Cannot convert fallback “%s” to codeset “%s”"
 
-#: ../glib/gconvert.c:1512
+#: glib/gconvert.c:934
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion input"
+msgstr "Embedded NUL byte in conversion input"
+
+#: glib/gconvert.c:955
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion output"
+msgstr "Embedded NUL byte in conversion output"
+
+#: glib/gconvert.c:1640
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr "The URI “%s” is not an absolute URI using the “file” scheme"
 
-#: ../glib/gconvert.c:1522
+#: glib/gconvert.c:1650
 #, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "The local file URI “%s” may not include a “#”"
 
-#: ../glib/gconvert.c:1539
+#: glib/gconvert.c:1667
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr "The URI “%s” is invalid"
 
-#: ../glib/gconvert.c:1551
+#: glib/gconvert.c:1679
 #, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "The hostname of the URI “%s” is invalid"
 
-#: ../glib/gconvert.c:1567
+#: glib/gconvert.c:1695
 #, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "The URI “%s” contains invalidly escaped characters"
 
-#: ../glib/gconvert.c:1639
+#: glib/gconvert.c:1767
 #, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr "The pathname “%s” is not an absolute path"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: ../glib/gdatetime.c:203
+#: glib/gdatetime.c:220
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%Z %H:%M:%S %Y %b %d %a"
 
 #. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:206
+#: glib/gdatetime.c:223
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%d/%m/%y"
 
 #. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:209
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: ../glib/gdatetime.c:212
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%I:%M:%S %P"
 
-#: ../glib/gdatetime.c:225
+#. Translators: Some languages (Baltic, Slavic, Greek, and some more)
+#. * need different grammatical forms of month names depending on whether
+#. * they are standalone or in a complete date context, with the day
+#. * number.  Some other languages may prefer starting with uppercase when
+#. * they are standalone and with lowercase when they are in a complete
+#. * date context.  Here are full month names in a form appropriate when
+#. * they are used standalone.  If your system is Linux with the glibc
+#. * version 2.27 (released Feb 1, 2018) or newer or if it is from the BSD
+#. * family (which includes OS X) then you can refer to the date command
+#. * line utility and see what the command `date +%OB' produces.  Also in
+#. * the latest Linux the command `locale alt_mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  Note that in most of the languages (western European,
+#. * non-European) there is no difference between the standalone and
+#. * complete date form.
+#.
+#: glib/gdatetime.c:268
 msgctxt "full month name"
 msgid "January"
 msgstr "ינואר"
 
-#: ../glib/gdatetime.c:227
+#: glib/gdatetime.c:270
 msgctxt "full month name"
 msgid "February"
 msgstr "פברואר"
 
-#: ../glib/gdatetime.c:229
+#: glib/gdatetime.c:272
 msgctxt "full month name"
 msgid "March"
 msgstr "מרץ"
 
-#: ../glib/gdatetime.c:231
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "April"
 msgstr "אפריל"
 
-#: ../glib/gdatetime.c:233
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "May"
 msgstr "מאי"
 
-#: ../glib/gdatetime.c:235
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "June"
 msgstr "יוני"
 
-#: ../glib/gdatetime.c:237
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "July"
 msgstr "יולי"
 
-#: ../glib/gdatetime.c:239
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "August"
 msgstr "אוגוסט"
 
-#: ../glib/gdatetime.c:241
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "September"
 msgstr "ספטמבר"
 
-#: ../glib/gdatetime.c:243
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "October"
 msgstr "אוקטובר"
 
-#: ../glib/gdatetime.c:245
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "November"
 msgstr "נובמבר"
 
-#: ../glib/gdatetime.c:247
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "December"
 msgstr "דצמבר"
 
-#: ../glib/gdatetime.c:262
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a complete
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  However, as these names are abbreviated
+#. * the grammatical difference is visible probably only in Belarusian
+#. * and Russian.  In other languages there is no difference between
+#. * the standalone and complete date form when they are abbreviated.
+#. * If your system is Linux with the glibc version 2.27 (released
+#. * Feb 1, 2018) or newer then you can refer to the date command line
+#. * utility and see what the command `date +%Ob' produces.  Also in
+#. * the latest Linux the command `locale ab_alt_mon' in your native
+#. * locale produces a complete list of month names almost ready to copy
+#. * and paste here.  Note that this feature is not yet supported by any
+#. * other platform.  Here are abbreviated month names in a form
+#. * appropriate when they are used standalone.
+#.
+#: glib/gdatetime.c:322
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "ינו"
 
-#: ../glib/gdatetime.c:264
+#: glib/gdatetime.c:324
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "פבר"
 
-#: ../glib/gdatetime.c:266
+#: glib/gdatetime.c:326
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "מרץ"
 
-#: ../glib/gdatetime.c:268
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "אפר"
 
-#: ../glib/gdatetime.c:270
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "מאי"
 
-#: ../glib/gdatetime.c:272
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "יונ"
 
-#: ../glib/gdatetime.c:274
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "יול"
 
-#: ../glib/gdatetime.c:276
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "אוג"
 
-#: ../glib/gdatetime.c:278
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "ספט"
 
-#: ../glib/gdatetime.c:280
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "אוק"
 
-#: ../glib/gdatetime.c:282
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "נוב"
 
-#: ../glib/gdatetime.c:284
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "דצמ"
 
-#: ../glib/gdatetime.c:299
+#: glib/gdatetime.c:359
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "יום שני"
 
-#: ../glib/gdatetime.c:301
+#: glib/gdatetime.c:361
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "יום שלישי"
 
-#: ../glib/gdatetime.c:303
+#: glib/gdatetime.c:363
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "יום רביעי"
 
-#: ../glib/gdatetime.c:305
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "יום חמישי"
 
-#: ../glib/gdatetime.c:307
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "יום שישי"
 
-#: ../glib/gdatetime.c:309
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "שבת"
 
-#: ../glib/gdatetime.c:311
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "יום ראשון"
 
-#: ../glib/gdatetime.c:326
+#: glib/gdatetime.c:386
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "ב׳"
 
-#: ../glib/gdatetime.c:328
+#: glib/gdatetime.c:388
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "ג׳"
 
-#: ../glib/gdatetime.c:330
+#: glib/gdatetime.c:390
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "ד׳"
 
-#: ../glib/gdatetime.c:332
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "ה"
 
-#: ../glib/gdatetime.c:334
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "ו׳"
 
-#: ../glib/gdatetime.c:336
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "ש׳"
 
-#: ../glib/gdatetime.c:338
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "א׳"
 
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are full month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  If your system is Linux with the glibc version 2.27
+#. * (released Feb 1, 2018) or newer or if it is from the BSD family
+#. * (which includes OS X) then you can refer to the date command line
+#. * utility and see what the command `date +%B' produces.  Also in
+#. * the latest Linux the command `locale mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  In older Linux systems due to a bug the result is
+#. * incorrect in some languages.  Note that in most of the languages
+#. * (western European, non-European) there is no difference between the
+#. * standalone and complete date form.
+#.
+#: glib/gdatetime.c:462
+msgctxt "full month name with day"
+msgid "January"
+msgstr "ינואר"
+
+#: glib/gdatetime.c:464
+msgctxt "full month name with day"
+msgid "February"
+msgstr "פברואר"
+
+#: glib/gdatetime.c:466
+msgctxt "full month name with day"
+msgid "March"
+msgstr "מרץ"
+
+#: glib/gdatetime.c:468
+msgctxt "full month name with day"
+msgid "April"
+msgstr "אפריל"
+
+#: glib/gdatetime.c:470
+msgctxt "full month name with day"
+msgid "May"
+msgstr "מאי"
+
+#: glib/gdatetime.c:472
+msgctxt "full month name with day"
+msgid "June"
+msgstr "יוני"
+
+#: glib/gdatetime.c:474
+msgctxt "full month name with day"
+msgid "July"
+msgstr "יולי"
+
+#: glib/gdatetime.c:476
+msgctxt "full month name with day"
+msgid "August"
+msgstr "אוגוסט"
+
+#: glib/gdatetime.c:478
+msgctxt "full month name with day"
+msgid "September"
+msgstr "ספטמבר"
+
+#: glib/gdatetime.c:480
+msgctxt "full month name with day"
+msgid "October"
+msgstr "אוקטובר"
+
+#: glib/gdatetime.c:482
+msgctxt "full month name with day"
+msgid "November"
+msgstr "נובמבר"
+
+#: glib/gdatetime.c:484
+msgctxt "full month name with day"
+msgid "December"
+msgstr "דצמבר"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are abbreviated month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  However, as these names are abbreviated the grammatical
+#. * difference is visible probably only in Belarusian and Russian.
+#. * In other languages there is no difference between the standalone
+#. * and complete date form when they are abbreviated.  If your system
+#. * is Linux with the glibc version 2.27 (released Feb 1, 2018) or newer
+#. * then you can refer to the date command line utility and see what the
+#. * command `date +%b' produces.  Also in the latest Linux the command
+#. * `locale abmon' in your native locale produces a complete list of
+#. * month names almost ready to copy and paste here.  In other systems
+#. * due to a bug the result is incorrect in some languages.
+#.
+#: glib/gdatetime.c:549
+msgctxt "abbreviated month name with day"
+msgid "Jan"
+msgstr "ינו"
+
+#: glib/gdatetime.c:551
+msgctxt "abbreviated month name with day"
+msgid "Feb"
+msgstr "פבר"
+
+#: glib/gdatetime.c:553
+msgctxt "abbreviated month name with day"
+msgid "Mar"
+msgstr "מרץ"
+
+#: glib/gdatetime.c:555
+msgctxt "abbreviated month name with day"
+msgid "Apr"
+msgstr "אפר"
+
+#: glib/gdatetime.c:557
+msgctxt "abbreviated month name with day"
+msgid "May"
+msgstr "מאי"
+
+#: glib/gdatetime.c:559
+msgctxt "abbreviated month name with day"
+msgid "Jun"
+msgstr "יונ"
+
+#: glib/gdatetime.c:561
+msgctxt "abbreviated month name with day"
+msgid "Jul"
+msgstr "יול"
+
+#: glib/gdatetime.c:563
+msgctxt "abbreviated month name with day"
+msgid "Aug"
+msgstr "אוג"
+
+#: glib/gdatetime.c:565
+msgctxt "abbreviated month name with day"
+msgid "Sep"
+msgstr "ספט"
+
+#: glib/gdatetime.c:567
+msgctxt "abbreviated month name with day"
+msgid "Oct"
+msgstr "אוק"
+
+#: glib/gdatetime.c:569
+msgctxt "abbreviated month name with day"
+msgid "Nov"
+msgstr "נוב"
+
+#: glib/gdatetime.c:571
+msgctxt "abbreviated month name with day"
+msgid "Dec"
+msgstr "דצמ"
+
 #. Translators: 'before midday' indicator
-#: ../glib/gdatetime.c:355
+#: glib/gdatetime.c:588
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "AM"
 
 #. Translators: 'after midday' indicator
-#: ../glib/gdatetime.c:358
+#: glib/gdatetime.c:591
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "PM"
 
-#: ../glib/gdir.c:155
+#: glib/gdir.c:154
 #, c-format
 msgid "Error opening directory “%s”: %s"
 msgstr "Error opening directory “%s”: %s"
 
-#: ../glib/gfileutils.c:716 ../glib/gfileutils.c:808
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "Could not allocate %lu bytes to read file “%s”"
 msgstr[1] "Could not allocate %lu bytes to read file \"%s\""
 
-#: ../glib/gfileutils.c:733
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Error reading file “%s”: %s"
 
-#: ../glib/gfileutils.c:769
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "File “%s” is too large"
 
-#: ../glib/gfileutils.c:833
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Failed to read from file “%s”: %s"
 
-#: ../glib/gfileutils.c:881 ../glib/gfileutils.c:953
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Failed to open file “%s”: %s"
 
-#: ../glib/gfileutils.c:893
+#: glib/gfileutils.c:910
 #, 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:923
+#: glib/gfileutils.c:940
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Failed to open file “%s”: fdopen() failed: %s"
 
-#: ../glib/gfileutils.c:1022
+#: glib/gfileutils.c:1039
 #, 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:1057 ../glib/gfileutils.c:1564
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Failed to create file “%s”: %s"
 
-#: ../glib/gfileutils.c:1084
+#: glib/gfileutils.c:1101
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Failed to write file “%s”: write() failed: %s"
 
-#: ../glib/gfileutils.c:1127
+#: glib/gfileutils.c:1144
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Failed to write file “%s”: fsync() failed: %s"
 
-#: ../glib/gfileutils.c:1251
+#: glib/gfileutils.c:1279
 #, 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:1530
+#: glib/gfileutils.c:1558
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Template “%s” invalid, should not contain a “%s”"
 
-#: ../glib/gfileutils.c:1543
+#: glib/gfileutils.c:1571
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Template “%s” doesn’t contain XXXXXX"
 
-#: ../glib/gfileutils.c:2105
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Failed to read the symbolic link “%s”: %s"
 
-#: ../glib/giochannel.c:1389
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Could not open converter from “%s” to “%s”: %s"
 
-#: ../glib/giochannel.c:1734
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Can’t do a raw read in g_io_channel_read_line_string"
 
-#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039
-#: ../glib/giochannel.c:2126
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "Left over unconverted data in read buffer"
 
-#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "Channel terminates in a partial character"
 
-#: ../glib/giochannel.c:1925
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Can’t do a raw read in g_io_channel_read_to_end"
 
-#: ../glib/gkeyfile.c:788
+#: glib/gkeyfile.c:789
 msgid "Valid key file could not be found in search dirs"
 msgstr "Valid key file could not be found in search dirs"
 
-#: ../glib/gkeyfile.c:825
+#: glib/gkeyfile.c:826
 msgid "Not a regular file"
 msgstr "Not a regular file"
 
-#: ../glib/gkeyfile.c:1270
+#: glib/gkeyfile.c:1275
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 
-#: ../glib/gkeyfile.c:1327
+#: glib/gkeyfile.c:1332
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Invalid group name: %s"
 
-#: ../glib/gkeyfile.c:1349
+#: glib/gkeyfile.c:1354
 msgid "Key file does not start with a group"
 msgstr "Key file does not start with a group"
 
-#: ../glib/gkeyfile.c:1375
+#: glib/gkeyfile.c:1380
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Invalid key name: %s"
 
-#: ../glib/gkeyfile.c:1402
+#: glib/gkeyfile.c:1407
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Key file contains unsupported encoding “%s”"
 
-#: ../glib/gkeyfile.c:1645 ../glib/gkeyfile.c:1818 ../glib/gkeyfile.c:3198
-#: ../glib/gkeyfile.c:3261 ../glib/gkeyfile.c:3391 ../glib/gkeyfile.c:3521
-#: ../glib/gkeyfile.c:3665 ../glib/gkeyfile.c:3894 ../glib/gkeyfile.c:3961
+#: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Key file does not have group “%s”"
 
-#: ../glib/gkeyfile.c:1773
+#: glib/gkeyfile.c:1778
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Key file does not have key “%s” in group “%s”"
 
-#: ../glib/gkeyfile.c:1935 ../glib/gkeyfile.c:2051
+#: glib/gkeyfile.c:1940 glib/gkeyfile.c:2056
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Key file contains key “%s” with value “%s” which is not UTF-8"
 
-#: ../glib/gkeyfile.c:1955 ../glib/gkeyfile.c:2071 ../glib/gkeyfile.c:2440
+#: glib/gkeyfile.c:1960 glib/gkeyfile.c:2076 glib/gkeyfile.c:2518
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 
-#: ../glib/gkeyfile.c:2658 ../glib/gkeyfile.c:3027
+#: glib/gkeyfile.c:2736 glib/gkeyfile.c:3105
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -4617,219 +4960,270 @@ msgstr ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 
-#: ../glib/gkeyfile.c:2736 ../glib/gkeyfile.c:2813
+#: glib/gkeyfile.c:2814 glib/gkeyfile.c:2891
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Key “%s” in group “%s” has value “%s” where %s was expected"
 
-#: ../glib/gkeyfile.c:4201
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Key file contains escape character at end of line"
 
-#: ../glib/gkeyfile.c:4223
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Key file contains invalid escape sequence “%s”"
 
-#: ../glib/gkeyfile.c:4367
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Value “%s” cannot be interpreted as a number."
 
-#: ../glib/gkeyfile.c:4381
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Integer value “%s” out of range"
 
-#: ../glib/gkeyfile.c:4414
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Value “%s” cannot be interpreted as a float number."
 
-#: ../glib/gkeyfile.c:4453
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Value “%s” cannot be interpreted as a boolean."
 
-#: ../glib/gmappedfile.c:129
+#: glib/gmappedfile.c:129
 #, c-format
 msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
 msgstr "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
 
-#: ../glib/gmappedfile.c:195
+#: glib/gmappedfile.c:195
 #, c-format
 msgid "Failed to map %s%s%s%s: mmap() failed: %s"
 msgstr "Failed to map %s%s%s%s: mmap() failed: %s"
 
-#: ../glib/gmappedfile.c:262
+#: glib/gmappedfile.c:262
 #, c-format
 msgid "Failed to open file “%s”: open() failed: %s"
 msgstr "Failed to open file “%s”: open() failed: %s"
 
-#: ../glib/gmarkup.c:397 ../glib/gmarkup.c:439
+#: glib/gmarkup.c:398 glib/gmarkup.c:440
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "Error on line %d char %d: "
 
-#: ../glib/gmarkup.c:461 ../glib/gmarkup.c:544
+#: glib/gmarkup.c:462 glib/gmarkup.c:545
 #, c-format
-msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
-msgstr "Invalid UTF-8 encoded text in name - not valid '%s'"
+#| msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
+msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
+msgstr "Invalid UTF-8 encoded text in name — not valid “%s”"
 
-#: ../glib/gmarkup.c:472
+#: glib/gmarkup.c:473
 #, c-format
-msgid "'%s' is not a valid name"
-msgstr "'%s' is not a valid name"
+#| msgid "'%s' is not a valid name"
+msgid "“%s” is not a valid name"
+msgstr "“%s” is not a valid name"
 
-#: ../glib/gmarkup.c:488
+#: glib/gmarkup.c:489
 #, c-format
-msgid "'%s' is not a valid name: '%c'"
-msgstr "'%s' is not a valid name: '%c'"
+#| msgid "'%s' is not a valid name: '%c'"
+msgid "“%s” is not a valid name: “%c”"
+msgstr "“%s” is not a valid name: “%c”"
 
-#: ../glib/gmarkup.c:598
+#: glib/gmarkup.c:613
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "Error on line %d: %s"
 
-#: ../glib/gmarkup.c:675
+#: glib/gmarkup.c:690
 #, 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"
 msgid ""
-"Failed to parse '%-.*s', which should have been a digit inside a character "
-"reference (&#234; for example) - perhaps the digit is too large"
+"Failed to parse “%-.*s”, which should have been a digit inside a character "
+"reference (&#234; for example)  perhaps the digit is too large"
 msgstr ""
-"Failed to parse '%-.*s', which should have been a digit inside a character "
-"reference (&#234; for example) - perhaps the digit is too large"
-
-#: ../glib/gmarkup.c:687
+"Failed to parse “%-.*s”, which should have been a digit inside a character "
+"reference (&#234; for example) — perhaps the digit is too large"
+
+#: glib/gmarkup.c:702
+#| 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;"
 msgid ""
 "Character reference did not end with a semicolon; most likely you used an "
-"ampersand character without intending to start an entity - escape ampersand "
+"ampersand character without intending to start an entity  escape ampersand "
 "as &amp;"
 msgstr ""
 "Character reference did not end with a semicolon; most likely you used an "
-"ampersand character without intending to start an entity - escape ampersand "
+"ampersand character without intending to start an entity  escape ampersand "
 "as &amp;"
 
-#: ../glib/gmarkup.c:713
+#: glib/gmarkup.c:728
 #, c-format
-msgid "Character reference '%-.*s' does not encode a permitted character"
-msgstr "Character reference '%-.*s' does not encode a permitted character"
+#| msgid "Character reference '%-.*s' does not encode a permitted character"
+msgid "Character reference “%-.*s” does not encode a permitted character"
+msgstr "Character reference “%-.*s” does not encode a permitted character"
 
-#: ../glib/gmarkup.c:751
+#: glib/gmarkup.c:766
+#| msgid ""
+#| "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgid ""
-"Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+"Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr ""
-"Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+"Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 
-#: ../glib/gmarkup.c:759
+#: glib/gmarkup.c:774
 #, c-format
-msgid "Entity name '%-.*s' is not known"
-msgstr "Entity name '%-.*s' is not known"
+#| msgid "Entity name '%-.*s' is not known"
+msgid "Entity name “%-.*s” is not known"
+msgstr "Entity name “%-.*s” is not known"
 
-#: ../glib/gmarkup.c:764
+#: glib/gmarkup.c:779
+#| 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;"
 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;"
+"character without intending to start an entity  escape ampersand as &amp;"
 msgstr ""
 "Entity did not end with a semicolon; most likely you used an ampersand "
-"character without intending to start an entity - escape ampersand as &amp;"
+"character without intending to start an entity  escape ampersand as &amp;"
 
-#: ../glib/gmarkup.c:1170
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Document must begin with an element (e.g. <book>)"
 
-#: ../glib/gmarkup.c:1210
+#: glib/gmarkup.c:1233
 #, c-format
+#| msgid ""
+#| "'%s' is not a valid character following a '<' character; it may not begin "
+#| "an element name"
 msgid ""
-"'%s' is not a valid character following a '<' character; it may not begin an "
+"“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 msgstr ""
-"'%s' is not a valid character following a '<' character; it may not begin an "
+"“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 
 # c-format
-#: ../glib/gmarkup.c:1252
+#: glib/gmarkup.c:1276
 #, c-format
+#| msgid ""
+#| "Odd character '%s', expected a '>' character to end the empty-element tag "
+#| "'%s'"
 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 ""
-"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”"
+
+#: glib/gmarkup.c:1346
+#, c-format
+#| msgid "Unexpected attribute “%s” for element “%s”"
+msgid "Too many attributes in element “%s”"
+msgstr "Too many attributes in element “%s”"
 
-#: ../glib/gmarkup.c:1333
+#: glib/gmarkup.c:1366
 #, c-format
+#| msgid ""
+#| "Odd character '%s', expected a '=' after attribute name '%s' of element "
+#| "'%s'"
 msgid ""
-"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
+"Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr ""
-"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
+"Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 
-#: ../glib/gmarkup.c:1374
+#: glib/gmarkup.c:1408
 #, 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"
 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 "
+"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 ""
-"Odd character '%s', expected a '>' or '/' character to end the start tag of "
-"element '%s', or optionally an attribute; perhaps you used an invalid "
+"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"
 
-#: ../glib/gmarkup.c:1418
+#: glib/gmarkup.c:1453
 #, c-format
+#| msgid ""
+#| "Odd character '%s', expected an open quote mark after the equals sign "
+#| "when giving value for attribute '%s' of element '%s'"
 msgid ""
-"Odd character '%s', expected an open quote mark after the equals sign when "
-"giving value for attribute '%s' of element '%s'"
+"Odd character “%s”, expected an open quote mark after the equals sign when "
+"giving value for attribute “%s” of element “%s”"
 msgstr ""
-"Odd character '%s', expected an open quote mark after the equals sign when "
-"giving value for attribute '%s' of element '%s'"
+"Odd character “%s”, expected an open quote mark after the equals sign when "
+"giving value for attribute “%s” of element “%s”"
 
-#: ../glib/gmarkup.c:1551
+#: glib/gmarkup.c:1587
 #, c-format
+#| msgid ""
+#| "'%s' is not a valid character following the characters '</'; '%s' may not "
+#| "begin an element name"
 msgid ""
-"'%s' is not a valid character following the characters '</'; '%s' may not "
+"“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
 msgstr ""
-"'%s' is not a valid character following the characters '</'; '%s' may not "
+"“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
 
-#: ../glib/gmarkup.c:1587
+#: glib/gmarkup.c:1625
 #, c-format
+#| msgid ""
+#| "'%s' is not a valid character following the close element name '%s'; the "
+#| "allowed character is '>'"
 msgid ""
-"'%s' is not a valid character following the close element name '%s'; the "
-"allowed character is '>'"
+"“%s” is not a valid character following the close element name “%s”; the "
+"allowed character is “>”"
 msgstr ""
-"'%s' is not a valid character following the close element name '%s'; the "
-"allowed character is '>'"
+"“%s” is not a valid character following the close element name “%s”; the "
+"allowed character is “>”"
 
-#: ../glib/gmarkup.c:1598
+#: glib/gmarkup.c:1637
 #, c-format
-msgid "Element '%s' was closed, no element is currently open"
-msgstr "Element '%s' was closed, no element is currently open"
+#| msgid "Element '%s' was closed, no element is currently open"
+msgid "Element “%s” was closed, no element is currently open"
+msgstr "Element “%s” was closed, no element is currently open"
 
-#: ../glib/gmarkup.c:1607
+#: glib/gmarkup.c:1646
 #, c-format
-msgid "Element '%s' was closed, but the currently open element is '%s'"
-msgstr "Element '%s' was closed, but the currently open element is '%s'"
+#| msgid "Element '%s' was closed, but the currently open element is '%s'"
+msgid "Element “%s” was closed, but the currently open element is “%s”"
+msgstr "Element “%s” was closed, but the currently open element is “%s”"
 
-#: ../glib/gmarkup.c:1760
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Document was empty or contained only whitespace"
 
-#: ../glib/gmarkup.c:1774
-msgid "Document ended unexpectedly just after an open angle bracket '<'"
-msgstr "Document ended unexpectedly just after an open angle bracket '<'"
+#: glib/gmarkup.c:1813
+#| msgid "Document ended unexpectedly just after an open angle bracket '<'"
+msgid "Document ended unexpectedly just after an open angle bracket “<”"
+msgstr "Document ended unexpectedly just after an open angle bracket “<”"
 
-#: ../glib/gmarkup.c:1782 ../glib/gmarkup.c:1827
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
+#| msgid ""
+#| "Document ended unexpectedly with elements still open - '%s' was the last "
+#| "element opened"
 msgid ""
-"Document ended unexpectedly with elements still open - '%s' was the last "
+"Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 msgstr ""
-"Document ended unexpectedly with elements still open - '%s' was the last "
+"Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 
-#: ../glib/gmarkup.c:1790
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -4838,19 +5232,19 @@ msgstr ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
 "the tag <%s/>"
 
-#: ../glib/gmarkup.c:1796
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Document ended unexpectedly inside an element name"
 
-#: ../glib/gmarkup.c:1802
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Document ended unexpectedly inside an attribute name"
 
-#: ../glib/gmarkup.c:1807
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Document ended unexpectedly inside an element-opening tag."
 
-#: ../glib/gmarkup.c:1813
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -4858,310 +5252,318 @@ msgstr ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
 
-#: ../glib/gmarkup.c:1820
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Document ended unexpectedly while inside an attribute value"
 
-#: ../glib/gmarkup.c:1836
+#: glib/gmarkup.c:1876
 #, c-format
-msgid "Document ended unexpectedly inside the close tag for element '%s'"
-msgstr "Document ended unexpectedly inside the close tag for element '%s'"
+#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid "Document ended unexpectedly inside the close tag for element “%s”"
+msgstr "Document ended unexpectedly inside the close tag for element “%s”"
+
+#: glib/gmarkup.c:1880
+#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid ""
+"Document ended unexpectedly inside the close tag for an unopened element"
+msgstr ""
+"Document ended unexpectedly inside the close tag for an unopened element"
 
-#: ../glib/gmarkup.c:1842
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Document ended unexpectedly inside a comment or processing instruction"
 
-#: ../glib/goption.c:861
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPTION…]"
 
-#: ../glib/goption.c:977
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Help Options:"
 
-#: ../glib/goption.c:978
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Show help options"
 
-#: ../glib/goption.c:984
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Show all help options"
 
-#: ../glib/goption.c:1047
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Application Options:"
 
-#: ../glib/goption.c:1049
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Options:"
 
-#: ../glib/goption.c:1113 ../glib/goption.c:1183
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Cannot parse integer value “%s” for %s"
 
-#: ../glib/goption.c:1123 ../glib/goption.c:1191
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Integer value “%s” for %s out of range"
 
-#: ../glib/goption.c:1148
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Cannot parse double value “%s” for %s"
 
-#: ../glib/goption.c:1156
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "Double value “%s” for %s out of range"
 
-#: ../glib/goption.c:1448 ../glib/goption.c:1527
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Error parsing option %s"
 
-#: ../glib/goption.c:1558 ../glib/goption.c:1671
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Missing·argument·for·%s"
 
-#: ../glib/goption.c:2132
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Unknown option %s"
 
-#: ../glib/gregex.c:257
+#: glib/gregex.c:257
 msgid "corrupted object"
 msgstr "corrupted object"
 
-#: ../glib/gregex.c:259
+#: glib/gregex.c:259
 msgid "internal error or corrupted object"
 msgstr "internal error or corrupted object"
 
-#: ../glib/gregex.c:261
+#: glib/gregex.c:261
 msgid "out of memory"
 msgstr "out of memory"
 
-#: ../glib/gregex.c:266
+#: glib/gregex.c:266
 msgid "backtracking limit reached"
 msgstr "backtracking limit reached"
 
-#: ../glib/gregex.c:278 ../glib/gregex.c:286
+#: glib/gregex.c:278 glib/gregex.c:286
 msgid "the pattern contains items not supported for partial matching"
 msgstr "the pattern contains items not supported for partial matching"
 
-#: ../glib/gregex.c:280
+#: glib/gregex.c:280
 msgid "internal error"
 msgstr "internal error"
 
-#: ../glib/gregex.c:288
+#: glib/gregex.c:288
 msgid "back references as conditions are not supported for partial matching"
 msgstr "back references as conditions are not supported for partial matching"
 
-#: ../glib/gregex.c:297
+#: glib/gregex.c:297
 msgid "recursion limit reached"
 msgstr "recursion limit reached"
 
-#: ../glib/gregex.c:299
+#: glib/gregex.c:299
 msgid "invalid combination of newline flags"
 msgstr "invalid combination of newline flags"
 
-#: ../glib/gregex.c:301
+#: glib/gregex.c:301
 msgid "bad offset"
 msgstr "bad offset"
 
-#: ../glib/gregex.c:303
+#: glib/gregex.c:303
 msgid "short utf8"
 msgstr "short utf8"
 
-#: ../glib/gregex.c:305
+#: glib/gregex.c:305
 msgid "recursion loop"
 msgstr "recursion loop"
 
-#: ../glib/gregex.c:309
+#: glib/gregex.c:309
 msgid "unknown error"
 msgstr "unknown error"
 
-#: ../glib/gregex.c:329
+#: glib/gregex.c:329
 msgid "\\ at end of pattern"
 msgstr "\\ at end of pattern"
 
-#: ../glib/gregex.c:332
+#: glib/gregex.c:332
 msgid "\\c at end of pattern"
 msgstr "\\c at end of pattern"
 
-#: ../glib/gregex.c:335
+#: glib/gregex.c:335
 msgid "unrecognized character following \\"
 msgstr "unrecognized character following \\"
 
-#: ../glib/gregex.c:338
+#: glib/gregex.c:338
 msgid "numbers out of order in {} quantifier"
 msgstr "numbers out of order in {} quantifier"
 
-#: ../glib/gregex.c:341
+#: glib/gregex.c:341
 msgid "number too big in {} quantifier"
 msgstr "number too big in {} quantifier"
 
-#: ../glib/gregex.c:344
+#: glib/gregex.c:344
 msgid "missing terminating ] for character class"
 msgstr "missing terminating ] for character class"
 
-#: ../glib/gregex.c:347
+#: glib/gregex.c:347
 msgid "invalid escape sequence in character class"
 msgstr "invalid escape sequence in character class"
 
-#: ../glib/gregex.c:350
+#: glib/gregex.c:350
 msgid "range out of order in character class"
 msgstr "range out of order in character class"
 
-#: ../glib/gregex.c:353
+#: glib/gregex.c:353
 msgid "nothing to repeat"
 msgstr "nothing to repeat"
 
-#: ../glib/gregex.c:357
+#: glib/gregex.c:357
 msgid "unexpected repeat"
 msgstr "unexpected repeat"
 
-#: ../glib/gregex.c:360
+#: glib/gregex.c:360
 msgid "unrecognized character after (? or (?-"
 msgstr "unrecognized character after (? or (?-"
 
-#: ../glib/gregex.c:363
+#: glib/gregex.c:363
 msgid "POSIX named classes are supported only within a class"
 msgstr "POSIX named classes are supported only within a class"
 
-#: ../glib/gregex.c:366
+#: glib/gregex.c:366
 msgid "missing terminating )"
 msgstr "missing terminating )"
 
-#: ../glib/gregex.c:369
+#: glib/gregex.c:369
 msgid "reference to non-existent subpattern"
 msgstr "reference to non-existent subpattern"
 
-#: ../glib/gregex.c:372
+#: glib/gregex.c:372
 msgid "missing ) after comment"
 msgstr "missing ) after comment"
 
-#: ../glib/gregex.c:375
+#: glib/gregex.c:375
 msgid "regular expression is too large"
 msgstr "regular expression is too large"
 
-#: ../glib/gregex.c:378
+#: glib/gregex.c:378
 msgid "failed to get memory"
 msgstr "failed to get memory"
 
-#: ../glib/gregex.c:382
+#: glib/gregex.c:382
 msgid ") without opening ("
 msgstr ") without opening ("
 
-#: ../glib/gregex.c:386
+#: glib/gregex.c:386
 msgid "code overflow"
 msgstr "code overflow"
 
-#: ../glib/gregex.c:390
+#: glib/gregex.c:390
 msgid "unrecognized character after (?<"
 msgstr "unrecognized character after (?<"
 
-#: ../glib/gregex.c:393
+#: glib/gregex.c:393
 msgid "lookbehind assertion is not fixed length"
 msgstr "lookbehind assertion is not fixed length"
 
-#: ../glib/gregex.c:396
+#: glib/gregex.c:396
 msgid "malformed number or name after (?("
 msgstr "malformed number or name after (?("
 
-#: ../glib/gregex.c:399
+#: glib/gregex.c:399
 msgid "conditional group contains more than two branches"
 msgstr "conditional group contains more than two branches"
 
-#: ../glib/gregex.c:402
+#: glib/gregex.c:402
 msgid "assertion expected after (?("
 msgstr "assertion expected after (?("
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: ../glib/gregex.c:409
+#: glib/gregex.c:409
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "(?R or (?[+-]digits must be followed by )"
 
-#: ../glib/gregex.c:412
+#: glib/gregex.c:412
 msgid "unknown POSIX class name"
 msgstr "unknown POSIX class name"
 
-#: ../glib/gregex.c:415
+#: glib/gregex.c:415
 msgid "POSIX collating elements are not supported"
 msgstr "POSIX collating elements are not supported"
 
-#: ../glib/gregex.c:418
+#: glib/gregex.c:418
 msgid "character value in \\x{...} sequence is too large"
 msgstr "character value in \\x{...} sequence is too large"
 
-#: ../glib/gregex.c:421
+#: glib/gregex.c:421
 msgid "invalid condition (?(0)"
 msgstr "invalid condition (?(0)"
 
-#: ../glib/gregex.c:424
+#: glib/gregex.c:424
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "\\C not allowed in lookbehind assertion"
 
-#: ../glib/gregex.c:431
+#: glib/gregex.c:431
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 
-#: ../glib/gregex.c:434
+#: glib/gregex.c:434
 msgid "recursive call could loop indefinitely"
 msgstr "recursive call could loop indefinitely"
 
-#: ../glib/gregex.c:438
+#: glib/gregex.c:438
 msgid "unrecognized character after (?P"
 msgstr "unrecognized character after (?P"
 
-#: ../glib/gregex.c:441
+#: glib/gregex.c:441
 msgid "missing terminator in subpattern name"
 msgstr "missing terminator in subpattern name"
 
-#: ../glib/gregex.c:444
+#: glib/gregex.c:444
 msgid "two named subpatterns have the same name"
 msgstr "two named subpatterns have the same name"
 
-#: ../glib/gregex.c:447
+#: glib/gregex.c:447
 msgid "malformed \\P or \\p sequence"
 msgstr "malformed \\P or \\p sequence"
 
-#: ../glib/gregex.c:450
+#: glib/gregex.c:450
 msgid "unknown property name after \\P or \\p"
 msgstr "unknown property name after \\P or \\p"
 
-#: ../glib/gregex.c:453
+#: glib/gregex.c:453
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "subpattern name is too long (maximum 32 characters)"
 
-#: ../glib/gregex.c:456
+#: glib/gregex.c:456
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "too many named subpatterns (maximum 10,000)"
 
-#: ../glib/gregex.c:459
+#: glib/gregex.c:459
 msgid "octal value is greater than \\377"
 msgstr "octal value is greater than \\377"
 
-#: ../glib/gregex.c:463
+#: glib/gregex.c:463
 msgid "overran compiling workspace"
 msgstr "overran compiling workspace"
 
-#: ../glib/gregex.c:467
+#: glib/gregex.c:467
 msgid "previously-checked referenced subpattern not found"
 msgstr "previously-checked referenced subpattern not found"
 
-#: ../glib/gregex.c:470
+#: glib/gregex.c:470
 msgid "DEFINE group contains more than one branch"
 msgstr "DEFINE group contains more than one branch"
 
-#: ../glib/gregex.c:473
+#: glib/gregex.c:473
 msgid "inconsistent NEWLINE options"
 msgstr "inconsistent NEWLINE options"
 
-#: ../glib/gregex.c:476
+#: glib/gregex.c:476
 msgid ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
@@ -5169,271 +5571,278 @@ msgstr ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
 
-#: ../glib/gregex.c:480
+#: glib/gregex.c:480
 msgid "a numbered reference must not be zero"
 msgstr "a numbered reference must not be zero"
 
-#: ../glib/gregex.c:483
+#: glib/gregex.c:483
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 msgstr "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 
-#: ../glib/gregex.c:486
+#: glib/gregex.c:486
 msgid "(*VERB) not recognized"
 msgstr "(*VERB) not recognized"
 
-#: ../glib/gregex.c:489
+#: glib/gregex.c:489
 msgid "number is too big"
 msgstr "number is too big"
 
-#: ../glib/gregex.c:492
+#: glib/gregex.c:492
 msgid "missing subpattern name after (?&"
 msgstr "missing subpattern name after (?&"
 
-#: ../glib/gregex.c:495
+#: glib/gregex.c:495
 msgid "digit expected after (?+"
 msgstr "digit expected after (?+"
 
-#: ../glib/gregex.c:498
+#: glib/gregex.c:498
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr "] is an invalid data character in JavaScript compatibility mode"
 
-#: ../glib/gregex.c:501
+#: glib/gregex.c:501
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr "different names for subpatterns of the same number are not allowed"
 
-#: ../glib/gregex.c:504
+#: glib/gregex.c:504
 msgid "(*MARK) must have an argument"
 msgstr "(*MARK) must have an argument"
 
-#: ../glib/gregex.c:507
+#: glib/gregex.c:507
 msgid "\\c must be followed by an ASCII character"
 msgstr "\\c must be followed by an ASCII character"
 
-#: ../glib/gregex.c:510
+#: glib/gregex.c:510
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr "\\k is not followed by a braced, angle-bracketed, or quoted name"
 
-#: ../glib/gregex.c:513
+#: glib/gregex.c:513
 msgid "\\N is not supported in a class"
 msgstr "\\N is not supported in a class"
 
-#: ../glib/gregex.c:516
+#: glib/gregex.c:516
 msgid "too many forward references"
 msgstr "too many forward references"
 
-#: ../glib/gregex.c:519
+#: glib/gregex.c:519
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 
-#: ../glib/gregex.c:522
+#: glib/gregex.c:522
 msgid "character value in \\u.... sequence is too large"
 msgstr "character value in \\u.... sequence is too large"
 
-#: ../glib/gregex.c:745 ../glib/gregex.c:1977
+#: glib/gregex.c:745 glib/gregex.c:1983
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Error while matching regular expression %s: %s"
 
-#: ../glib/gregex.c:1316
+#: glib/gregex.c:1316
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "PCRE library is compiled without UTF8 support"
 
-#: ../glib/gregex.c:1320
+#: glib/gregex.c:1320
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "PCRE library is compiled without UTF8 properties support"
 
-#: ../glib/gregex.c:1328
+#: glib/gregex.c:1328
 msgid "PCRE library is compiled with incompatible options"
 msgstr "PCRE library is compiled with incompatible options"
 
-#: ../glib/gregex.c:1357
+#: glib/gregex.c:1357
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Error while optimizing regular expression %s: %s"
 
-#: ../glib/gregex.c:1437
+#: glib/gregex.c:1437
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Error while compiling regular expression %s at char %d: %s"
 
-#: ../glib/gregex.c:2413
+#: glib/gregex.c:2419
 msgid "hexadecimal digit or “}” expected"
 msgstr "hexadecimal digit or “}” expected"
 
-#: ../glib/gregex.c:2429
+#: glib/gregex.c:2435
 msgid "hexadecimal digit expected"
 msgstr "hexadecimal digit expected"
 
-#: ../glib/gregex.c:2469
+#: glib/gregex.c:2475
 msgid "missing “<” in symbolic reference"
 msgstr "missing “<” in symbolic reference"
 
-#: ../glib/gregex.c:2478
+#: glib/gregex.c:2484
 msgid "unfinished symbolic reference"
 msgstr "unfinished symbolic reference"
 
-#: ../glib/gregex.c:2485
+#: glib/gregex.c:2491
 msgid "zero-length symbolic reference"
 msgstr "zero-length symbolic reference"
 
-#: ../glib/gregex.c:2496
+#: glib/gregex.c:2502
 msgid "digit expected"
 msgstr "digit expected"
 
-#: ../glib/gregex.c:2514
+#: glib/gregex.c:2520
 msgid "illegal symbolic reference"
 msgstr "illegal symbolic reference"
 
-#: ../glib/gregex.c:2576
+#: glib/gregex.c:2583
 msgid "stray final “\\”"
 msgstr "stray final “\\”"
 
-#: ../glib/gregex.c:2580
+#: glib/gregex.c:2587
 msgid "unknown escape sequence"
 msgstr "unknown escape sequence"
 
-#: ../glib/gregex.c:2590
+#: glib/gregex.c:2597
 #, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "Error while parsing replacement text “%s” at char %lu: %s"
 
-#: ../glib/gshell.c:94
+#: glib/gshell.c:94
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "Quoted text doesn’t begin with a quotation mark"
 
-#: ../glib/gshell.c:184
+#: glib/gshell.c:184
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "Unmatched quotation mark in command line or other shell-quoted text"
 
-#: ../glib/gshell.c:580
+#: glib/gshell.c:580
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "Text ended just after a “\\” character. (The text was “%s”)"
 
-#: ../glib/gshell.c:587
+#: glib/gshell.c:587
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr "Text ended before matching quote was found for %c. (The text was “%s”)"
 
-#: ../glib/gshell.c:599
+#: glib/gshell.c:599
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Text was empty (or contained only whitespace)"
 
-#: ../glib/gspawn.c:253
+#: glib/gspawn.c:315
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Failed to read data from child process (%s)"
 
-#: ../glib/gspawn.c:401
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Unexpected error in select() reading data from a child process (%s)"
+#| msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Unexpected error in reading data from a child process (%s)"
 
-#: ../glib/gspawn.c:486
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Unexpected error in waitpid() (%s)"
 
-#: ../glib/gspawn.c:897 ../glib/gspawn-win32.c:1231
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Child process exited with code %ld"
 
-#: ../glib/gspawn.c:905
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Child process killed by signal %ld"
 
-#: ../glib/gspawn.c:912
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Child process stopped by signal %ld"
 
-#: ../glib/gspawn.c:919
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Child process exited abnormally"
 
-#: ../glib/gspawn.c:1324 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Failed to read from child pipe (%s)"
 
-#: ../glib/gspawn.c:1394
+#: glib/gspawn.c:1723
+#, c-format
+#| msgid "Failed to execute child process “%s” (%s)"
+msgid "Failed to spawn child process “%s” (%s)"
+msgstr "Failed to spawn child process “%s” (%s)"
+
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Failed to fork (%s)"
 
-#: ../glib/gspawn.c:1543 ../glib/gspawn-win32.c:368
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Failed to change to directory “%s” (%s)"
 
-#: ../glib/gspawn.c:1553
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Failed to execute child process “%s” (%s)"
 
-#: ../glib/gspawn.c:1563
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Failed to redirect output or input of child process (%s)"
 
-#: ../glib/gspawn.c:1572
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Failed to fork child process (%s)"
 
-#: ../glib/gspawn.c:1580
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Unknown error executing child process “%s”"
 
-#: ../glib/gspawn.c:1604
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Failed to read enough data from child pid pipe (%s)"
 
-#: ../glib/gspawn-win32.c:281
+#: glib/gspawn-win32.c:294
 msgid "Failed to read data from child process"
 msgstr "Failed to read data from child process"
 
-#: ../glib/gspawn-win32.c:298
+#: glib/gspawn-win32.c:311
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Failed to create pipe for communicating with child process (%s)"
 
-#: ../glib/gspawn-win32.c:374 ../glib/gspawn-win32.c:493
+#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Failed to execute child process (%s)"
 
-#: ../glib/gspawn-win32.c:443
+#: glib/gspawn-win32.c:461
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Invalid program name: %s"
 
-#: ../glib/gspawn-win32.c:453 ../glib/gspawn-win32.c:720
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Invalid string in argument vector at %d: %s"
 
-#: ../glib/gspawn-win32.c:464 ../glib/gspawn-win32.c:735
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Invalid string in environment: %s"
 
-#: ../glib/gspawn-win32.c:716
+#: glib/gspawn-win32.c:721
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Invalid working directory: %s"
 
-#: ../glib/gspawn-win32.c:781
+#: glib/gspawn-win32.c:783
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Failed to execute helper program (%s)"
 
-#: ../glib/gspawn-win32.c:995
+#: glib/gspawn-win32.c:1056
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5441,170 +5850,218 @@ msgstr ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 
-#: ../glib/gstrfuncs.c:3247 ../glib/gstrfuncs.c:3348
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Empty string is not a number"
 
-#: ../glib/gstrfuncs.c:3271
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” is not a signed number"
 
-#: ../glib/gstrfuncs.c:3281 ../glib/gstrfuncs.c:3384
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Number “%s” is out of bounds [%s, %s]"
 
-#: ../glib/gstrfuncs.c:3374
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” is not an unsigned number"
 
-#: ../glib/gutf8.c:808
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Failed to allocate memory"
 
-#: ../glib/gutf8.c:941
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Character out of range for UTF-8"
 
-#: ../glib/gutf8.c:1042 ../glib/gutf8.c:1051 ../glib/gutf8.c:1181
-#: ../glib/gutf8.c:1190 ../glib/gutf8.c:1329 ../glib/gutf8.c:1426
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Invalid sequence in conversion input"
 
-#: ../glib/gutf8.c:1340 ../glib/gutf8.c:1437
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Character out of range for UTF-16"
 
-#: ../glib/gutils.c:2229
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2756
 #, c-format
-msgid "%.1f kB"
+#| msgid "%.1f kB"
+msgid "%.1f kB"
 msgstr "%.1f ק״ב"
 
-#: ../glib/gutils.c:2230 ../glib/gutils.c:2436
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2758
 #, c-format
-msgid "%.1f MB"
+#| msgid "%.1f MB"
+msgid "%.1f MB"
 msgstr "%.1f מ״ב"
 
-#: ../glib/gutils.c:2231 ../glib/gutils.c:2441
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2760
 #, c-format
-msgid "%.1f GB"
+#| msgid "%.1f GB"
+msgid "%.1f GB"
 msgstr "%.1f ג״ב"
 
-#: ../glib/gutils.c:2232 ../glib/gutils.c:2446
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2762
 #, c-format
-msgid "%.1f TB"
+#| msgid "%.1f TB"
+msgid "%.1f TB"
 msgstr "%.1f ט״ב"
 
-#: ../glib/gutils.c:2233 ../glib/gutils.c:2451
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2764
 #, c-format
-msgid "%.1f PB"
+#| msgid "%.1f PB"
+msgid "%.1f PB"
 msgstr "%.1f פ״ב"
 
-#: ../glib/gutils.c:2234 ../glib/gutils.c:2456
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2766
 #, c-format
-msgid "%.1f EB"
+#| msgid "%.1f EB"
+msgid "%.1f EB"
 msgstr "%.1f א״ב"
 
-#: ../glib/gutils.c:2237
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2770
 #, c-format
-msgid "%.1f KiB"
-msgstr "%.1f KiB"
+#| msgid "%.1f KiB"
+msgid "%.1f KiB"
+msgstr "%.1f קי״ב"
 
-#: ../glib/gutils.c:2238
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2772
 #, c-format
-msgid "%.1f MiB"
-msgstr "%.1f MiB"
+#| msgid "%.1f MiB"
+msgid "%.1f MiB"
+msgstr "%.1f מבי״ב"
 
-#: ../glib/gutils.c:2239
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2774
 #, c-format
-msgid "%.1f GiB"
-msgstr "%.1f GiB"
+#| msgid "%.1f GiB"
+msgid "%.1f GiB"
+msgstr "%.1f גיב״ב"
 
-#: ../glib/gutils.c:2240
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2776
 #, c-format
-msgid "%.1f TiB"
-msgstr "%.1f TiB"
+#| msgid "%.1f TiB"
+msgid "%.1f TiB"
+msgstr "%.1f טבי״ב"
 
-#: ../glib/gutils.c:2241
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2778
 #, c-format
-msgid "%.1f PiB"
-msgstr "%.1f PiB"
+#| msgid "%.1f PiB"
+msgid "%.1f PiB"
+msgstr "%.1f פבי״ב"
 
-#: ../glib/gutils.c:2242
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2780
 #, c-format
-msgid "%.1f EiB"
-msgstr "%.1f EiB"
+#| msgid "%.1f EiB"
+msgid "%.1f EiB"
+msgstr "%.1f אק״ב"
 
-#: ../glib/gutils.c:2245
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2784
 #, c-format
-msgid "%.1f kb"
+#| msgid "%.1f kb"
+msgid "%.1f kb"
 msgstr "%.1f ק״ב"
 
-#: ../glib/gutils.c:2246
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2786
 #, c-format
-msgid "%.1f Mb"
+#| msgid "%.1f Mb"
+msgid "%.1f Mb"
 msgstr "%.1f מ״ב"
 
-#: ../glib/gutils.c:2247
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2788
 #, c-format
-msgid "%.1f Gb"
+#| msgid "%.1f Gb"
+msgid "%.1f Gb"
 msgstr "%.1f ג״ב"
 
-#: ../glib/gutils.c:2248
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2790
 #, c-format
-msgid "%.1f Tb"
+#| msgid "%.1f Tb"
+msgid "%.1f Tb"
 msgstr "%.1f ט״ב"
 
-#: ../glib/gutils.c:2249
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2792
 #, c-format
-msgid "%.1f Pb"
+#| msgid "%.1f Pb"
+msgid "%.1f Pb"
 msgstr "%.1f פ״ב"
 
-#: ../glib/gutils.c:2250
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2794
 #, c-format
-msgid "%.1f Eb"
+#| msgid "%.1f Eb"
+msgid "%.1f Eb"
 msgstr "%.1f א״ב"
 
-#: ../glib/gutils.c:2253
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2798
 #, c-format
-msgid "%.1f Kib"
+#| msgid "%.1f Kib"
+msgid "%.1f Kib"
 msgstr "%.1f ק״ב"
 
-#: ../glib/gutils.c:2254
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2800
 #, c-format
-msgid "%.1f Mib"
+#| msgid "%.1f Mib"
+msgid "%.1f Mib"
 msgstr "%.1f מ״ב"
 
-#: ../glib/gutils.c:2255
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2802
 #, c-format
-msgid "%.1f Gib"
+#| msgid "%.1f Gib"
+msgid "%.1f Gib"
 msgstr "%.1f ג״ב"
 
-#: ../glib/gutils.c:2256
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2804
 #, c-format
-msgid "%.1f Tib"
+#| msgid "%.1f Tib"
+msgid "%.1f Tib"
 msgstr "%.1f ט״ב"
 
-#: ../glib/gutils.c:2257
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2806
 #, c-format
-msgid "%.1f Pib"
+#| msgid "%.1f Pib"
+msgid "%.1f Pib"
 msgstr "%.1f פ״ב"
 
-#: ../glib/gutils.c:2258
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2808
 #, c-format
-msgid "%.1f Eib"
+#| msgid "%.1f Eib"
+msgid "%.1f Eib"
 msgstr "%.1f א״ב"
 
-#: ../glib/gutils.c:2292 ../glib/gutils.c:2418
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "בית אחד"
 msgstr[1] "%u בתים"
 
-#: ../glib/gutils.c:2296
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5612,7 +6069,7 @@ msgstr[0] "סיבית אחת"
 msgstr[1] "%u סיביות"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2363
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5620,7 +6077,7 @@ msgstr[0] "בית אחד"
 msgstr[1] "%s בתים"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: ../glib/gutils.c:2368
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5632,106 +6089,76 @@ msgstr[1] "%s סיביות"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: ../glib/gutils.c:2431
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f ק״ב"
 
-msgctxt "full month name with day"
-msgid "January"
-msgstr "ינואר"
-
-msgctxt "full month name with day"
-msgid "February"
-msgstr "פברואר"
-
-msgctxt "full month name with day"
-msgid "March"
-msgstr "מרץ"
-
-msgctxt "full month name with day"
-msgid "April"
-msgstr "אפריל"
-
-msgctxt "full month name with day"
-msgid "May"
-msgstr "מאי"
-
-msgctxt "full month name with day"
-msgid "June"
-msgstr "יוני"
-
-msgctxt "full month name with day"
-msgid "July"
-msgstr "יולי"
-
-msgctxt "full month name with day"
-msgid "August"
-msgstr "אוגוסט"
-
-msgctxt "full month name with day"
-msgid "September"
-msgstr "ספטמבר"
+#: glib/gutils.c:2977
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f מ״ב"
 
-msgctxt "full month name with day"
-msgid "October"
-msgstr "אוקטובר"
+#: glib/gutils.c:2982
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f ג״ב"
 
-msgctxt "full month name with day"
-msgid "November"
-msgstr "נובמבר"
+#: glib/gutils.c:2987
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f ט״ב"
 
-msgctxt "full month name with day"
-msgid "December"
-msgstr "דצמבר"
+#: glib/gutils.c:2992
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f פ״ב"
 
-msgctxt "abbreviated month name with day"
-msgid "Jan"
-msgstr "ינו"
+#: glib/gutils.c:2997
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f א״ב"
 
-msgctxt "abbreviated month name with day"
-msgid "Feb"
-msgstr "פבר"
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Error in address “%s” — the family attribute is malformed"
 
-msgctxt "abbreviated month name with day"
-msgid "Mar"
-msgstr "מרץ"
+#~ msgid "No such method '%s'"
+#~ msgstr "No such method '%s'"
 
-msgctxt "abbreviated month name with day"
-msgid "Apr"
-msgstr "אפר"
+#~ msgid ""
+#~ "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment "
+#~ "variable - unknown value '%s'"
+#~ msgstr ""
+#~ "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment "
+#~ "variable - unknown value '%s'"
 
-msgctxt "abbreviated month name with day"
-msgid "May"
-msgstr "מאי"
+#~ msgid ""
+#~ "Message has %d file descriptors but the header field indicates %d file "
+#~ "descriptors"
+#~ msgstr ""
+#~ "Message has %d file descriptors but the header field indicates %d file "
+#~ "descriptors"
 
-msgctxt "abbreviated month name with day"
-msgid "Jun"
-msgstr "יונ"
+#~ msgid "[ARGS...]"
+#~ msgstr "[ARGS...]"
 
-msgctxt "abbreviated month name with day"
-msgid "Jul"
-msgstr "יול"
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "Mounted %s at %s\n"
 
-msgctxt "abbreviated month name with day"
-msgid "Aug"
-msgstr "אוג"
+#~ msgid "Failed to create temp file: %s"
+#~ msgstr "Failed to create temp file: %s"
 
-msgctxt "abbreviated month name with day"
-msgid "Sep"
-msgstr "ספט"
+#~ msgid "; ignoring override for this key.\n"
+#~ msgstr "; ignoring override for this key.\n"
 
-msgctxt "abbreviated month name with day"
-msgid "Oct"
-msgstr "אוק"
+#~ msgid " and --strict was specified; exiting.\n"
+#~ msgstr " and --strict was specified; exiting.\n"
 
-msgctxt "abbreviated month name with day"
-msgid "Nov"
-msgstr "נוב"
+#~ msgid "Ignoring override for this key.\n"
+#~ msgstr "Ignoring override for this key.\n"
 
-msgctxt "abbreviated month name with day"
-msgid "Dec"
-msgstr "דצמ"
+#~ msgid "doing nothing.\n"
+#~ msgstr "doing nothing.\n"
 
 #~ msgid "Error: object path not specified.\n"
 #~ msgstr "Error: object path not specified.\n"
index 44bb140..6ea844e 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,17 +1,17 @@
 # Hungarian translation for glib.
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. Free Software Foundation, Inc.
+# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020. Free Software Foundation, Inc.
 # This file is distributed under the same license as the glib package.
 #
 # Szabolcs Varga <shirokuma at shirokuma dot hu>, 2005.
 # Gabor Kelemen <kelemeng at gnome dot hu>, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2017.
-# Balázs Úr <ur.balazs at fsf dot hu>, 2013, 2014, 2015, 2016, 2018, 2019.
+# Balázs Úr <ur.balazs at fsf dot hu>, 2013, 2014, 2015, 2016, 2018, 2019, 2020.
 # Balázs Meskó <mesko.balazs at fsf dot hu>, 2017, 2018.
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-27 13:18+0000\n"
-"PO-Revision-Date: 2019-09-01 07:38+0200\n"
+"POT-Creation-Date: 2020-02-12 17:05+0000\n"
+"PO-Revision-Date: 2020-02-13 19:43+0100\n"
 "Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
 "Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
 "Language: hu\n"
@@ -20,7 +20,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Loco-Source-Locale: de_AT\n"
-"X-Generator: Lokalize 18.12.3\n"
+"X-Generator: Lokalize 19.04.3\n"
 "X-Loco-Parser: loco_parse_po\n"
 
 #: gio/gapplication.c:500
@@ -285,7 +285,7 @@ msgstr "Az adatfolyam már le van zárva"
 msgid "Truncate not supported on base stream"
 msgstr "Az alap adatfolyam csonkítása nem engedélyezett"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -305,22 +305,22 @@ msgstr "Nincs elég hely a célon"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Érvénytelen bájtsorrend az átalakítás bemenetében"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Hiba az átalakításkor: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "A megszakítható előkészítés nem támogatott"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "A(z) „%s” és „%s” karakterkészletek közötti átalakítás nem támogatott"
@@ -346,19 +346,23 @@ msgstr "Ismeretlen típus"
 msgid "%s filetype"
 msgstr "%s fájltípus"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "A GCredentials érvénytelen adatot tartalmaz"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "A GCredentials nincs megvalósítva ezen a rendszeren"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "A platformhoz nincs GCredentials támogatás"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "A GCredentials nem tartalmaz folyamatazonosítót ezen a rendszeren"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "A hitelesítési adatok hamisítása nincs megvalósítva ezen a rendszeren"
 
@@ -366,7 +370,7 @@ msgstr "A hitelesítési adatok hamisítása nincs megvalósítva ezen a rendsze
 msgid "Unexpected early end-of-stream"
 msgstr "Váratlan korai adatfolyam vége"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nem támogatott „%s” kulcs a(z) „%s” címbejegyzésben"
@@ -378,9 +382,6 @@ msgstr "Értelmetlen kulcs-érték pár kombináció a(z) „%s” címbejegyzé
 
 #: gio/gdbusaddress.c:180
 #, 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, dir, tmpdir, or abstract "
 "keys)"
@@ -388,32 +389,28 @@ msgstr ""
 "A(z) „%s” cím érvénytelen (csak az útvonal, könyvtár, tmp könyvtár vagy "
 "absztrakt kulcsok egyike lehet)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Hiba a(z) „%s” címben – a port attribútum rosszul formázott"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Hiba a(z) „%s” címben – a család attribútum rosszul formázott"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Hiba a(z) „%s” címben – a(z) „%s” attribútum rosszul formázott"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Ismeretlen vagy nem támogatott szállítás („%s”) a címhez („%s”)"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "A(z) „%s” címelem nem tartalmaz kettőspontot (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Az átvitel neve a(z) „%s” címelemben nem lehet üres"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -421,14 +418,14 @@ msgid ""
 msgstr ""
 "%d. kulcs-érték pár: „%s” a(z) „%s” címelemben nem tartalmaz egyenlőségjelet"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "%d. kulcs-érték pár: „%s” a(z) „%s” címelemben nem tartalmazhat üres kulcsot"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -437,7 +434,7 @@ msgstr ""
 "Hiba a(z) „%3$s” címelemben található a(z) %1$d. kulcs-érték párban lévő "
 "„%2$s” kulcs vagy érték értelmezésekor"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -446,81 +443,81 @@ msgstr ""
 "Hiba a(z) „%s” címben – a unix szállítás a „path” vagy „abstract” kulcsok "
 "pontosan egyikének jelenlétét igényli"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Hiba a(z) „%s” címben – a host attribútum hiányzik vagy rosszul formázott"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Hiba a(z) „%s” címben – a port attribútum hiányzik vagy rosszul formázott"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Hiba a(z) „%s” címben – a noncefile attribútum hiányzik vagy rosszul "
 "formázott"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Hiba az automatikus indításkor: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Hiba a(z) „%s” ideiglenes fájl megnyitásakor: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Hiba a(z) „%s” ideiglenes fájl olvasásakor: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Hiba a(z) „%s” ideiglenes fájl olvasásakor, a várt 16 bájt helyett %d "
 "érkezett"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Hiba az ideiglenes fájl („%s”) tartalmának írásakor az adatfolyamba:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "A megadott cím üres"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Nem indítható üzenetbusz setuid módban"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Nem indítható üzenetbusz gépazonosító nélkül: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Nem indítható automatikusan a D-Bus X11 $DISPLAY nélkül"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Hiba a(z) „%s” parancssor indításakor: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nem határozható meg a munkamenetbusz címe (nincs megvalósítva erre az OS-re)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -529,7 +526,7 @@ msgstr ""
 "Nem határozható meg a busz címe a DBUS_STARTER_BUS_TYPE környezeti "
 "változóból – ismeretlen „%s” érték"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -537,20 +534,20 @@ msgstr ""
 "Nem határozható meg a busz címe, mivel a DBUS_STARTER_BUS_TYPE környezeti "
 "változó nincs beállítva"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Ismeretlen busztípus: %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "A tartalom váratlanul hiányzik a sor olvasásakor"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "A tartalom váratlanul hiányzik a sor (biztonságos) olvasásakor"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -558,17 +555,17 @@ msgstr ""
 "Minden elérhető hitelesítési mechanizmus kimerítve (próbálva: %s, elérhető: "
 "%s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 "Megszakítva a GDBusAuthObserver::authorize-authenticated-peer használatával"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Hiba a(z) „%s” könyvtár információinak lekérésekor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -576,22 +573,22 @@ msgstr ""
 "A(z) „%s” könyvtár jogosultságai rosszul formázottak. A várt 0700 mód "
 "helyett 0%o érkezett."
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Hiba a(z) %s könyvtár létrehozásakor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Hiba a(z) „%s” kulcstartó megnyitásakor olvasásra: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "A(z) „%2$s” kulcstartó „%3$s” tartalmú „%1$d”. sora rosszul formázott"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -599,7 +596,7 @@ msgstr ""
 "A(z) „%2$s” kulcstartó „%3$s” tartalmú „%1$d”. sorának első egysége rosszul "
 "formázott"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -607,37 +604,37 @@ msgstr ""
 "A(z) „%2$s” kulcstartó „%3$s” tartalmú „%1$d”. sorának második egysége "
 "rosszul formázott"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nem található %d azonosítójú süti a kulcstartóban itt: „%s ”"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Hiba az elavult „%s” zárolásfájl törlésekor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Hiba a(z) „%s” zárolási fájl létrehozásakor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Hiba a (törölt) „%s” zárolási fájl lezárásakor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Hiba a(z) „%s” zárolási fájl törlésekor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Hiba a(z) „%s” kulcstartó írásra való megnyitásakor: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Ezen kívül a(z) „%s” zárolásának feloldása is meghiúsult: %s) "
@@ -656,7 +653,7 @@ msgid ""
 msgstr ""
 "Nem támogatott jelzők találhatók a kliensoldali kapcsolat létrehozásakor"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -664,100 +661,100 @@ msgstr ""
 "Nincs „org.freedesktop.DBus.Properties” interfész a(z) %s útvonalon lévő "
 "objektumon"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Nincs „%s” tulajdonság"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "A(z) „%s” tulajdonság nem olvasható"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "A(z) „%s” tulajdonság nem írható"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Hiba a(z) „%s” tulajdonság beállításakor: a várt „%s” típus helyett „%s” "
 "érkezett"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Nincs ilyen interfész: „%s”"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Nincs „%s” interfész a(z) %s útvonalon lévő objektumon"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Nincs „%s” metódus"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Az üzenet „%s” típusa nem felel meg a várt „%s” típusnak"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Már exportálva van egy objektum a(z) %s interfészhez itt: %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nem sikerült lekérni a tulajdonságot: %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nem sikerült beállítani a tulajdonságot: %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "A(z) „%s” metódus a(z) „%s” típust adta vissza a várt „%s” helyett"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "A(z) „%s” metódus nem létezik a(z) „%s” interfészen „%s” aláírással"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Egy részfa már exportálva van a következőhöz: %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "a típus érvénytelen"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL üzenet: a PATH vagy MEMBER fejlécmező hiányzik"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN üzenet: a REPLY_SERIAL fejlécmező hiányzik"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR üzenet: a REPLY_SERIAL vagy ERROR_NAME fejlécmező hiányzik"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL üzenet: a PATH, INTERFACE vagy MEMBER fejlécmező hiányzik"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -765,7 +762,7 @@ msgstr ""
 "SIGNAL üzenet: a PATH fejlécmező a fenntartott /org/freedesktop/DBus/Local "
 "értéket használja"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -773,19 +770,19 @@ msgstr ""
 "SIGNAL üzenet: az INTERFACE fejlécmező a fenntartott value org.freedesktop."
 "DBus.Local értéket használja"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Az olvasandó %lu bájt helyett csak %lu érkezett"
 msgstr[1] "Az olvasandó %lu bájt helyett csak %lu érkezett"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "A(z) „%s” karakterlánc után várt NULL bájt helyett %d bájt található"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -795,17 +792,21 @@ msgstr ""
 "a(z) %d bájteltolásnál (a karakterlánc hossza: %d). Az érvényes UTF-8 "
 "karakterlánc az adott pontig: „%s”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Az érték túl mélyen van egymásba ágyazva"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "A feldolgozott „%s” érték nem érvényes D-Bus objektumútvonal"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "A feldolgozott „%s” érték nem érvényes D-Bus aláírás"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -816,7 +817,7 @@ msgstr[0] ""
 msgstr[1] ""
 "%u bájt hosszú tömb található. A maximális hossz 2<<26 bájt (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -825,19 +826,19 @@ msgstr ""
 "Egy „a%c” típusú tömb található, az elvárt hossz a(z) %u bájt többszöröse, "
 "de %u bájt hosszú található"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "A változat feldolgozott „%s” értéke nem érvényes D-Bus aláírás"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Hiba a(z) „%s” típusú GVariant visszafejtésekor a D-Bus átviteli formátumból"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -846,60 +847,60 @@ msgstr ""
 "Érvénytelen bájtsorrend-érték. A várt  0x6c („l”) vagy 0x42 („B”) helyett 0x"
 "%02x érték található"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Érvénytelen fő protokollverzió. A várt 1 helyett %d található"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Aláírásfejléc található, de nem aláírás típusú"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Aláírásfejléc található „%s” aláírással, de az üzenettörzs üres"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "A feldolgozott „%s” érték nem érvényes D-Bus aláírás (a törzshöz)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "Nincs aláírásfejléc az üzenetben, de az üzenettörzs %u bájt"
 msgstr[1] "Nincs aláírásfejléc az üzenetben, de az üzenettörzs %u bájt"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Nem fejthető sorba az üzenet: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Hiba a(z) „%s” típusú GVariant sorbafejtésekor a D-Bus átviteli formátumba"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Az üzenetben található fájlleírók száma (%d) eltér a fejléc mezőtől (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Az üzenet nem fejthető sorba: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Az üzenettörzs „%s” aláírással rendelkezik, de nincs aláírásfejléc"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -908,36 +909,36 @@ msgstr ""
 "Az üzenettörzs „%s” típusaláírással rendelkezik, de az aláírásfejlécben lévő "
 "aláírás: „%s”"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Az üzenettörzs üres, de az aláírásfejlécben lévő aláírás: „%s”"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Hiba került visszaadásra a(z) „%s” típusú törzzsel"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Hiba került visszaadásra az üres törzzsel"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Az ablak bezárásához nyomjon le egy gombot)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "A munkamenet D-Bus nem fut, és az automatikus indítás sikertelen"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nem kérhető le hardverprofil: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Nem tölthető be a /var/lib/dbus/machine-id vagy az /etc/machine-id: "
 
@@ -960,26 +961,25 @@ msgstr ""
 "A metódus nem hívható; a proxy a jól ismert %s névhez tartozik tulajdonos "
 "nélkül, és a proxy a G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START jelzővel készült"
 
-#: gio/gdbusserver.c:746
-#| msgid "Abstract name space not supported"
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Az absztrakt névtér nem támogatott"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Kiszolgáló létrehozásakor nem adható meg az ideiglenes fájl"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Hiba az ideiglenes fájl („%s”) írásakor: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "A(z) „%s” karakterlánc nem érvényes D-Bus GUID"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Nem figyelhető a nem támogatott „%s” szállítás"
@@ -1257,39 +1257,39 @@ msgstr "Hiba: Túl sok argumentum.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Hiba: a(z) %s nem érvényes busznév\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Névtelen"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "A desktop fájl nem adta meg az Exec mezőt"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Nem található az alkalmazáshoz szükséges terminál"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Nem hozható létre a(z) %s felhasználói alkalmazáskonfigurációs mappa: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nem hozható létre a(z) %s felhasználói MIME konfigurációs mappa: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Az alkalmazásinformációkból hiányzik az azonosító"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nem hozható létre a felhasználói desktop fájl (%s)"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s egyéni meghatározása"
@@ -1351,12 +1351,12 @@ msgstr "A GEmblemedIcon kódolásban a jelsorok száma (%d) hibásan formált"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Egy GEmblem kellene a GEmblemedIconhoz"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "A művelet nem támogatott"
@@ -1365,69 +1365,73 @@ msgstr "A művelet nem támogatott"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "A tartalmazó csatolás nem létezik"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Nem lehet a könyvtárra másolni"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "A könyvtár nem másolható könyvtárba"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "A célfájl létezik"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "A könyvtár nem másolható rekurzívan"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "A fájlillesztés nem támogatott"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Hiba a fájl illesztésekor: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "A csatolások közti másolás (reflink/clone) nem támogatott"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "A másolás (reflink/clone) nem támogatott vagy érvénytelen"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "A másolás (reflink/clone) nem támogatott vagy nem működött"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "A speciális fájl nem másolható"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Érvénytelen szimbolikus link érték került megadásra"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "A szimbolikus linkek használata nem támogatott"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "A Kuka nem támogatott"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "A fájlnevek nem tartalmazhatnak „%c” karaktert"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "a kötet nem valósítja meg a csatolást"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Nincs alkalmazás regisztrálva a fájl kezeléséhez"
 
@@ -1472,7 +1476,7 @@ msgstr "A bemeneti adatfolyam csonkítása nem engedélyezett"
 msgid "Truncate not supported on stream"
 msgstr "Az adatfolyam csonkítása nem engedélyezett"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Érvénytelen gépnév"
@@ -1590,7 +1594,7 @@ msgstr "Megtartás a fájllal áthelyezéskor"
 msgid "“version” takes no arguments"
 msgstr "a „version” nem vár argumentumot"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Használat:"
 
@@ -1676,10 +1680,10 @@ msgid "Error writing to stdout"
 msgstr "Hiba a szabványos kimenetre íráskor"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1699,56 +1703,60 @@ msgstr ""
 "fájlok helyett GIO helyeket használ: megadható például helyként az\n"
 "smb://kiszolgáló/erőforrás/fájl.txt."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Nincsenek megadva helyek"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Nincs célkönyvtár"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Folyamat megjelenítése"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Kérdés felülírás előtt"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Minden attribútum megőrzése"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Meglévő célfájlok biztonsági mentése"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Soha ne kövesse a szimbolikus linkeket"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Alapértelmezett jogosultságok használata a célnál"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "%s / %s átvitele kész (%s/mp)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "FORRÁS"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "CÉL"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Fájlok áthelyezése a FORRÁSBÓL a CÉLBA."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1758,88 +1766,98 @@ msgstr ""
 "fájlok helyett GIO helyeket használ: megadható például helyként az\n"
 "smb://kiszolgáló/erőforrás/fájl.txt."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "%s cél nem könyvtár"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: felülírja a(z) „%s” fájlt? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Írható attribútumok felsorolása"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Fájlrendszer-információk lekérése"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "A lekérendő attribútumok"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBÚTUMOK"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Ne kövesse a szimbolikus linkeket"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "attribútumok:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
-msgstr "megjelenő név: %s\n"
+msgstr "megjelenített név: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "szerkeszthető név: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "név: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "típus: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "méret: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "rejtett\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "URI: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "helyi útvonal: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix csatolás: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Beállítható attribútumok:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Írható attribútumnévterek:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Információk megjelenítése helyekről."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1853,23 +1871,27 @@ msgstr ""
 "adhatók meg, például: standard::icon, vagy egyszerűen névtér szerint,\n"
 "például unix vagy „*”, ami minden attribútumra illeszkedik."
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Rejtett fájlok megjelenítése"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Hosszú kiírási formátum használata"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Megjelenített nevek kiírása"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Teljes URI-k kiírása"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "A helyek tartalmának felsorolása."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2000,12 +2022,12 @@ msgid "Mount as mountable"
 msgstr "Csatolás csatolhatóként"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Kötet csatolása eszközfájllal"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Kötet csatolása eszközfájllal vagy egyéb azonosítóval"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "ESZKÖZ"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "Azonosító"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2019,6 +2041,10 @@ msgstr "Kiadás"
 msgid "Stop drive with device file"
 msgstr "Meghajtó leállítása az eszközfájllal"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "ESZKÖZ"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Az adott sémájú összes csatolás leválasztása"
@@ -2072,16 +2098,11 @@ msgstr "Névtelen hozzáférés megtagadva"
 msgid "No drive for device file"
 msgstr "Nincs meghajtó az eszközfájlhoz"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s csatolva ide: %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Nincs kötet az eszközfájlhoz"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Nincs kötet a megadott azonosítóhoz"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "A helyek csatolása vagy leválasztása."
 
@@ -2717,23 +2738,19 @@ msgstr "Figyelmeztetés: nem definiált hivatkozás erre: <schema id='%s'/>"
 
 #. Translators: Do not translate "--strict".
 #: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
-#| msgid "--strict was specified; exiting.\n"
 msgid "--strict was specified; exiting."
 msgstr "a --strict meg lett adva, kilépés."
 
 #: gio/glib-compile-schemas.c:1845
-#| msgid "This entire file has been ignored.\n"
 msgid "This entire file has been ignored."
 msgstr "Ez az egész fájl figyelmen kívül marad."
 
 #: gio/glib-compile-schemas.c:1908
-#| msgid "Ignoring this file.\n"
 msgid "Ignoring this file."
 msgstr "Fájl figyelmen kívül hagyása."
 
 #: gio/glib-compile-schemas.c:1963
 #, c-format
-#| msgid "No such key “%s” in schema “%s” as specified in override file “%s”"
 msgid ""
 "No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
 "override for this key."
@@ -2743,7 +2760,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:1971
 #, c-format
-#| msgid "No such key “%s” in schema “%s” as specified in override file “%s”"
 msgid ""
 "No such key “%s” in schema “%s” as specified in override file “%s” and --"
 "strict was specified; exiting."
@@ -2753,9 +2769,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:1993
 #, c-format
-#| msgid ""
-#| "cannot provide per-desktop overrides for localised key “%s” in schema "
-#| "“%s” (override file “%s”)"
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”); ignoring override for this key."
@@ -2766,9 +2779,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2002
 #, c-format
-#| msgid ""
-#| "cannot provide per-desktop overrides for localised key “%s” in schema "
-#| "“%s” (override file “%s”)"
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”) and --strict was specified; exiting."
@@ -2779,9 +2789,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2026
 #, c-format
-#| msgid ""
-#| "error parsing key “%s” in schema “%s” as specified in override file “%s”: "
-#| "%s."
 msgid ""
 "Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
 "%s. Ignoring override for this key."
@@ -2792,9 +2799,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2038
 #, c-format
-#| msgid ""
-#| "error parsing key “%s” in schema “%s” as specified in override file “%s”: "
-#| "%s."
 msgid ""
 "Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
 "%s. --strict was specified; exiting."
@@ -2804,9 +2808,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2065
 #, c-format
-#| msgid ""
-#| "override for key “%s” in schema “%s” in override file “%s” is outside the "
-#| "range given in the schema"
 msgid ""
 "Override for key “%s” in schema “%s” in override file “%s” is outside the "
 "range given in the schema; ignoring override for this key."
@@ -2817,9 +2818,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2075
 #, c-format
-#| msgid ""
-#| "override for key “%s” in schema “%s” in override file “%s” is outside the "
-#| "range given in the schema"
 msgid ""
 "Override for key “%s” in schema “%s” in override file “%s” is outside the "
 "range given in the schema and --strict was specified; exiting."
@@ -2830,9 +2828,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2101
 #, c-format
-#| msgid ""
-#| "override for key “%s” in schema “%s” in override file “%s” is not in the "
-#| "list of valid choices"
 msgid ""
 "Override for key “%s” in schema “%s” in override file “%s” is not in the "
 "list of valid choices; ignoring override for this key."
@@ -2843,9 +2838,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2111
 #, c-format
-#| msgid ""
-#| "override for key “%s” in schema “%s” in override file “%s” is not in the "
-#| "list of valid choices"
 msgid ""
 "Override for key “%s” in schema “%s” in override file “%s” is not in the "
 "list of valid choices and --strict was specified; exiting."
@@ -2855,7 +2847,6 @@ msgstr ""
 "Kilépés."
 
 #: gio/glib-compile-schemas.c:2173
-#| msgid "where to store the gschemas.compiled file"
 msgid "Where to store the gschemas.compiled file"
 msgstr "A gschemas.compiled fájl tárolási helye"
 
@@ -2882,17 +2873,14 @@ msgstr ""
 "és a gyorsítótárfájl neve gschemas.compiled."
 
 #: gio/glib-compile-schemas.c:2226
-#| msgid "You should give exactly one directory name\n"
 msgid "You should give exactly one directory name"
 msgstr "Pontosan egy könyvtárnevet kell megadnia"
 
 #: gio/glib-compile-schemas.c:2269
-#| msgid "No schema files found: "
 msgid "No schema files found: doing nothing."
 msgstr "Nem találhatók sémafájlok: nincs mit tenni."
 
 #: gio/glib-compile-schemas.c:2271
-#| msgid "removed existing output file.\n"
 msgid "No schema files found: removed existing output file."
 msgstr "Nem találhatók sémafájlok: meglévő kimeneti fájl eltávolítva."
 
@@ -2929,7 +2917,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "A fájl nem nevezhető át, a fájlnév már létezik"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Érvénytelen fájlnév"
 
@@ -3003,129 +2991,125 @@ msgstr "A fájlrendszer nem támogatja a szimbolikus linkeket"
 msgid "Error making symbolic link %s: %s"
 msgstr "Hiba a(z) %s szimbolikus link létrehozásakor: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "A szimbolikus linkek használata nem támogatott"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Hiba a(z) %s fájl áthelyezésekor: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "A könyvtár nem helyezhető át könyvtárba"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "A mentési fájl létrehozása meghiúsult"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Hiba a célfájl eltávolításakor: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "A csatolások közti áthelyezés nem támogatott"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Nem lehet meghatározni %s lemezhasználatát: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Az attribútum értéke nem lehet NULL"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Érvénytelen attribútumtípus (a várt karakterlánc helyett)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Érvénytelen kiterjesztett attribútumnév"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Hiba a(z) „%s” kiterjesztett attribútum beállításakor: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (érvénytelen kódolás)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Hiba a(z) „%s” fájl információinak lekérésekor: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Hiba a fájlleíró információinak lekérésekor: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Érvénytelen attribútumtípus (a várt uint32 helyett)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Érvénytelen attribútumtípus (a várt uint64 helyett)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Érvénytelen attribútumtípus (a várt bájtkarakterlánc helyett)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Nem állíthatók be a szimbolikus linkek jogosultságai"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Hiba a jogosultságok beállításakor: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Hiba a tulajdonos beállításakor: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "a szimbolikus link nem lehet NULL"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Hiba a szimbolikus link beállításakor: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Hiba a szimbolikus link beállításakor: a fájl nem szimbolikus link"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Hiba a módosítási vagy hozzáférési idő beállításakor: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "A SELinux környezet nem lehet NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Hiba a SELinux környezet beállításakor: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "A SELinux nem engedélyezett ezen rendszeren"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "A(z) %s attribútum beállítása nem támogatott"
@@ -3148,7 +3132,7 @@ msgstr "Hiba a fájlban kereséskor: %s"
 msgid "Error closing file: %s"
 msgstr "Hiba a fájl lezárásakor: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Nem található az alapértelmezett helyi fájlfigyelő típus"
 
@@ -3295,11 +3279,11 @@ msgstr "A csatolás nem valósítja meg a tartalomtípus szinkron meghatározás
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "A gépnév („%s”) „[” karaktert tartalmaz „]” nélkül"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "A hálózat elérhetetlen"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "A gép elérhetetlen"
 
@@ -3340,18 +3324,18 @@ msgstr "A(z) %s részére átadott vektorok összege túl nagy"
 msgid "Source stream is already closed"
 msgstr "A forrás adatfolyam már le van zárva"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Hiba a(z) „%s” feloldásakor: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "A(z) %s nincs megvalósítva"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Érvénytelen tartomány"
 
@@ -3730,174 +3714,174 @@ msgstr "Üres sémanevet adott meg\n"
 msgid "No such key “%s”\n"
 msgstr "Nincs „%s” kulcs\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Érvénytelen foglalat, nincs előkészítve"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Érvénytelen foglalat, az előkészítés meghiúsulásának oka: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "A foglalat már le van zárva"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "A foglalat I/O túllépte az időkorlátot"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "GSocket létrehozása fájlleíróból: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nem sikerült létrehozni foglalatot: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Ismeretlen családot adtak meg"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Ismeretlen protokollt adtak meg"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "A datagram műveletek nem használhatóak nem-datagram foglalaton."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "A datagram műveletek nem használhatóak olyan foglalaton, amelyre időtúllépés "
 "van beállítva."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nem kérhető le a helyi cím: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nem kérhető le a távoli cím: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "nem lehet figyelni: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Hiba a címhez csatlakozáskor: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Hiba a(z) %s címhez csatlakozáskor: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Hiba a multicast csoporthoz csatlakozáskor: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Hiba a multicast csoport elhagyásakor: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "A forrásspecifikus multicast nem támogatott"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Nem támogatott foglalatcsalád"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "A forrásspecifikus nem egy IPv4-cím"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Az interfésznév túl hosszú"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interfész nem található: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Az IPv4 forrásspecifikus multicast nem támogatott"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Az IPv6 forrásspecifikus multicast nem támogatott"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Hiba a kapcsolat elfogadásakor: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Csatlakozás folyamatban"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Nem lehet lekérni a függőben lévő hibát:"
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Hiba az adatok fogadásakor: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Hiba az adatok küldésekor: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nem sikerült leállítani a foglalatot: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Hiba a foglalat lezárásakor: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Várakozás a foglalat állapotára: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Hiba az üzenet küldésekor: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "A GSocketControlMessage nem támogatott Windowson"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Hiba az üzenet fájl eltávolítása fogadásakor: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nem sikerült olvasni a foglalat hitelesítési adatait: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "a g_socket_get_credentials nincs megvalósítva erre az OS-re"
 
@@ -4160,7 +4144,7 @@ msgstr "Hiba a fájlleíróból olvasáskor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Hiba a fájlleíró lezárásakor: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Fájlrendszer gyökere"
 
@@ -4249,74 +4233,74 @@ msgstr "Hibás argumentumok\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Váratlan attribútum („%s”) a(z) „%s” elemhez"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "A(z) „%2$s” elem „%1$s” attribútuma nem található"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Váratlan címke: „%s” a várt „%s” helyett"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Váratlan címke: „%s” a következőn belül: „%s”"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Érvénytelen „%s” dátum vagy idő a könyvjelzőfájlban"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Az adatkönyvtárakban nem található érvényes könyvjelzőfájl"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Már létezik könyvjelző a következő URI címhez: „%s”"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Nem található könyvjelző a következő URI címhez: „%s”"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Nincs MIME típus meghatározva a következő URI könyvjelzőjéhez: „%s”"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Nincs magán jelző meghatározva a következő URI könyvjelzőjéhez: „%s”"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Nincsenek csoportok beállítva a következő URI könyvjelzőjéhez: „%s”"
 
 # FIXME: hol jön ez elő?
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
 "Nincs „%s” nevű alkalmazás regisztrálva a következő könyvjelzőjéhez: „%s”"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr ""
@@ -4326,8 +4310,8 @@ msgstr ""
 msgid "Unrepresentable character in conversion input"
 msgstr "Nem ábrázolható karakter az átalakítási bemenetben"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Részleges karaktersorozat a bemenet végén"
 
@@ -4873,25 +4857,25 @@ msgstr "A(z) „%s” sablon nem tartalmaz XXXXXX karaktersorozatot"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Nem sikerült kiolvasni a(z) „%s” szimbolikus linket: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Az átalakító a(z) „%s” elemről „%s” elemre nem nyitható meg: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 "Nem lehet nyers (raw) olvasást végezni a g_io_channel_read_line_string-ben"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Át nem alakított adatok maradtak az olvasási pufferben"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "A csatorna töredék karakterrel ér véget"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nem lehet nyers (raw) olvasást végezni a g_io_channel_read_to_end-ben"
 
@@ -4931,8 +4915,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "A kulcsfájl a nem támogatott „%s” kódolást tartalmazza"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "A kulcsfájlból hiányzik a(z) „%s” csoport"
@@ -4972,31 +4956,31 @@ msgstr ""
 "A(z) „%s” kulcs a(z) „%s” csoportban „%s” értékkel rendelkezik a várt %s "
 "helyett"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "A kulcsfájl escape sorozattal megadott karaktert tartalmaz a sor végén"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "A kulcsfájl érvénytelen escape sorozatot tartalmaz („%s”)"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "A(z) „%s” érték nem értelmezhető számként."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "A(z) „%s” egész érték a tartományon kívülre esik"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "A(z) „%s” érték nem értelmezhető lebegőpontos számként."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "A(z) „%s” érték nem értelmezhető logikai értékként."
@@ -5085,11 +5069,11 @@ msgstr ""
 "Az entitás neve nem pontosvesszővel ért véget; valószínűleg egy &-jelet "
 "használt anélkül, hogy entitást akart volna kezdeni - írja &amp; formában."
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "A dokumentumnak egy elemmel kell kezdődnie (például: <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5098,7 +5082,7 @@ msgstr ""
 "A(z) „%s” nem érvényes karakter a „<” karakter után; elem neve nem kezdődhet "
 "vele"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5107,7 +5091,12 @@ msgstr ""
 "Furcsa karakter („%s”), „>” karakternek kellett volna jönnie, hogy lezárja "
 "a(z) „%s” üres elemcímkét"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Túl sok attribútum a(z) „%s” elemben"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5115,7 +5104,7 @@ msgstr ""
 "Furcsa karakter („%s”), „=” karakternek kellett volna jönnie a(z) „%s” elem "
 "„%s” attribútumneve után"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5126,7 +5115,7 @@ msgstr ""
 "„%s” elem kezdő címkéje után, esetleg egy attribútumnak; lehet, hogy "
 "érvénytelen karaktert használt az attribútum nevében"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5135,7 +5124,7 @@ msgstr ""
 "Furcsa karakter („%s”), egy nyitó idézőjelnek kellene jönnie az "
 "egyenlőségjel után, ha értéket ad a(z) „%s” attribútumnak „%s” elemben"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5144,7 +5133,7 @@ msgstr ""
 "A(z) „%s” nem érvényes karakter a „</” karakterek után; „%s” karakterrel nem "
 "kezdődhet egy elem neve"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5153,26 +5142,26 @@ msgstr ""
 "A(z) „%s” nem érvényes karakter a(z) „%s” lezáró elemnév után; az "
 "engedélyezett karakter egyedül a „>”."
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "A(z) „%s” elem le lett lezárva, jelenleg egy elem sincs nyitva"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "A(z) „%s” elem le lett lezárva, de a jelenleg nyitott elem a(z) „%s”"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "A dokumentum üres volt, vagy csak üres hely karaktereket tartalmazott"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "A dokumentum váratlanul véget ért egy nyitott hegyes zárójel („<”) után"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5181,7 +5170,7 @@ msgstr ""
 "A dokumentum váratlanul véget ért, pedig még nyitva vannak elemek - „%s” az "
 "utoljára megnyitott elem"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5190,19 +5179,19 @@ msgstr ""
 "A dokumentum váratlanul véget ért; a(z) <%s/> elemet lezáró hegyes "
 "zárójelnek kellett volna következnie"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "A dokumentum váratlanul véget ért egy elemnéven belül"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "A dokumentum váratlanul véget ért egy attribútumnéven belül"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "A dokumentum váratlanul véget ért egy elemnyitó címkén belül"
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5210,84 +5199,84 @@ msgstr ""
 "A dokumentum váratlanul véget ért egy az attribútumnevet követő "
 "egyenlőségjel után; az attribútum értéke nem lett megadva"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "A dokumentum váratlanul véget ért egy attribútumértéken belül"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "A dokumentum váratlanul véget ért a(z) „%s” elem lezáró címkéjén belül"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "A dokumentum váratlanul véget ért egy nem nyitott elem lezáró címkéjén belül"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "A dokumentum váratlanul véget ért egy megjegyzésen vagy feldolgozási "
 "utasításon belül"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[KAPCSOLÓ…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Súgólehetőségek:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Súgólehetőségek megjelenítése"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Minden súgólehetőség megjelenítése"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Alkalmazás kapcsolói:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Kapcsolók:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Nem dolgozható fel a(z) „%s” egész érték a következőhöz: %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "A(z) „%s” egész érték a tartományon kívülre esik a következőhöz: %s"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Nem dolgozható fel a(z) „%s” dupla hosszúságú érték a következőhöz: %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr ""
 "A(z) „%s” dupla hosszúságú érték a tartományon kívülre esik a következőhöz: "
 "%s"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Hiba a kapcsoló feldolgozásakor: %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Hiányzó paraméter a következőhöz: %s"
 
-#: glib/goption.c:2182
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Ismeretlen kapcsoló: %s"
@@ -5698,79 +5687,77 @@ msgstr ""
 msgid "Failed to read data from child process (%s)"
 msgstr "Nem sikerült adatokat olvasni a gyermekfolyamatból (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Váratlan hiba, miközben a select() adatokat próbált olvasni egy "
-"gyermekfolyamatból (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Váratlan hiba egy gyermekfolyamatból történő adatolvasás közben (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Váratlan hiba a waitpid()-ben (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "A gyermekfolyamat a következő kóddal lépett ki: %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "A gyermekfolyamat kilőve %ld szignállal"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "A gyermekfolyamat megállítva %ld szignállal"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "A gyermekfolyamat abnormálisan lépett ki"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Nem sikerült olvasni a gyermek csővezetékből (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Nem sikerült a(z) „%s” gyermekfolyamat végrehajtása (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Nem sikerült folyamatot indítani (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Nem sikerült átváltani a(z) „%s” könyvtárra (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Nem sikerült a gyermekfolyamat („%s”) végrehajtása (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Nem sikerült a gyermekfolyamat ki- vagy bemenetének átirányítása (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Nem sikerült a gyermekfolyamat elindítása (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Ismeretlen hiba a gyermekfolyamat („%s”) végrehajtásakor"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Nem sikerült elég adatot kiolvasni a gyermek pid csővezetékből (%s)"
@@ -5824,194 +5811,194 @@ msgstr ""
 "Váratlan hiba, miközben a g_io_channel_win32_poll() adatokat olvasott egy "
 "gyermekfolyamatból"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Az üres karakterlánc nem szám"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s” nem érvényes név"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "A(z) „%s” a(z) [%s, %s]  intervallumon kívül esik."
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s” nem érvényes név"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Nem sikerült memóriát lefoglalni"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "A karakter az UTF-8 tartományon kívülre esik"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Érvénytelen sorozat az átalakítási bemenetben"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "A karakter az UTF-16 tartományon kívülre esik"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2326
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2328
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2330
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2332
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2334
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2336
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2340
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2342
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2344
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2346
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2360
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2374
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2412 glib/gutils.c:2529
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u bájt"
 msgstr[1] "%u bájt"
 
-#: glib/gutils.c:2416
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6019,7 +6006,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2483
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6027,7 +6014,7 @@ msgstr[0] "%s bájt"
 msgstr[1] "%s bájt"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2488
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6039,32 +6026,32 @@ msgstr[1] "%s bit"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2542
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2547
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2552
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2557
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2562
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2567
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 3255842..7e3c332 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -5,13 +5,13 @@
 # Mohammad DAMT <mdamt@bisnisweb.com>, 2005.
 # Dirgita <dirgitadevina@yahoo.co.id>, 2010, 2012.
 # Andika Triwidada <andika@gmail.com>, 2010-2013, 2015, 2018.
-# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017, 2018, 2019.
+# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2020.
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
-"PO-Revision-Date: 2019-08-22 19:23+0700\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-04 14:00+0700\n"
 "Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
 "Language-Team: Indonesian <gnome@i15n.org>\n"
 "Language: id\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural= n!=1;\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 2.3\n"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -117,8 +117,8 @@ msgstr "Perintah yang ingin dicetak bantuan terrincinya"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identifier aplikasi dalam format D-Bus (mis: org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "BERKAS"
@@ -280,7 +280,7 @@ msgstr "Stream telah ditutup"
 msgid "Truncate not supported on base stream"
 msgstr "Pemenggalan tak didukung pada stream basis"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -300,22 +300,22 @@ msgstr "Tak cukup ruang di tujuan"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Rangkaian bita dalam input konversi tidak benar"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Galat ketika konversi: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Inisialisasi yang dapat dibatalkan tak didukung"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Konversi dari gugus karakter \"%s\" ke \"%s\" tak didukung"
@@ -339,19 +339,23 @@ msgstr "Tipe tak dikenal"
 msgid "%s filetype"
 msgstr "tipe berkas %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials berisi data yang tidak valid"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials tak diimplementasikan di OS ini"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Tidak ada dukungan GCredentials bagi platform Anda"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials tak memuat suatu ID proses di OS ini"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Pemalsuan kredensial tak diimplementasikan di OS ini"
 
@@ -359,7 +363,7 @@ msgstr "Pemalsuan kredensial tak diimplementasikan di OS ini"
 msgid "Unexpected early end-of-stream"
 msgstr "Akhir stream terlalu dini, tak diharapkan"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Kunci \"%s\" tak didukung pada entri alamat \"%s\""
@@ -378,32 +382,28 @@ msgstr ""
 "Alamat \"%s\" tak valid (perlu hanya salah satu dari path, dir, tmpdir, atau "
 "kunci abstrak)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Galat dalam alamat \"%s\" — atribut port salah bentuk"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Galat dalam alamat \"%s\" — atribut family salah bentuk"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Galat dalam alamat \"%s\" — atribut \"%s\" salah bentuk"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transport \"%s\" tak dikenal atau tak didukung bagi alamat \"%s\""
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Elemen alamat \"%s\" tak memuat titik dua (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Nama transport dalam elemen alamat “%s” tidak boleh kosong"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -412,7 +412,7 @@ msgstr ""
 "Pasangan kunci/nilai %d, \"%s\", dalam elemen alamat \"%s\" tak memuat tanda "
 "sama dengan"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -420,7 +420,7 @@ msgstr ""
 "Pasangan kunci/nilai %d, \"%s\", dalam elemen alamat \"%s\" tak boleh "
 "memiliki kunci kosong"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -429,7 +429,7 @@ msgstr ""
 "Galat saat membongkar kunci atau nilai dalam pasangan Key/Value %d, \"%s\", "
 "dalam elemen alamat \"%s\""
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -438,75 +438,75 @@ msgstr ""
 "Galat dalam alamat \"%s\" — transport unix memerlukan hanya satu dari kunci "
 "\"path\" atau \"abstract\" untuk ditata"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Galat dalam alamat \"%s\" — atribut host kurang atau salah bentuk"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Galat dalam alamat \"%s\" — atribut portt kurang atau salah bentuk"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Galat di alamat \"%s\" — atribut berkas nonce kurang atau salah bentuk"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Galat saat meluncurkan otomatis: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Galat saat membuka berkas nonce \"%s\": %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Galat saat membaca berkas nonce \"%s\": %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Galat saat membaca berkas nonce \"%s\", berharap 16 bita, mendapat %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Galat saat menulis isi dari berkas nonce \"%s\" ke stream:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Tidak ada alamat yang diberikan"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Tidak bisa spawn suatu bus pesan ketika setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Tidak bisa spawn suatu bus pesan tanpa id-mesin: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Tidak bisa meluncurkan mandiri D-Bus tanpa $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Galat saat spawn baris perintah \"%s\": "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, 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)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -515,7 +515,7 @@ msgstr ""
 "Tak bisa menentukan alamat bus dari variabel lingkungan "
 "DBUS_STARTER_BUS_TYPE — nilai tak dikenal \"%s\""
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -523,21 +523,21 @@ msgstr ""
 "Tak bisa menentukan alamat bus karena variabel lingkungan "
 "DBUS_STARTER_BUS_TYPE tak diisi"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipe bus %d tak dikenal"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Ketiadaan isi yang tak diharapkan ketika membaca suatu baris"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Ketiadaan isi yang tak diharapkan ketika membaca suatu baris (secara aman)"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -545,38 +545,38 @@ msgstr ""
 "Menghabiskan semua mekanisme autentikasi yang tersedia (dicoba: %s) "
 "(tersedia: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Dibatalkan melalui GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Galat ketika mengambil informasi untuk direktori \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Izin pada direktori \"%s\" salah bentuk. Diharapkan mode 0700, diperoleh 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Galat saat membuat direktori \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Galat saat membuka ring kunci \"%s\" untuk dibaca: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Baris %d dari ring kunci pada \"%s\" dengan isi \"%s\" salah bentuk"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -584,7 +584,7 @@ msgstr ""
 "Token pertama dari baris %d dari ring kunci pada \"%s\" dengan isi \"%s\" "
 "salah bentuk"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -592,37 +592,37 @@ msgstr ""
 "Token kedua dari baris %d dari ring kunci pada \"%s\" dengan isi \"%s\" "
 "salah bentuk"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Tak menemukan cookie dengan id %d dalam gantungan kunci pada \"%s\""
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Galat saat menghapus berkas kunci yang basi \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Galat saat membuat berkas kunci \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Galat saat menutup berkas kunci (tak terkait) \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Galat saat membuka kait berkas kunci \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Galat saat membuka gantungan kunci \"%s\" untuk ditulisi: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Selain itu, melepas kunci bagi \"%s\" juga gagal: %s) "
@@ -641,7 +641,7 @@ msgid ""
 msgstr ""
 "Ditemui flag yang tak didukung ketika membangun sambungan di sisi klien"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -649,101 +649,101 @@ msgstr ""
 "Tidak ada antarmuka \"org.freedesktop.DBus.Properties\" pada objek pada path "
 "%s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Tak ada properti \"%s\""
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Properti \"%s\" tidak dapat dibaca"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Properti \"%s\" tidak dapat ditulisi"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, 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"
 "\""
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Tak ada antarmuka \"%s\""
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Tak ada antarmuka \"%s\" pada objek di lokasi %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Tidak ada metode seperti \"%s\""
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, 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:5194
+#: gio/gdbusconnection.c:5205
 #, 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:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Tak bisa mengambil properti %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Tak bisa menata properti %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metode \"%s\" mengembalikan tipe \"%s\", tapi yang diharapkan \"%s\""
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
 "Metode \"%s\" pada antar muka \"%s\" dengan tanda tangan \"%s\"' tak ada"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Subtree telah diekspor bagi %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "jenisnya INVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Pesan METHOD_CALL: ruas header PATH atau MEMBER hilang"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Pesan METHOD_RETURN: ruas header REPLY_SERIAL hilang"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Pesan ERROR: ruas header REPLY_SERIAL atau ERRORN_NAME hilang"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Pesan SIGNAL: ruas header PATH, INTERFACE, atau MEMBER hilang"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -751,7 +751,7 @@ msgstr ""
 "Pesan SIGNAL: ruas header PATH memakai nilai khusus /org/freedesktop/DBus/"
 "Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -759,19 +759,19 @@ msgstr ""
 "Pesan SIGNAL: ruas header INTERFACE memakai nilai khusus org.freedesktop."
 "DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Ingin membaca %lu bita tapi hanya memperoleh %lu"
 msgstr[1] "Ingin membaca %lu bita tapi hanya memperoleh %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Mengharapkan bita NUL setelah string \"%s\" tapi menemui bita %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -781,17 +781,21 @@ msgstr ""
 "%d (panjang string adalah %d). String UTF-8 yang valid sampai titik itu "
 "adalah \"%s\""
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Nilai bersarang terlalu dalam"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Nilai terurai \"%s\" bukan lokasi objek D-Bus yang valid"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Nilai terurai \"%s\" bukan tanda tangan D-Bus yang valid"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -804,7 +808,7 @@ msgstr[1] ""
 "Menjumpai larik dengan panjang %u bita. Panjang maksimal adalah 2<<26 bita "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -813,12 +817,12 @@ msgstr ""
 "Menemui larik bertipe \"a%c\", mengharapkan punya panjang kelipatan %u bita, "
 "tapi menemui panjang %u bita"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Nilai terurai \"%s\" bagi varian bukan tanda tangan D-Bus yang valid"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -826,7 +830,7 @@ msgstr ""
 "Galat saat deserialisasi GVariant dengan type string \"%s\" dari format "
 "kabel D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -835,28 +839,28 @@ msgstr ""
 "Nilai ke-endian-an tak valid. Berharap 0x6c (\"l\") atau (0x42) \"B\" tapi "
 "menemui 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versi protokol mayor tak valid. Berharap 1 tapi menemui %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Tajuk tanda tangan ditemukan tetapi bukan tipe tanda tangan"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, 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"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Nilai terurai \"%s\" bukan tanda tangan D-Bus yang valid (bagi body)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -867,11 +871,11 @@ msgstr[1] ""
 "Tidak terdapat tajuk tanda tangan pada pesan, tetapi panjang badan pesan "
 "adalah %u bita"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Tidak bisa men-deserialisasi pesan: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -879,23 +883,23 @@ msgstr ""
 "Kesalahan serialisasi GVariant dengan type string \"%s\" ke format kabel D-"
 "Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Jumlah deskriptor berkas dalam pesan (%d) berbeda dari field header (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Tidak bisa men-serialisasi pesan: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Body pesan punya tanda tangan \"%s\" tapi tak ada header tanda tangan"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -904,36 +908,36 @@ msgstr ""
 "Tubuh pesan memiliki tanda tangan tipe \"%s\" tapi tanda tangan di ruas "
 "header adalah \"(%s)\""
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Tubuh pesan kosong tapi tanda tangan pada ruas header adalah \"(%s)\""
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Galat balikan dengan tubuh bertipe \"%s\""
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Galat balikan dengan body kosong"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Ketikkan karakter apapun untuk menutup jendela ini)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "dbus sesi tak sedang berjalan, dan peluncuran-otomatis gagal"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Tak bisa mendapat profil perangkat keras: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Tak bisa memuat /var/lib/dbus/machine-id ata /etc/machine-id: "
 
@@ -956,25 +960,25 @@ msgstr ""
 "Tidak bisa menjalankan metode; proksi adalah nama terkenal %s tanpa pemilik "
 "dan proksi dibangun dengan flag G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Ruang nama abstrak tak didukung"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Tidak dapat menyatakan berkas nonce ketika membuat suatu server"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Galat saat menulis berkas nonce pada \"%s\": %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "String \"%s\" bukan suatu GUID D-Bus yang valid"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Tidak dapat mendengarkan pada transport yang tak didukung \"%s\""
@@ -1254,39 +1258,39 @@ msgstr "Galat: Terlalu banyak argumen.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Galat: %s bukan nama bus yang dikenal baik dan valid\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Tanpa nama"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Berkas desktop tak menyatakan ruas Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Tak bisa temukan terminal yang diperlukan bagi aplikasi"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Tak bisa membuat folder %s untuk konfigurasi aplikasi bagi pengguna: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, 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:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Informasi aplikasi tak punya identifier"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Tak bisa membuat berkas desktop pengguna %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definisi gubahan bagi %s"
@@ -1347,12 +1351,12 @@ msgstr "Cacah token (%d) salah bentuk di pengkodean GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Berharap suatu GEmblem bagi GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operasi tak didukung"
@@ -1361,69 +1365,73 @@ msgstr "Operasi tak didukung"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Kait yang memuat tak ada"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Tak bisa menyalin direktori atas direktori"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Tak bisa menyalin direktori atas direktori"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Berkas tujuan telah ada"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Tak bisa menyalin direktori secara rekursif"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Splice tidak didukung"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Galat saat men-splice berkas: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Menyalin (reflink/clone) antar kait tak didukung"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Menyalin (reflink/clone) tak didukung atau tak valid"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Menyalin (reflink/clone) tak didukung atau tak bekerja"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Tak bisa menyalin berkas spesial"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Diberikan nilai link simbolik yang tak valid"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Taut simbolik tidak didukung"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Tong sampah tak didukung"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Nama berkas tak boleh mengandung \"%c\""
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volume tak mengimplementasi pengaitan"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Tak ada aplikasi terdaftar yang menangani berkas ini"
 
@@ -1468,7 +1476,7 @@ msgstr "Pemenggalan tak diijinkan pada stream masukan"
 msgid "Truncate not supported on stream"
 msgstr "Pemenggalan tak didukung pada stream"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Nama host salah"
@@ -1585,7 +1593,7 @@ msgstr "Pertahankan dengan berkas ketika dipindah"
 msgid "“version” takes no arguments"
 msgstr "\"version\" tak menerima argumen"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Penggunaan:"
 
@@ -1671,10 +1679,10 @@ msgid "Error writing to stdout"
 msgstr "Galat saat menulis ke stdout"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1694,56 +1702,60 @@ msgstr ""
 "sebagai ganti berkas lokal: sebagai contoh Anda dapat memakai\n"
 "seperti smb://server/sumberdaya/berkas.txt sebagai lokasi."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Tidak ada lokasi yang diberikan"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Tidak ada direktori tujuan"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Tampilkan kemajuan"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Tanya sebelum menimpa"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Pertahankan semua atribut"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Buat cadangan berkas tujuan yang telah ada"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Jangan pernah ikut taut simbolik"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Gunakan izin bawaan untuk tujuan"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Ditransfer %s dari %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "SUMBER"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "TUJUAN"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Salin satu berkas atau lebih dari SUMBER ke TUJUAN."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1753,88 +1765,98 @@ msgstr ""
 "sebagai ganti berkas lokal: sebagai contoh Anda dapat memakai\n"
 "smb://server/sumberdaya/berkas.txt sebagai lokasi."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Tujuan %s bukan suatu direktori"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: timpa \"%s\"? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Buat daftar atribut yang dapat ditulisi"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Ambil info sistem berkas"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Atribut yang akan diambil"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUT"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Jangan ikuti taut simbolik"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atribut:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "nama tampilan: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "sunting nama: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "nama: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "tipe: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "ukuran: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "tersembunyi\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "path lokal: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "kait unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Atribut yang dapat ditata:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Namespace atribut yang dapat ditulis:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Tunjukkan informasi tentang lokasi."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1849,23 +1871,27 @@ msgstr ""
 "dengan\n"
 "namespace, misalnya unix, atau dengan \"*\", yang cocok dengan semua atribut"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Tampilkan berkas tersembunyi"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Gunakan format daftar panjang"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Cetak nama tampilan"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Cetak URI lengkap"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Tampilkan daftar isi lokasi."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1996,12 +2022,12 @@ msgid "Mount as mountable"
 msgstr "Kait sebagai yang dapat dikait"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Kait volume dengan berkas perangkat"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Kait volume dengan berkas perangkat, atau pengidentifikasi lainnya"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "PERANGKAT"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2015,6 +2041,10 @@ msgstr "Keluarkan Media"
 msgid "Stop drive with device file"
 msgstr "Hentikan kandar dengan berkas perangkat"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "PERANGKAT"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Lepas kaitan semua kait dengan skema yang diberikan"
@@ -2069,16 +2099,11 @@ msgstr "Akses anonim ditolak"
 msgid "No drive for device file"
 msgstr "Tidak ada kandar bagi berkas perangkat"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s dikait pada %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Tidak ada volume bagi berkas perangkat"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Tidak ada volume untuk ID yang diberikan"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Kait atau lepas kait lokasi."
 
@@ -2292,20 +2317,20 @@ msgstr "Galat saat membaca berkas %s: %s"
 msgid "Error compressing file %s"
 msgstr "Galat saat memampatkan berkas %s"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "teks tidak boleh muncul di dalam <%s>"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Tampilkan versi program dan keluar"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Nama berkas keluaran"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2313,48 +2338,48 @@ msgstr ""
 "Direktori untuk memuat berkas yang direferensikan dalam FILE darinya "
 "(bawaan: direktori saat ini)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIREKTORI"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Buat keluaran dalam format yang dipilih bagi ekstensi nama berkas target"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Buat tajuk sumber"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Buat kode sumber yang dipakai untutk menaut berkas sumber daya ke dalam kode "
 "Anda"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Buat daftar kebergantungan"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Nama berkas kebergantungan yang akan dibuat"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Sertakan target palsu pada berkas dependensi yang dihasilkan"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Jangan buat dan daftarkan sumber daya secara otomatis"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Jangan ekspor fungsi; deklarasikan mereka G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2362,11 +2387,11 @@ msgstr ""
 "Jangan menyematkan data sumber daya dalam berkas C; anggap itu terhubung "
 "secara eksternal sebagai gantinya"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "Nama identifier C yang dipakai bagi kode sumber yang dibuat"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2376,7 +2401,7 @@ msgstr ""
 "Berkas spesifikasi sumber daya memiliki ekstensi .gresource.xml,\n"
 "dan berkas sumber daya memiliki ekstensi bernama .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Anda mesti memberikan hanya satu nama berkas\n"
 
@@ -2894,7 +2919,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Tidak bisa mengubah nama berkas, nama telah dipakai"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Nama berkas tak valid"
 
@@ -2970,129 +2995,125 @@ msgstr "Sistem berkas tak mendukung taut simbolik"
 msgid "Error making symbolic link %s: %s"
 msgstr "Galat saat membuat taut simbolis %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Taut simbolik tidak didukung"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Galat saat memindah berkas %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Tidak bisa memindah direktori atas direktori"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Pembuatan berkas cadangan gagal"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Galat saat menghapus berkas tujuan: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Perpindahan antar kait tak didukung"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Tak bisa menentukan penggunaan diska dari %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Nilai atribut tak boleh NULL"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Tipe atribut tak valid (diharapkan string)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Nama atribut tambahan yang tak valid"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Galat saat menata atribut yang diperluas \"%s\": %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (pengkodean tak valid)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Galat saat mengambil informasi bagi berkas \"%s\": %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Galat saat mengambil informasi bagi descriptor berkas: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Tipe atribut tak valid (diharapkan uint32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Tipe atribut tak valid (diharapkan uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Jenis atribut tidak sah (diharapkan bita berjenis string)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Tak bisa menata ijin pada taut simbolik"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Galat saat menata ijin: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Galat saat menata pemilik: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "symlink tak boleh NULL"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Galat saat menata taut simbolis: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Galat saat menata symlink: berkas bukan suatu link simbolik"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Galat saat menata waktu modifikasi atau akses: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "Konteks SELinux tak boleh NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Galat saat menata konteks SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux tak diaktifkan di sistem ini"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Penataan atribut %s tak didukung"
@@ -3115,7 +3136,7 @@ msgstr "Galat saat men-seek di berkas: %s"
 msgid "Error closing file: %s"
 msgstr "Galat saat menutup berkas: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Tak bisa temukan tipe pemantauan berkas lokal baku"
 
@@ -3258,11 +3279,11 @@ msgstr "mount tak mengimplementasi penebakan sinkron jenis isi"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Nama host \"%s\" mengandung \"[\" tapi tanpa \"]\""
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Jaringan tak dapat dijangkau"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Host tak dapat dihubungi"
 
@@ -3303,18 +3324,18 @@ msgstr "Jumlah vektor yang dilewatkan ke %s terlalu besar"
 msgid "Source stream is already closed"
 msgstr "Stream sumber telah ditutup"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Galat saat mengurai \"%s\": %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s tidak diterapkan"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Domain tidak valid"
 
@@ -3688,174 +3709,174 @@ msgstr "Nama skema yang diberikan kosong\n"
 msgid "No such key “%s”\n"
 msgstr "Tidak ada kunci seperti \"%s\"\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Soket tak valid, tak diinisialisasi"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Soket tak valid, inisialisasi gagal karena: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Soket telah ditutup"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "I/O soket kehabisan waktu"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "membuat GSocket dari fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Tak bisa membuat soket: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Famili tak dikenal dinyatakan"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Protokol tak dikenal dinyatakan"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Tidak bisa memakai operasi datagram pada suatu soket bukan datagram."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Tidak bisa memakai operasi datagram pada suatu soket yang tenggang waktunya "
 "ditata."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "tak bisa mendapat alamat lokal: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "tak bisa mendapat alamat jauh: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "tak bisa mendengarkan: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Galat saat mengikat ke alamat: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Galat saat mengikat ke alamat %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Galat saat bergabung dengan grup multicast: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Galat saat meninggalkan grup multicast: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Tak ada dukungan bagi multicast spesifik sumber"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Keluarga soket tak didukung"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "spesifik sumber bukan alamat IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Nama antarmuka terlalu panjang"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Antarmuka tidak ditemukan: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Tak ada dukungan bagi multicast spesifik sumber IPV4"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Tak ada dukungan bagi multicast spesifik sumber IPV6"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Galat saat menerima sambungan: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Penyambungan tengah berlangsung"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Tak bisa mendapat kesalahan yang tertunda: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Galat saat menerima data: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Galat saat mengirim data: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Tak bisa mematikan soket: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Galat saat menutup soket: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Menunggu kondisi soket: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Galat saat menerima pesan: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage tak didukung pada Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Galat saat menerima pesan: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Tak bisa membaca kredensial soket: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials tidak diimplementasikan untuk OS ini"
 
@@ -4116,7 +4137,7 @@ msgstr "Galat saat membaca dari descriptor berkas: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Galat saat menutup descriptor berkas: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Akar sistem berkas"
 
@@ -4203,75 +4224,75 @@ msgstr "Arg salah\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Atribut \"%s\" yang tidak diharapkan untuk elemen \"%s\""
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Atribut \"%s\" dari elemen \"%s\" tak ditemukan"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Tag \"%s\" yang tak diharapkan, diharapkan tag \"%s\""
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Tag \"%s\" yang tak diharapkan di dalam \"%s\""
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Tanggal/waktu ‘%s’ tidak valid dalam berkas penanda taut"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Tak ditemukan penanda buku yang valid di direktori data"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Penanda taut untuk URI \"%s\" telah ada"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Tak ditemukan penanda taut untuk URI \"%s\""
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr ""
 "Tidak ada jenis MIME yang didefinisikan pada penanda taut untuk URI \"%s\""
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 "Tidak ada flag privat yang ditetapkan dalam penanda taut untuk URI \"%s\""
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Tidak ada grup yang ditetapkan dalam penanda taut untuk URI \"%s\""
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
 "Tak ditemukan aplikasi terdaftar dengan nama \"%s\" bagi penanda taut \"%s\""
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Gagal mengembangkan baris eksekusi \"%s\" dengan URI \"%s\""
@@ -4280,8 +4301,8 @@ msgstr "Gagal mengembangkan baris eksekusi \"%s\" dengan URI \"%s\""
 msgid "Unrepresentable character in conversion input"
 msgstr "Karakter yang tidak dapat diterima dalam masukan konversi"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Rangkaian karakter sebagian pada akhir input"
 
@@ -4823,25 +4844,25 @@ msgstr "Templat \"%s\" tidak memuat XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Gagal membaca taut simbolik \"%s\": %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Tidak dapat membuka pengubah dari \"%s\" menjadi \"%s\": %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 "Tidak dapat melakukan pembacaan mentah dalam g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Ada data tersisa yang belum dikonversi pada penyangga read"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Kanal terputus pada karakter sebagian"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Tidak dapat melakukan pembacaan mentah dalam g_io_channel_read_to_end"
 
@@ -4881,8 +4902,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Berkas kunci mengandung enkoding \"%s\" yang tidak didukung"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Berkas kunci tidak memiliki grup \"%s\""
@@ -4919,31 +4940,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Kunci \"%s\" dalam grup \"%s\" bernilai \"%s\" padahal diharapkan %s"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Berkas kunci mengandung karakter escape pada akhir baris"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Berkas kunci memuat urutan escape \"%s\" yang tidak valid"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Nilai \"%s\" tidak bisa diterjemahkan sebagai sebuah bilangan."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Nilai bilangan bulat \"%s\" di luar jangkauan"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Nilai \"%s\" tidak dapat diterjemahkan sebagai sebuah bilangan float."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Nilai \"%s\" tidak dapat diterjemahkan sebagai sebuah boolean."
@@ -5034,11 +5055,11 @@ msgstr ""
 "ampersand tanpa bermaksud menjadikannya sebagai entitas — silakan pakai "
 "&amp; saja"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokumen harus dimulai dengan elemen (misalnya <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5047,7 +5068,7 @@ msgstr ""
 "“%s” bukanlah karakter yang benar bila diikuti dengan karakter \"<\". Ini "
 "tidak boleh menjadi nama elemen"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5056,7 +5077,12 @@ msgstr ""
 "Ada karakter aneh “%s”, seharusnya ada \">\" untuk mengakhiri tag elemen "
 "kosong “%s”"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Terlalu banyak atribut dalam elemen \"%s\""
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5064,7 +5090,7 @@ msgstr ""
 "Ada karakter aneh “%s”. Seharusnya ada karakter '=' setelah nama atribut "
 "“%s” pada elemen “%s”"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5075,7 +5101,7 @@ msgstr ""
 "padaelemen “%s”, atau bisa juga ada atribut lain. Mungkin Anda menggunakan "
 "karakter yang tidak diperbolehkan pada nama atribut"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5084,7 +5110,7 @@ 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:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5093,7 +5119,7 @@ msgstr ""
 "“%s” bukan karakter yang benar bila diikuti dengan karakter \"</\". Karena "
 "itu “%s” tidak boleh dijadikan awal nama elemen"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5102,26 +5128,26 @@ msgstr ""
 "“%s” bukan karakter yang benar bila diikuti elemen penutup “%s”. Karakter "
 "yang diperbolehkan adalah \">\""
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Elemen “%s” sudah ditutup, tidak ada elemen yang masih terbuka"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Elemen “%s” sudah ditutup, tapi elemen yang masih terbuka adalah “%s”"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokumen kosong atau berisi whitespace saja"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "Dokumen terpotong tidak sempurna sesaat setelah membuka kurung siku \"<\""
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5130,7 +5156,7 @@ msgstr ""
 "Dokumen terpotong tidak sempurna dengan elemen yang masih terbuka — “%s” "
 "adalah elemen terakhir yang dibuka"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5139,19 +5165,19 @@ msgstr ""
 "Dokumen terpotong tidak sempurna, seharusnya ada kurung siku penutup untuk "
 "mengakhiri tag <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokumen terpotong tidak sempurna pada dalam nama elemen"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokumen terpotong tidak sempurna di dalam nama atribut"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokumen terpotong tidak sempurna di dalam tag pembukaan elemen."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5159,83 +5185,83 @@ msgstr ""
 "Dokumen terpotong tidak sempurna setelah tanda sama dengan mengikuti nama "
 "atribut. Tidak ada nilai atribut yang diperoleh"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokumen tidak sempura saat ada dalam nilai atribut"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Dokumen terpotong tidak sempurna di dalam tag penutup elemen “%s”"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Dokumen terpotong tidak sempurna di dalam tag penutup untuk elemen yang "
 "belum dibuka"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Dokumen terpotong tidak sempurna di dalam keterangan atau instruksi "
 "pemrosesan"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPSI…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Opsi Bantuan:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Menampilkan opsi bantuan"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Menampilkan semua opsi bantuan"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Opsi Aplikasi:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Opsi:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Tidak bisa mengurai nilai bilangan bulat \"%s\" untuk \"%s\""
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Nilai bilangan bulat \"%s\" untuk %s di luar jangkauan"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Tidak bisa mengurai nilai double \"%s\" bagi %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "Nilai double \"%s\" untuk %s di luar jangkauan"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Galat saat mengurai opsi %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Argumen untuk %s tidak lengkap"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Pilihan tidak diketahui %s"
@@ -5640,78 +5666,77 @@ msgstr "Teksnya kosong (atau hanya berisi whitespace)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Gagal saat membaca data dari proses child (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, 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)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Galat tak terduga dalam membaca data dari proses anak (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Terjadi galat pada fungsi waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Proses anak keluar dengan kode %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Proses anak dimatikan oleh sinyal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Proses anak dihentikan oleh sinyal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Proses anak keluar secara tak normal"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Gagal saat membaca dari pipe child (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Gagal menelurkan proses anak \"%s\" (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Gagal saat fork (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Gagal pindah ke direktori \"%s\" (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Gagal menjalankan proses anak \"%s\" (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Gagal mengarahkan output atau input pada proses child (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Gagal saat fork proses child (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Galat tak dikenal ketika menjalankan proses anak \"%s\""
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Gagal saat membaca data yang dibutuhkan dai pipe pid child (%s)"
@@ -5764,194 +5789,194 @@ msgstr ""
 "Terjadi galat pada g_io_channel_win32_poll() ketika membaca data dari anak "
 "proses"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "String kosong bukan angka"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "\"%s\" bukan bilangan bertanda"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Nomor \"%s\" berada di luar batas [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "\"%s\" bukan bilangan tak bertanda"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Gagal mengalokasikan memori"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Karakter di luar jangkauan UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Rangkaian input konversi salah"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Karakter di luar jangkauan UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u bita"
 msgstr[1] "%u bita"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5959,7 +5984,7 @@ msgstr[0] "%u bita"
 msgstr[1] "%u bita"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5967,7 +5992,7 @@ msgstr[0] "%s bita"
 msgstr[1] "%s bita"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5979,36 +6004,45 @@ msgstr[1] "%s bita"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+#~ msgstr "GTlsBackend ini tidak mendukung pembuatan sertifikat PKCS #11"
+
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Galat dalam alamat \"%s\" — atribut family salah bentuk"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "%s dikait pada %s\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; mengabaikan penimpaan kunci ini.\n"
 
index 84bfaa8..a6d0425 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -1,7 +1,7 @@
 # Italian translation for glib.
 # This file is distributed under the same license as glib package
 # Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.
-# Copyright (C) 2016, 2017, 2018, 2019 Free Software Foundation, Inc.
+# Copyright (C) 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc.
 # Christopher R. Gabriel <cgabriel@pluto.linux.it> 2002.
 #
 # Nota sull'uso delle virgolette:
 # Seek è tradotto posizionare
 # Polling - proviamo con controllo sistematico (MS lo lascia non tradotto)
 # Luca Ferretti <lferrett@gnome.org>, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
-# Milo Casagrande <milo@milo.name>, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
+# Milo Casagrande <milo@milo.name>, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-09-09 05:42+0000\n"
-"PO-Revision-Date: 2019-09-10 08:50+0200\n"
+"POT-Creation-Date: 2020-03-06 13:00+0000\n"
+"PO-Revision-Date: 2020-03-06 15:23+0100\n"
 "Last-Translator: Milo Casagrande <milo@milo.name>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
 "Language: it\n"
@@ -27,7 +27,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 2.2.4\n"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -290,7 +290,7 @@ msgstr "Lo stream è già chiuso"
 msgid "Truncate not supported on base stream"
 msgstr "Troncamento non supportato sullo stream di base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -310,22 +310,22 @@ msgstr "Spazio non sufficiente nella destinazione"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Sequenza di byte non valida nell'ingresso per la conversione"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Errore durante la conversione: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Inizializzazione annullabile non supportata"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "La conversione del set di caratteri da «%s» a «%s» non è supportata"
@@ -349,19 +349,23 @@ msgstr "Tipo sconosciuto"
 msgid "%s filetype"
 msgstr "Tipo di file %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials contiene data non validi"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials non è implementato su questo SO"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Non c'è alcun supporto a GCredentials per la piattaforma in uso"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials non contiene un ID di processo su questo SO"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "La falsificazione delle identità non è consentita su questo sistema operativo"
@@ -370,7 +374,7 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "End-of-stream prematuro inatteso"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "La chiave «%s» non è valida nella voce indirizzo «%s»"
@@ -381,7 +385,7 @@ msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 "Combinazione coppia chiave/valore senza significato nella voce indirizzo «%s»"
 
-# Come chiarito in un messaggio seguente, path, tmpdir e abstract sono nomi di chiavi (NdT)
+# Come chiarito in un messaggio seguente, path, tmpdir e abstract sono nomi chi chiavi (NdT)
 #: gio/gdbusaddress.c:180
 #, c-format
 msgid ""
@@ -389,35 +393,31 @@ msgid ""
 "keys)"
 msgstr ""
 "L'indirizzo «%s» non è valido (necessario esattamente una tra le chiavi "
-"path, dir, tmpdir o abstract)"
-
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Errore nell'indirizzo «%s» — l'attributo port non è valido"
+"path, tmpdir o abstract)"
 
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Errore nell'indirizzo «%s» — l'attributo family non è valido"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Errore nell'indirizzo «%s» — l'attributo «%s» non è valido"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Trasporto «%s» sconosciuto o non supportato per l'indirizzo «%s»"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "L'elemento indirizzo «%s» non contiene due punti (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "Il nome del trasporto nell'elemento indirizzo «%s» non deve essere vuoto"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -426,7 +426,7 @@ msgstr ""
 "La coppia chiave/valore %d, «%s», nell'elemento indirizzo «%s», non contiene "
 "un segno di uguale"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -434,7 +434,7 @@ msgstr ""
 "La coppia chiave/valore %d, «%s», nell'elemento indirizzo «%s», non deve "
 "avere una chiave vuota"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -443,7 +443,7 @@ msgstr ""
 "Errore nell'eseguire l'unescaping sulla chiave o sul valore nella coppia "
 "chiave/valore %d, «%s», nell'elemento di indirizzo «%s»"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -452,81 +452,81 @@ msgstr ""
 "Errore nell'indirizzo «%s» — il trasporto unix richiede espressamente "
 "l'impostazione di una tra le chiavi «path» o «abstract»"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Errore nell'indirizzo «%s» — manca l'attributo «host» oppure non è valido"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Errore nell'indirizzo «%s» — manca l'attributo «port» oppure non è valido"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Errore nell'indirizzo «%s» — manca l'attributo «noncefile» oppure non è "
 "valido"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Errore nell'avvio automatico: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Errore nell'aprire il file nonce «%s»: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Errore nel leggere dal file nonce «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Errore nel leggere dal file nonce «%s»: attesi 16 byte, ottenuti %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Errore nello scrivere i contenuti del file nonce «%s» sullo stream:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "L'indirizzo fornito è vuoto"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Impossibile eseguire lo spawn di un bus di messaggi quando in setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Impossibile eseguire lo spawn di un bus di messaggi senza un machine-id: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Impossibile lanciare automaticamente D-Bus senza $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Errore nell'eseguire lo spawn della riga di comando «%s»: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Impossibile determinare l'indirizzo del bus di sessione (non implementato "
 "per questo S.O.)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -535,7 +535,7 @@ msgstr ""
 "Impossibile determinare l'indirizzo del bus dalla variabile d'ambiente "
 "DBUS_STARTER_BUS_TYPE — valore «%s» sconosciuto"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -543,22 +543,22 @@ msgstr ""
 "Impossibile determinare l'indirizzo del bus poiché la variabile d'ambiente "
 "DBUS_STARTER_BUS_TYPE non è impostata"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo di bus %d sconosciuto"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Assenza di contenuto inattesa nel tentativo di leggere una riga"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Assenza di contenuto inattesa nel tentativo di leggere (in modo sicuro) una "
 "riga"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -566,16 +566,16 @@ msgstr ""
 "Esauriti tutti i meccanismi di autenticazione disponibili (provati: %s) "
 "(disponibili: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Annullato attraverso GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Errore nell'ottenere informazioni per la directory «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -583,22 +583,22 @@ msgstr ""
 "I permessi sulla directory «%s» non sono validi: attesa la modalità 0700, "
 "ottenuta 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Errore nel creare la directory «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Errore nell'aprire il portachiavi «%s» in lettura: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "La riga %d del portachiavi su «%s» con contenuto «%s» non è corretta"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -606,7 +606,7 @@ msgstr ""
 "Il primo token della riga %d del portachiavi su «%s» con contenuto «%s» non "
 "è corretto"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -614,60 +614,60 @@ msgstr ""
 "Il secondo token della riga %d del portachiavi su «%s» con contenuto «%s» "
 "non è corretto"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Non è stato trovato il cookie con ID %d nel portachiavi su «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Errore nell'eliminare il vecchio file di blocco «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Errore nel creare il file di blocco «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Errore nel chiudere il file di blocco «%s» (unlinked): %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Errore nell'eseguire l'unlink del file di blocco «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Errore nell'aprire il portachiavi «%s» in scrittura: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(inoltre non è riuscito il rilascio del blocco per «%s»: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2400
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "La connessione è chiusa"
 
 # Sarebbe anche "il tempo è scaduto", ma non so
 # se la forma in cui l'hanno messo ha un particolare
 # senso, per cui la mantengo assieme a timeout
-#: gio/gdbusconnection.c:1901
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "È stato raggiunto il timeout"
 
-#: gio/gdbusconnection.c:2522
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Incontrate flag non supportate durante la costruzione di una connessione "
 "client-side"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -675,100 +675,100 @@ msgstr ""
 "Interfaccia «org.freedesktop.DBus.Properties» inesistente sull'oggetto nel "
 "percorso %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4303
 #, c-format
 msgid "No such property “%s”"
 msgstr "Proprietà «%s» inesistente"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4315
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "La proprietà «%s» non è leggibile"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4326
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "La proprietà «%s» non è scrivibile"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4346
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Errore nell'impostare la proprietà «%s»: atteso il tipo «%s», ottenuto «%s»"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Interfaccia «%s» inesistente"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Interfaccia «%s» inesistente sull'oggetto nel percorso %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4975
 #, c-format
 msgid "No such method “%s”"
 msgstr "Metodo «%s» inesistente"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5006
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Il tipo di messaggio «%s» non corrisponde al tipo atteso «%s»"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Risulta già esportato un oggetto per l'interfaccia %s su %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5430
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Impossibile recuperare la proprietà %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5486
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Impossibile impostare la proprietà %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5664
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Il metodo «%s» ha restituito il tipo «%s», ma era atteso «%s»"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6741
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Il metodo «%s» sull'interfaccia «%s» con firma «%s» non esiste"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Un sottoalbero per %s è già esportato"
 
 # suppongo INVALID sia parola chiave
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "il tipo è INVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "messaggio METHOD_CALL: manca il campo header PATH o MEMBER"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "messaggio METHOD_RETURN: manca il campo header REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "messaggio ERROR: manca il campo header REPLY_SERIAL o ERROR_NAME"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "messaggio SIGNAL: manca il campo header PATH, INTERFACE o MEMBER"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -776,7 +776,7 @@ msgstr ""
 "messaggio SIGNAL: il campo header PATH sta usando il valore riservato /org/"
 "freedestkop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -784,7 +784,7 @@ msgstr ""
 "messaggio SIGNAL: il campo header INTERFACE sta usando il valore riservato "
 "org.freedestkop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -792,12 +792,12 @@ msgstr[0] "Si voleva leggere %lu byte, ma ne sono stati ottenuti %lu"
 msgstr[1] "Si volevano leggere %lu byte, ma ne sono stati ottenuti %lu"
 
 # FIXME? plurale?
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Atteso byte NUL dopo la stringa «%s», ma trovato %d byte"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -807,17 +807,21 @@ msgstr ""
 "(la lunghezza della stringa è %d). La stringa UTF-8 valida fino a quel punto "
 "era «%s»"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Valori troppo annidati"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Il valore «%s» analizzato non è un percorso oggetto D-Bus valido"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Il valore «%s» analizzato non è una firma D-Bus valida"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -830,7 +834,7 @@ msgstr[1] ""
 "Incontrato un array lungo %u byte. La lunghezza massima è 2<<26 byte (64 "
 "MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -841,13 +845,13 @@ msgstr ""
 
 # VARIANT è uno dei container type di D-Bus
 # anche signature sono cose specifiche del protocollo
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Il valore «%s» analizzato per il variant non è una firma D-Bus valida"
 
 # eeeehh?????
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -855,7 +859,7 @@ msgstr ""
 "Errore nel deserializzare il GVariant con la stringa di tipo «%s» dal "
 "formato wire D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -864,26 +868,26 @@ msgstr ""
 "Valore endianness non valido. Atteso 0x6c («l») o 0x42 («B»), trovato invece "
 "il valore 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versione major del protocollo non valida. Atteso 1, ma trovato %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Trovato header firma, ma non è di tipo firma"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Trovato header firma con firma «%s», ma il corpo del messaggio è vuoto"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Il valore «%s» analizzato non è una firma D-Bus valida (per il corpo)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -892,11 +896,11 @@ msgstr[0] ""
 msgstr[1] ""
 "Nessun signature header nel messaggio, ma il corpo del messaggio è di %u byte"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Impossibile deserializzare il messaggio: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -904,7 +908,7 @@ msgstr ""
 "Errore nel serializzare il GVariant con la stringa di tipo «%s» al formato "
 "wire D-Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -912,17 +916,17 @@ msgstr ""
 "Il numero di descrittori file nel messaggio (%d) è diverso da quello del "
 "campo header (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Impossibile serializzare il messaggio: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Il corpo del messaggio presenta la firma «%s», ma non c'è alcun header firma"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -931,53 +935,53 @@ msgstr ""
 "Il corpo del messaggio presenta la firma «%s», ma la firma nel campo header "
 "è «%s»"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Il corpo del messaggio è vuoto, ma la firma nel campo header è «(%s)»"
 
 # non mi convincono "di ritorno" e "corpo"
 # ma altrove corpo non ci stava male
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Errore di ritorno con corpo di tipo «%s»"
 
 # come sopra
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Errore di ritorno con corpo vuoto"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(digitare un carattere qualsiasi per chiudere questa finestra)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "dbus di sessione non in esecuzione e autolaunch non riuscito"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Impossibile ottenere profilo hardware: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Impossibile caricare /var/lib/dbus/machine-id o /etc/machine-id: "
 
-#: gio/gdbusproxy.c:1625
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Errore nel chiamare StartServiceByName per %s: "
 
-#: gio/gdbusproxy.c:1648
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Risposta %d inattesa dal metodo StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2748 gio/gdbusproxy.c:2883
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -987,26 +991,26 @@ msgstr ""
 "un proprietario e il proxy è stato costruito con il flag "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Spazio nome astratto non supportato"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Impossibile specificare il file nonce quando si crea un server"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Errore nello scrivere il file nonce su «%s»: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "La stringa «%s» non è un GUID D-Bus valido"
 
 # anche transport sono cose specifiche di D-Bus
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Impossibile ascoltare sul transport «%s» non supportato"
@@ -1035,13 +1039,13 @@ msgstr ""
 "Usare «%s COMANDO --help» per informazioni su ciascun comando.\n"
 
 #: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
-#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:846 gio/gdbus-tool.c:1183
-#: gio/gdbus-tool.c:1668
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Errore: %s\n"
 
-#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1684
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Errore nell'analizzare XML introspection: %s\n"
@@ -1071,24 +1075,24 @@ msgstr "Opzioni endpoint connessione:"
 msgid "Options specifying the connection endpoint"
 msgstr "Opzioni per specificare gli endpoint di connessione"
 
-#: gio/gdbus-tool.c:429
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Nessun endpoint di connessione specificato"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Specificati endpoint di connessione multipli"
 
-#: gio/gdbus-tool.c:509
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Attenzione: secondo dati di introspezione, l'interfaccia «%s» non esiste\n"
 
-#: gio/gdbus-tool.c:518
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1097,164 +1101,164 @@ msgstr ""
 "Attenzione: secondi dati di introspezione, il metodo «%s» non esiste "
 "sull'interfaccia «%s»\n"
 
-#: gio/gdbus-tool.c:580
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
 msgstr "Destinazione opzionale per il segnale (nome univoco)"
 
-#: gio/gdbus-tool.c:581
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
 msgstr "Percorso oggetto su cui emettere il segnale"
 
-#: gio/gdbus-tool.c:582
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr "Segnale e nome dell'interfaccia"
 
-#: gio/gdbus-tool.c:615
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "Emette un segnale."
 
-#: gio/gdbus-tool.c:670 gio/gdbus-tool.c:977 gio/gdbus-tool.c:1771
-#: gio/gdbus-tool.c:2003 gio/gdbus-tool.c:2223
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Errore nel connettersi: %s\n"
 
-#: gio/gdbus-tool.c:690
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Errore: «%s» non è un nome di bus univoco valido.\n"
 
-#: gio/gdbus-tool.c:709 gio/gdbus-tool.c:1020 gio/gdbus-tool.c:1814
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
 msgstr "Errore: non è specificato il percorso dell'oggetto\n"
 
-#: gio/gdbus-tool.c:732 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1834
-#: gio/gdbus-tool.c:2074
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Errore: «%s» non è un percorso di oggetto valido\n"
 
-#: gio/gdbus-tool.c:752
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
 msgstr "Errore: non è specificato il nome del segnale\n"
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:770
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Errore: il nome del segnale «%s» non è valido\n"
 
-#: gio/gdbus-tool.c:778
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Errore: «%s» non è un nome di interfaccia valido\n"
 
-#: gio/gdbus-tool.c:784
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Errore: «%s» non è un nome di membro valido\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:821 gio/gdbus-tool.c:1152
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Errore nell'analizzare il parametro %d: %s\n"
 
-#: gio/gdbus-tool.c:853
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Errore nell'eseguire il flush della connessione: %s\n"
 
-#: gio/gdbus-tool.c:880
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
 msgstr "Nome della destinazione su cui invocare il metodo"
 
-#: gio/gdbus-tool.c:881
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
 msgstr "Percorso dell'oggetto su cui invocare il metodo"
 
 # oppure "Nome del metodo e dell'interfaccia" ???
-#: gio/gdbus-tool.c:882
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "Metodo e nome dell'interfaccia"
 
-#: gio/gdbus-tool.c:883
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "Timeout in secondi"
 
-#: gio/gdbus-tool.c:922
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr "Invoca un metodo su un oggetto remoto."
 
-#: gio/gdbus-tool.c:994 gio/gdbus-tool.c:1788 gio/gdbus-tool.c:2028
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr "Errore: non è specificata la destinazione\n"
 
-#: gio/gdbus-tool.c:1005 gio/gdbus-tool.c:1805 gio/gdbus-tool.c:2039
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Errore: «%s» non è un nome di bus valido\n"
 
-#: gio/gdbus-tool.c:1055
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr "Errore: non è specificato il nome del metodo\n"
 
-#: gio/gdbus-tool.c:1066
+#: gio/gdbus-tool.c:1070
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Errore: il nome di metodo «%s» non è valido\n"
 
-#: gio/gdbus-tool.c:1144
+#: gio/gdbus-tool.c:1148
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Errore nell'analizzare il parametro %d di tipo «%s»: %s\n"
 
 # predicato > sostantivo per introspezione, direi che funziona
-#: gio/gdbus-tool.c:1630
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
 msgstr "Nome destinazione per l'introspezione"
 
-#: gio/gdbus-tool.c:1631
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
 msgstr "Percorso oggetto per l'introspezione"
 
-#: gio/gdbus-tool.c:1632
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "Stampa XML"
 
-#: gio/gdbus-tool.c:1633
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr "Figli introspezione"
 
-#: gio/gdbus-tool.c:1634
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Stampa solo le proprietà"
 
-#: gio/gdbus-tool.c:1723
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr "Esegue l'introspezione su un oggetto remoto."
 
 # predicato > sostantivo per monitor, direi che funziona
-#: gio/gdbus-tool.c:1929
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
 msgstr "Nome destinazione per il monitoraggio"
 
-#: gio/gdbus-tool.c:1930
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr "Percorso oggetto per il monitoraggio"
 
-#: gio/gdbus-tool.c:1955
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr "Esegue il monitoraggio su un oggetto remoto."
 
-#: gio/gdbus-tool.c:2013
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Errore: impossibile monitorare una connessione non-message-bus\n"
 
-#: gio/gdbus-tool.c:2137
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Servizio da attivare prima di attendere l'altro (nome well-known)"
 
-#: gio/gdbus-tool.c:2140
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1262,49 +1266,49 @@ msgstr ""
 "Tempo da attendere prima di terminare con un errore (secondi); 0 per nessun "
 "tempo di attesa (predefinito)"
 
-#: gio/gdbus-tool.c:2188
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPZIONE…] NOME-BUS"
 
-#: gio/gdbus-tool.c:2189
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
 msgstr "Attende la comparsa del nome di un bus"
 
-#: gio/gdbus-tool.c:2265
+#: gio/gdbus-tool.c:2269
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Errore: è necessario specificare un servizio da attivare.\n"
 
-#: gio/gdbus-tool.c:2270
+#: gio/gdbus-tool.c:2274
 msgid "Error: A service to wait for must be specified.\n"
 msgstr ""
 "Errore: è necessario specificare un servizio da attendere.\n"
 "\n"
 
-#: gio/gdbus-tool.c:2275
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
 msgstr "Errore: troppi argomenti\n"
 
-#: gio/gdbus-tool.c:2283 gio/gdbus-tool.c:2290
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Errore: %s non è un nome di bus well-known.\n"
 
 # NdT: nome di applicazione (quando manca)
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Senza nome"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Il file .desktop non specifica il campo Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "Impossibile trovare il terminale richiesto per l'applicazione"
 
 # NdT il primo %s è il percorso alla cartella .local/share/application
 # messo tra parentesi per scelta stilistica...
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3413
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
@@ -1312,21 +1316,21 @@ msgstr ""
 
 # NdT il primo %s è il percorso alla cartella .local/share/application
 # messo tra parentesi per scelta stilistica...
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3417
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Impossibile creare la cartella utente di configurazione MIME (%s): %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
 msgstr "Manca un identificatore nelle informazioni dell'applicazione"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3915
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Impossibile creare il file .desktop utente %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definizione personalizzata per %s"
@@ -1387,12 +1391,12 @@ msgstr "Numero di token non valido (%d) nella codifica GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Atteso un GEmblem per GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operazione non supportata"
@@ -1401,70 +1405,74 @@ msgstr "Operazione non supportata"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "L'oggetto mount contenuto non esiste"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Impossibile copiare sopra la directory"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Impossibile copiare la directory sopra la directory"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Il file destinazione esiste"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Impossibile copiare la directory ricorsivamente"
 
 # see man splice(2)  :)
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Splice non supportato"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Errore nell'eseguire lo splice del file: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copia (reflink/clone) tra oggetti mount non supportata"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copia (reflink/clone) non supportata o non valida"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copia (reflink/clone) non supportata o non ha funzionato"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Impossibile copiare il file speciale"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Fornito valore di collegamento simbolico non valido"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Collegamenti simbolici non supportati"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Cestino non supportato"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "I nomi di file non possono contenere «%c»"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "il volume non implementa l'azione mount"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Non risulta registrata alcuna applicazione per gestire questo file"
 
@@ -1510,7 +1518,7 @@ msgstr "Troncamento non consentito sullo stream di input"
 msgid "Truncate not supported on stream"
 msgstr "Troncamento non supportato sullo stream"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Nome host non valido"
@@ -1718,10 +1726,10 @@ msgid "Error writing to stdout"
 msgstr "Errore nello scrivere sullo stdout"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1741,56 +1749,60 @@ msgstr ""
 "posizioni GIO al posto di file locali. È possibile, per esempio, usare\n"
 "smb://server/risorsa/file.txt come posizione."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Nessuna posizione fornita"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Nessuna directory destinazione"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Mostra avanzamento"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Chiede prima di sovrascrivere"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Preserva tutti gli attributi"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Backup dei file destinazione esistenti"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Non segue mai i collegamenti simbolici"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Usa permessi predefiniti per la destinazione"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Trasferiti %s di %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "SORGENTE"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINAZIONE"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copia uno o più file da SORGENTE a DESTINAZIONE"
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1800,88 +1812,98 @@ msgstr ""
 "posizioni GIO al posto di file locali. È possibile, per esempio, usare\n"
 "smb://server/risorsa/file.txt come posizione."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "La destinazione %s non è una directory"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: sovrascrivere «%s»? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Elenca gli attributi scrivibili"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Ottiene informazioni sul file system"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Gli attributi da ottenere"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTI"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Non segue i collegamenti simbolici"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "attributi:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "nome visibile: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "nome modificabile: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "nome: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "tipo: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "dimensione: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "nascosto\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "percorso locale: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "mount unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Attributi impostabili:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Namespace attributi scrivibili:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Mostra informazioni riguardo alle posizioni"
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1896,23 +1918,27 @@ msgstr ""
 "utilizzando il namespace (unix) o con «*» che corrisponde a tutti gli\n"
 "attributi"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Mostra file nascosti"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Usa un formato di elenco prolisso"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Stampa i nomi"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Stampa URI completi"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Elenca il contenuto delle posizioni"
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2043,12 +2069,12 @@ msgid "Mount as mountable"
 msgstr "Monta come oggetto montabile"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Monta il volume con file device"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Monta il volume con file device o con altro identificatore"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "DEVICE"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2062,6 +2088,10 @@ msgstr "Espelli"
 msgid "Stop drive with device file"
 msgstr "Ferma l'unità con file device"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DEVICE"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Smonta tutti i mount con lo schema fornito"
@@ -2115,16 +2145,11 @@ msgstr "Accesso anonimo non consentito"
 msgid "No drive for device file"
 msgstr "Nessuna unità per il file device"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Montato %s su %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Nessun volume per il file device"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Nessun volume per l'ID fornito"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Monta o smonta le posizioni"
 
@@ -2784,6 +2809,7 @@ msgstr "Questo intero file è stato ignorato."
 msgid "Ignoring this file."
 msgstr "Ignorato questo file."
 
+# override...
 #: gio/glib-compile-schemas.c:1963
 #, c-format
 msgid ""
@@ -2793,6 +2819,7 @@ msgstr ""
 "Nessuna chiave «%s» nello schema «%s» come specificato nel file di override "
 "«%s»; override ignorato per questa chiave."
 
+# override...
 #: gio/glib-compile-schemas.c:1971
 #, c-format
 msgid ""
@@ -2913,7 +2940,6 @@ msgstr "È necessario indicare esattamente un nome di directory"
 msgid "No schema files found: doing nothing."
 msgstr "Nessun file schema trovato: nessuna azione eseguita."
 
-# visto che se lo rimuovo esisto, proviamo con preesistente
 #: gio/glib-compile-schemas.c:2271
 msgid "No schema files found: removed existing output file."
 msgstr "Nessun file schema trovato: rimosso il file di output preesistente."
@@ -2951,7 +2977,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Impossibile rinominare il file, il nome di file esiste già"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Nome di file non valido"
 
@@ -3030,135 +3056,131 @@ msgstr "Il file system non supporta i collegamenti simbolici"
 msgid "Error making symbolic link %s: %s"
 msgstr "Errore nel creare il collegamento simbolico %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Collegamenti simbolici non supportati"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Errore nello spostare il file %s: %s"
 
 # ma che senso ha???
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Impossibile spostare la directory sopra la directory"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Creazione del file backup non riuscita"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Errore nel rimuovere il file destinazione: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Spostamento tra oggetti mount non supportato"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Impossibile determinare l'utilizzo del disco di %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Il valore dell'attributo deve essere non-NULL"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Tipo di attributo non valido (attesa stringa)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Nome di attributo esteso non valido"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Errore nell'impostare l'attributo esteso «%s»: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (codifica non valida)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Errore nel recuperare informazioni per il file «%s»: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Errore nel recuperare informazioni per il descrittore di file: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Tipo di attributo non valido (atteso unit32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Tipo di attributo non valido (atteso uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Tipo di attributo non valido (attesa stringa di byte)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Impossibile impostare i permessi sui collegamenti simbolici"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Errore nell'impostare i permessi: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Errore nell'impostare il proprietario: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "il collegamento simbolico deve essere non-NULL"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Errore nell'impostare il collegamento simbolico: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Errore nell'impostare il collegamento simbolico: il file non è un "
 "collegamento"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Errore nell'impostare l'ora di modifica o accesso: %s"
 
 # lasciata minuscola come per precedente messaggio
 #   "symlink must be non-NULL"
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "il contesto SELinux deve essere non-NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Errore nell'impostare il contesto SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux non è abilitato su questo sistema"
 
 # %s è l'attributo
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Impostazione dell'attributo %s non supportata"
@@ -3181,7 +3203,7 @@ msgstr "Errore nel posizionarsi all'interno del file: %s"
 msgid "Error closing file: %s"
 msgstr "Errore nel chiudere il file: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Impossibile trovare il tipo di monitor predefinito per file locali"
 
@@ -3330,11 +3352,11 @@ msgstr ""
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Il nome host «%s» contiene «[» ma non «]»"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Rete irraggiungibile"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Host irraggiungibile"
 
@@ -3375,18 +3397,18 @@ msgstr "Somma dei vettori troppo grande passata a %s"
 msgid "Source stream is already closed"
 msgstr "Lo stream sorgente è già chiuso"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Errore nel risolvere «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s non è implementata"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Dominio non valido"
 
@@ -3762,175 +3784,175 @@ msgstr "Fornito un nome di schema vuoto\n"
 msgid "No such key “%s”\n"
 msgstr "Chiave «%s» inesistente\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Socket non valido, non inizializzato"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Socket non valido, inizializzazione non riuscita a causa di: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Il socket è già chiuso"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "I/O sul socket scaduto"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creazione di GSocket da FD: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Impossibile creare il socket: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "È stata specificata una famiglia sconosciuta"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "È stato specificato un protocollo sconosciuto"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Impossibile utilizzare operazioni datagram su un socket non-datagram."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Impossibile utilizzare operazioni datagram su un socket con impostato un "
 "timeout."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "impossibile ottenere l'indirizzo locale: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "impossibile ottenere l'indirizzo remoto: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "impossibile restare in ascolto: %s"
 
 # oppure "nell'eseguire il binding" ??
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Errore nel legarsi all'indirizzo: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Errore nell'eseguire il bind all'indirizzo %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Errore nel fare il join al gruppo multicast: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Errore nel lasciare il gruppo multicast: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Nessun supporto per multicast source-specific"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Famiglia socket non supportato"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific non è un indirizzo IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Nome interfaccia troppo lungo"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interfaccia non trovata: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Nessun supporto per multicast IPv4 source-specific"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Nessun supporto per multicast IPv6 source-specific"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Errore nell'accettare la connessione: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Connessione in corso"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Impossibile ottenere l'errore in sospeso: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Errore nel ricevere i dati: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Errore nell'inviare i dati: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Impossibile arrestare il socket: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Errore nel chiudere il socket: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "In attesa della condizione del socket: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Errore nell'inviare il messaggio: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage non supportato su Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Errore nel ricevere il messaggio: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Impossibile reggere le credenziali del socket: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials non implementata per questo SO"
 
@@ -3948,12 +3970,12 @@ msgstr "Impossibile connettersi a %s: "
 msgid "Could not connect: "
 msgstr "Impossibile connettersi: "
 
-#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1764
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Errore sconosciuto nella connessione"
 
 # FIXME: il tentativo o la connessione?
-#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1672
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "L'esecuzione del proxy su una connessione non-TCP non è supportato."
 
@@ -4198,7 +4220,7 @@ msgstr "Errore nel leggere dal descrittore di file: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Errore nel chiudere il descrittore di file: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "File system radice"
 
@@ -4288,57 +4310,57 @@ msgstr "Argomenti errati\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Attributo «%s» inatteso per l'elemento «%s»"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Attributo «%s» dell'elemento «%s» non trovato"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Tag «%s» inatteso, atteso il tag «%s»"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Tag «%s» inatteso all'interno di «%s»"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Data/Ora «%s» non valida nel file di segnalibro"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 "Non è stato trovato alcun file di segnalibri valido nelle directory dei dati"
 
 # usate le «» perché forse questa compare nella UI
 #
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Esiste già un segnalibro per l'URI «%s»"
 
 # vedi sopra per «»
 #
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Non è stato trovato alcun segnalibro per l'URI «%s»"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Non risulta definito alcun tipo MIME nel segnalibro per l'URI «%s»"
@@ -4346,22 +4368,22 @@ msgstr "Non risulta definito alcun tipo MIME nel segnalibro per l'URI «%s»"
 # o private è il nome della flag (che quindi diventa opzione)?
 # cercare nel codice... -Luca
 #
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Non è stata definita alcuna flag privata nel segnalibro per l'URI «%s»"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Non risulta impostato alcun gruppo nel segnalibro per l'URI «%s»"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Nessuna applicazione di nome «%s» ha registrato un segnalibro per «%s»"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Espansione della riga exec «%s» con l'URI «%s» non riuscita"
@@ -4370,8 +4392,8 @@ msgstr "Espansione della riga exec «%s» con l'URI «%s» non riuscita"
 msgid "Unrepresentable character in conversion input"
 msgstr "Carattere non rappresentabile nell'ingresso per la conversione"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Sequenza di caratteri parziale al termine dei dati in ingresso"
 
@@ -4925,24 +4947,24 @@ msgstr "Il modello «%s» non contiene XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Lettura del collegamento simbolico «%s» non riuscita: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Impossibile aprire il convertitore da «%s» a «%s»: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Impossibile leggere i dati grezzi in g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "Sono rimasti dei dati non convertiti nel buffer di lettura"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "Il canale termina in un carattere parziale"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Impossibile eseguire una lettura grezza in g_io_channel_read_to_end"
 
@@ -4985,8 +5007,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Il file chiavi contiene la codifica non supportata «%s»"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Il file chiavi non presenta il gruppo «%s»"
@@ -5025,31 +5047,31 @@ msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "La chiave «%s» nel gruppo «%s» presenta il valore «%s» mentre era atteso %s"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Il file chiavi contiene un carattere di escape alla fine della riga"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Il file chiavi contiene la sequenza di escape non valida «%s»"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Impossibile interpretare il valore «%s» come un numero."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Il valore intero «%s» è fuori dall'intervallo"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Impossibile interpretare il valore «%s» come un numero float."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Impossibile interpretare il valore «%s» come un booleano."
@@ -5141,11 +5163,11 @@ msgstr ""
 "utilizzata una \"e commerciale\" senza l'intento di iniziare una entità — "
 "usare &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Il documento deve iniziare con un elemento (es. <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5154,7 +5176,7 @@ msgstr ""
 "«%s» non è un carattere valido dopo un carattere «<»; non può dare inizio a "
 "un nome di elemento"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5163,7 +5185,12 @@ msgstr ""
 "Carattere «%s» spaiato, era atteso un carattere «>» per terminare il tag "
 "dell'elemento-vuoto «%s»"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Troppi attributi nell'elemento «%s»"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5171,7 +5198,7 @@ msgstr ""
 "Carattere «%s» spaiato, era atteso un carattere «=» dopo il nome "
 "dell'attributo «%s» dell'elemento «%s»"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5182,7 +5209,7 @@ msgstr ""
 "il tag di partenza dell'elemento «%s», oppure opzionalmente un attributo. "
 "Probabilmente è stato usato un carattere non valido in un nome di attributo"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5192,7 +5219,7 @@ msgstr ""
 "segno di uguale per attribuire un valore all'attributo «%s» dell'elemento "
 "«%s»"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5201,7 +5228,7 @@ msgstr ""
 "«%s» non è un carattere valido dopo i caratteri «</»; «%s» non può dare "
 "inizio a un nome di elemento"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5210,29 +5237,29 @@ msgstr ""
 "«%s» non è un carattere valido dopo la chiusura del nome dell'elemento «%s»; "
 "il carattere permesso è «>»"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr ""
 "È stato chiuso l'elemento «%s», nessun elemento risulta correntemente aperto"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr ""
 "È stato chiuso l'elemento «%s», ma l'elemento correntemente aperto è «%s»"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Il documento era vuoto oppure conteneva unicamente spazi"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "Il documento è terminato in modo inatteso subito dopo una parentesi angolare "
 "d'apertura «<»"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5241,7 +5268,7 @@ msgstr ""
 "Il documento è terminato in modo inatteso con elementi ancora aperti — «%s» "
 "era l'ultimo elemento aperto"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5250,23 +5277,23 @@ msgstr ""
 "Il documento è terminato in modo inatteso, mancando la parentesi angolare di "
 "chiusura per il tag <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr ""
 "Il documento è terminato in modo inatteso all'interno di un nome di elemento"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr ""
 "Il documento è terminato in modo inatteso all'interno di un nome di attributo"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "Il documento è terminato in modo inatteso all'interno di un tag di apertura "
 "elemento."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5274,20 +5301,20 @@ msgstr ""
 "Il documento è terminato in modo inatteso dopo il segno di uguale che segue "
 "un nome di attributo; nessun valore per l'attributo"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr ""
 "Il documento è terminato in modo inatteso all'interno di un valore di "
 "attributo"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Il documento è terminato in modo inatteso all'interno del tag di chiusura "
 "per l'elemento «%s»"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
@@ -5295,7 +5322,7 @@ msgstr ""
 "per un elemento non aperto"
 
 # di elaborazione? in elaborazione ?
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Il documento è terminato in modo inatteso all'interno di un commento o "
@@ -5355,7 +5382,7 @@ msgstr "Errore nell'analizzare l'opzione %s"
 msgid "Missing argument for %s"
 msgstr "Argomento mancante per %s"
 
-#: glib/goption.c:2187
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opzione %s sconosciuta"
@@ -5783,86 +5810,85 @@ msgid "Failed to read data from child process (%s)"
 msgstr "Lettura dei dati dal processo figlio non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Errore inatteso in select() nel leggere i dati da un processo figlio (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Errore inatteso nel leggere i dati da un processo figlio (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Errore inatteso in waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Processo figlio uscito con codice %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Processo figlio ucciso dal segnale %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Processo figlio fermato dal segnale %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Il processo figlio è uscito in modo anomalo"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Lettura dalla pipe figlia non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Esecuzione del processo figlio «%s» non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Esecuzione di fork non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Cambio della directory in «%s» non riuscito (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Esecuzione del processo figlio «%s» non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Ridirezione dell'output o input del processo figlio non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Esecuzione del fork per processo figlio non riuscita (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Errore sconosciuto nell'eseguire il processo figlio «%s»"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5920,194 +5946,194 @@ msgstr ""
 "Errore inatteso in g_io_channel_win32_poll() nel leggere i dati da un "
 "processo figlio"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "La stringa vuota non è un numero"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» non è un numero con segno"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Numero «%s» oltre i limiti [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» non è un numero senza segno"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Allocazione della memoria non riuscita"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Carattere fuori dall'intervallo per UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Sequenza non valida in ingresso per la conversione"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Carattere fuori dall'intervallo per UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2326
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2328
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2330
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2332
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2334
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2336
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2340
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2342
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2344
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2346
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2360
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2374
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2412 glib/gutils.c:2529
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2416
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6115,7 +6141,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2483
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6123,7 +6149,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2488
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6135,32 +6161,32 @@ msgstr[1] "%s bit"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2542
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f kB"
 
-#: glib/gutils.c:2547
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2552
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2557
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2562
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2567
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 6f24662..48ec083 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,12 +1,12 @@
 # Japanese translation of glib message catalog.
-# Copyright (C) 2001-2012 glib's COPYRIGHT HOLDER
+# Copyright (C) 2001-2013, 2020 glib's COPYRIGHT HOLDER
 # Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2001-2002, 2009-2010.
 # KAMAGASAKO Masatoshi <emerald@gnome.gr.jp>, 2003.
 # Takeshi AIHANA <takeshi.aihana@gmail.com>, 2004-2009.
 # Ryoichi INAGAKI <ryo1@bc.wakwak.com>, 2004.
-# Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2010.
 # OKANO Takayoshi <kano@na.rim.or.jp>, 2011.
 # Jiro Matsuzawa <jmatsuzawa@gnome.org>, 2012-2013.
+# sicklylife <translation@sicklylife.jp>, 2020.
 #
 # 訳語:
 #   be malformed: 不正です
 msgid ""
 msgstr ""
 "Project-Id-Version: glib glib-2-28\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2013-08-22 14:15+0000\n"
-"PO-Revision-Date: 2013-08-16 22:25+0900\n"
-"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
+"POT-Creation-Date: 2020-02-07 20:17+0000\n"
+"PO-Revision-Date: 2020-02-08 20:00+0900\n"
+"Last-Translator: sicklylife <translation@sicklylife.jp>\n"
 "Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
@@ -37,618 +37,966 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../gio/gbufferedinputstream.c:424 ../gio/gbufferedinputstream.c:503
-#: ../gio/ginputstream.c:174 ../gio/ginputstream.c:366
-#: ../gio/ginputstream.c:604 ../gio/ginputstream.c:822
-#: ../gio/goutputstream.c:192 ../gio/goutputstream.c:721
-#: ../gio/gpollableinputstream.c:207 ../gio/gpollableoutputstream.c:208
+#: gio/gapplication.c:500
+msgid "GApplication options"
+msgstr "GApplication のオプション"
+
+#: gio/gapplication.c:500
+msgid "Show GApplication options"
+msgstr "GApplication のオプションを表示する"
+
+#: gio/gapplication.c:545
+msgid "Enter GApplication service mode (use from D-Bus service files)"
+msgstr "GApplication サービスモードに入る (D-Bus サービスファイル使用)"
+
+#: gio/gapplication.c:557
+msgid "Override the application’s ID"
+msgstr "アプリケーションの ID をオーバーライドする"
+
+#: gio/gapplication.c:569
+msgid "Replace the running instance"
+msgstr "実行中のインスタンスを置き換える"
+
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
+msgid "Print help"
+msgstr "ヘルプを表示する"
+
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
+msgid "[COMMAND]"
+msgstr "[コマンド]"
+
+#: gio/gapplication-tool.c:49 gio/gio-tool.c:228
+msgid "Print version"
+msgstr "バージョンを表示する"
+
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
+msgid "Print version information and exit"
+msgstr "バージョン情報を表示して終了する"
+
+#: gio/gapplication-tool.c:52
+msgid "List applications"
+msgstr "アプリケーション一覧を表示する"
+
+#: gio/gapplication-tool.c:53
+msgid "List the installed D-Bus activatable applications (by .desktop files)"
+msgstr ""
+".desktop ファイルがあり D-Bus を利用するインストール済みアプリケーションの一"
+"覧を表示する"
+
+#: gio/gapplication-tool.c:55
+msgid "Launch an application"
+msgstr "アプリケーションを起動する"
+
+#: gio/gapplication-tool.c:56
+msgid "Launch the application (with optional files to open)"
+msgstr "アプリケーションを起動する (開くファイルを指定)"
+
+#: gio/gapplication-tool.c:57
+msgid "APPID [FILE…]"
+msgstr "APPID [ファイル…]"
+
+#: gio/gapplication-tool.c:59
+msgid "Activate an action"
+msgstr ""
+
+#: gio/gapplication-tool.c:60
+msgid "Invoke an action on the application"
+msgstr ""
+
+#: gio/gapplication-tool.c:61
+msgid "APPID ACTION [PARAMETER]"
+msgstr ""
+
+#: gio/gapplication-tool.c:63
+msgid "List available actions"
+msgstr ""
+
+#: gio/gapplication-tool.c:64
+msgid "List static actions for an application (from .desktop file)"
+msgstr ""
+
+#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
+msgid "APPID"
+msgstr ""
+
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
+#: gio/gio-tool.c:224
+msgid "COMMAND"
+msgstr ""
+
+#: gio/gapplication-tool.c:70
+msgid "The command to print detailed help for"
+msgstr "詳細なヘルプを表示するコマンド"
+
+#: gio/gapplication-tool.c:71
+msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
+msgstr "D-Bus 形式のアプリケーション識別子 (例: org.example.viewer)"
+
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
+msgid "FILE"
+msgstr ""
+
+#: gio/gapplication-tool.c:72
+msgid "Optional relative or absolute filenames, or URIs to open"
+msgstr "開く URI またはファイルの相対/絶対パス"
+
+#: gio/gapplication-tool.c:73
+msgid "ACTION"
+msgstr ""
+
+#: gio/gapplication-tool.c:73
+msgid "The action name to invoke"
+msgstr "呼び出すアクション名"
+
+#: gio/gapplication-tool.c:74
+msgid "PARAMETER"
+msgstr ""
+
+#: gio/gapplication-tool.c:74
+msgid "Optional parameter to the action invocation, in GVariant format"
+msgstr "アクションを呼び出す追加のパラメーター (GVariant 形式)"
+
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
+#, c-format
+msgid ""
+"Unknown command %s\n"
+"\n"
+msgstr ""
+"%s は不明なコマンドです\n"
+"\n"
+
+#: gio/gapplication-tool.c:101
+msgid "Usage:\n"
+msgstr "用法:\n"
+
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
+msgid "Arguments:\n"
+msgstr "引数:\n"
+
+#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
+msgid "[ARGS…]"
+msgstr "[引数…]"
+
+#: gio/gapplication-tool.c:134
+#, c-format
+msgid "Commands:\n"
+msgstr "コマンド:\n"
+
+#. Translators: do not translate 'help', but please translate 'COMMAND'.
+#: gio/gapplication-tool.c:146
+#, c-format
+msgid ""
+"Use “%s help COMMAND” to get detailed help.\n"
+"\n"
+msgstr ""
+"“%s help COMMAND”で詳細なヘルプを表示します。\n"
+"\n"
+
+#: gio/gapplication-tool.c:165
+#, c-format
+msgid ""
+"%s command requires an application id to directly follow\n"
+"\n"
+msgstr ""
+"%s コマンドはアプリケーション ID を直に続けて指定する必要があります\n"
+"\n"
+
+#: gio/gapplication-tool.c:171
+#, c-format
+msgid "invalid application id: “%s”\n"
+msgstr "不正なアプリケーション ID です: “%s”\n"
+
+#. Translators: %s is replaced with a command name like 'list-actions'
+#: gio/gapplication-tool.c:182
+#, c-format
+msgid ""
+"“%s” takes no arguments\n"
+"\n"
+msgstr ""
+"“%s”は引数を取りません\n"
+"\n"
+
+#: gio/gapplication-tool.c:266
+#, c-format
+msgid "unable to connect to D-Bus: %s\n"
+msgstr "D-Bus に接続できません: %s\n"
+
+#: gio/gapplication-tool.c:286
+#, c-format
+msgid "error sending %s message to application: %s\n"
+msgstr ""
+"%s のメッセージをアプリケーションへ送信するときにエラーが発生しました: %s\n"
+
+#: gio/gapplication-tool.c:317
+msgid "action name must be given after application id\n"
+msgstr "アクション名はアプリケーション ID に続けて指定する必要があります\n"
+
+#: gio/gapplication-tool.c:325
+#, c-format
+msgid ""
+"invalid action name: “%s”\n"
+"action names must consist of only alphanumerics, “-” and “.”\n"
+msgstr ""
+"不正なアクション名です: “%s”\n"
+"アクション名は英数字と“-”、“.”のみである必要があります\n"
+
+#: gio/gapplication-tool.c:344
+#, c-format
+msgid "error parsing action parameter: %s\n"
+msgstr "アクションのパラメーター解析中にエラーが発生しました: %s\n"
+
+#: gio/gapplication-tool.c:356
+msgid "actions accept a maximum of one parameter\n"
+msgstr "アクションはパラメーターを一つ受け取ります\n"
+
+#: gio/gapplication-tool.c:411
+msgid "list-actions command takes only the application id"
+msgstr "list-actions コマンドはアプリケーション ID しか受け取りません"
+
+#: gio/gapplication-tool.c:421
+#, c-format
+msgid "unable to find desktop file for application %s\n"
+msgstr "アプリケーション %s のデスクトップファイルが見つかりません\n"
+
+#: gio/gapplication-tool.c:466
+#, c-format
+msgid ""
+"unrecognised command: %s\n"
+"\n"
+msgstr ""
+"認識できないコマンドです: %s\n"
+"\n"
+
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
+#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "%s に引き渡した値が大きすぎます"
 
-#: ../gio/gbufferedinputstream.c:896 ../gio/gbufferedoutputstream.c:577
-#: ../gio/gdataoutputstream.c:564
-#, fuzzy
-#| msgid "Seek not supported on stream"
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575
+#: gio/gdataoutputstream.c:562
 msgid "Seek not supported on base stream"
-msgstr "ã\82¹ã\83\88ã\83ªã\83¼ã\83 ä¸\8aのシークはサポートしていません"
+msgstr "ã\83\99ã\83¼ã\82¹ã\82¹ã\83\88ã\83ªã\83¼ã\83 のシークはサポートしていません"
 
-#: ../gio/gbufferedinputstream.c:942
-#, fuzzy
-#| msgid "Cannot truncate GMemoryInputStream"
+#: gio/gbufferedinputstream.c:937
 msgid "Cannot truncate GBufferedInputStream"
-msgstr "GMemoryInputStream を切りつめることはできません"
+msgstr "GBufferedInputStream を切りつめることはできません"
 
-#: ../gio/gbufferedinputstream.c:987 ../gio/ginputstream.c:1012
-#: ../gio/giostream.c:280 ../gio/goutputstream.c:1323
+#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/goutputstream.c:2198
 msgid "Stream is already closed"
-msgstr "既にストリームは閉じています"
+msgstr "ストリームはすでに閉じています"
 
-#: ../gio/gbufferedoutputstream.c:614 ../gio/gdataoutputstream.c:594
-#, fuzzy
-#| msgid "Truncate not supported on stream"
+#: gio/gbufferedoutputstream.c:612 gio/gdataoutputstream.c:592
 msgid "Truncate not supported on base stream"
-msgstr "ã\82¹ã\83\88ã\83ªã\83¼ã\83 ä¸\8aã\81§の切りつめはサポートしていません"
+msgstr "ã\83\99ã\83¼ã\82¹ã\82¹ã\83\88ã\83ªã\83¼ã\83 の切りつめはサポートしていません"
 
-#: ../gio/gcancellable.c:314 ../gio/gdbusconnection.c:1897
-#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421
-#: ../gio/glocalfile.c:2177 ../gio/gsimpleasyncresult.c:843
-#: ../gio/gsimpleasyncresult.c:869
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
+#: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
 msgstr "操作がキャンセルされました"
 
-#: ../gio/gcharsetconverter.c:262
+#: gio/gcharsetconverter.c:260
 msgid "Invalid object, not initialized"
-msgstr "無効なオブジェクトです。初期化されていません"
+msgstr "初期化していない不正なオブジェクトです"
 
-#: ../gio/gcharsetconverter.c:283 ../gio/gcharsetconverter.c:311
+#: gio/gcharsetconverter.c:281 gio/gcharsetconverter.c:309
 msgid "Incomplete multibyte sequence in input"
 msgstr "入力に不完全なバイトの並びがあります"
 
-#: ../gio/gcharsetconverter.c:317 ../gio/gcharsetconverter.c:326
+#: gio/gcharsetconverter.c:315 gio/gcharsetconverter.c:324
 msgid "Not enough space in destination"
-msgstr "å¤\89æ\8f\9bå\85\88ã\81«å\85\85分な空きがありません"
+msgstr "å¤\89æ\8f\9bå\85\88ã\81«å\8d\81分な空きがありません"
 
-#: ../gio/gcharsetconverter.c:344 ../gio/gdatainputstream.c:849
-#: ../gio/gdatainputstream.c:1259 ../glib/gconvert.c:467
-#: ../glib/gconvert.c:859 ../glib/giochannel.c:1586 ../glib/giochannel.c:1628
-#: ../glib/giochannel.c:2472 ../glib/gutf8.c:833 ../glib/gutf8.c:1284
+#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "変換する入力に無効なバイトの並びがあります"
 
-#: ../gio/gcharsetconverter.c:349 ../glib/gconvert.c:475
-#: ../glib/gconvert.c:784 ../glib/giochannel.c:1593 ../glib/giochannel.c:2484
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
-msgstr "変換中にエラー: %s"
+msgstr "変換中にエラーが発生しました: %s"
 
-#: ../gio/gcharsetconverter.c:446 ../gio/gsocket.c:993
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
-msgstr "ã\82­ã\83£ã\83³ã\82»ã\83«å\8f¯è\83½ã\81ªå\88\9dæ\9c\9få\8c\96ã\81¯ã\82µã\83\9dã\83¼ã\83\88ã\81\95ã\82\8cていません"
+msgstr "ã\82­ã\83£ã\83³ã\82»ã\83«å\8f¯è\83½ã\81ªå\88\9dæ\9c\9få\8c\96ã\81¯ã\82µã\83\9dã\83¼ã\83\88ã\81\97ていません"
 
-#: ../gio/gcharsetconverter.c:457 ../glib/gconvert.c:347
-#: ../glib/giochannel.c:1414
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
-msgid "Conversion from character set '%s' to '%s' is not supported"
-msgstr "'%s' から '%s' という文字集合への変換はサポートしていません"
+msgid "Conversion from character set “%s” to “%s” is not supported"
+msgstr "“%s”から“%s”という文字集合への変換はサポートしていません"
 
-#: ../gio/gcharsetconverter.c:461 ../glib/gconvert.c:351
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, c-format
-msgid "Could not open converter from '%s' to '%s'"
-msgstr "'%s' から '%s' への変換処理を開けませんでした"
+msgid "Could not open converter from “%s” to “%s”"
+msgstr "“%s”から“%s”への変換処理を開けませんでした"
 
-#: ../gio/gcontenttype.c:335
+#: gio/gcontenttype.c:452
 #, c-format
 msgid "%s type"
 msgstr "%s (情報)"
 
-#: ../gio/gcontenttype-win32.c:162
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "不明な種類"
 
-#: ../gio/gcontenttype-win32.c:163
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
 msgstr "%s (ファイルの種類)"
 
-#: ../gio/gcredentials.c:264 ../gio/gcredentials.c:528
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials が不正なデータを含んでいます"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
-msgstr "GCredentials はこのOSでは実装されていません"
+msgstr "この OS では GCredentials は実装されていません"
 
-#: ../gio/gcredentials.c:438
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
-msgstr "ã\81\93ã\81®ã\83\97ã\83©ã\83\83ã\83\88ã\83\95ã\82©ã\83¼ã\83 ã\81§ã\81¯ã\80\80GCredentials ã\81¯ã\82µã\83\9dã\83¼ã\83\88ã\81\95ã\82\8cていません"
+msgstr "ã\81\93ã\81®ã\83\97ã\83©ã\83\83ã\83\88ã\83\95ã\82©ã\83¼ã\83 ã\81¯ GCredentials ã\82\92ã\82µã\83\9dã\83¼ã\83\88ã\81\97ていません"
 
-#: ../gio/gcredentials.c:480
-#, fuzzy
-#| msgid "GCredentials is not implemented on this OS"
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
-msgstr "GCredentials ã\81¯ã\81\93ã\81®OSã\81§ã\81¯å®\9fè£\85ã\81\95ã\82\8cã\81¦いません"
+msgstr "GCredentials ã\81\8cã\81\93ã\81® OS ã\81®ã\83\97ã\83­ã\82»ã\82¹ ID ã\82\92å\90«ã\82\93ã\81§いません"
 
-#: ../gio/gdatainputstream.c:306
+#: gio/gcredentials.c:603
+msgid "Credentials spoofing is not possible on this OS"
+msgstr "この OS では資格情報のなりすましはできません"
+
+#: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
 msgstr "想定していたよりも早くストリームの最後に到達しました"
 
-#: ../gio/gdbusaddress.c:150 ../gio/gdbusaddress.c:238
-#: ../gio/gdbusaddress.c:319
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
-msgid "Unsupported key '%s' in address entry '%s'"
-msgstr "サポートしていないキー '%s' がアドレスエントリ '%s' にあります"
+msgid "Unsupported key “%s” in address entry “%s”"
+msgstr "サポートしていないキー“%s”がアドレスエントリー“%s”にあります"
 
-#: ../gio/gdbusaddress.c:177
+#: gio/gdbusaddress.c:171
 #, c-format
-msgid "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
-msgstr "アドレス '%s' は正しくありません (パス、tmpdir、または抽象キーのいずれか一つが必要)"
+msgid "Meaningless key/value pair combination in address entry “%s”"
+msgstr "アドレスエントリー“%s”に意味のないキー/値のペアの組み合わせがあります"
 
-#: ../gio/gdbusaddress.c:190
+#: gio/gdbusaddress.c:180
 #, c-format
-msgid "Meaningless key/value pair combination in address entry '%s'"
-msgstr "アドレスエントリ '%s' に意味の無いキー/値のペアの組み合わせがあります"
+msgid ""
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
+msgstr ""
+"アドレス“%s”は正しくありません (パス、dir、tmpdir、抽象キーのいずれか一つが必"
+"要)"
 
-#: ../gio/gdbusaddress.c:253 ../gio/gdbusaddress.c:334
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address '%s' - the port attribute is malformed"
-msgstr "アドレス '%s' 中にエラー - port 属性が不正です"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "アドレス“%s”にエラーがあります — “%s”属性が不正です"
 
-#: ../gio/gdbusaddress.c:264 ../gio/gdbusaddress.c:345
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
-msgid "Error in address '%s' - the family attribute is malformed"
-msgstr "アドレス '%s' 中にエラー - family 属性が不正です"
+msgid "Unknown or unsupported transport “%s” for address “%s”"
+msgstr "アドレス“%2$s”に不明またはサポートしていないトランスポート“%1$s”"
 
-#: ../gio/gdbusaddress.c:454
-#, fuzzy, c-format
-#| msgid "Address element '%s', does not contain a colon (:)"
-msgid "Address element '%s' does not contain a colon (:)"
-msgstr "アドレス要素 '%s' がコロン ':' を含んでいません"
+#: gio/gdbusaddress.c:461
+#, c-format
+msgid "Address element “%s” does not contain a colon (:)"
+msgstr "アドレス要素“%s”がコロン (:) を含んでいません"
 
-#: ../gio/gdbusaddress.c:475
-#, fuzzy, c-format
-#| msgid "Key/Value pair %d, '%s', in address element '%s', does not contain an equal sign"
-msgid "Key/Value pair %d, '%s', in address element '%s' does not contain an equal sign"
-msgstr "アドレス要素 '%3$s'中の %1$d 番目のキー/値のペア '%2$s' が等号記号を含んでいません"
+#: gio/gdbusaddress.c:470
+#, c-format
+msgid "Transport name in address element “%s” must not be empty"
+msgstr "アドレス要素“%s”のトランスポート名は空にできません"
 
-#: ../gio/gdbusaddress.c:489
+#: gio/gdbusaddress.c:491
 #, c-format
-msgid "Error unescaping key or value in Key/Value pair %d, '%s', in address element '%s'"
-msgstr "アドレス要素 '%3$s' 中の %1$d 番目のキー/値のペア '%2$s' 中のキーまたは値をアンエスケープする際にエラー"
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
+"sign"
+msgstr ""
+"アドレス要素“%3$s”の %1$d 番目のキー/値のペア“%2$s”が等号記号を含んでいません"
 
-#: ../gio/gdbusaddress.c:567
+#: gio/gdbusaddress.c:502
 #, c-format
-msgid "Error in address '%s' - the unix transport requires exactly one of the keys 'path' or 'abstract' to be set"
-msgstr "アドレス '%s' 中にエラー - UNIX トランスポートはキー 'path' または 'abstract' のうち一つが設定されている必要があります"
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr ""
+"アドレス要素“%3$s”の %1$d 番目のキー/値のペア“%2$s”は空のキーを持てません"
 
-#: ../gio/gdbusaddress.c:603
+#: gio/gdbusaddress.c:516
 #, c-format
-msgid "Error in address '%s' - the host attribute is missing or malformed"
-msgstr "アドレス '%s' 中にエラー - host 属性が無いか不正です"
+msgid ""
+"Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
+"“%s”"
+msgstr ""
+"アドレス要素“%3$s”の %1$d 番目のキー/値のペア“%2$s”のキーまたは値のアンエス"
+"ケープ中にエラーが発生しました"
 
-#: ../gio/gdbusaddress.c:617
+#: gio/gdbusaddress.c:588
 #, c-format
-msgid "Error in address '%s' - the port attribute is missing or malformed"
-msgstr "アドレス '%s' 中にエラー - port 属性が無いか不正です"
+msgid ""
+"Error in address “%s” — the unix transport requires exactly one of the keys "
+"“path” or “abstract” to be set"
+msgstr ""
+"アドレス“%s”にエラーがあります — UNIX トランスポートはキー“path”また"
+"は“abstract”のどちらかが設定されている必要があります"
 
-#: ../gio/gdbusaddress.c:631
+#: gio/gdbusaddress.c:624
 #, c-format
-msgid "Error in address '%s' - the noncefile attribute is missing or malformed"
-msgstr "アドレス '%s' 中にエラー - noncefile 属性が無いか不正です"
+msgid "Error in address “%s” — the host attribute is missing or malformed"
+msgstr "アドレス“%s”にエラーがあります — host 属性がないか不正です"
 
-#: ../gio/gdbusaddress.c:652
-msgid "Error auto-launching: "
-msgstr "自動起動時にエラー: "
+#: gio/gdbusaddress.c:638
+#, c-format
+msgid "Error in address “%s” — the port attribute is missing or malformed"
+msgstr "アドレス“%s”にエラーがあります — port 属性がないか不正です"
 
-#: ../gio/gdbusaddress.c:660
+#: gio/gdbusaddress.c:652
 #, c-format
-msgid "Unknown or unsupported transport '%s' for address '%s'"
-msgstr "アドレス '%2$s' に不明なあるいはサポートしていないトランスポート '%1$s'"
+msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
+msgstr "アドレス“%s”にエラーがあります — noncefile 属性がないか不正です"
+
+#: gio/gdbusaddress.c:673
+msgid "Error auto-launching: "
+msgstr "自動起動中にエラーが発生しました: "
 
-#: ../gio/gdbusaddress.c:696
+#: gio/gdbusaddress.c:726
 #, c-format
-msgid "Error opening nonce file '%s': %s"
-msgstr "nonce ファイル '%s' をオープンする際にエラー: %s"
+msgid "Error opening nonce file “%s”: %s"
+msgstr "nonce ファイル“%s”を開くときにエラーが発生しました: %s"
 
-#: ../gio/gdbusaddress.c:714
+#: gio/gdbusaddress.c:745
 #, c-format
-msgid "Error reading from nonce file '%s': %s"
-msgstr "nonce ファイル '%s' の読み出し中にエラー: %s"
+msgid "Error reading from nonce file “%s”: %s"
+msgstr "nonce ファイル“%s”の読み取り中にエラーが発生しました: %s"
 
-#: ../gio/gdbusaddress.c:723
+#: gio/gdbusaddress.c:754
 #, c-format
-msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
-msgstr "nonce ファイル '%s' の読み出し中にエラー。16 バイトを期待しましたが、%d バイトでした"
+msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
+msgstr ""
+"nonce ファイル“%s”の読み取り中にエラーが発生しました (16 バイトを期待しました"
+"が %d バイトでした)"
 
-#: ../gio/gdbusaddress.c:741
+#: gio/gdbusaddress.c:772
 #, c-format
-msgid "Error writing contents of nonce file '%s' to stream:"
-msgstr "nonce ファイル '%s' の内容をストリームに書き込む際にエラー:"
+msgid "Error writing contents of nonce file “%s” to stream:"
+msgstr ""
+"nonce ファイル“%s”の内容をストリームに書き込むときにエラーが発生しました:"
 
-#: ../gio/gdbusaddress.c:960
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "与えられたアドレスが空です"
 
-#: ../gio/gdbusaddress.c:1030
-#, fuzzy, c-format
-#| msgid "Cannot spawn a message bus without a machine-id: "
+#: gio/gdbusaddress.c:1094
+#, c-format
 msgid "Cannot spawn a message bus when setuid"
-msgstr "machine-id 無でメッセージバスを起動できません: "
+msgstr "setuid 時にメッセージバスを spawn できません"
 
-#: ../gio/gdbusaddress.c:1037
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
-msgstr "machine-id 無でメッセージバスを起動できません: "
+msgstr "machine-id なしでメッセージバスを spawn できません: "
 
-#: ../gio/gdbusaddress.c:1079
+#: gio/gdbusaddress.c:1108
 #, c-format
-msgid "Error spawning command line '%s': "
-msgstr "コマンドライン '%s' の spawn 時にエラー: "
+msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
+msgstr "X11 $DISPLAY なしで D-Bus を自動起動できません"
 
-#: ../gio/gdbusaddress.c:1296
+#: gio/gdbusaddress.c:1150
 #, c-format
-msgid "(Type any character to close this window)\n"
-msgstr ""
-
-#: ../gio/gdbusaddress.c:1429
-#, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr ""
+msgid "Error spawning command line “%s”: "
+msgstr "コマンドライン“%s”の spawn 中にエラーが発生しました: "
 
-#: ../gio/gdbusaddress.c:1450
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
-msgstr "セッションバスのアドレスを決定できません (このOSでは実装されていません)"
+msgstr ""
+"セッションバスのアドレスを決定できません (この OS では実装されていません)"
 
-#: ../gio/gdbusaddress.c:1549 ../gio/gdbusconnection.c:6908
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
-msgid "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable - unknown value '%s'"
-msgstr "DBUS_STARTER_BUS_TYPE 環境変数からバスアドレスを決定できません - 不明な値 '%s'"
+msgid ""
+"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
+"— unknown value “%s”"
+msgstr ""
+"DBUS_STARTER_BUS_TYPE 環境変数からバスアドレスを決定できません — “%s”は不明な"
+"値です"
 
-#: ../gio/gdbusaddress.c:1558 ../gio/gdbusconnection.c:6917
-msgid "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment variable is not set"
-msgstr "DBUS_STARTER_BUS_TYPE 環境変数が設定されていないため、バスアドレスを決定できません"
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
+msgid ""
+"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
+"variable is not set"
+msgstr ""
+"DBUS_STARTER_BUS_TYPE 環境変数が設定されていないため、バスアドレスを決定でき"
+"ません"
 
-#: ../gio/gdbusaddress.c:1568
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "不明なバスの種類 %d"
 
-#: ../gio/gdbusauth.c:295
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "行を読みこもうとしましたが内容が意図せず欠落しています"
 
-#: ../gio/gdbusauth.c:339
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
-msgstr "(安全に)行を読みこもうとしましたが内容が意図せず欠落しています"
+msgstr "行を (安全に) 読みこもうとしましたが内容が意図せず欠落しています"
 
-#: ../gio/gdbusauth.c:510
+#: gio/gdbusauth.c:482
 #, c-format
-msgid "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
-msgstr "すべての利用可能な認証メカニズムを試し尽くしました (試行: %s) (利用可能: %s)"
+msgid ""
+"Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
+msgstr ""
+"すべての利用可能な認証メカニズムを試し尽くしました (試行: %s) (利用可能: %s)"
 
-#: ../gio/gdbusauth.c:1172
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
-msgstr "GDBusAuthObserver::authorize-authenticated-peer 経由でキャンセルされました"
+msgstr ""
+"GDBusAuthObserver::authorize-authenticated-peer 経由でキャンセルされました"
 
-#: ../gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
-msgid "Error when getting information for directory '%s': %s"
-msgstr "ディレクトリ '%s' の情報を取得する際にエラー: %s"
+msgid "Error when getting information for directory “%s”: %s"
+msgstr "ディレクトリ“%s”の情報取得中にエラーが発生しました: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
-msgid "Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o"
-msgstr "ディレクトリ '%s' が不正なパーミッションです。0700 モードを期待しましたが、0%o でした"
+msgid ""
+"Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
+msgstr ""
+"ディレクトリ“%s”のパーミッションが不正です (0700 モードを期待しましたが 0%o "
+"でした)"
 
-#: ../gio/gdbusauthmechanismsha1.c:295
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
-msgid "Error creating directory '%s': %s"
-msgstr "ディレクトリ'%s' を生成する際にエラー: %s"
+msgid "Error creating directory “%s”: %s"
+msgstr "ディレクトリ“%s”の作成中にエラーが発生しました: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:378
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
-msgid "Error opening keyring '%s' for reading: "
-msgstr "ã\83\95ã\82¡ã\82¤ã\83« '%s' ã\82\92ã\82ªã\83¼ã\83\97ã\83³ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: "
+msgid "Error opening keyring “%s” for reading: "
+msgstr "ã\82­ã\83¼ã\83ªã\83³ã\82°â\80\9c%sâ\80\9dã\82\92読ã\81¿å\8f\96ã\82\8aç\94¨ã\81«é\96\8bã\81\8fã\81¨ã\81\8dã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: "
 
-#: ../gio/gdbusauthmechanismsha1.c:402 ../gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
-msgid "Line %d of the keyring at '%s' with content '%s' is malformed"
-msgstr "'%2$s' のキーリングの、内容が '%3$s' の %1$d 行目が不正です"
+msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
+msgstr "“%2$s”のキーリングの、内容が“%3$s”の %1$d 行目が不正です"
 
-#: ../gio/gdbusauthmechanismsha1.c:416 ../gio/gdbusauthmechanismsha1.c:729
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
-msgid "First token of line %d of the keyring at '%s' with content '%s' is malformed"
-msgstr "'%2$s' のキーリングの、内容が '%3$s' の %1$d 行目の最初のトークンが不正です"
+msgid ""
+"First token of line %d of the keyring at “%s” with content “%s” is malformed"
+msgstr ""
+"“%2$s”のキーリングの、内容が“%3$s”の %1$d 行目の最初のトークンが不正です"
 
-#: ../gio/gdbusauthmechanismsha1.c:431 ../gio/gdbusauthmechanismsha1.c:743
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
-msgid "Second token of line %d of the keyring at '%s' with content '%s' is malformed"
-msgstr "'%2$s' のキーリングの、内容が '%3$s' の %1$d 行目の2番目のトークンが不正です"
+msgid ""
+"Second token of line %d of the keyring at “%s” with content “%s” is malformed"
+msgstr ""
+"“%2$s”のキーリングの、内容が“%3$s”の %1$d 行目の 2 番目のトークンが不正です"
 
-#: ../gio/gdbusauthmechanismsha1.c:455
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
-msgid "Didn't find cookie with id %d in the keyring at '%s'"
-msgstr "'%2$s' のキーリング中の id %1$d のクッキーを見つけられませんでした"
+msgid "Didn’t find cookie with id %d in the keyring at “%s”"
+msgstr "“%2$s”のキーリングの id %1$d のクッキーが見つかりませんでした"
 
-#: ../gio/gdbusauthmechanismsha1.c:533
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
-msgid "Error deleting stale lock file '%s': %s"
-msgstr "stale したロックファイル '%s' の削除中にエラー: %s"
+msgid "Error deleting stale lock file “%s”: %s"
+msgstr "stale したロックファイル“%s”の削除中にエラーが発生しました: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:565
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
-msgid "Error creating lock file '%s': %s"
-msgstr "ロックファイル '%s' の作成中にエラー: %s"
+msgid "Error creating lock file “%s”: %s"
+msgstr "ロックファイル“%s”の作成中にエラーが発生しました: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:595
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
-msgid "Error closing (unlinked) lock file '%s': %s"
-msgstr "(unlink した)ロックファイル '%s' を閉じる際にエラー: %s"
+msgid "Error closing (unlinked) lock file “%s”: %s"
+msgstr "(unlink した) ロックファイル“%s”を閉じるときにエラーが発生しました: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:605
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
-msgid "Error unlinking lock file '%s': %s"
-msgstr "ロックファイル '%s' を unlink する際にエラー: %s"
+msgid "Error unlinking lock file “%s”: %s"
+msgstr "ロックファイル“%s”の unlink 中にエラーが発生しました: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:682
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
-msgid "Error opening keyring '%s' for writing: "
-msgstr "キーリング '%s' を書き込み用にオープンする際にエラー: "
+msgid "Error opening keyring “%s” for writing: "
+msgstr "キーリング“%s”を書き込み用に開くときにエラーが発生しました: "
 
-#: ../gio/gdbusauthmechanismsha1.c:879
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
-msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
-msgstr "(さらに、'%s' のロックの解放も失敗しました: %s) "
+msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
+msgstr "(さらに“%s”のロック解放も失敗しました: %s) "
 
-#: ../gio/gdbusconnection.c:609 ../gio/gdbusconnection.c:2452
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2400
 msgid "The connection is closed"
 msgstr "接続が閉じています"
 
-#: ../gio/gdbusconnection.c:1942
+#: gio/gdbusconnection.c:1901
 msgid "Timeout was reached"
 msgstr "タイムアウトしました"
 
-#: ../gio/gdbusconnection.c:2574
-msgid "Unsupported flags encountered when constructing a client-side connection"
-msgstr "クライアントサイドの接続を作成しようとしましたがサポートしていないフラグに遭遇しました"
+#: gio/gdbusconnection.c:2522
+msgid ""
+"Unsupported flags encountered when constructing a client-side connection"
+msgstr ""
+"クライアントサイドの接続を作成しようとしましたがサポートしていないフラグに遭"
+"遇しました"
+
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
+#, c-format
+msgid ""
+"No such interface “org.freedesktop.DBus.Properties” on object at path %s"
+msgstr ""
+"パス %s のオブジェクトにインターフェース“org.freedesktop.DBus.Properties”があ"
+"りません"
 
-#: ../gio/gdbusconnection.c:4146 ../gio/gdbusconnection.c:4489
+#: gio/gdbusconnection.c:4304
 #, c-format
-msgid "No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
-msgstr "ã\83\91ã\82¹ %s ã\81®ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ä¸\8aã\81«ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ 'org.freedesktop.DBus.Properties' がありません"
+msgid "No such property “%s”"
+msgstr "ã\83\97ã\83­ã\83\91ã\83\86ã\82£â\80\9c%sâ\80\9dがありません"
 
-#: ../gio/gdbusconnection.c:4288
+#: gio/gdbusconnection.c:4316
 #, c-format
-msgid "No such property '%s'"
-msgstr "'%s' というプロパティが存在しません"
+msgid "Property “%s” is not readable"
+msgstr "プロパティ“%s”が読み取り可能ではありません"
 
-#: ../gio/gdbusconnection.c:4300
+#: gio/gdbusconnection.c:4327
 #, c-format
-msgid "Property '%s' is not readable"
-msgstr "プロパティ '%s' が読み込み可能ではありません"
+msgid "Property “%s” is not writable"
+msgstr "プロパティ“%s”が書き込み可能ではありません"
 
-#: ../gio/gdbusconnection.c:4311
+#: gio/gdbusconnection.c:4347
 #, c-format
-msgid "Property '%s' is not writable"
-msgstr "プロパティ '%s' が書き込み可能ではありません"
+msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
+msgstr ""
+"プロパティ“%s”の設定中にエラーが発生しました: 期待した型は“%s”ですが“%s”でし"
+"た"
 
-#: ../gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
-msgid "Error setting property '%s': Expected type '%s' but got '%s'"
-msgstr "ã\83\97ã\83­ã\83\91ã\83\86ã\82£ '%s' ã\81®è¨­å®\9aæ\99\82ã\81«ã\82¨ã\83©ã\83¼: æ\9c\9få¾\85ã\81\97ã\81\9få\9e\8bã\81¯ '%s' ã\81§ã\81\99ã\81\8c '%s' ã\81§ã\81\97ã\81\9f"
+msgid "No such interface “%s”"
+msgstr "ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹â\80\9c%sâ\80\9dã\81\8cã\81\82ã\82\8aã\81¾ã\81\9bã\82\93"
 
-#: ../gio/gdbusconnection.c:4432 ../gio/gdbusconnection.c:6351
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
-msgid "No such interface '%s'"
-msgstr "'%s' というインターフェースがありません"
+msgid "No such interface “%s” on object at path %s"
+msgstr "パス %2$s のオブジェクトにインターフェース“%1$s”がありません"
 
-#: ../gio/gdbusconnection.c:4639
-msgid "No such interface"
-msgstr "そのようなインターフェースがありません"
+#: gio/gdbusconnection.c:4976
+#, c-format
+msgid "No such method “%s”"
+msgstr "メソッド“%s”がありません"
 
-#: ../gio/gdbusconnection.c:4857 ../gio/gdbusconnection.c:6857
+#: gio/gdbusconnection.c:5007
 #, c-format
-msgid "No such interface '%s' on object at path %s"
-msgstr "ã\83\91ã\82¹ %2$s ã\81®ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ä¸\8aã\81«ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ '%1$s' ã\81\8cã\81\82ã\82\8aません"
+msgid "Type of message, “%s”, does not match expected type “%s”"
+msgstr "ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81®å\9e\8bâ\80\9c%sâ\80\9dã\81\8cæ\9c\9få¾\85ã\81\97ã\81\9få\9e\8bâ\80\9c%sâ\80\9dã\81«ä¸\80è\87´ã\81\97ません"
 
-#: ../gio/gdbusconnection.c:4954
+#: gio/gdbusconnection.c:5205
 #, c-format
-msgid "No such method '%s'"
-msgstr "'%s' というメソッドがありません"
+msgid "An object is already exported for the interface %s at %s"
+msgstr ""
+"オブジェクトはすでに %2$s のインターフェース %1$s にエクスポートされています"
 
-#: ../gio/gdbusconnection.c:4985
+#: gio/gdbusconnection.c:5431
 #, c-format
-msgid "Type of message, '%s', does not match expected type '%s'"
-msgstr "ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81®å\9e\8b '%s' ã\81¯æ\9c\9få¾\85ã\81\97ã\81\9få\9e\8b '%s' ã\81«ä¸\80è\87´ã\81\97ません"
+msgid "Unable to retrieve property %s.%s"
+msgstr "ã\83\97ã\83­ã\83\91ã\83\86ã\82£ %s.%s ã\82\92å\8f\96å¾\97ã\81§ã\81\8dません"
 
-#: ../gio/gdbusconnection.c:5183
+#: gio/gdbusconnection.c:5487
 #, c-format
-msgid "An object is already exported for the interface %s at %s"
-msgstr "%2$s のインターフェース %1$s にオブジェクトは既にエクスポートされています"
+msgid "Unable to set property %s.%s"
+msgstr "プロパティ %s.%s を設定できません"
 
-#: ../gio/gdbusconnection.c:5381
+#: gio/gdbusconnection.c:5665
 #, c-format
-msgid "Method '%s' returned type '%s', but expected '%s'"
-msgstr "メソッド '%s' は '%s' 型を返しましたが、'%s' を期待していました"
+msgid "Method “%s” returned type “%s”, but expected “%s”"
+msgstr "メソッド“%s”は“%s”型を返しましたが、“%s”を期待していました"
 
-#: ../gio/gdbusconnection.c:6462
+#: gio/gdbusconnection.c:6742
 #, c-format
-msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
-msgstr "シグネチャ '%3$s' を持ったインターフェース '%2$s' にメソッド '%1$s' が存在しません"
+msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
+msgstr ""
+"シグネチャ“%3$s”を持ったインターフェース“%2$s”にメソッド“%1$s”が存在しません"
 
-#: ../gio/gdbusconnection.c:6581
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
-msgstr "サブツリーは既に %s に export されています"
+msgstr "サブツリーはすでに %s にエクスポートされています"
 
-#: ../gio/gdbusmessage.c:1271
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "型が INVALID"
 
-#: ../gio/gdbusmessage.c:1282
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
-msgstr "METHOD_CALL メッセージ: PATH または MEMBER ヘッダーフィールドがありません"
+msgstr ""
+"METHOD_CALL メッセージ: PATH または MEMBER ヘッダーフィールドがありません"
 
-#: ../gio/gdbusmessage.c:1293
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN メッセージ: REPLY_SERIAL ヘッダーフィールドがありません"
 
-#: ../gio/gdbusmessage.c:1305
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
-msgstr "ERROR メッセージ: REPLY_SERIAL または ERROR_NAME ヘッダーフィールドがありません"
+msgstr ""
+"ERROR メッセージ: REPLY_SERIAL または ERROR_NAME ヘッダーフィールドがありませ"
+"ん"
 
-#: ../gio/gdbusmessage.c:1318
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
-msgstr "SIGNAL メッセージ: PATH、INTERFACE あるいは MEMBER ヘッダーフィールドがありません"
+msgstr ""
+"SIGNAL メッセージ: PATH、INTERFACE あるいは MEMBER ヘッダーフィールドがありま"
+"せん"
 
-#: ../gio/gdbusmessage.c:1326
-msgid "SIGNAL message: The PATH header field is using the reserved value /org/freedesktop/DBus/Local"
-msgstr "SIGNAL メッセージ: PATH ヘッダーフィールドが予約された値 /org/freedesktop/DBus/Local を使っています"
+#: gio/gdbusmessage.c:1310
+msgid ""
+"SIGNAL message: The PATH header field is using the reserved value /org/"
+"freedesktop/DBus/Local"
+msgstr ""
+"SIGNAL メッセージ: PATH ヘッダーフィールドが予約された値 /org/freedesktop/"
+"DBus/Local を使用しています"
 
-#: ../gio/gdbusmessage.c:1334
-msgid "SIGNAL message: The INTERFACE header field is using the reserved value org.freedesktop.DBus.Local"
-msgstr "SIGNAL メッセージ: INTERFACE ヘッダーフィールドが予約された値 org.freedesktop.DBus.Local を使っています"
+#: gio/gdbusmessage.c:1318
+msgid ""
+"SIGNAL message: The INTERFACE header field is using the reserved value org."
+"freedesktop.DBus.Local"
+msgstr ""
+"SIGNAL メッセージ: INTERFACE ヘッダーフィールドが予約された値 org."
+"freedesktop.DBus.Local を使用してます"
 
-#: ../gio/gdbusmessage.c:1383
-#, fuzzy, c-format
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
+#, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
-msgstr[0] "%lu バイト読もうとしましたが、EOF になりました"
+msgstr[0] "%lu バイト読もうとしましたが %lu バイトしか読めませんでした"
 
-#: ../gio/gdbusmessage.c:1398
+#: gio/gdbusmessage.c:1380
 #, c-format
-msgid "Expected NUL byte after the string '%s' but found byte %d"
-msgstr "'%s' 文字列の後に NUL を期待していましたが、%d がありました"
+msgid "Expected NUL byte after the string “%s” but found byte %d"
+msgstr "“%s”文字列の後に NUL を期待していましたが %d がありました"
 
-#: ../gio/gdbusmessage.c:1417
+#: gio/gdbusmessage.c:1399
 #, 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 "UTF-8 文字列を期待しましたが、正しくないバイト列がオフセット %d にありました (文字列の長さは %d です)。正しい UTF-8 文字列は '%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 ""
+"UTF-8 文字列を期待しましたが、正しくないバイト列がオフセット %d にありました "
+"(文字列の長さは %d です)。正しい UTF-8 文字列は“%s”までです。"
+
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr ""
 
-#: ../gio/gdbusmessage.c:1619
+#: gio/gdbusmessage.c:1609
 #, c-format
-msgid "Parsed value '%s' is not a valid D-Bus object path"
-msgstr "解析した値 '%s' は正しい D-Bus オブジェクトパスではありません"
+msgid "Parsed value “%s” is not a valid D-Bus object path"
+msgstr "解析した値“%s”は正しい D-Bus オブジェクトパスではありません"
 
-#: ../gio/gdbusmessage.c:1643
+#: gio/gdbusmessage.c:1631
 #, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature"
-msgstr "解æ\9e\90ã\81\95ã\82\8cã\81\9få\80¤ '%s' ã\81¯å¦¥å½\93ã\81ª D-Bus ã\81®シグネチャではありません"
+msgid "Parsed value “%s” is not a valid D-Bus signature"
+msgstr "解æ\9e\90ã\81\97ã\81\9få\80¤â\80\9c%sâ\80\9dã\81¯æ­£ã\81\97ã\81\84 D-Bus シグネチャではありません"
 
-#: ../gio/gdbusmessage.c:1698
-#, fuzzy, c-format
-msgid "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
-msgid_plural "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
-msgstr[0] "%u バイトの長さの配列に出会いました。最大の長さは 2<<26 バイト (64 MiB) です。"
+#: gio/gdbusmessage.c:1678
+#, c-format
+msgid ""
+"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
+msgid_plural ""
+"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
+msgstr[0] ""
+"長さが %u バイトの配列がありました。最大長は 2<<26 バイト (64 MiB) です。"
+
+#: gio/gdbusmessage.c:1698
+#, c-format
+msgid ""
+"Encountered array of type “a%c”, expected to have a length a multiple of %u "
+"bytes, but found to be %u bytes in length"
+msgstr ""
 
-#: ../gio/gdbusmessage.c:1851
+#: gio/gdbusmessage.c:1884
 #, c-format
-msgid "Parsed value '%s' for variant is not a valid D-Bus signature"
-msgstr "Variant 型として解析した値 '%s'  は正しい D-Bus のシグネチャではありません"
+msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
+msgstr "Variant 型として解析した値“%s”は正しい D-Bus シグネチャではありません"
 
-#: ../gio/gdbusmessage.c:1875
+#: gio/gdbusmessage.c:1925
 #, c-format
-msgid "Error deserializing GVariant with type string '%s' from the D-Bus wire format"
-msgstr "D-Bus 書き出し形式から GVariant を型文字列 '%s' でデシリアライズしようとしたらエラー"
+msgid ""
+"Error deserializing GVariant with type string “%s” from the D-Bus wire format"
+msgstr ""
 
-#: ../gio/gdbusmessage.c:2062
+#: gio/gdbusmessage.c:2110
 #, c-format
-msgid "Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value 0x%02x"
-msgstr "エンディアンについての値が正しくありません。0x6c ('l') または 0x42 ('B') のところ、0x%02x でした"
+msgid ""
+"Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
+"0x%02x"
+msgstr ""
+"エンディアンについての値が正しくありません (0x6c (“l”) や 0x42 (“B”) を期待し"
+"ましたが 0x%02x でした)"
 
-#: ../gio/gdbusmessage.c:2075
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
-msgstr "プロトコルのメジャーバージョンが正しくありません。1 を期待したところ %d でした"
+msgstr ""
+"プロトコルのメジャーバージョンが正しくありません (1 を期待しましたが %d でし"
+"た)"
+
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
+msgid "Signature header found but is not of type signature"
+msgstr ""
 
-#: ../gio/gdbusmessage.c:2131
+#: gio/gdbusmessage.c:2189
 #, c-format
-msgid "Signature header with signature '%s' found but message body is empty"
-msgstr "シグネチャ '%s' のシグネチャヘッダーが見つかりましたが、メッセージボディが空です"
+msgid "Signature header with signature “%s” found but message body is empty"
+msgstr ""
+"シグネチャ“%s”のシグネチャヘッダーが見つかりましたが、メッセージボディが空で"
+"す"
 
-#: ../gio/gdbusmessage.c:2145
+#: gio/gdbusmessage.c:2204
 #, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature (for body)"
-msgstr "値 '%s' を解析しましたが、D-Bus のシグネチャとして正しくありません (ボディ)"
+msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
+msgstr ""
+"値“%s”を解析しましたが D-Bus のシグネチャとして正しくありません (ボディ)"
 
-#: ../gio/gdbusmessage.c:2175
-#, fuzzy, c-format
+#: gio/gdbusmessage.c:2236
+#, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
-msgstr[0] "メッセージ中にシグネチャヘッダーがありませんが、メッセージボディが %u バイトあります"
+msgstr[0] ""
+"メッセージ中にシグネチャヘッダーがありませんが、メッセージボディが %u バイト"
+"あります"
 
-#: ../gio/gdbusmessage.c:2185
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "メッセージをデシリアライズできません: "
 
-#: ../gio/gdbusmessage.c:2506
+#: gio/gdbusmessage.c:2590
 #, c-format
-msgid "Error serializing GVariant with type string '%s' to the D-Bus wire format"
-msgstr "GVariant を型文字列 '%s' で D-Bus 書き出し形式にシリアライズしようとしましたがエラーです"
+msgid ""
+"Error serializing GVariant with type string “%s” to the D-Bus wire format"
+msgstr ""
 
-#: ../gio/gdbusmessage.c:2643
-#, fuzzy, c-format
-msgid "Message has %d file descriptors but the header field indicates %d file descriptors"
-msgstr "メッセージには %d 個の fd が含まれていますが、ヘッダーフィールドでは %d 個の fd があることになってます"
+#: gio/gdbusmessage.c:2727
+#, c-format
+msgid ""
+"Number of file descriptors in message (%d) differs from header field (%d)"
+msgstr ""
 
-#: ../gio/gdbusmessage.c:2651
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "メッセージをシリアライズできません: "
 
-#: ../gio/gdbusmessage.c:2695
+#: gio/gdbusmessage.c:2788
 #, c-format
-msgid "Message body has signature '%s' but there is no signature header"
-msgstr "メッセージボディにはシグネチャ '%s' がありますが、シグネチャのヘッダーがありません"
+msgid "Message body has signature “%s” but there is no signature header"
+msgstr ""
+"メッセージボディにはシグネチャ“%s”がありますが、シグネチャヘッダーがありませ"
+"ん"
 
-#: ../gio/gdbusmessage.c:2705
+#: gio/gdbusmessage.c:2798
 #, c-format
-msgid "Message body has type signature '%s' but signature in the header field is '%s'"
-msgstr "メッセージボディには型シグネチャ '%s' がありますが、ヘッダーフィールド中のシグネチャは '%s' です"
+msgid ""
+"Message body has type signature “%s” but signature in the header field is "
+"“%s”"
+msgstr ""
+"メッセージボディには型シグネチャ“%s”がありますが、ヘッダーフィールドのシグネ"
+"チャは“%s”です"
 
-#: ../gio/gdbusmessage.c:2721
+#: gio/gdbusmessage.c:2814
 #, c-format
-msgid "Message body is empty but signature in the header field is '(%s)'"
-msgstr "メッセージボディは空ですが、ヘッダーフィールド中のシグネチャは '(%s)' です"
+msgid "Message body is empty but signature in the header field is “(%s)”"
+msgstr "メッセージボディは空ですが、ヘッダーフィールドのシグネチャは“(%s)”です"
 
-#: ../gio/gdbusmessage.c:3271
+#: gio/gdbusmessage.c:3367
 #, c-format
-msgid "Error return with body of type '%s'"
-msgstr "型 '%s' のボディでエラーが返りました"
+msgid "Error return with body of type “%s”"
+msgstr "型“%s”のボディでエラーが返りました"
 
-#: ../gio/gdbusmessage.c:3279
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "空のボディでエラーが返りました"
 
-#: ../gio/gdbusprivate.c:2069
-#, fuzzy, c-format
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr "(このウィンドウを閉じるには、何か文字を入力してください)\n"
+
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr ""
+
+#: gio/gdbusprivate.c:2439
+#, c-format
 msgid "Unable to get Hardware profile: %s"
-msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82´ã\83\9fç®±ã\81¸ç§»å\8b\95できません: %s"
+msgstr "ã\83\8fã\83¼ã\83\89ã\82¦ã\82§ã\82¢ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\8f\96å¾\97できません: %s"
 
-#: ../gio/gdbusprivate.c:2114
-#, fuzzy
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
-msgstr "/var/lib/dbus/machine-id ã\82\92読ã\81¿ã\81\93めません: "
+msgstr "/var/lib/dbus/machine-id ã\81¾ã\81\9fã\81¯ /etc/machine-id ã\82\92読ã\81¿è¾¼めません: "
 
-#: ../gio/gdbusproxy.c:1638
+#: gio/gdbusproxy.c:1625
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
-msgstr "%s ã\82\92 StartServiceByName ã\81§å\91¼ã\81³å\87ºã\81\9dã\81\86ã\81¨ã\81\97ã\81¦ã\82¨ã\83©ã\83¼: "
+msgstr "%s ã\82\92 StartServiceByName ã\81§å\91¼ã\81³å\87ºã\81\99ã\81¨ã\81\8dã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: "
 
-#: ../gio/gdbusproxy.c:1661
+#: gio/gdbusproxy.c:1648
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "StartServiceByName(\"%2$s\") メソッドから期待してない応答 %1$d"
 
-#: ../gio/gdbusproxy.c:2761 ../gio/gdbusproxy.c:2898
-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 "メソッドを起動できません: proxy がオーナーの無い既知の名前で、G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START フラグで proxy が作成されていました"
+#: gio/gdbusproxy.c:2748 gio/gdbusproxy.c:2883
+#, c-format
+msgid ""
+"Cannot invoke method; proxy is for the well-known name %s without an owner, "
+"and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
+msgstr ""
+"メソッドを起動できません: proxy がオーナーのない既知の名前 %s で、"
+"G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START フラグで proxy が作成されていました"
 
-#: ../gio/gdbusserver.c:709
-msgid "Abstract name space not supported"
-msgstr "æ\8a½è±¡å\90\8då\89\8d空é\96\93ã\81¯ã\82µã\83\9dã\83¼ã\83\88ã\81\95ã\82\8cていません"
+#: gio/gdbusserver.c:755
+msgid "Abstract namespace not supported"
+msgstr "æ\8a½è±¡å\90\8då\89\8d空é\96\93ã\81¯ã\82µã\83\9dã\83¼ã\83\88ã\81\97ていません"
 
-#: ../gio/gdbusserver.c:796
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
-msgstr "サーバーを作成する際、nonce ファイルを指定できません"
+msgstr "サーバー作成時に nonce ファイルを指定できません"
 
-#: ../gio/gdbusserver.c:874
+#: gio/gdbusserver.c:930
 #, c-format
-msgid "Error writing nonce file at '%s': %s"
-msgstr "nonce ファイルを '%s' に書き込む際にエラー: %s"
+msgid "Error writing nonce file at “%s”: %s"
+msgstr "nonce ファイルを“%s”に書き込むときにエラーが発生しました: %s"
 
-#: ../gio/gdbusserver.c:1043
+#: gio/gdbusserver.c:1103
 #, c-format
-msgid "The string '%s' is not a valid D-Bus GUID"
-msgstr "'%s' は妥当な D-Bus GUID ではありません"
+msgid "The string “%s” is not a valid D-Bus GUID"
+msgstr "“%s”は正しい D-Bus GUID ではありません"
 
-#: ../gio/gdbusserver.c:1083
+#: gio/gdbusserver.c:1143
 #, c-format
-msgid "Cannot listen on unsupported transport '%s'"
-msgstr "サポートしていないトランスポート '%s' で listen できません"
+msgid "Cannot listen on unsupported transport “%s”"
+msgstr "サポートしていないトランスポート“%s”で listen できません"
 
-#: ../gio/gdbus-tool.c:92
-msgid "COMMAND"
-msgstr "COMMAND"
-
-#: ../gio/gdbus-tool.c:97
-#, fuzzy, c-format
+#: gio/gdbus-tool.c:107
+#, c-format
 msgid ""
 "Commands:\n"
 "  help         Shows this information\n"
@@ -656,319 +1004,369 @@ msgid ""
 "  monitor      Monitor a remote object\n"
 "  call         Invoke a method on a remote object\n"
 "  emit         Emit a signal\n"
+"  wait         Wait for a bus name to appear\n"
 "\n"
-"Use \"%s COMMAND --help\" to get help on each command.\n"
+"Use “%s COMMAND --help” to get help on each command.\n"
 msgstr ""
 "コマンド:\n"
-"  help         この情報を表示\n"
-"  introspect   リモートオブジェクトをイントロスペクト\n"
-"  monitor      リモートオブジェクトをモニター\n"
-"  call         リモートオブジェクトでメソッドを起動\n"
+"  help         この情報を表示する\n"
+"  introspect   リモートオブジェクトをイントロスペクトする\n"
+"  monitor      リモートオブジェクトを監視する\n"
+"  call         リモートオブジェクトでメソッドを起動する\n"
+"  emit         シグナルを送る\n"
+"  wait         バス名の表示を待つ\n"
 "\n"
-"\"%s COMMAND --help\" を使えば、それぞれのコマンドのヘルプを表示できます。\n"
+"“%s COMMAND --help”で各コマンドのヘルプを表示します。\n"
 
-#: ../gio/gdbus-tool.c:166 ../gio/gdbus-tool.c:222 ../gio/gdbus-tool.c:294
-#: ../gio/gdbus-tool.c:318 ../gio/gdbus-tool.c:701 ../gio/gdbus-tool.c:1022
-#: ../gio/gdbus-tool.c:1456
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:846 gio/gdbus-tool.c:1183
+#: gio/gdbus-tool.c:1668
 #, c-format
 msgid "Error: %s\n"
 msgstr "エラー: %s\n"
 
-#: ../gio/gdbus-tool.c:177 ../gio/gdbus-tool.c:235 ../gio/gdbus-tool.c:1472
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1684
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
-msgstr "イントロスペクション XML の解析中にエラー: %s\n"
+msgstr "イントロスペクション XML の解析中にエラーが発生しました: %s\n"
+
+#: gio/gdbus-tool.c:246
+#, c-format
+msgid "Error: %s is not a valid name\n"
+msgstr "エラー: %s は正しい名前ではありません\n"
 
-#: ../gio/gdbus-tool.c:352
+#: gio/gdbus-tool.c:394
 msgid "Connect to the system bus"
-msgstr "ã\82·ã\82¹ã\83\86ã\83  bus ã\81¸接続"
+msgstr "ã\82·ã\82¹ã\83\86ã\83  bus ã\81«接続"
 
-#: ../gio/gdbus-tool.c:353
+#: gio/gdbus-tool.c:395
 msgid "Connect to the session bus"
-msgstr "ã\82»ã\83\83ã\82·ã\83§ã\83³ bus ã\81¸接続"
+msgstr "ã\82»ã\83\83ã\82·ã\83§ã\83³ bus ã\81«接続"
 
-#: ../gio/gdbus-tool.c:354
+#: gio/gdbus-tool.c:396
 msgid "Connect to given D-Bus address"
 msgstr "指定された D-Bus アドレスに接続"
 
-#: ../gio/gdbus-tool.c:364
+#: gio/gdbus-tool.c:406
 msgid "Connection Endpoint Options:"
 msgstr "接続の終端のオプション:"
 
-#: ../gio/gdbus-tool.c:365
+#: gio/gdbus-tool.c:407
 msgid "Options specifying the connection endpoint"
 msgstr "接続の終端を指定するオプション"
 
-#: ../gio/gdbus-tool.c:387
+#: gio/gdbus-tool.c:429
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "接続の終端が指定されていません"
 
-#: ../gio/gdbus-tool.c:397
+#: gio/gdbus-tool.c:439
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "複数の接続の終端が指定されています"
 
-#: ../gio/gdbus-tool.c:467
+#: gio/gdbus-tool.c:509
 #, c-format
-msgid "Warning: According to introspection data, interface '%s' does not exist\n"
-msgstr "警告: イントロスペクションのデータによれば、インターフェース '%s' は存在しません\n"
+msgid ""
+"Warning: According to introspection data, interface “%s” does not exist\n"
+msgstr ""
+"警告: イントロスペクションのデータによれば、インターフェース“%s”は存在しませ"
+"ん\n"
 
-#: ../gio/gdbus-tool.c:476
+#: gio/gdbus-tool.c:518
 #, c-format
-msgid "Warning: According to introspection data, method '%s' does not exist on interface '%s'\n"
-msgstr "警告: イントロスペクションのデータによれば、メソッド '%s' はインターフェース '%s' に存在しません\n"
+msgid ""
+"Warning: According to introspection data, method “%s” does not exist on "
+"interface “%s”\n"
+msgstr ""
+"警告: イントロスペクションのデータによれば、メソッド“%s”はインターフェー"
+"ス“%s”に存在しません\n"
 
-#: ../gio/gdbus-tool.c:538
+#: gio/gdbus-tool.c:580
 msgid "Optional destination for signal (unique name)"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:539
-#, fuzzy
+#: gio/gdbus-tool.c:581
 msgid "Object path to emit signal on"
-msgstr "モニターするオブジェクトパス"
+msgstr ""
 
-#: ../gio/gdbus-tool.c:540
-#, fuzzy
+#: gio/gdbus-tool.c:582
 msgid "Signal and interface name"
-msgstr "メソッドとインターフェースの名前"
+msgstr ""
 
-#: ../gio/gdbus-tool.c:572
+#: gio/gdbus-tool.c:615
 msgid "Emit a signal."
 msgstr ""
 
-#: ../gio/gdbus-tool.c:606 ../gio/gdbus-tool.c:832 ../gio/gdbus-tool.c:1562
-#: ../gio/gdbus-tool.c:1794
+#: gio/gdbus-tool.c:670 gio/gdbus-tool.c:977 gio/gdbus-tool.c:1771
+#: gio/gdbus-tool.c:2003 gio/gdbus-tool.c:2223
 #, c-format
 msgid "Error connecting: %s\n"
-msgstr "接続中にエラー: %s\n"
+msgstr "接続中にエラーが発生しました: %s\n"
+
+#: gio/gdbus-tool.c:690
+#, c-format
+msgid "Error: %s is not a valid unique bus name.\n"
+msgstr "エラー: %s は正しいユニークなバス名ではありません。\n"
 
-#: ../gio/gdbus-tool.c:618
-#, fuzzy, c-format
-msgid "Error: object path not specified.\n"
+#: gio/gdbus-tool.c:709 gio/gdbus-tool.c:1020 gio/gdbus-tool.c:1814
+msgid "Error: Object path is not specified\n"
 msgstr "エラー: オブジェクトパスが指定されていません\n"
 
-#: ../gio/gdbus-tool.c:623 ../gio/gdbus-tool.c:893 ../gio/gdbus-tool.c:1620
-#: ../gio/gdbus-tool.c:1853
+#: gio/gdbus-tool.c:732 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1834
+#: gio/gdbus-tool.c:2074
 #, c-format
 msgid "Error: %s is not a valid object path\n"
-msgstr "エラー: %s は妥当なオブジェクトのパス名ではありません\n"
+msgstr "エラー: %s は正しいオブジェクトパスではありません\n"
 
-#: ../gio/gdbus-tool.c:629
-#, fuzzy, c-format
-msgid "Error: signal not specified.\n"
-msgstr "エラー: 対象が指定されていません\n"
+#: gio/gdbus-tool.c:752
+msgid "Error: Signal name is not specified\n"
+msgstr "エラー: シグナル名を指定していません\n"
 
-#: ../gio/gdbus-tool.c:636
-#, fuzzy, c-format
-msgid "Error: signal must be the fully-qualified name.\n"
-msgstr "エラー: 対象が指定されていません\n"
+#: gio/gdbus-tool.c:766
+#, c-format
+msgid "Error: Signal name “%s” is invalid\n"
+msgstr "エラー: シグナル名“%s”は正しくありません\n"
 
-#: ../gio/gdbus-tool.c:644
-#, fuzzy, c-format
+#: gio/gdbus-tool.c:778
+#, c-format
 msgid "Error: %s is not a valid interface name\n"
-msgstr "エラー: %s は妥当なオブジェクトのパス名ではありません\n"
+msgstr "エラー: %s は正しいインターフェース名ではありません\n"
 
-#: ../gio/gdbus-tool.c:650
-#, fuzzy, c-format
+#: gio/gdbus-tool.c:784
+#, c-format
 msgid "Error: %s is not a valid member name\n"
-msgstr "エラー: %s は妥当なオブジェクトのパス名ではありません\n"
-
-#: ../gio/gdbus-tool.c:656
-#, fuzzy, c-format
-msgid "Error: %s is not a valid unique bus name.\n"
-msgstr "エラー: %s は妥当なオブジェクトのパス名ではありません\n"
+msgstr "エラー: %s は正しいメンバー名ではありません\n"
 
-#: ../gio/gdbus-tool.c:679 ../gio/gdbus-tool.c:992
+#. Use the original non-"parse-me-harder" error
+#: gio/gdbus-tool.c:821 gio/gdbus-tool.c:1152
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
-msgstr "パラメーター %d の解析中にエラー: %s\n"
+msgstr "パラメーター %d の解析中にエラーが発生しました: %s\n"
 
-#: ../gio/gdbus-tool.c:708
-#, fuzzy, c-format
+#: gio/gdbus-tool.c:853
+#, c-format
 msgid "Error flushing connection: %s\n"
-msgstr "æ\8e¥ç¶\9aã\82\92 accept ã\81\99ã\82\8bæ\99\82ã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "æ\8e¥ç¶\9aã\81®ã\83\95ã\83©ã\83\83ã\82·ã\83¥ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s\n"
 
-#: ../gio/gdbus-tool.c:735
+#: gio/gdbus-tool.c:880
 msgid "Destination name to invoke method on"
 msgstr "メソッドを起動する対象の名前"
 
-#: ../gio/gdbus-tool.c:736
+#: gio/gdbus-tool.c:881
 msgid "Object path to invoke method on"
 msgstr "メソッドを起動するオブジェクトパス"
 
-#: ../gio/gdbus-tool.c:737
+#: gio/gdbus-tool.c:882
 msgid "Method and interface name"
 msgstr "メソッドとインターフェースの名前"
 
-#: ../gio/gdbus-tool.c:738
-#, fuzzy
+#: gio/gdbus-tool.c:883
 msgid "Timeout in seconds"
-msgstr "タイムアウトしました"
+msgstr ""
 
-#: ../gio/gdbus-tool.c:777
+#: gio/gdbus-tool.c:922
 msgid "Invoke a method on a remote object."
 msgstr "リモートオブジェクトでメソッドを起動します。"
 
-#: ../gio/gdbus-tool.c:852 ../gio/gdbus-tool.c:1581 ../gio/gdbus-tool.c:1813
-#, c-format
+#: gio/gdbus-tool.c:994 gio/gdbus-tool.c:1788 gio/gdbus-tool.c:2028
 msgid "Error: Destination is not specified\n"
-msgstr "ã\82¨ã\83©ã\83¼: å¯¾è±¡ã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cていません\n"
+msgstr "ã\82¨ã\83©ã\83¼: å¯¾è±¡ã\82\92æ\8c\87å®\9aã\81\97ていません\n"
 
-#: ../gio/gdbus-tool.c:873 ../gio/gdbus-tool.c:1600
+#: gio/gdbus-tool.c:1005 gio/gdbus-tool.c:1805 gio/gdbus-tool.c:2039
 #, c-format
-msgid "Error: Object path is not specified\n"
-msgstr "エラー: オブジェクトパスが指定されていません\n"
+msgid "Error: %s is not a valid bus name\n"
+msgstr "エラー: %s は正しいバス名ではありません\n"
 
-#: ../gio/gdbus-tool.c:908
-#, c-format
+#: gio/gdbus-tool.c:1055
 msgid "Error: Method name is not specified\n"
-msgstr "ã\82¨ã\83©ã\83¼: ã\83¡ã\82½ã\83\83ã\83\89å\90\8dã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cていません\n"
+msgstr "ã\82¨ã\83©ã\83¼: ã\83¡ã\82½ã\83\83ã\83\89å\90\8dã\82\92æ\8c\87å®\9aã\81\97ていません\n"
 
-#: ../gio/gdbus-tool.c:919
+#: gio/gdbus-tool.c:1066
 #, c-format
-msgid "Error: Method name '%s' is invalid\n"
-msgstr "エラー: メソッド名 '%s' が正しくありません\n"
+msgid "Error: Method name “%s” is invalid\n"
+msgstr "エラー: メソッド名“%s”は正しくありません\n"
 
-#: ../gio/gdbus-tool.c:984
+#: gio/gdbus-tool.c:1144
 #, c-format
-msgid "Error parsing parameter %d of type '%s': %s\n"
-msgstr "型 %2$s のパラメーター %1$d を解析中にエラー: %3$s\n"
+msgid "Error parsing parameter %d of type “%s”: %s\n"
+msgstr "型“%2$s”のパラメーター %1$d の解析中にエラーが発生しました: %3$s\n"
 
-#: ../gio/gdbus-tool.c:1419
+#: gio/gdbus-tool.c:1630
 msgid "Destination name to introspect"
-msgstr "イントロスペクトする対象の名前"
+msgstr "イントロスペクトの名前"
 
-#: ../gio/gdbus-tool.c:1420
+#: gio/gdbus-tool.c:1631
 msgid "Object path to introspect"
 msgstr "イントロスペクトするオブジェクトパス"
 
-#: ../gio/gdbus-tool.c:1421
+#: gio/gdbus-tool.c:1632
 msgid "Print XML"
-msgstr "XML を表示"
+msgstr "XML を表示する"
 
-#: ../gio/gdbus-tool.c:1422
+#: gio/gdbus-tool.c:1633
 msgid "Introspect children"
-msgstr ""
+msgstr "子をイントロスペクトする"
 
-#: ../gio/gdbus-tool.c:1423
+#: gio/gdbus-tool.c:1634
 msgid "Only print properties"
-msgstr ""
+msgstr "プロパティのみ表示する"
 
-#: ../gio/gdbus-tool.c:1514
+#: gio/gdbus-tool.c:1723
 msgid "Introspect a remote object."
-msgstr "リモートオブジェクトをイントロスペクト。"
+msgstr "ã\83ªã\83¢ã\83¼ã\83\88ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\82\92ã\82¤ã\83³ã\83\88ã\83­ã\82¹ã\83\9aã\82¯ã\83\88ã\81\97ã\81¾ã\81\99ã\80\82"
 
-#: ../gio/gdbus-tool.c:1712
+#: gio/gdbus-tool.c:1929
 msgid "Destination name to monitor"
-msgstr "モニターする対象の名前"
+msgstr "監視先の名前"
 
-#: ../gio/gdbus-tool.c:1713
+#: gio/gdbus-tool.c:1930
 msgid "Object path to monitor"
-msgstr "モニターするオブジェクトパス"
+msgstr "監視するオブジェクトパス"
 
-#: ../gio/gdbus-tool.c:1746
+#: gio/gdbus-tool.c:1955
 msgid "Monitor a remote object."
-msgstr "リモートのオブジェクトをモニターします。"
+msgstr "リモートオブジェクトを監視します。"
+
+#: gio/gdbus-tool.c:2013
+msgid "Error: can’t monitor a non-message-bus connection\n"
+msgstr "エラー: non-message-bus 接続を監視できません\n"
+
+#: gio/gdbus-tool.c:2137
+msgid "Service to activate before waiting for the other one (well-known name)"
+msgstr ""
+
+#: gio/gdbus-tool.c:2140
+msgid ""
+"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
+"(default)"
+msgstr ""
+
+#: gio/gdbus-tool.c:2188
+msgid "[OPTION…] BUS-NAME"
+msgstr "[オプション…] BUS-NAME"
+
+#: gio/gdbus-tool.c:2189
+msgid "Wait for a bus name to appear."
+msgstr "バス名の表示を待ちます。"
+
+#: gio/gdbus-tool.c:2265
+msgid "Error: A service to activate for must be specified.\n"
+msgstr ""
+
+#: gio/gdbus-tool.c:2270
+msgid "Error: A service to wait for must be specified.\n"
+msgstr ""
+
+#: gio/gdbus-tool.c:2275
+msgid "Error: Too many arguments.\n"
+msgstr "エラー: 引数が多すぎます。\n"
+
+#: gio/gdbus-tool.c:2283 gio/gdbus-tool.c:2290
+#, c-format
+msgid "Error: %s is not a valid well-known bus name.\n"
+msgstr "エラー: %s は正しい既知のバス名ではありません。\n"
 
-#: ../gio/gdesktopappinfo.c:660 ../gio/gdesktopappinfo.c:3793
-#: ../gio/gwin32appinfo.c:221
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "名前なし"
 
-#: ../gio/gdesktopappinfo.c:1074
-msgid "Desktop file didn't specify Exec field"
-msgstr "ã\83\87ã\82¹ã\82¯ã\83\88ã\83\83ã\83\97ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81§ Exec é \85ç\9b®ã\82\92æ\8c\87å®\9aã\81\97ã\81¦ませんでした"
+#: gio/gdesktopappinfo.c:2482
+msgid "Desktop file didnt specify Exec field"
+msgstr "ã\83\87ã\82¹ã\82¯ã\83\88ã\83\83ã\83\97ã\83\95ã\82¡ã\82¤ã\83«ã\81§ Exec ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\82\92æ\8c\87å®\9aã\81\97ã\81¦ã\81\84ませんでした"
 
-#: ../gio/gdesktopappinfo.c:1359
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "アプリケーションで必要な端末が見つかりませんでした"
 
-#: ../gio/gdesktopappinfo.c:1772
+#: gio/gdesktopappinfo.c:3406
 #, c-format
-msgid "Can't create user application configuration folder %s: %s"
-msgstr "ユーザーのアプリケーション設定フォルダー %s を成できません: %s"
+msgid "Cant create user application configuration folder %s: %s"
+msgstr "ユーザーのアプリケーション設定フォルダー %s を成できません: %s"
 
-#: ../gio/gdesktopappinfo.c:1776
+#: gio/gdesktopappinfo.c:3410
 #, c-format
-msgid "Can't create user MIME configuration folder %s: %s"
-msgstr "ユーザーの MIME 型設定フォルダー %s を成できません: %s"
+msgid "Cant create user MIME configuration folder %s: %s"
+msgstr "ユーザーの MIME 型設定フォルダー %s を成できません: %s"
 
-#: ../gio/gdesktopappinfo.c:2016 ../gio/gdesktopappinfo.c:2040
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:2272
+#: gio/gdesktopappinfo.c:3908
 #, c-format
-msgid "Can't create user desktop file %s"
-msgstr "ã\83¦ã\83¼ã\82¶ã\83¼ã\81®ã\83\87ã\82¹ã\82¯ã\83\88ã\83\83ã\83\97ã\83»ã\83\95ã\82¡ã\82¤ã\83« %s ã\82\92ç\94\9f成できません"
+msgid "Cant create user desktop file %s"
+msgstr "ã\83¦ã\83¼ã\82¶ã\83¼ã\81®ã\83\87ã\82¹ã\82¯ã\83\88ã\83\83ã\83\97ã\83\95ã\82¡ã\82¤ã\83« %s ã\82\92ä½\9c成できません"
 
-#: ../gio/gdesktopappinfo.c:2396
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s に対する独自の設定"
 
-#: ../gio/gdrive.c:394
-msgid "drive doesn't implement eject"
-msgstr "ドライブ側で取り出しの操作を実装していません"
+#: gio/gdrive.c:417
+msgid "drive doesnt implement eject"
+msgstr "ドライブは eject を実装していません"
 
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:472
-msgid "drive doesn't implement eject or eject_with_operation"
-msgstr "ã\83\89ã\83©ã\82¤ã\83\96ã\81¯ eject ã\81\82ã\82\8bã\81\84は eject_with_operation を実装していません"
+#: gio/gdrive.c:495
+msgid "drive doesnt implement eject or eject_with_operation"
+msgstr "ã\83\89ã\83©ã\82¤ã\83\96ã\81¯ eject ã\81¾ã\81\9fは eject_with_operation を実装していません"
 
-#: ../gio/gdrive.c:548
-msgid "drive doesn't implement polling for media"
-msgstr "ドライブ側でポーリングによるメディアの検出を実装していません"
+#: gio/gdrive.c:571
+msgid "drive doesnt implement polling for media"
+msgstr "ドライブポーリングによるメディアの検出を実装していません"
 
-#: ../gio/gdrive.c:753
-msgid "drive doesn't implement start"
-msgstr "ドライブは「開始」を実装していません。"
+#: gio/gdrive.c:778
+msgid "drive doesnt implement start"
+msgstr "ドライブは start を実装していません"
 
-#: ../gio/gdrive.c:855
-msgid "drive doesn't implement stop"
-msgstr "ドライブは「停止」を実装していません"
+#: gio/gdrive.c:880
+msgid "drive doesnt implement stop"
+msgstr "ドライブは stop を実装していません"
 
-#: ../gio/gdummytlsbackend.c:168 ../gio/gdummytlsbackend.c:288
-#: ../gio/gdummytlsbackend.c:378
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
+#: gio/gdummytlsbackend.c:509
 msgid "TLS support is not available"
-msgstr ""
+msgstr "TLS サポートは利用できません"
+
+#: gio/gdummytlsbackend.c:419
+msgid "DTLS support is not available"
+msgstr "DTLS サポートは利用できません"
 
-#: ../gio/gemblem.c:324
+#: gio/gemblem.c:323
 #, c-format
-msgid "Can't handle version %d of GEmblem encoding"
+msgid "Cant handle version %d of GEmblem encoding"
 msgstr "バージョン %d の GEmblem のエンコーディングはサポートしていません"
 
-#: ../gio/gemblem.c:334
+#: gio/gemblem.c:333
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
-msgstr "GEmblem のエンコーディングにあるトークン数 (%d) が間違っています"
+msgstr "GEmblem のエンコーディングにあるトークン数 (%d) が間違っています"
 
-#: ../gio/gemblemedicon.c:364
+#: gio/gemblemedicon.c:362
 #, c-format
-msgid "Can't handle version %d of GEmblemedIcon encoding"
-msgstr "バージョン %d の GEmblemedIcon のエンコーディングはサポートしていません"
+msgid "Can’t handle version %d of GEmblemedIcon encoding"
+msgstr ""
+"バージョン %d の GEmblemedIcon のエンコーディングはサポートしていません"
 
-#: ../gio/gemblemedicon.c:374
+#: gio/gemblemedicon.c:372
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
-msgstr "GEmblemedIcon のエンコーディングにあるトークン数 (%d) が間違っています"
+msgstr "GEmblemedIcon のエンコーディングにあるトークン数 (%d) が間違っています"
 
-#: ../gio/gemblemedicon.c:397
+#: gio/gemblemedicon.c:395
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "GEmblemedIcon に対する GEmblem を想定していました"
 
-#: ../gio/gfile.c:938 ../gio/gfile.c:1177 ../gio/gfile.c:1316
-#: ../gio/gfile.c:1556 ../gio/gfile.c:1611 ../gio/gfile.c:1669
-#: ../gio/gfile.c:1753 ../gio/gfile.c:1810 ../gio/gfile.c:1874
-#: ../gio/gfile.c:1929 ../gio/gfile.c:3559 ../gio/gfile.c:3614
-#: ../gio/gfile.c:3822 ../gio/gfile.c:3864 ../gio/gfile.c:4330
-#: ../gio/gfile.c:4742 ../gio/gfile.c:4827 ../gio/gfile.c:4917
-#: ../gio/gfile.c:5014 ../gio/gfile.c:5101 ../gio/gfile.c:5202
-#: ../gio/gfile.c:7381 ../gio/gfile.c:7471 ../gio/gfile.c:7555
-#: ../gio/win32/gwinhttpfile.c:439
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
+#: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "サポートしていない操作です"
 
@@ -976,1013 +1374,1980 @@ msgstr "サポートしていない操作です"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#. Translators: This is an error message when trying to
-#. * find the enclosing (user visible) mount of a file, but
-#. * none exists.
-#. Translators: This is an error message when trying to find
-#. * the enclosing (user visible) mount of a file, but none
-#. * exists.
-#: ../gio/gfile.c:1440 ../gio/glocalfile.c:1101 ../gio/glocalfile.c:1112
-#: ../gio/glocalfile.c:1125
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "マウントを含んでいるものはありません"
 
-#: ../gio/gfile.c:2495 ../gio/glocalfile.c:2333
-msgid "Can't copy over directory"
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
+msgid "Cant copy over directory"
 msgstr "ディレクトリ全体をコピーできません"
 
-#: ../gio/gfile.c:2555
-msgid "Can't copy directory over directory"
+#: gio/gfile.c:2650
+msgid "Cant copy directory over directory"
 msgstr "ディレクトリからディレクトリへコピーできません"
 
-#: ../gio/gfile.c:2563 ../gio/glocalfile.c:2342
+#: gio/gfile.c:2658
 msgid "Target file exists"
-msgstr "対象ã\81¨ã\81ªã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\97ã\81¦ã\81\84ます"
+msgstr "対象ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\97ます"
 
-#: ../gio/gfile.c:2582
-msgid "Can't recursively copy directory"
+#: gio/gfile.c:2677
+msgid "Cant recursively copy directory"
 msgstr "ディレクトリを再帰的にコピーできません"
 
-#: ../gio/gfile.c:2864
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "splice はサポートしていません"
 
-#: ../gio/gfile.c:2868
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
-msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\82\92 splice ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\81® splice ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gfile.c:2999
-#, fuzzy
-#| msgid "Move between mounts not supported"
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
-msgstr "マウント間の移動はサポートしていません"
+msgstr "マウント間のコピー (reflink/clone) はサポートしていません"
 
-#: ../gio/gfile.c:3003
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
-msgstr ""
+msgstr "コピー (reflink/clone) はサポートしていないか無効です"
 
-#: ../gio/gfile.c:3008
-msgid "Copy (reflink/clone) is not supported or didn't work"
-msgstr ""
+#: gio/gfile.c:3126
+msgid "Copy (reflink/clone) is not supported or didnt work"
+msgstr "コピー (reflink/clone) はサポートしていないか動作しませんでした"
 
-#: ../gio/gfile.c:3071
-msgid "Can't copy special file"
-msgstr "特別なファイルはコピーできません"
+#: gio/gfile.c:3190
+msgid "Cant copy special file"
+msgstr "スペシャルファイルはコピーできません"
 
-#: ../gio/gfile.c:3812
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "指定したシンボリックリンクは間違っています"
 
-#: ../gio/gfile.c:3974
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "シンボリックリンクはサポートしていません"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "ゴミ箱はサポートしていません"
 
-#: ../gio/gfile.c:4087
+#: gio/gfile.c:4276
 #, c-format
-msgid "File names cannot contain '%c'"
-msgstr "ファイル名に '%c' を含めることはできません"
+msgid "File names cannot contain “%c”"
+msgstr "ファイル名に“%c”を含めることはできません"
 
-#: ../gio/gfile.c:6504 ../gio/gvolume.c:365
-msgid "volume doesn't implement mount"
+#: gio/gfile.c:6757 gio/gvolume.c:364
+msgid "volume doesnt implement mount"
 msgstr "ボリュームはマウントを実装していません"
 
-#: ../gio/gfile.c:6613
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "このファイルを扱うアプリケーションが登録されていません"
 
-#: ../gio/gfileenumerator.c:213
-msgid "Enumerator is closed"
-msgstr "Enumerator は閉じています"
+#: gio/gfileenumerator.c:212
+msgid "Enumerator is closed"
+msgstr "Enumerator は閉じています"
+
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
+#: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
+msgid "File enumerator has outstanding operation"
+msgstr ""
+
+#: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
+msgid "File enumerator is already closed"
+msgstr "ファイルの Enumerator はすでに閉じています"
+
+#: gio/gfileicon.c:236
+#, c-format
+msgid "Can’t handle version %d of GFileIcon encoding"
+msgstr "バージョン %d の GFileIcon のエンコーディングはサポートしていません"
+
+#: gio/gfileicon.c:246
+msgid "Malformed input data for GFileIcon"
+msgstr "GFileIcon の入力データが間違っています"
+
+#: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
+#: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
+#: gio/gfileoutputstream.c:497
+msgid "Stream doesn’t support query_info"
+msgstr "ストリームが query_info をサポートしていません"
+
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379
+#: gio/gfileoutputstream.c:371
+msgid "Seek not supported on stream"
+msgstr "ストリームのシークはサポートしていません"
+
+#: gio/gfileinputstream.c:369
+msgid "Truncate not allowed on input stream"
+msgstr "入力ストリームを切りつめることはできません"
+
+#: gio/gfileiostream.c:455 gio/gfileoutputstream.c:447
+msgid "Truncate not supported on stream"
+msgstr "ストリームの切りつめはサポートしていません"
+
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
+msgid "Invalid hostname"
+msgstr "無効なホスト名です"
+
+#: gio/ghttpproxy.c:143
+msgid "Bad HTTP proxy reply"
+msgstr ""
+
+#: gio/ghttpproxy.c:159
+msgid "HTTP proxy connection not allowed"
+msgstr "HTTP プロキシ接続は許可されていません"
+
+#: gio/ghttpproxy.c:164
+msgid "HTTP proxy authentication failed"
+msgstr "HTTP プロキシ認証に失敗しました"
+
+#: gio/ghttpproxy.c:167
+msgid "HTTP proxy authentication required"
+msgstr "HTTP プロキシ認証が必要です"
+
+#: gio/ghttpproxy.c:171
+#, c-format
+msgid "HTTP proxy connection failed: %i"
+msgstr "HTTP プロキシ接続に失敗しました: %i"
+
+#: gio/ghttpproxy.c:269
+msgid "HTTP proxy server closed connection unexpectedly."
+msgstr "HTTP プロキシサーバーが予期せず接続を閉じました。"
+
+#: gio/gicon.c:298
+#, c-format
+msgid "Wrong number of tokens (%d)"
+msgstr "トークン数 (%d) が間違っています"
+
+#: gio/gicon.c:318
+#, c-format
+msgid "No type for class name %s"
+msgstr "%s というクラス名の型がありません"
+
+#: gio/gicon.c:328
+#, c-format
+msgid "Type %s does not implement the GIcon interface"
+msgstr "%s という型は GIcon のインターフェースを実装していません"
+
+#: gio/gicon.c:339
+#, c-format
+msgid "Type %s is not classed"
+msgstr "%s という型がクラスになっていません"
+
+#: gio/gicon.c:353
+#, c-format
+msgid "Malformed version number: %s"
+msgstr "バージョン番号が間違っています: %s"
+
+#: gio/gicon.c:367
+#, c-format
+msgid "Type %s does not implement from_tokens() on the GIcon interface"
+msgstr ""
+"%s という型は GIcon のインターフェースで from_tokens() を実装していません"
+
+#: gio/gicon.c:469
+msgid "Can’t handle the supplied version of the icon encoding"
+msgstr "提供したアイコンエンコーディングのバージョンはサポートしていません"
+
+#: gio/ginetaddressmask.c:182
+msgid "No address specified"
+msgstr "アドレスを指定していません"
+
+#: gio/ginetaddressmask.c:190
+#, c-format
+msgid "Length %u is too long for address"
+msgstr "長さ %u はアドレスには長すぎます"
+
+#: gio/ginetaddressmask.c:223
+msgid "Address has bits set beyond prefix length"
+msgstr ""
+
+#: gio/ginetaddressmask.c:300
+#, c-format
+msgid "Could not parse “%s” as IP address mask"
+msgstr "IP アドレスマスク“%s”を解析できませんでした"
+
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
+msgid "Not enough space for socket address"
+msgstr "ソケットアドレスを作成するための十分な空きがありません"
+
+#: gio/ginetsocketaddress.c:235
+msgid "Unsupported socket address"
+msgstr "サポートしていないソケットアドレスです"
+
+#: gio/ginputstream.c:188
+msgid "Input stream doesn’t implement read"
+msgstr "入力ストリームは読み込みを実装していません"
+
+#. Translators: This is an error you get if there is already an
+#. * operation running against this stream when you try to start
+#. * one
+#. Translators: This is an error you get if there is
+#. * already an operation running against this stream when
+#. * you try to start one
+#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:2208
+msgid "Stream has outstanding operation"
+msgstr ""
+
+#: gio/gio-tool.c:160
+msgid "Copy with file"
+msgstr "ファイルと共にコピー"
+
+#: gio/gio-tool.c:164
+msgid "Keep with file when moved"
+msgstr "ファイルが移動時に保持"
+
+#: gio/gio-tool.c:205
+msgid "“version” takes no arguments"
+msgstr "“version”は引数を取りません"
+
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
+msgid "Usage:"
+msgstr "用法:"
+
+#: gio/gio-tool.c:210
+msgid "Print version information and exit."
+msgstr "バージョン情報を表示して終了する。"
+
+#: gio/gio-tool.c:226
+msgid "Commands:"
+msgstr "コマンド:"
+
+#: gio/gio-tool.c:229
+msgid "Concatenate files to standard output"
+msgstr "ファイルを標準出力に結合する"
+
+#: gio/gio-tool.c:230
+msgid "Copy one or more files"
+msgstr "一つ以上のファイルをコピーする"
+
+#: gio/gio-tool.c:231
+msgid "Show information about locations"
+msgstr "場所についての情報を表示する"
+
+#: gio/gio-tool.c:232
+msgid "List the contents of locations"
+msgstr "場所の内容を一覧表示する"
+
+#: gio/gio-tool.c:233
+msgid "Get or set the handler for a mimetype"
+msgstr "MIME タイプのハンドラを設定または取得する"
+
+#: gio/gio-tool.c:234
+msgid "Create directories"
+msgstr "ディレクトリを作成する"
+
+#: gio/gio-tool.c:235
+msgid "Monitor files and directories for changes"
+msgstr "ファイルやディレクトリの変更を監視する"
+
+#: gio/gio-tool.c:236
+msgid "Mount or unmount the locations"
+msgstr "場所をマウントまたはアンマウントする"
+
+#: gio/gio-tool.c:237
+msgid "Move one or more files"
+msgstr "一つ以上のファイルを移動する"
+
+#: gio/gio-tool.c:238
+msgid "Open files with the default application"
+msgstr "デフォルトのアプリケーションでファイルを開く"
+
+#: gio/gio-tool.c:239
+msgid "Rename a file"
+msgstr "ファイル名を変更する"
+
+#: gio/gio-tool.c:240
+msgid "Delete one or more files"
+msgstr "一つ以上のファイルを削除する"
+
+#: gio/gio-tool.c:241
+msgid "Read from standard input and save"
+msgstr "標準入力から読み取り保存する"
+
+#: gio/gio-tool.c:242
+msgid "Set a file attribute"
+msgstr "ファイル属性を設定する"
+
+#: gio/gio-tool.c:243
+msgid "Move files or directories to the trash"
+msgstr "ファイルやディレクトリをゴミ箱へ移動する"
+
+#: gio/gio-tool.c:244
+msgid "Lists the contents of locations in a tree"
+msgstr "ツリー形式で場所の内容を一覧表示する"
+
+#: gio/gio-tool.c:246
+#, c-format
+msgid "Use %s to get detailed help.\n"
+msgstr "%s で詳細なヘルプを表示します。\n"
+
+#: gio/gio-tool-cat.c:87
+msgid "Error writing to stdout"
+msgstr "標準出力への書き込み中にエラーが発生しました"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
+#: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
+msgid "LOCATION"
+msgstr ""
+
+#: gio/gio-tool-cat.c:138
+msgid "Concatenate files and print to standard output."
+msgstr "ファイルを結合して標準出力に出力します。"
+
+#: gio/gio-tool-cat.c:140
+msgid ""
+"gio cat works just like the traditional cat utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location."
+msgstr ""
+"gio cat は伝統的な cat ユーティリティのように動作するツールで、ローカ"
+"ルファイルの代わりに GIO ロケーションを使用できます (例: "
+"smb://server/resource/file.txt)。"
+
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
+#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
+msgid "No locations given"
+msgstr "場所を指定していません"
+
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
+msgid "No target directory"
+msgstr "ディレクトリを対象にしない"
+
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
+msgid "Show progress"
+msgstr "進捗を表示する"
+
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
+msgid "Prompt before overwrite"
+msgstr "上書きする前に確認する"
+
+#: gio/gio-tool-copy.c:46
+msgid "Preserve all attributes"
+msgstr "すべての属性を保持する"
+
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+msgid "Backup existing destination files"
+msgstr "既存の対象ファイル (DEST) をバックアップする"
+
+#: gio/gio-tool-copy.c:48
+msgid "Never follow symbolic links"
+msgstr "シンボリックリンクをたどらない"
+
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr ""
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
+#, c-format
+msgid "Transferred %s out of %s (%s/s)"
+msgstr "%s / %s 転送 (%s/秒)"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
+msgid "SOURCE"
+msgstr "SOURCE"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+msgid "DESTINATION"
+msgstr "DESTINATION"
+
+#: gio/gio-tool-copy.c:105
+msgid "Copy one or more files from SOURCE to DESTINATION."
+msgstr "一つ以上のファイルを SOURCE から DESTINATION にコピーします。"
+
+#: gio/gio-tool-copy.c:107
+msgid ""
+"gio copy is similar to the traditional cp utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location."
+msgstr ""
+"gio copy は伝統的な cp ユーティリティに似たツールで、ローカルファイルの"
+"代わりに GIO ロケーションを使用できます (例: "
+"smb://server/resource/file.txt)。"
+
+#: gio/gio-tool-copy.c:149
+#, c-format
+msgid "Destination %s is not a directory"
+msgstr "%s はディレクトリではありません"
+
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
+#, c-format
+msgid "%s: overwrite “%s”? "
+msgstr "%s: “%s”を上書きしますか? "
+
+#: gio/gio-tool-info.c:37
+msgid "List writable attributes"
+msgstr "書込み可能な属性一覧を表示する"
+
+#: gio/gio-tool-info.c:38
+msgid "Get file system info"
+msgstr "ファイルシステムの情報を取得する"
+
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
+msgid "The attributes to get"
+msgstr "取得する属性"
+
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
+msgid "ATTRIBUTES"
+msgstr ""
+
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
+msgid "Don’t follow symbolic links"
+msgstr "シンボリックリンクをたどらない"
+
+#: gio/gio-tool-info.c:78
+msgid "attributes:\n"
+msgstr "属性:\n"
+
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:134
+#, c-format
+msgid "display name: %s\n"
+msgstr "表示名: %s\n"
+
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:139
+#, c-format
+msgid "edit name: %s\n"
+msgstr "編集名: %s\n"
+
+#: gio/gio-tool-info.c:145
+#, c-format
+msgid "name: %s\n"
+msgstr "名前: %s\n"
+
+#: gio/gio-tool-info.c:152
+#, c-format
+msgid "type: %s\n"
+msgstr "種類: %s\n"
+
+#: gio/gio-tool-info.c:158
+msgid "size: "
+msgstr "サイズ: "
+
+#: gio/gio-tool-info.c:163
+msgid "hidden\n"
+msgstr "非表示\n"
+
+#: gio/gio-tool-info.c:166
+#, c-format
+msgid "uri: %s\n"
+msgstr "URI: %s\n"
+
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "ローカルパス: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr ""
+
+#: gio/gio-tool-info.c:279
+msgid "Settable attributes:\n"
+msgstr "設定可能な属性:\n"
+
+#: gio/gio-tool-info.c:303
+msgid "Writable attribute namespaces:\n"
+msgstr "書込み属性の名前空間:\n"
+
+#: gio/gio-tool-info.c:338
+msgid "Show information about locations."
+msgstr "場所についての情報を表示します。"
+
+#: gio/gio-tool-info.c:340
+msgid ""
+"gio info is similar to the traditional ls utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location. File attributes can\n"
+"be specified with their GIO name, e.g. standard::icon, or just by\n"
+"namespace, e.g. unix, or by “*”, which matches all attributes"
+msgstr ""
+
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
+msgid "Show hidden files"
+msgstr "隠しファイルを表示する"
+
+#: gio/gio-tool-list.c:38
+msgid "Use a long listing format"
+msgstr "長い形式で一覧を表示する"
+
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "表示名を表示する"
+
+#: gio/gio-tool-list.c:41
+msgid "Print full URIs"
+msgstr "完全な URI を表示する"
+
+#: gio/gio-tool-list.c:177
+msgid "List the contents of the locations."
+msgstr "場所の内容を一覧表示します。"
+
+#: gio/gio-tool-list.c:179
+msgid ""
+"gio list is similar to the traditional ls utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location. File attributes can\n"
+"be specified with their GIO name, e.g. standard::icon"
+msgstr ""
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-mime.c:71
+msgid "MIMETYPE"
+msgstr ""
+
+#: gio/gio-tool-mime.c:71
+msgid "HANDLER"
+msgstr ""
+
+#: gio/gio-tool-mime.c:76
+msgid "Get or set the handler for a mimetype."
+msgstr "MIME タイプのハンドラを設定または取得します。"
+
+#: gio/gio-tool-mime.c:78
+msgid ""
+"If no handler is given, lists registered and recommended applications\n"
+"for the mimetype. If a handler is given, it is set as the default\n"
+"handler for the mimetype."
+msgstr ""
+"ハンドラを指定しない場合、MIME タイプに登録されているアプリケーションと推"
+"奨されているアプリケーションの一覧を表示します。ハンドラを指定した場合、そ"
+"のハンドラを MIME タイプのデフォルトのハンドラとして設定します。"
+
+#: gio/gio-tool-mime.c:100
+msgid "Must specify a single mimetype, and maybe a handler"
+msgstr "単一の MIME タイプ (と、おそらくハンドラ) を指定する必要があります"
+
+#: gio/gio-tool-mime.c:116
+#, c-format
+msgid "No default applications for “%s”\n"
+msgstr "“%s”のデフォルトのアプリケーションがありません\n"
+
+#: gio/gio-tool-mime.c:122
+#, c-format
+msgid "Default application for “%s”: %s\n"
+msgstr "“%s”のデフォルトのアプリケーション: %s\n"
+
+#: gio/gio-tool-mime.c:127
+msgid "Registered applications:\n"
+msgstr "登録されているアプリケーション:\n"
+
+#: gio/gio-tool-mime.c:129
+msgid "No registered applications\n"
+msgstr "登録されているアプリケーションはありません\n"
+
+#: gio/gio-tool-mime.c:140
+msgid "Recommended applications:\n"
+msgstr "推奨されているアプリケーション:\n"
+
+#: gio/gio-tool-mime.c:142
+msgid "No recommended applications\n"
+msgstr "推奨されているアプリケーションはありません\n"
+
+#: gio/gio-tool-mime.c:162
+#, c-format
+msgid "Failed to load info for handler “%s”"
+msgstr "ハンドラ“%s”の情報読み込みに失敗しました"
+
+#: gio/gio-tool-mime.c:168
+#, c-format
+msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
+msgstr "“%s”を“%s”のデフォルトハンドラとして設定するのに失敗しました: %s\n"
+
+#: gio/gio-tool-mkdir.c:31
+msgid "Create parent directories"
+msgstr "親ディレクトリを作成する"
+
+#: gio/gio-tool-mkdir.c:52
+msgid "Create directories."
+msgstr "ディレクトリを作成します。"
+
+#: gio/gio-tool-mkdir.c:54
+msgid ""
+"gio mkdir is similar to the traditional mkdir utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/mydir as location."
+msgstr ""
+"gio mkdir は伝統的な mkdir ユーティリティに似たツールで、ローカルファイ"
+"ルの代わりに GIO ロケーションを使用できます (例: "
+"smb://server/resource/mydir)。"
+
+#: gio/gio-tool-monitor.c:37
+msgid "Monitor a directory (default: depends on type)"
+msgstr "ディレクトリを監視する (デフォルト: 種類に依存)"
+
+#: gio/gio-tool-monitor.c:39
+msgid "Monitor a file (default: depends on type)"
+msgstr "ファイルを監視する (デフォルト: 種類に依存)"
+
+#: gio/gio-tool-monitor.c:41
+msgid "Monitor a file directly (notices changes made via hardlinks)"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:43
+msgid "Monitors a file directly, but doesn’t report changes"
+msgstr "ファイルを直接監視する (変更を報告しない)"
+
+#: gio/gio-tool-monitor.c:45
+msgid "Report moves and renames as simple deleted/created events"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:47
+msgid "Watch for mount events"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:208
+msgid "Monitor files or directories for changes."
+msgstr "ファイルやディレクトリの変更を監視します。"
+
+#: gio/gio-tool-mount.c:63
+msgid "Mount as mountable"
+msgstr "マウント可能としてマウントする"
+
+#: gio/gio-tool-mount.c:64
+msgid "Mount volume with device file, or other identifier"
+msgstr "デバイスファイルまたは他の識別子でボリュームをマウントする"
+
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
+
+#: gio/gio-tool-mount.c:65
+msgid "Unmount"
+msgstr "アンマウントする"
+
+#: gio/gio-tool-mount.c:66
+msgid "Eject"
+msgstr "取り出す"
+
+#: gio/gio-tool-mount.c:67
+msgid "Stop drive with device file"
+msgstr "デバイスファイルでドライブを停止する"
+
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr ""
+
+#: gio/gio-tool-mount.c:68
+msgid "Unmount all mounts with the given scheme"
+msgstr "指定したスキームですべてのマウントをアンマウントする"
+
+#: gio/gio-tool-mount.c:68
+msgid "SCHEME"
+msgstr ""
+
+#: gio/gio-tool-mount.c:69
+msgid "Ignore outstanding file operations when unmounting or ejecting"
+msgstr "アンマウントまたは取り出すときに未処理のファイル操作を無視する"
+
+#: gio/gio-tool-mount.c:70
+msgid "Use an anonymous user when authenticating"
+msgstr "認証に匿名ユーザーを使用する"
+
+#. Translator: List here is a verb as in 'List all mounts'
+#: gio/gio-tool-mount.c:72
+msgid "List"
+msgstr "一覧を表示する"
+
+#: gio/gio-tool-mount.c:73
+msgid "Monitor events"
+msgstr "イベントを監視する"
+
+#: gio/gio-tool-mount.c:74
+msgid "Show extra information"
+msgstr "その他の情報を表示する"
+
+#: gio/gio-tool-mount.c:75
+msgid "The numeric PIM when unlocking a VeraCrypt volume"
+msgstr "VeraCrypt ボリュームのロックを解除する PIM 値"
+
+#: gio/gio-tool-mount.c:75
+msgid "PIM"
+msgstr "PIM"
+
+#: gio/gio-tool-mount.c:76
+msgid "Mount a TCRYPT hidden volume"
+msgstr "TCRYPT の隠しボリュームをマウントする"
+
+#: gio/gio-tool-mount.c:77
+msgid "Mount a TCRYPT system volume"
+msgstr "TCRYPT のシステムボリュームをマウントする"
+
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
+msgid "Anonymous access denied"
+msgstr "匿名アクセスが拒否されました"
+
+#: gio/gio-tool-mount.c:522
+msgid "No drive for device file"
+msgstr "デバイスファイルのドライブがありません"
+
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "指定した ID のボリュームがありません"
+
+#: gio/gio-tool-mount.c:1203
+msgid "Mount or unmount the locations."
+msgstr "場所をマウントまたはアンマウントします。"
+
+#: gio/gio-tool-move.c:42
+msgid "Don’t use copy and delete fallback"
+msgstr ""
+
+#: gio/gio-tool-move.c:99
+msgid "Move one or more files from SOURCE to DEST."
+msgstr "一つ以上のファイルを SOURCE から DEST へ移動します。"
+
+#: gio/gio-tool-move.c:101
+msgid ""
+"gio move is similar to the traditional mv utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location"
+msgstr ""
+"gio move は伝統的な mv ユーティリティに似たツールで、ローカルファイルの"
+"代わりに GIO ロケーションを使用できます (例: "
+"smb://server/resource/file.txt)"
+
+#: gio/gio-tool-move.c:143
+#, c-format
+msgid "Target %s is not a directory"
+msgstr "%s はディレクトリではありません"
+
+#: gio/gio-tool-open.c:75
+msgid ""
+"Open files with the default application that\n"
+"is registered to handle files of this type."
+msgstr ""
+"この種類のファイルを扱うよう登録された、\n"
+"デフォルトのアプリケーションでファイルを開きます。"
+
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:31
+msgid "Ignore nonexistent files, never prompt"
+msgstr "存在しないファイルを無視する (プロンプトを表示しない)"
+
+#: gio/gio-tool-remove.c:52
+msgid "Delete the given files."
+msgstr "指定したファイルを削除します。"
+
+#: gio/gio-tool-rename.c:45
+msgid "NAME"
+msgstr ""
+
+#: gio/gio-tool-rename.c:50
+msgid "Rename a file."
+msgstr "ファイル名を変更します。"
+
+#: gio/gio-tool-rename.c:70
+msgid "Missing argument"
+msgstr "引数がありません"
+
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
+msgid "Too many arguments"
+msgstr "引数が多すぎます"
+
+#: gio/gio-tool-rename.c:95
+#, c-format
+msgid "Rename successful. New uri: %s\n"
+msgstr "名前を変更できました。新しい URI: %s\n"
+
+#: gio/gio-tool-save.c:50
+msgid "Only create if not existing"
+msgstr "存在しない場合のみ作成する"
+
+#: gio/gio-tool-save.c:51
+msgid "Append to end of file"
+msgstr "ファイルの末尾に追記する"
+
+#: gio/gio-tool-save.c:52
+msgid "When creating, restrict access to the current user"
+msgstr "ファイルを作成するときに現在のユーザーのみにアクセスを制限する"
+
+#: gio/gio-tool-save.c:53
+msgid "When replacing, replace as if the destination did not exist"
+msgstr "置換時に置換先が存在しないかのように置換する"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:55
+msgid "Print new etag at end"
+msgstr "新しい etag を最後に出力する"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:57
+msgid "The etag of the file being overwritten"
+msgstr "上書き対象のファイルの etag"
+
+#: gio/gio-tool-save.c:57
+msgid "ETAG"
+msgstr "ETAG"
+
+#: gio/gio-tool-save.c:113
+msgid "Error reading from standard input"
+msgstr "標準入力からの読み取り中にエラーが発生しました"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:139
+msgid "Etag not available\n"
+msgstr "etag は利用できません\n"
+
+#: gio/gio-tool-save.c:163
+msgid "Read from standard input and save to DEST."
+msgstr "標準入力から読み取って DEST に保存します。"
+
+#: gio/gio-tool-save.c:183
+msgid "No destination given"
+msgstr "対象を指定していません"
+
+#: gio/gio-tool-set.c:33
+msgid "Type of the attribute"
+msgstr "属性の種類"
+
+#: gio/gio-tool-set.c:33
+msgid "TYPE"
+msgstr ""
+
+#: gio/gio-tool-set.c:89
+msgid "ATTRIBUTE"
+msgstr ""
+
+#: gio/gio-tool-set.c:89
+msgid "VALUE"
+msgstr ""
+
+#: gio/gio-tool-set.c:93
+msgid "Set a file attribute of LOCATION."
+msgstr "場所のファイル属性を設定します。"
+
+#: gio/gio-tool-set.c:113
+msgid "Location not specified"
+msgstr "場所を指定していません"
+
+#: gio/gio-tool-set.c:120
+msgid "Attribute not specified"
+msgstr "属性を指定していません"
+
+#: gio/gio-tool-set.c:130
+msgid "Value not specified"
+msgstr "値を指定していません"
+
+#: gio/gio-tool-set.c:180
+#, c-format
+msgid "Invalid attribute type “%s”"
+msgstr "属性の種類“%s”は不正です"
+
+#: gio/gio-tool-trash.c:32
+msgid "Empty the trash"
+msgstr "ゴミ箱を空にする"
+
+#: gio/gio-tool-trash.c:86
+msgid "Move files or directories to the trash."
+msgstr "ファイルやディレクトリをゴミ箱へ移動します。"
+
+#: gio/gio-tool-tree.c:33
+msgid "Follow symbolic links, mounts and shortcuts"
+msgstr "シンボリックリンク、マウント、ショートカットをたどる"
+
+#: gio/gio-tool-tree.c:244
+msgid "List contents of directories in a tree-like format."
+msgstr "ディレクトリの内容をツリー形式で一覧表示します。"
+
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
+#, c-format
+msgid "Element <%s> not allowed inside <%s>"
+msgstr "要素 <%s> は <%s> 内に含められません"
+
+#: gio/glib-compile-resources.c:144
+#, c-format
+msgid "Element <%s> not allowed at toplevel"
+msgstr "要素 <%s> はトップレベルでは使用できません"
+
+#: gio/glib-compile-resources.c:234
+#, c-format
+msgid "File %s appears multiple times in the resource"
+msgstr "リソース内にファイル %s が複数回出現しています"
+
+#: gio/glib-compile-resources.c:245
+#, c-format
+msgid "Failed to locate “%s” in any source directory"
+msgstr "ソースディレクトリに“%s”がありません"
+
+#: gio/glib-compile-resources.c:256
+#, c-format
+msgid "Failed to locate “%s” in current directory"
+msgstr "現在のディレクトリに“%s”がありません"
+
+#: gio/glib-compile-resources.c:290
+#, c-format
+msgid "Unknown processing option “%s”"
+msgstr "“%s”は不明なオプションです"
+
+#. Translators: the first %s is a gresource XML attribute,
+#. * the second %s is an environment variable, and the third
+#. * %s is a command line tool
+#.
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
+#, c-format
+msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
+msgstr "%s の前処理が要求されましたが %s の設定がなく %s も PATH にありません"
+
+#: gio/glib-compile-resources.c:457
+#, c-format
+msgid "Error reading file %s: %s"
+msgstr "ファイル %s の読み取り中にエラーが発生しました: %s"
+
+#: gio/glib-compile-resources.c:477
+#, c-format
+msgid "Error compressing file %s"
+msgstr "ファイル %s の圧縮中にエラーが発生しました"
+
+#: gio/glib-compile-resources.c:541
+#, c-format
+msgid "text may not appear inside <%s>"
+msgstr "文字列は <%s> 内に含められません"
+
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+msgid "Show program version and exit"
+msgstr "プログラムのバージョンを表示して終了する"
+
+#: gio/glib-compile-resources.c:738
+msgid "Name of the output file"
+msgstr "出力ファイル名"
+
+#: gio/glib-compile-resources.c:739
+msgid ""
+"The directories to load files referenced in FILE from (default: current "
+"directory)"
+msgstr ""
+"対象のファイル (FILE) を読み込むディレクトリ (デフォルト: 現在のディレクト"
+"リ)"
+
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
+msgid "DIRECTORY"
+msgstr ""
+
+#: gio/glib-compile-resources.c:740
+msgid ""
+"Generate output in the format selected for by the target filename extension"
+msgstr ""
+
+#: gio/glib-compile-resources.c:741
+msgid "Generate source header"
+msgstr ""
+
+#: gio/glib-compile-resources.c:742
+msgid "Generate source code used to link in the resource file into your code"
+msgstr ""
 
-#: ../gio/gfileenumerator.c:220 ../gio/gfileenumerator.c:279
-#: ../gio/gfileenumerator.c:379 ../gio/gfileenumerator.c:479
-msgid "File enumerator has outstanding operation"
-msgstr "File enumerator has outstanding operation"
+#: gio/glib-compile-resources.c:743
+msgid "Generate dependency list"
+msgstr ""
 
-#: ../gio/gfileenumerator.c:370 ../gio/gfileenumerator.c:470
-msgid "File enumerator is already closed"
-msgstr "ファイルの Enumerator は既に閉じています"
+#: gio/glib-compile-resources.c:744
+msgid "Name of the dependency file to generate"
+msgstr ""
 
-#: ../gio/gfileicon.c:237
-#, c-format
-msgid "Can't handle version %d of GFileIcon encoding"
-msgstr "バージョン %d の GFileIcon のエンコーディングはサポートしていません"
+#: gio/glib-compile-resources.c:745
+msgid "Include phony targets in the generated dependency file"
+msgstr ""
 
-#: ../gio/gfileicon.c:247
-msgid "Malformed input data for GFileIcon"
-msgstr "GFileIcon の入力データが間違っています"
+#: gio/glib-compile-resources.c:746
+msgid "Don’t automatically create and register resource"
+msgstr ""
 
-#: ../gio/gfileinputstream.c:151 ../gio/gfileinputstream.c:397
-#: ../gio/gfileiostream.c:169 ../gio/gfileoutputstream.c:166
-#: ../gio/gfileoutputstream.c:500
-msgid "Stream doesn't support query_info"
-msgstr "ストリームは query_info をサポートしていません"
+#: gio/glib-compile-resources.c:747
+msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
+msgstr "関数をエクスポートしない (G_GNUC_INTERNAL を使用してください)"
 
-#: ../gio/gfileinputstream.c:328 ../gio/gfileiostream.c:382
-#: ../gio/gfileoutputstream.c:374
-msgid "Seek not supported on stream"
-msgstr "ストリーム上のシークはサポートしていません"
+#: gio/glib-compile-resources.c:748
+msgid ""
+"Don’t embed resource data in the C file; assume it's linked externally "
+"instead"
+msgstr ""
 
-#: ../gio/gfileinputstream.c:372
-msgid "Truncate not allowed on input stream"
-msgstr "入力ストリームを切りつめることはできません"
+#: gio/glib-compile-resources.c:749
+msgid "C identifier name used for the generated source code"
+msgstr ""
 
-#: ../gio/gfileiostream.c:458 ../gio/gfileoutputstream.c:450
-msgid "Truncate not supported on stream"
-msgstr "ストリーム上での切りつめはサポートしていません"
+#: gio/glib-compile-resources.c:775
+msgid ""
+"Compile a resource specification into a resource file.\n"
+"Resource specification files have the extension .gresource.xml,\n"
+"and the resource file have the extension called .gresource."
+msgstr ""
+"リソース仕様をコンパイルして、リソースファイルを生成します。\n"
+"リソース仕様ファイルの拡張子は .gresource.xml、\n"
+"リソースファイルの拡張子は .gresource です。"
 
-#: ../gio/gicon.c:297
-#, c-format
-msgid "Wrong number of tokens (%d)"
-msgstr "トークンの数 (%d) が間違っています"
+#: gio/glib-compile-resources.c:797
+msgid "You should give exactly one file name\n"
+msgstr "ファイル名を一つだけ指定してください\n"
 
-#: ../gio/gicon.c:317
+#: gio/glib-compile-schemas.c:92
 #, c-format
-msgid "No type for class name %s"
-msgstr "%s というクラス名の型がありません"
+msgid "nick must be a minimum of 2 characters"
+msgstr ""
 
-#: ../gio/gicon.c:327
+#: gio/glib-compile-schemas.c:103
 #, c-format
-msgid "Type %s does not implement the GIcon interface"
-msgstr "%s という型は GIcon のインターフェースを実装していません"
+msgid "Invalid numeric value"
+msgstr "不正な数値です"
 
-#: ../gio/gicon.c:338
+#: gio/glib-compile-schemas.c:111
 #, c-format
-msgid "Type %s is not classed"
-msgstr "%s という型がクラスになっていません"
+msgid "<value nick='%s'/> already specified"
+msgstr "<value nick='%s'/> はすでに定義されています"
 
-#: ../gio/gicon.c:352
+#: gio/glib-compile-schemas.c:119
 #, c-format
-msgid "Malformed version number: %s"
-msgstr "バージョン番号が間違っています: %s"
+msgid "value='%s' already specified"
+msgstr "value='%s' はすでに定義されています"
 
-#: ../gio/gicon.c:366
+#: gio/glib-compile-schemas.c:133
 #, c-format
-msgid "Type %s does not implement from_tokens() on the GIcon interface"
-msgstr "%s という型は GIcon のインターフェースで from_tokens() を実装していません"
-
-#: ../gio/gicon.c:468
-#, fuzzy
-#| msgid "Can't handle the supplied version the icon encoding"
-msgid "Can't handle the supplied version of the icon encoding"
-msgstr "提供したバージョンの Icon のエンコーディングはサポートしていません"
-
-#: ../gio/ginetaddressmask.c:183
-msgid "No address specified"
+msgid "flags values must have at most 1 bit set"
 msgstr ""
 
-#: ../gio/ginetaddressmask.c:191
+#: gio/glib-compile-schemas.c:158
 #, c-format
-msgid "Length %u is too long for address"
+msgid "<%s> must contain at least one <value>"
 msgstr ""
 
-#: ../gio/ginetaddressmask.c:224
-msgid "Address has bits set beyond prefix length"
+#: gio/glib-compile-schemas.c:314
+#, c-format
+msgid "<%s> is not contained in the specified range"
 msgstr ""
 
-#: ../gio/ginetaddressmask.c:301
-#, fuzzy, c-format
-msgid "Could not parse '%s' as IP address mask"
-msgstr "ローカルのアドレスを取得できませんでした: %s"
-
-#: ../gio/ginetsocketaddress.c:197 ../gio/ginetsocketaddress.c:214
-#: ../gio/gunixsocketaddress.c:211
-msgid "Not enough space for socket address"
-msgstr "ソケット・アドレスを作成するために充分な空きがありません"
-
-#: ../gio/ginetsocketaddress.c:229
-msgid "Unsupported socket address"
-msgstr "サポートしていないソケット・アドレスです"
-
-#: ../gio/ginputstream.c:183
-msgid "Input stream doesn't implement read"
-msgstr "入力ストリームで読み込みを実装していません"
-
-#. Translators: This is an error you get if there is already an
-#. * operation running against this stream when you try to start
-#. * one
-#. 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:1022 ../gio/giostream.c:290
-#: ../gio/goutputstream.c:1333
-msgid "Stream has outstanding operation"
-msgstr "Stream has outstanding operation"
+#: gio/glib-compile-schemas.c:326
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:145 ../gio/glib-compile-schemas.c:1459
+#: gio/glib-compile-schemas.c:332
 #, c-format
-msgid "Element <%s> not allowed inside <%s>"
-msgstr "要素 <%s> は <%s> 内に含められません"
+msgid "<%s> contains string not in the specified flags type"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:149
+#: gio/glib-compile-schemas.c:338
 #, c-format
-msgid "Element <%s> not allowed at toplevel"
-msgstr "要素 <%s> はトップレベルでは使えません"
+msgid "<%s> contains a string not in <choices>"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:239
+#: gio/glib-compile-schemas.c:372
+msgid "<range/> already specified for this key"
+msgstr "<range/> はすでにこのキーで定義されています"
+
+#: gio/glib-compile-schemas.c:390
 #, c-format
-msgid "File %s appears multiple times in the resource"
+msgid "<range> not allowed for keys of type “%s”"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:252
+#: gio/glib-compile-schemas.c:407
 #, c-format
-msgid "Failed to locate '%s' in any source directory"
+msgid "<range> specified minimum is greater than maximum"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:263
-#, fuzzy, c-format
-msgid "Failed to locate '%s' in current directory"
-msgstr "'%s' というディレクトリへ移動できませんでした (%s)"
+#: gio/glib-compile-schemas.c:432
+#, c-format
+msgid "unsupported l10n category: %s"
+msgstr "サポートしていない l10n のカテゴリーです: %s"
 
-#: ../gio/glib-compile-resources.c:291
-#, fuzzy, c-format
-msgid "Unknown processing option \"%s\""
-msgstr "%s は不明なオプションです"
+#: gio/glib-compile-schemas.c:440
+msgid "l10n requested, but no gettext domain given"
+msgstr "l10n が要求されましたが gettext ドメインの指定がありません"
 
-#: ../gio/glib-compile-resources.c:310 ../gio/glib-compile-resources.c:370
-#, fuzzy, c-format
-msgid "Failed to create temp file: %s"
-msgstr "'%s' というファイルを生成できませんでした: %s"
+#: gio/glib-compile-schemas.c:452
+msgid "translation context given for value without l10n enabled"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:340
-#, fuzzy, c-format
-msgid ""
-"Error processing input file with xmllint:\n"
-"%s"
-msgstr "シンボリックリンクの指定でエラー: ファイルがリンクではない"
+#: gio/glib-compile-schemas.c:474
+#, c-format
+msgid "Failed to parse <default> value of type “%s”: "
+msgstr "“%s”の <default> 値の解析に失敗しました: "
 
-#: ../gio/glib-compile-resources.c:396
-#, fuzzy, c-format
+#: gio/glib-compile-schemas.c:491
 msgid ""
-"Error processing input file with to-pixdata:\n"
-"%s"
-msgstr "シンボリックリンクの指定でエラー: ファイルがリンクではない"
-
-#: ../gio/glib-compile-resources.c:410
-#, fuzzy, c-format
-msgid "Error reading file %s: %s"
-msgstr "'%s' の読み出し中にエラー: %s"
+"<choices> cannot be specified for keys tagged as having an enumerated type"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:430
-#, fuzzy, c-format
-msgid "Error compressing file %s"
-msgstr "ファイルをオープンする際にエラー: %s"
+#: gio/glib-compile-schemas.c:500
+msgid "<choices> already specified for this key"
+msgstr "<choices> はすでにこのキーで定義されています"
 
-#: ../gio/glib-compile-resources.c:494 ../gio/glib-compile-schemas.c:1571
+#: gio/glib-compile-schemas.c:512
 #, c-format
-msgid "text may not appear inside <%s>"
-msgstr "文字列は <%s> 内に含められません"
-
-#: ../gio/glib-compile-resources.c:619
-#, fuzzy
-msgid "name of the output file"
-msgstr "アイコンの名前です"
-
-#: ../gio/glib-compile-resources.c:619 ../gio/glib-compile-resources.c:650
-#: ../gio/gresource-tool.c:482 ../gio/gresource-tool.c:548
-#, fuzzy
-msgid "FILE"
-msgstr "[ファイル...]"
-
-#: ../gio/glib-compile-resources.c:620
-msgid "The directories where files are to be read from (default to current directory)"
+msgid "<choices> not allowed for keys of type “%s”"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:620 ../gio/glib-compile-schemas.c:1999
-#: ../gio/glib-compile-schemas.c:2028
-msgid "DIRECTORY"
-msgstr "DIRECTORY"
-
-#: ../gio/glib-compile-resources.c:621
-msgid "Generate output in the format selected for by the target filename extension"
+#: gio/glib-compile-schemas.c:528
+#, c-format
+msgid "<choice value='%s'/> already given"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:622
-msgid "Generate source header"
+#: gio/glib-compile-schemas.c:543
+#, c-format
+msgid "<choices> must contain at least one <choice>"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:623
-msgid "Generate sourcecode used to link in the resource file into your code"
-msgstr ""
+#: gio/glib-compile-schemas.c:557
+msgid "<aliases> already specified for this key"
+msgstr "<aliases> はすでにこのキーで定義されています"
 
-#: ../gio/glib-compile-resources.c:624
-msgid "Generate dependency list"
+#: gio/glib-compile-schemas.c:561
+msgid ""
+"<aliases> can only be specified for keys with enumerated or flags types or "
+"after <choices>"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:625
-msgid "Don't automatically create and register resource"
+#: gio/glib-compile-schemas.c:580
+#, c-format
+msgid ""
+"<alias value='%s'/> given when “%s” is already a member of the enumerated "
+"type"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:626
-msgid "Don't export functions; declare them G_GNUC_INTERNAL"
+#: gio/glib-compile-schemas.c:586
+#, c-format
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:627
-msgid "C identifier name used for the generated source code"
+#: gio/glib-compile-schemas.c:594
+#, c-format
+msgid "<alias value='%s'/> already specified"
+msgstr "<alias value='%s'/> はすでに定義されています"
+
+#: gio/glib-compile-schemas.c:604
+#, c-format
+msgid "alias target “%s” is not in enumerated type"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:653
-msgid ""
-"Compile a resource specification into a resource file.\n"
-"Resource specification files have the extension .gresource.xml,\n"
-"and the resource file have the extension called .gresource."
+#: gio/glib-compile-schemas.c:605
+#, c-format
+msgid "alias target “%s” is not in <choices>"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:669
+#: gio/glib-compile-schemas.c:620
 #, c-format
-msgid "You should give exactly one file name\n"
+msgid "<aliases> must contain at least one <alias>"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:778
-msgid "empty names are not permitted"
+#: gio/glib-compile-schemas.c:797
+msgid "Empty names are not permitted"
 msgstr "空の名前は使用できません"
 
-#: ../gio/glib-compile-schemas.c:788
+#: gio/glib-compile-schemas.c:807
 #, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
-msgstr "不正な名前 '%s': 名前の先頭は小文字のみが使用できます"
+msgid "Invalid name “%s”: names must begin with a lowercase letter"
+msgstr "名前“%s”は不正です: 名前の先頭は小文字のみが使用できます"
 
-#: ../gio/glib-compile-schemas.c:800
+#: gio/glib-compile-schemas.c:819
 #, c-format
-msgid "invalid name '%s': invalid character '%c'; only lowercase letters, numbers and hyphen ('-') are permitted."
-msgstr "不正な名前 '%s': 不正な文字 '%c': 小文字、数字、およびハイフン ('-') のみが使用できます"
+msgid ""
+"Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
+"and hyphen (“-”) are permitted"
+msgstr ""
+"名前“%s”の“%c”は不正です: 小文字、数字、ハイフン (“-”) のみが使用できます"
 
-#: ../gio/glib-compile-schemas.c:809
+#: gio/glib-compile-schemas.c:828
 #, c-format
-msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
-msgstr "不正な名前 '%s': 連続するハイフン ('--') は使用できません"
+msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
+msgstr "名前“%s”は不正です: 連続するハイフン (“--”) は使用できません"
 
-#: ../gio/glib-compile-schemas.c:818
+#: gio/glib-compile-schemas.c:837
 #, c-format
-msgid "invalid name '%s': the last character may not be a hyphen ('-')."
-msgstr "不正な名前 '%s': 名前の末尾にハイフン ('-') は使用できません"
+msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
+msgstr "名前“%s”は不正です: ハイフン (“-”) は名前の末尾に使用できません"
 
-#: ../gio/glib-compile-schemas.c:826
+#: gio/glib-compile-schemas.c:845
 #, c-format
-msgid "invalid name '%s': maximum length is 1024"
-msgstr "不正な名前 '%s': 最大長は 1024 です"
+msgid "Invalid name “%s”: maximum length is 1024"
+msgstr "名前“%s”は不正です: 最大長は 1024 です"
 
-#: ../gio/glib-compile-schemas.c:895
+#: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
-msgstr "<child name='%s'> はに定義されています"
+msgstr "<child name='%s'> はすでに定義されています"
 
-#: ../gio/glib-compile-schemas.c:921
-msgid "cannot add keys to a 'list-of' schema"
-msgstr "'list-of' 属性を持つスキーマにキーを追加できません"
+#: gio/glib-compile-schemas.c:943
+msgid "Cannot add keys to a “list-of” schema"
+msgstr "“list-of”属性を持つスキーマにキーを追加できません"
 
-#: ../gio/glib-compile-schemas.c:932
+#: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
-msgstr "<key name='%s'> はに定義されています"
+msgstr "<key name='%s'> はすでに定義されています"
 
-#: ../gio/glib-compile-schemas.c:950
+#: gio/glib-compile-schemas.c:972
 #, c-format
-msgid "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> to modify value"
-msgstr "<key name='%1$s'> は <schema id='%3$s'> 中の <key name='%2$s'> を隠してしまいます。値の変更は <override> を使ってください"
+msgid ""
+"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
+"to modify value"
+msgstr ""
+"<key name='%1$s'> は <schema id='%3$s'> 中の <key name='%2$s'> を隠してしまい"
+"ます。値の変更は <override> を使用してください"
 
-#: ../gio/glib-compile-schemas.c:961
+#: gio/glib-compile-schemas.c:983
 #, c-format
-msgid "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute to <key>"
-msgstr "<key> の属性としては、'type'、'enum'、あるいは 'flags' のどれかひとつだけが指定できます"
+msgid ""
+"Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
+"to <key>"
+msgstr ""
+"<key> の属性としては、“type”、“enum”、“flags”のどれか一つだけが指定できます"
 
-#: ../gio/glib-compile-schemas.c:980
+#: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> は (まだ) 定義されていません。"
 
-#: ../gio/glib-compile-schemas.c:995
+#: gio/glib-compile-schemas.c:1017
 #, c-format
-msgid "invalid GVariant type string '%s'"
-msgstr "正しくない GVariant 型の文字列 '%s'"
+msgid "Invalid GVariant type string “%s”"
+msgstr "“%s”は不正な GVariant 型の文字列です"
 
-#: ../gio/glib-compile-schemas.c:1025
-msgid "<override> given but schema isn't extending anything"
+#: gio/glib-compile-schemas.c:1047
+msgid "<override> given but schema isnt extending anything"
 msgstr "<override> が指定されましたが、スキーマは何も拡張していません"
 
-#: ../gio/glib-compile-schemas.c:1038
+#: gio/glib-compile-schemas.c:1060
 #, c-format
-msgid "no <key name='%s'> to override"
+msgid "No <key name='%s'> to override"
 msgstr "オーバーライドする <key name='%s'> がありません"
 
-#: ../gio/glib-compile-schemas.c:1046
+#: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
-msgstr "<override name='%s'> はに定義されています"
+msgstr "<override name='%s'> はすでに定義されています"
 
-#: ../gio/glib-compile-schemas.c:1117
+#: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
-msgstr "<schema id='%s'> はに定義されています"
+msgstr "<schema id='%s'> はすでに定義されています"
 
-#: ../gio/glib-compile-schemas.c:1129
-#, fuzzy, c-format
-#| msgid "<schema id='%s'> extends not-yet-existing schema '%s'"
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
-msgstr "<schema id='%s'> はまだ存在していないスキーマ '%s' を拡張しています"
+#: gio/glib-compile-schemas.c:1153
+#, c-format
+msgid "<schema id='%s'> extends not yet existing schema “%s”"
+msgstr "<schema id='%s'> はまだ存在していないスキーマ“%s”を拡張しています"
 
-#: ../gio/glib-compile-schemas.c:1145
-#, fuzzy, c-format
-#| msgid "<schema id='%s'> is list of not-yet-existing schema '%s'"
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
-msgstr "<schema id='%s'> はまだ存在していないスキーマ '%s' のリストです"
+#: gio/glib-compile-schemas.c:1169
+#, c-format
+msgid "<schema id='%s'> is list of not yet existing schema “%s”"
+msgstr "<schema id='%s'> はまだ存在していないスキーマ“%s”のリストです"
 
-#: ../gio/glib-compile-schemas.c:1153
+#: gio/glib-compile-schemas.c:1177
 #, c-format
-msgid "Can not be a list of a schema with a path"
+msgid "Cannot be a list of a schema with a path"
 msgstr "path 属性を持つスキーマのリストにはなれません"
 
-#: ../gio/glib-compile-schemas.c:1163
+#: gio/glib-compile-schemas.c:1187
 #, c-format
-msgid "Can not extend a schema with a path"
+msgid "Cannot extend a schema with a path"
 msgstr "path 属性を持つスキーマを拡張できません"
 
-#: ../gio/glib-compile-schemas.c:1173
+#: gio/glib-compile-schemas.c:1197
+#, c-format
+msgid ""
+"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgstr ""
+"<schema id='%s'> はリストですが、リストではない <schema id='%s'> を拡張してい"
+"ます"
+
+#: gio/glib-compile-schemas.c:1207
 #, c-format
-msgid "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
-msgstr "<schema id='%s'> はリストですが、リストではない <schema id='%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'> は <schema id='%s' list-of='%s'> を拡張していま"
+"すが、“%s”は“%s”を拡張してません"
 
-#: ../gio/glib-compile-schemas.c:1183
+#: gio/glib-compile-schemas.c:1224
 #, 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'> は <schema id='%s' list-of='%s'> を拡張していますが、'%s' は '%s' を拡張してません"
+msgid "A path, if given, must begin and end with a slash"
+msgstr "パスを指定する場合、その先頭および末尾はスラッシュである必要があります"
 
-#: ../gio/glib-compile-schemas.c:1200
+#: gio/glib-compile-schemas.c:1231
 #, c-format
-msgid "a path, if given, must begin and end with a slash"
-msgstr "ã\83\91ã\82¹ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bå ´å\90\88ã\80\81ã\81\9dã\81®å\85\88é ­ã\81\8aã\82\88ã\81³æ\9c«å°¾ã\81¯ã\82¹ã\83©ã\83\83ã\82·ã\83¥ã\81§ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\8aã\81¾ã\81\9bã\82\93"
+msgid "The path of a list must end with “:/”"
+msgstr "ã\83ªã\82¹ã\83\88ã\81®ã\83\91ã\82¹ã\81®æ\9c«å°¾ã\81¯â\80\9c:/â\80\9dã\81§ã\81\82ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99"
 
-#: ../gio/glib-compile-schemas.c:1207
+#: gio/glib-compile-schemas.c:1240
 #, c-format
-msgid "the path of a list must end with ':/'"
-msgstr "リストのパスの末尾は ':/' でなければなりません"
+msgid ""
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
+"desktop/” or “/system/” are deprecated."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1239
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
-msgstr "<%s id='%s'> はに定義されています"
+msgstr "<%s id='%s'> はすでに定義されています"
 
-#: ../gio/glib-compile-schemas.c:1463
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
+#, c-format
+msgid "Only one <%s> element allowed inside <%s>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1518
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "要素 <%s> はトップレベルでは使用できません"
 
+#: gio/glib-compile-schemas.c:1536
+msgid "Element <default> is required in <key>"
+msgstr "<key> 内に要素 <default> が必要です"
+
+#: gio/glib-compile-schemas.c:1626
+#, c-format
+msgid "Text may not appear inside <%s>"
+msgstr "文字列は <%s> 内に含められません"
+
+#: gio/glib-compile-schemas.c:1694
+#, c-format
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr "警告: <schema id='%s'/> への定義されていない参照です"
+
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1757 ../gio/glib-compile-schemas.c:1828
-#: ../gio/glib-compile-schemas.c:1904
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+msgid "--strict was specified; exiting."
+msgstr "--strict が指定されました。終了します。"
+
+#: gio/glib-compile-schemas.c:1845
+msgid "This entire file has been ignored."
+msgstr "このファイルを無視しました。"
+
+#: gio/glib-compile-schemas.c:1908
+msgid "Ignoring this file."
+msgstr "このファイルを無視します。"
+
+#: gio/glib-compile-schemas.c:1963
 #, c-format
-msgid "--strict was specified; exiting.\n"
-msgstr "--strict が指定されました。終了します。\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
+msgstr ""
+"オーバーライドファイル“%3$s”で指定されたスキーマ“%2$s”のキー“%1$s”がありませ"
+"ん。このキーのオーバーライドを無視します。"
 
-#: ../gio/glib-compile-schemas.c:1765
+#: gio/glib-compile-schemas.c:1971
 #, c-format
-msgid "This entire file has been ignored.\n"
-msgstr "このファイルを無視しました。\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
+msgstr ""
+"オーバーライドファイル“%3$s”で指定されたスキーマ“%2$s”のキー“%1$s”がありませ"
+"ん。--strict が指定されたため終了します。"
 
-#: ../gio/glib-compile-schemas.c:1824
+#: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "Ignoring this file.\n"
-msgstr "このファイルを無視します。\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1864
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
-msgstr "オーバーライドファイル '%3$s' で指定されたスキーマ '%2$s' のキー '%1$s' は存在しません"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1870 ../gio/glib-compile-schemas.c:1928
-#: ../gio/glib-compile-schemas.c:1956
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid "; ignoring override for this key.\n"
-msgstr "。このキーのオーバーライドを無視します。\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
+msgstr ""
+"オーバーライドファイル“%3$s”で指定されたスキーマ“%2$s”のキー“%1$s”の解析中に"
+"エラーが発生しました: %4$s: このキーのオーバーライドを無視します。"
 
-#: ../gio/glib-compile-schemas.c:1874 ../gio/glib-compile-schemas.c:1932
-#: ../gio/glib-compile-schemas.c:1960
+#: gio/glib-compile-schemas.c:2038
 #, c-format
-msgid " and --strict was specified; exiting.\n"
-msgstr "。--strict が指定されました。終了します。\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
+msgstr ""
+"オーバーライドファイル“%3$s”で指定されたスキーマ“%2$s”のキー“%1$s”の解析中に"
+"エラーが発生しました: %4$s: --strict が指定されたため終了します。"
 
-#: ../gio/glib-compile-schemas.c:1890
+#: gio/glib-compile-schemas.c:2065
 #, c-format
-msgid "error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
-msgstr "オーバーライドファイル '%3$s' で指定されたスキーマ '%2$s' のキー '%1$s' のパースでエラー発生: %4$s."
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
+msgstr ""
+"オーバーライドファイル“%3$s”で指定されたスキーマ“%2$s”のキー“%1$s”のオーバー"
+"ライド値が、スキーマで定義された有効な範囲内にありません。このキーのオーバー"
+"ライドを無視します。"
 
-#: ../gio/glib-compile-schemas.c:1900
+#: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "Ignoring override for this key.\n"
-msgstr "このキーのオーバーライドを無視します。\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
+msgstr ""
+"オーバーライドファイル“%3$s”で指定されたスキーマ“%2$s”のキー“%1$s”のオーバー"
+"ライド値が、スキーマで定義された有効な範囲内にありません。--strict が指定され"
+"たため終了します。"
 
-#: ../gio/glib-compile-schemas.c:1918
+#: gio/glib-compile-schemas.c:2101
 #, c-format
-msgid "override for key '%s' in schema '%s' in override file '%s' is outside the range given in the schema"
-msgstr "オーバーライドファイル '%3$s' で指定されたスキーマ '%2$s' のキー '%1$s' のオーバーライド値が、スキーマで定義された有効な範囲内にありません"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1946
+#: gio/glib-compile-schemas.c:2111
 #, c-format
-msgid "override for key '%s' in schema '%s' in override file '%s' is not in the list of valid choices"
-msgstr "オーバーライドファイル '%3$s' で指定されたスキーマ '%2$s' のキー '%1$s' のオーバーライド値が、スキーマで定義された有効な範囲内にありません"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1999
-msgid "where to store the gschemas.compiled file"
-msgstr "gschemas.compiled ã\81®å\87ºå\8a\9bå\85\88ã\82\92æ\8c\87å®\9aã\81\99ã\82\8b"
+#: gio/glib-compile-schemas.c:2173
+msgid "Where to store the gschemas.compiled file"
+msgstr "gschemas.compiled ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\87ºå\8a\9bå\85\88"
 
-#: ../gio/glib-compile-schemas.c:2000
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
-msgstr "ã\82¹ã\82­ã\83¼ã\83\9eå\86\85ã\81«ã\82¨ã\83©ã\83¼ã\82\92æ¤\9cå\87ºã\81\99ã\82\8cã\81°処理を中止する"
+msgstr "ã\82¹ã\82­ã\83¼ã\83\9eå\86\85ã\81«ã\82¨ã\83©ã\83¼ã\82\92æ¤\9cå\87ºã\81\97ã\81\9fã\82\89処理を中止する"
 
-#: ../gio/glib-compile-schemas.c:2001
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
 msgstr "gschema.compiled を生成しない"
 
-#: ../gio/glib-compile-schemas.c:2002
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
 msgstr "キー名の制約を強制しない"
 
-#: ../gio/glib-compile-schemas.c:2031
+#: gio/glib-compile-schemas.c:2205
 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 ""
-"すべての GSettings スキーマファイルをコンパイルして、スキーマキャッシュを生成します。\n"
-"スキーマファイルの拡張子は .gschema.xml でなければなりません。\n"
+"すべての GSettings スキーマファイルをコンパイルして、スキーマキャッシュを生成"
+"します。\n"
+"スキーマファイルの拡張子は .gschema.xml である必要があります。\n"
 "キャッシュファイルの名称は gschemas.compiled となります。"
 
-#: ../gio/glib-compile-schemas.c:2047
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr "ディレクトリ名をひとつだけ指定してください\n"
+#: gio/glib-compile-schemas.c:2226
+msgid "You should give exactly one directory name"
+msgstr "ディレクトリ名を一つだけ指定してください"
 
-#: ../gio/glib-compile-schemas.c:2086
-#, c-format
-msgid "No schema files found: "
-msgstr "スキーマファイルが見つかりません: "
+#: gio/glib-compile-schemas.c:2269
+msgid "No schema files found: doing nothing."
+msgstr "スキーマファイルが見つかりません: 何もしません。"
 
-#: ../gio/glib-compile-schemas.c:2089
-#, c-format
-msgid "doing nothing.\n"
-msgstr "何もしません。\n"
+#: gio/glib-compile-schemas.c:2271
+msgid "No schema files found: removed existing output file."
+msgstr "スキーマファイルが見つかりません: 既存の出力ファイルを削除しました。"
 
-#: ../gio/glib-compile-schemas.c:2092
+#: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
-msgid "removed existing output file.\n"
-msgstr "既存の出力ファイル (gschemas.compiled) を削除しました。\n"
-
-#: ../gio/glocaldirectorymonitor.c:252
-msgid "Unable to find default local directory monitor type"
-msgstr "ローカル・ディレクトリを監視するデフォルト・モニターの種類が見つかりません"
+msgid "Invalid filename %s"
+msgstr "%s は不正なファイル名です"
 
-#: ../gio/glocalfile.c:602 ../gio/win32/gwinhttpfile.c:422
+#: gio/glocalfile.c:1013
 #, c-format
-msgid "Invalid filename %s"
-msgstr "ファイル名が無効です: %s"
+msgid "Error getting filesystem info for %s: %s"
+msgstr "%s のファイルシステム情報取得中にエラーが発生しました: %s"
 
-#: ../gio/glocalfile.c:979
+#. Translators: This is an error message when trying to find
+#. * the enclosing (user visible) mount of a file, but none
+#. * exists.
+#.
+#: gio/glocalfile.c:1152
 #, c-format
-msgid "Error getting filesystem info: %s"
-msgstr "ファイルシステムの情報を取得する際にエラー: %s"
+msgid "Containing mount for file %s not found"
+msgstr ""
 
-#: ../gio/glocalfile.c:1147
-msgid "Can't rename root directory"
-msgstr "ã\83«ã\83¼ã\83\88ã\83»ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81®å\90\8då\89\8dã\81¯å¤\89æ\9b´ã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+#: gio/glocalfile.c:1175
+msgid "Cant rename root directory"
+msgstr "ルートディレクトリの名前は変更できません"
 
-#: ../gio/glocalfile.c:1167 ../gio/glocalfile.c:1193
+#: gio/glocalfile.c:1193 gio/glocalfile.c:1216
 #, c-format
-msgid "Error renaming file: %s"
-msgstr "ファイル名を変更する際にエラー: %s"
+msgid "Error renaming file %s: %s"
+msgstr "ファイル %s の名前変更中にエラーが発生しました: %s"
 
-#: ../gio/glocalfile.c:1176
-#, fuzzy
-msgid "Can't rename file, filename already exists"
-msgstr "ファイル名を変更できません (既に存在しているため)"
+#: gio/glocalfile.c:1200
+msgid "Can’t rename file, filename already exists"
+msgstr "ファイル名を変更できません (すでに存在しているため)"
 
-#: ../gio/glocalfile.c:1189 ../gio/glocalfile.c:2206 ../gio/glocalfile.c:2235
-#: ../gio/glocalfile.c:2395 ../gio/glocalfileoutputstream.c:553
+#: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
-msgstr "無効なファイル名です"
+msgstr "不正なファイル名です"
 
-#: ../gio/glocalfile.c:1356 ../gio/glocalfile.c:1380
-msgid "Can't open directory"
-msgstr "ディレクトリをオープンできません"
-
-#: ../gio/glocalfile.c:1364
+#: gio/glocalfile.c:1381 gio/glocalfile.c:1396
 #, c-format
-msgid "Error opening file: %s"
-msgstr "ファイルをオープンする際にエラー: %s"
+msgid "Error opening file %s: %s"
+msgstr "ファイル %s を開くときにエラーが発生しました: %s"
 
-#: ../gio/glocalfile.c:1505
+#: gio/glocalfile.c:1521
 #, c-format
-msgid "Error removing file: %s"
-msgstr "ファイルを削除する際にエラー: %s"
+msgid "Error removing file %s: %s"
+msgstr "ファイル %s の削除中にエラーが発生しました: %s"
 
-#: ../gio/glocalfile.c:1885
+#: gio/glocalfile.c:1963
 #, c-format
-msgid "Error trashing file: %s"
-msgstr "ファイルをゴミ箱へ移動する際にエラー: %s"
+msgid "Error trashing file %s: %s"
+msgstr "ファイル %s をゴミ箱へ移動するときにエラーが発生しました: %s"
 
-#: ../gio/glocalfile.c:1908
+#: gio/glocalfile.c:2004
 #, c-format
 msgid "Unable to create trash dir %s: %s"
-msgstr "ゴミ箱のディレクトリ (%s) の生成に失敗しました: %s"
+msgstr "ゴミ箱ディレクトリ %s を作成できません: %s"
+
+#: gio/glocalfile.c:2025
+#, c-format
+msgid "Unable to find toplevel directory to trash %s"
+msgstr "%s のゴミ箱のためのトップレベルディレクトリが見つかりません"
 
-#: ../gio/glocalfile.c:1929
-msgid "Unable to find toplevel directory for trash"
-msgstr "ゴミ箱のトップレベルなディレクトリが見つかりません"
+#: gio/glocalfile.c:2034
+#, c-format
+msgid "Trashing on system internal mounts is not supported"
+msgstr ""
 
-#: ../gio/glocalfile.c:2008 ../gio/glocalfile.c:2028
-msgid "Unable to find or create trash directory"
-msgstr "ゴミ箱ディレクトリが存在しないか生成できません"
+#: gio/glocalfile.c:2118 gio/glocalfile.c:2138
+#, c-format
+msgid "Unable to find or create trash directory for %s"
+msgstr "%s のゴミ箱ディレクトリが存在しないか作成できません"
 
-#: ../gio/glocalfile.c:2062
+#: gio/glocalfile.c:2173
 #, c-format
-msgid "Unable to create trashing info file: %s"
-msgstr "ゴミ箱の情報ファイルを生成できません: %s"
+msgid "Unable to create trashing info file for %s: %s"
+msgstr "%s のゴミ箱情報ファイルを作成できません: %s"
 
-#: ../gio/glocalfile.c:2091 ../gio/glocalfile.c:2096 ../gio/glocalfile.c:2176
-#: ../gio/glocalfile.c:2183
+#: gio/glocalfile.c:2233
 #, c-format
-msgid "Unable to trash file: %s"
-msgstr "ファイルをゴミ箱へ移動できません: %s"
+msgid "Unable to trash file %s across filesystem boundaries"
+msgstr "ファイル %s を別のファイルシステムのゴミ箱へ移動できません"
 
-#: ../gio/glocalfile.c:2184 ../glib/gregex.c:280
-msgid "internal error"
-msgstr "内部エラー"
+#: gio/glocalfile.c:2237 gio/glocalfile.c:2293
+#, c-format
+msgid "Unable to trash file %s: %s"
+msgstr "ファイル %s をゴミ箱へ移動できません: %s"
+
+#: gio/glocalfile.c:2299
+#, c-format
+msgid "Unable to trash file %s"
+msgstr "ファイル %s をゴミ箱へ移動できません"
 
-#: ../gio/glocalfile.c:2210
+#: gio/glocalfile.c:2325
 #, c-format
-msgid "Error creating directory: %s"
-msgstr "ディレクトリを生成する際にエラー: %s"
+msgid "Error creating directory %s: %s"
+msgstr "ディレクトリ %s の作成中にエラーが発生しました: %s"
 
-#: ../gio/glocalfile.c:2239
+#: gio/glocalfile.c:2354
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "シンボリックリンクをファイルシステムがサポートしていません"
 
-#: ../gio/glocalfile.c:2243
+#: gio/glocalfile.c:2357
 #, c-format
-msgid "Error making symbolic link: %s"
-msgstr "シンボリックリンクを生成する際にエラー: %s"
+msgid "Error making symbolic link %s: %s"
+msgstr "シンボリックリンク %s の作成中にエラーが発生しました: %s"
 
-#: ../gio/glocalfile.c:2305 ../gio/glocalfile.c:2399
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
-msgid "Error moving file: %s"
-msgstr "ファイルを移動する際にエラー: %s"
+msgid "Error moving file %s: %s"
+msgstr "ファイル %s の移動中にエラーが発生しました: %s"
 
-#: ../gio/glocalfile.c:2328
-msgid "Can't move directory over directory"
+#: gio/glocalfile.c:2423
+msgid "Cant move directory over directory"
 msgstr "ディレクトリからディレクトリへ移動できません"
 
-#: ../gio/glocalfile.c:2355 ../gio/glocalfileoutputstream.c:929
-#: ../gio/glocalfileoutputstream.c:943 ../gio/glocalfileoutputstream.c:958
-#: ../gio/glocalfileoutputstream.c:974 ../gio/glocalfileoutputstream.c:988
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
-msgstr "ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81®ç\94\9f成に失敗しました"
+msgstr "ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97ã\83\95ã\82¡ã\82¤ã\83«ã\81®ä½\9c成に失敗しました"
 
-#: ../gio/glocalfile.c:2374
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
-msgstr "対象ã\81¨ã\81ªã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\89\8aé\99¤ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "対象ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\89\8aé\99¤ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfile.c:2388
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "マウント間の移動はサポートしていません"
 
-#: ../gio/glocalfileinfo.c:722
+#: gio/glocalfile.c:2673
+#, c-format
+msgid "Could not determine the disk usage of %s: %s"
+msgstr "%s のディスク使用量を確認できませんでした: %s"
+
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "属性値を NULL にしないでください"
 
-#: ../gio/glocalfileinfo.c:729
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
-msgstr "属性の種類が無効です (文字列を想定していた)"
+msgstr "属性の種類が不正です (文字列を想定していた)"
 
-#: ../gio/glocalfileinfo.c:736
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
-msgstr "拡張属性の名前が無効です"
+msgstr "拡張属性の名前が不正です"
 
-#: ../gio/glocalfileinfo.c:776
+#: gio/glocalfileinfo.c:809
 #, c-format
-msgid "Error setting extended attribute '%s': %s"
-msgstr "'%s' という拡張属性をセットする際にエラー: %s"
+msgid "Error setting extended attribute “%s”: %s"
+msgstr "拡張属性“%s”の設定中にエラーが発生しました: %s"
 
-#: ../gio/glocalfileinfo.c:1544
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
-msgstr " (無効なエンコーディング)"
+msgstr " (不正なエンコーディング)"
 
-#: ../gio/glocalfileinfo.c:1736 ../gio/glocalfileoutputstream.c:807
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
-msgid "Error when getting information for file '%s': %s"
-msgstr "ファイル '%s' の情報を取得する際にエラー: %s"
+msgid "Error when getting information for file “%s”: %s"
+msgstr "ファイル“%s”の情報取得中にエラーが発生しました: %s"
 
-#: ../gio/glocalfileinfo.c:1982
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
-msgstr "ファイルディスクリプターの情報を取得する際にエラー: %s"
+msgstr "ファイルディスクリプターの情報取得中にエラーが発生しました: %s"
 
-#: ../gio/glocalfileinfo.c:2027
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
-msgstr "属性の種類が無効です (uint32 型を想定していた)"
+msgstr "属性の種類が不正です (uint32 型を想定していた)"
 
-#: ../gio/glocalfileinfo.c:2045
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
-msgstr "属性の種類が無効です (uint64 型を想定していた)"
+msgstr "属性の種類が不正です (uint64 型を想定していた)"
 
-#: ../gio/glocalfileinfo.c:2064 ../gio/glocalfileinfo.c:2083
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
-msgstr "属性の種類が無効です (バイト型の文字列を想定していた)"
+msgstr "属性の種類が不正です (バイト型の文字列を想定していた)"
 
-#: ../gio/glocalfileinfo.c:2118
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
-msgstr "シンボリックリンクにはアクセス権をセットできません"
+msgstr "シンボリックリンクにはアクセス権を設定できません"
 
-#: ../gio/glocalfileinfo.c:2134
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
-msgstr "ã\82¢ã\82¯ã\82»ã\82¹æ¨©ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\82¢ã\82¯ã\82»ã\82¹æ¨©ã\81®è¨­å®\9a中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfileinfo.c:2185
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
-msgstr "æ\89\80æ\9c\89è\80\85ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "æ\89\80æ\9c\89è\80\85ã\81®è¨­å®\9a中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfileinfo.c:2208
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "シンボリックリンクを NULL にしないでください"
 
-#: ../gio/glocalfileinfo.c:2218 ../gio/glocalfileinfo.c:2237
-#: ../gio/glocalfileinfo.c:2248
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
-msgstr "ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83ªã\83³ã\82¯ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83ªã\83³ã\82¯ã\81®è¨­å®\9a中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfileinfo.c:2227
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
-msgstr "シンボリックリンクの指定でエラー: ファイルがリンクではない"
+msgstr ""
+"シンボリックリンクの設定中にエラーが発生しました: ファイルがリンクではありま"
+"せん"
 
-#: ../gio/glocalfileinfo.c:2353
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
-msgstr "æ\9c\80çµ\82æ\9b´æ\96°æ\97¥æ\99\82ã\80\81ã\81\82ã\82\8bã\81\84ã\81¯æ\9c\80çµ\82ã\82¢ã\82¯ã\82»ã\82¹æ\97¥æ\99\82ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "æ\9c\80çµ\82æ\9b´æ\96°æ\97¥æ\99\82ã\81¾ã\81\9fã\81¯æ\9c\80çµ\82ã\82¢ã\82¯ã\82»ã\82¹æ\97¥æ\99\82ã\81®è¨­å®\9a中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfileinfo.c:2376
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux のコンテキストを NULL にしないでください"
 
-#: ../gio/glocalfileinfo.c:2391
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
-msgstr "SELinux のコンテキストを指定する際にエラー: %s"
+msgstr "SELinux のコンテキスト指定中にエラーが発生しました: %s"
 
-#: ../gio/glocalfileinfo.c:2398
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "このシステムでは SELinux が有効になっていません"
 
-#: ../gio/glocalfileinfo.c:2490
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
-msgstr "%s という属性値はセットできません"
+msgstr "%s という属性値は設定できません"
 
-#: ../gio/glocalfileinputstream.c:172 ../gio/glocalfileoutputstream.c:698
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
 #, c-format
 msgid "Error reading from file: %s"
-msgstr "ファイルから読み込む際にエラー: %s"
+msgstr "ファイルからの読み取り中にエラーが発生しました: %s"
 
-#: ../gio/glocalfileinputstream.c:203 ../gio/glocalfileinputstream.c:215
-#: ../gio/glocalfileinputstream.c:322 ../gio/glocalfileoutputstream.c:460
-#: ../gio/glocalfileoutputstream.c:1006
+#: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
+#: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
 #, c-format
 msgid "Error seeking in file: %s"
-msgstr "ファイルでシークする際にエラー: %s"
+msgstr "ファイルでシークするときにエラーが発生しました: %s"
 
-#: ../gio/glocalfileinputstream.c:244 ../gio/glocalfileoutputstream.c:250
-#: ../gio/glocalfileoutputstream.c:344
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
 #, c-format
 msgid "Error closing file: %s"
-msgstr "ファイルを閉じる際にエラー: %s"
+msgstr "ファイルを閉じるときにエラーが発生しました: %s"
 
-#: ../gio/glocalfilemonitor.c:176
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
-msgstr "ã\83­ã\83¼ã\82«ã\83«ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ç\9b£è¦\96ã\81\99ã\82\8bã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\83»ã\83¢ã\83\8bã\82¿ã\83¼ã\81®ç¨®é¡\9eã\81\8cè¦\8bã\81¤ã\81\8bã\82\8aã\81¾ã\81\9bã\82\93"
+msgstr "ローカルファイルを監視するデフォルトモニターの種類が見つかりません"
 
-#: ../gio/glocalfileoutputstream.c:198 ../gio/glocalfileoutputstream.c:230
-#: ../gio/glocalfileoutputstream.c:719
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error writing to file: %s"
-msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\81«æ\9b¸ã\81\8dè¾¼ã\82\80é\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfileoutputstream.c:277
+#: gio/glocalfileoutputstream.c:371
 #, c-format
 msgid "Error removing old backup link: %s"
-msgstr "å\8f¤ã\81\84ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97ã\81®ã\83ªã\83³ã\82¯ã\82\92å\89\8aé\99¤ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "å\8f¤ã\81\84ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97ã\83ªã\83³ã\82¯ã\81®å\89\8aé\99¤ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfileoutputstream.c:291 ../gio/glocalfileoutputstream.c:304
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
 #, c-format
 msgid "Error creating backup copy: %s"
-msgstr "バックアップのコピーを生成する際にエラー: %s"
+msgstr "バックアップのコピー作成中にエラーが発生しました: %s"
 
-#: ../gio/glocalfileoutputstream.c:322
+#: gio/glocalfileoutputstream.c:416
 #, c-format
 msgid "Error renaming temporary file: %s"
-msgstr "ä½\9c業ç\94¨ã\81®ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92å¤\89æ\9b´ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ä¸\80æ\99\82ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\90\8då\89\8då¤\89æ\9b´ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfileoutputstream.c:506 ../gio/glocalfileoutputstream.c:1057
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
 #, c-format
 msgid "Error truncating file: %s"
-msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\88\87ã\82\8aã\81¤ã\82\81ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\88\87ã\82\8aã\81¤ã\82\81中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/glocalfileoutputstream.c:559 ../gio/glocalfileoutputstream.c:789
-#: ../gio/glocalfileoutputstream.c:1038
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
 #, c-format
-msgid "Error opening file '%s': %s"
-msgstr "'%s' というファイルをオープンする際にエラー: %s"
+msgid "Error opening file “%s”: %s"
+msgstr "ファイル“%s”を開くときにエラーが発生しました: %s"
 
-#: ../gio/glocalfileoutputstream.c:820
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
 msgstr "対象となるファイルはディレクトリです"
 
-#: ../gio/glocalfileoutputstream.c:825
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
 msgstr "対象となるファイルは通常のファイルではありません"
 
-#: ../gio/glocalfileoutputstream.c:837
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
 msgstr "ファイルが外部で変更されました"
 
-#: ../gio/glocalfileoutputstream.c:1022
+#: gio/glocalfileoutputstream.c:1125
 #, c-format
 msgid "Error removing old file: %s"
-msgstr "å\8f¤ã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\89\8aé\99¤ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "å\8f¤ã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\89\8aé\99¤ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gmemoryinputstream.c:473 ../gio/gmemoryoutputstream.c:736
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
 msgid "Invalid GSeekType supplied"
 msgstr "不正な GSeekType が指定されました"
 
-#: ../gio/gmemoryinputstream.c:483
+#: gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
-msgstr "無効なシークの要求です"
+msgstr "不正なシーク要求です"
 
-#: ../gio/gmemoryinputstream.c:507
+#: gio/gmemoryinputstream.c:508
 msgid "Cannot truncate GMemoryInputStream"
-msgstr "GMemoryInputStream ã\82\92å\88\87ã\82\8aã\81¤ã\82\81ã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dません"
+msgstr "GMemoryInputStream ã\82\92å\88\87ã\82\8aã\81¤ã\82\81ã\82\89ã\82\8cません"
 
-#: ../gio/gmemoryoutputstream.c:541
+#: gio/gmemoryoutputstream.c:567
 msgid "Memory output stream not resizable"
 msgstr "メモリ出力ストリームの大きさは変更できません"
 
-#: ../gio/gmemoryoutputstream.c:557
+#: gio/gmemoryoutputstream.c:583
 msgid "Failed to resize memory output stream"
-msgstr "メモリ出力ストリームの大きさを変更できませんでした"
+msgstr "メモリ出力ストリームの大きさ変更に失敗しました"
 
-#: ../gio/gmemoryoutputstream.c:645
-msgid "Amount of memory required to process the write is larger than available address space"
-msgstr "書き込むプロセスに必要なメモリの量が利用可能なアドレススペースより大きいです"
+#: gio/gmemoryoutputstream.c:673
+msgid ""
+"Amount of memory required to process the write is larger than available "
+"address space"
+msgstr ""
+"書き込むプロセスに必要なメモリの量が利用可能なアドレススペースより大きいです"
 
-#: ../gio/gmemoryoutputstream.c:746
+#: gio/gmemoryoutputstream.c:782
 msgid "Requested seek before the beginning of the stream"
 msgstr "ストリームの先端より前へシークするようリクエストされました"
 
-#: ../gio/gmemoryoutputstream.c:755
+#: gio/gmemoryoutputstream.c:797
 msgid "Requested seek beyond the end of the stream"
 msgstr "ストリームの最後を越えてシークするようリクエストされました"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
-#: ../gio/gmount.c:395
-msgid "mount doesn't implement \"unmount\""
-msgstr "mount は \"unmount\" を実装していません"
+#: gio/gmount.c:399
+msgid "mount doesn’t implement “unmount”"
+msgstr "mount は“unmount”を実装していません"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
-#: ../gio/gmount.c:471
-msgid "mount doesn't implement \"eject\""
-msgstr "mount は \"eject\" を実装していません"
+#: gio/gmount.c:475
+msgid "mount doesn’t implement “eject”"
+msgstr "mount は“eject”を実装していません"
 
 #
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:549
-msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
-msgstr "mount は \"unmount\" あるいは \"unmount_with_operation\" を実装していません"
+#: gio/gmount.c:553
+msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
+msgstr "mount は“unmount”または“unmount_with_operation”を実装していません"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gmount.c:634
-msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
-msgstr "mount は \"eject\" あるいは \"eject_with_operation\" を実装していません"
+#: gio/gmount.c:638
+msgid "mount doesn’t implement “eject” or “eject_with_operation”"
+msgstr "mount は“eject”または“eject_with_operation”を実装していません"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: ../gio/gmount.c:722
-msgid "mount doesn't implement \"remount\""
-msgstr "mount は \"remount\" を実装していません"
+#: gio/gmount.c:726
+msgid "mount doesn’t implement “remount”"
+msgstr "mount は“remount”を実装していません"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:803
-msgid "mount doesn't implement content type guessing"
+#: gio/gmount.c:808
+msgid "mount doesnt implement content type guessing"
 msgstr "mount にはメディアの種類を推測するような実装はありません"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:889
-msgid "mount doesn't implement synchronous content type guessing"
+#: gio/gmount.c:895
+msgid "mount doesnt implement synchronous content type guessing"
 msgstr "mount には同期させてメディアの種類を推測するような実装はありません"
 
-#: ../gio/gnetworkaddress.c:353
+#: gio/gnetworkaddress.c:415
 #, c-format
-msgid "Hostname '%s' contains '[' but not ']'"
-msgstr "ホスト名 '%s' に '[' が含まれていますが ']' がありません"
+msgid "Hostname “%s” contains “[” but not “]”"
+msgstr "ホスト名“%s”に“[”が含まれていますが“]”がありません"
 
-#: ../gio/gnetworkmonitorbase.c:191 ../gio/gnetworkmonitorbase.c:294
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
-msgstr ""
+msgstr "ネットワークが到達不能です"
 
-#: ../gio/gnetworkmonitorbase.c:229 ../gio/gnetworkmonitorbase.c:259
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
-msgstr ""
+msgstr "ホストが到達不能です"
 
-#: ../gio/gnetworkmonitornetlink.c:97 ../gio/gnetworkmonitornetlink.c:109
-#: ../gio/gnetworkmonitornetlink.c:128
-#, fuzzy, c-format
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111
+#: gio/gnetworkmonitornetlink.c:130
+#, c-format
 msgid "Could not create network monitor: %s"
-msgstr "ã\83ªã\83¢ã\83¼ã\83\88ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92å\8f\96å¾\97できませんでした: %s"
+msgstr "ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\83¢ã\83\8bã\82¿ã\83¼ã\82\92ä½\9cæ\88\90できませんでした: %s"
 
-#: ../gio/gnetworkmonitornetlink.c:118
+#: gio/gnetworkmonitornetlink.c:120
 msgid "Could not create network monitor: "
-msgstr ""
+msgstr "ネットワークモニターを作成できませんでした: "
 
-#: ../gio/gnetworkmonitornetlink.c:176
-#, fuzzy
+#: gio/gnetworkmonitornetlink.c:183
 msgid "Could not get network status: "
-msgstr "リモートのアドレスを取得できませんでした: %s"
+msgstr "ネットワークのステータスを取得できませんでした: "
+
+#: gio/gnetworkmonitornm.c:348
+#, c-format
+msgid "NetworkManager not running"
+msgstr "NetworkManager が起動していません"
+
+#: gio/gnetworkmonitornm.c:359
+#, c-format
+msgid "NetworkManager version too old"
+msgstr "NetworkManager のバージョンが古すぎます"
 
-#: ../gio/goutputstream.c:201 ../gio/goutputstream.c:453
-msgid "Output stream doesn't implement write"
+#: gio/goutputstream.c:232 gio/goutputstream.c:775
+msgid "Output stream doesnt implement write"
 msgstr "出力ストリームは書き込みを実装していません"
 
-#: ../gio/goutputstream.c:414 ../gio/goutputstream.c:939
+#: gio/goutputstream.c:472 gio/goutputstream.c:1533
+#, c-format
+msgid "Sum of vectors passed to %s too large"
+msgstr ""
+
+#: gio/goutputstream.c:736 gio/goutputstream.c:1761
 msgid "Source stream is already closed"
-msgstr "ã\82½ã\83¼ã\82¹ã\83»ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81¯æ\97¢に閉じています"
+msgstr "ã\82½ã\83¼ã\82¹ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81¯ã\81\99ã\81§に閉じています"
 
-#: ../gio/gresource.c:291 ../gio/gresource.c:539 ../gio/gresource.c:556
-#: ../gio/gresource.c:677 ../gio/gresource.c:746 ../gio/gresource.c:807
-#: ../gio/gresource.c:887 ../gio/gresourcefile.c:454
-#: ../gio/gresourcefile.c:555 ../gio/gresourcefile.c:657
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
-msgid "The resource at '%s' does not exist"
-msgstr ""
+msgid "Error resolving “%s”: %s"
+msgstr "“%s”の解決中にエラーが発生しました: %s"
 
-#: ../gio/gresource.c:456
+#. Translators: The placeholder is for a function name.
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
-msgid "The resource at '%s' failed to decompress"
-msgstr ""
+msgid "%s not implemented"
+msgstr "%s は実装していません"
 
-#: ../gio/gresourcefile.c:653
-#, fuzzy, c-format
-msgid "The resource at '%s' is not a directory"
-msgstr "対象となるファイルはディレクトリです"
+#: gio/gresolver.c:981 gio/gresolver.c:1033
+msgid "Invalid domain"
+msgstr "不正なドメインです"
 
-#: ../gio/gresourcefile.c:861
-#, fuzzy
-msgid "Input stream doesn't implement seek"
-msgstr "入力ストリームで読み込みを実装していません"
+#: gio/gresource.c:665 gio/gresource.c:924 gio/gresource.c:963
+#: gio/gresource.c:1087 gio/gresource.c:1159 gio/gresource.c:1232
+#: gio/gresource.c:1313 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresourcefile.c:736
+#, c-format
+msgid "The resource at “%s” does not exist"
+msgstr ""
 
-#: ../gio/gresource-tool.c:475 ../gio/gsettings-tool.c:542
-msgid "Print help"
-msgstr "ヘルプを表示する"
+#: gio/gresource.c:830
+#, c-format
+msgid "The resource at “%s” failed to decompress"
+msgstr ""
 
-#: ../gio/gresource-tool.c:476 ../gio/gresource-tool.c:544
-#, fuzzy
-msgid "[COMMAND]"
-msgstr "COMMAND"
+#: gio/gresourcefile.c:732
+#, c-format
+msgid "The resource at “%s” is not a directory"
+msgstr ""
 
-#: ../gio/gresource-tool.c:481
+#: gio/gresourcefile.c:940
+msgid "Input stream doesn’t implement seek"
+msgstr "入力ストリームはシークを実装していません"
+
+#: gio/gresource-tool.c:499
 msgid "List sections containing resources in an elf FILE"
 msgstr ""
 
-#: ../gio/gresource-tool.c:487
+#: gio/gresource-tool.c:505
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources"
 msgstr ""
 
-#: ../gio/gresource-tool.c:490 ../gio/gresource-tool.c:500
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
 msgid "FILE [PATH]"
 msgstr ""
 
-#: ../gio/gresource-tool.c:491 ../gio/gresource-tool.c:501
-#: ../gio/gresource-tool.c:508
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
 msgid "SECTION"
 msgstr ""
 
-#: ../gio/gresource-tool.c:496
+#: gio/gresource-tool.c:514
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -1990,28 +3355,18 @@ msgid ""
 "Details include the section, size and compression"
 msgstr ""
 
-#: ../gio/gresource-tool.c:506
+#: gio/gresource-tool.c:524
 msgid "Extract a resource file to stdout"
 msgstr ""
 
-#: ../gio/gresource-tool.c:507
-#, fuzzy
+#: gio/gresource-tool.c:525
 msgid "FILE PATH"
-msgstr "PATH"
-
-#: ../gio/gresource-tool.c:513 ../gio/gsettings-tool.c:628
-#, c-format
-msgid ""
-"Unknown command %s\n"
-"\n"
 msgstr ""
-"不明なコマンド: %s\n"
-"\n"
 
-#: ../gio/gresource-tool.c:521
+#: gio/gresource-tool.c:539
 msgid ""
 "Usage:\n"
-"  gresource [--section SECTION] COMMAND [ARGS...]\n"
+"  gresource [--section SECTION] COMMAND [ARGS]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2020,12 +3375,12 @@ msgid ""
 "  details                   List resources with details\n"
 "  extract                   Extract a resource\n"
 "\n"
-"Use 'gresource help COMMAND' to get detailed help.\n"
+"Use “gresource help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:535
-#, fuzzy, c-format
+#: gio/gresource-tool.c:553
+#, c-format
 msgid ""
 "Usage:\n"
 "  gresource %s%s%s %s\n"
@@ -2034,188 +3389,194 @@ msgid ""
 "\n"
 msgstr ""
 "用法:\n"
-"  gsettings %s %s\n"
+"  gresource %s%s%s %s\n"
 "\n"
 "%s\n"
 "\n"
 
-#: ../gio/gresource-tool.c:538 ../gio/gsettings-tool.c:661
-msgid "Arguments:\n"
-msgstr "引数:\n"
-
-#: ../gio/gresource-tool.c:542
+#: gio/gresource-tool.c:560
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:546 ../gio/gsettings-tool.c:668
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMMAND   対象のコマンド (任意)\n"
 
-#: ../gio/gresource-tool.c:552
+#: gio/gresource-tool.c:570
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:555
+#: gio/gresource-tool.c:573
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:559
-#, fuzzy
+#: gio/gresource-tool.c:577
 msgid "[PATH]"
-msgstr "PATH"
+msgstr "[パス]"
 
-#: ../gio/gresource-tool.c:561
+#: gio/gresource-tool.c:579
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:562
+#: gio/gresource-tool.c:580
 msgid "PATH"
-msgstr "PATH"
+msgstr ""
 
-#: ../gio/gresource-tool.c:564
+#: gio/gresource-tool.c:582
 msgid "  PATH      A resource path\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:57 ../gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
 #, c-format
-msgid "No such schema '%s'\n"
-msgstr "スキーマ '%s' は存在しません\n"
+msgid "No such schema “%s”\n"
+msgstr "スキーマ“%s”がありません\n"
 
-#: ../gio/gsettings-tool.c:63
+#: gio/gsettings-tool.c:55
 #, c-format
-msgid "Schema '%s' is not relocatable (path must not be specified)\n"
-msgstr "スキーマ '%s' は再配置可能ではありません (パスは指定できません)\n"
+msgid "Schema “%s” is not relocatable (path must not be specified)\n"
+msgstr "スキーマ“%s”は再配置可能ではありません (パスは指定できません)\n"
 
-#: ../gio/gsettings-tool.c:84
+#: gio/gsettings-tool.c:76
 #, c-format
-msgid "Schema '%s' is relocatable (path must be specified)\n"
-msgstr "スキーマ '%s' は再配置可能です (パスを指定する必要があります)\n"
+msgid "Schema “%s” is relocatable (path must be specified)\n"
+msgstr "スキーマ“%s”は再配置可能です (パスを指定する必要があります)\n"
 
-#: ../gio/gsettings-tool.c:98
-#, c-format
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "パスが空です。\n"
 
-#: ../gio/gsettings-tool.c:104
-#, c-format
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
-msgstr "ã\83\91ã\82¹ã\81®å\85\88é ­ã\81¯ã\82¹ã\83©ã\83\83ã\82·ã\83¥ (/) ã\81§ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\8aã\81¾ã\81\9bã\82\93\n"
+msgstr "ã\83\91ã\82¹ã\81®å\85\88é ­ã\81¯ã\82¹ã\83©ã\83\83ã\82·ã\83¥ (/) ã\81§ã\81\82ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99\n"
 
-#: ../gio/gsettings-tool.c:110
-#, c-format
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
-msgstr "ã\83\91ã\82¹ã\81®æ\9c«å°¾ã\81¯ã\82¹ã\83©ã\83\83ã\82·ã\83¥ (/) ã\81§ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\8aã\81¾ã\81\9bã\82\93\n"
+msgstr "ã\83\91ã\82¹ã\81®æ\9c«å°¾ã\81¯ã\82¹ã\83©ã\83\83ã\82·ã\83¥ (/) ã\81§ã\81\82ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99\n"
 
-#: ../gio/gsettings-tool.c:116
-#, c-format
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "パスには連続するスラッシュ (//) を含められません\n"
 
-#: ../gio/gsettings-tool.c:137
-#, c-format
-msgid "No such key '%s'\n"
-msgstr "キー '%s' は存在しません\n"
-
-#: ../gio/gsettings-tool.c:511
-#, c-format
+#: gio/gsettings-tool.c:536
 msgid "The provided value is outside of the valid range\n"
 msgstr "指定した値は有効な範囲内にありません\n"
 
-#: ../gio/gsettings-tool.c:518
-#, c-format
+#: gio/gsettings-tool.c:543
 msgid "The key is not writable\n"
 msgstr "指定のキーは書き込み可能ではありません\n"
 
-#: ../gio/gsettings-tool.c:548
-msgid "Print version information and exit"
-msgstr "バージョン情報を表示して終了する"
-
-#: ../gio/gsettings-tool.c:554
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
 msgstr "インストール済みの (再配置可能でない) スキーマの一覧を表示する"
 
-#: ../gio/gsettings-tool.c:560
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
 msgstr "インストール済みの再配置可能なスキーマの一覧を表示する"
 
-#: ../gio/gsettings-tool.c:566
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
 msgstr "SCHEMA 内のキーの一覧を表示する"
 
-#: ../gio/gsettings-tool.c:567 ../gio/gsettings-tool.c:573
-#: ../gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: ../gio/gsettings-tool.c:572
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
 msgstr "SCHEMA のサブスキーマの一覧を表示する"
 
-#: ../gio/gsettings-tool.c:578
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr ""
 "キーと値の一覧を再帰的に表示する\n"
-"SCHEMA を指定しない場合、すべてのキーにたいして一覧を表示する\n"
+"SCHEMA を指定しない場合、すべてのキーにして一覧を表示する\n"
 
-#: ../gio/gsettings-tool.c:580
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: ../gio/gsettings-tool.c:585
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
 msgstr "KEY の値を取得する"
 
-#: ../gio/gsettings-tool.c:586 ../gio/gsettings-tool.c:592
-#: ../gio/gsettings-tool.c:604 ../gio/gsettings-tool.c:616
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: ../gio/gsettings-tool.c:591
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
 msgstr "KEY の値の有効な範囲を確認する"
 
-#: ../gio/gsettings-tool.c:597
+#: gio/gsettings-tool.c:622
+msgid "Query the description for KEY"
+msgstr "KEY の説明を確認する"
+
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
 msgstr "KEY の値を VALUE に設定する"
 
-#: ../gio/gsettings-tool.c:598
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: ../gio/gsettings-tool.c:603
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
 msgstr "KEY をデフォルト値にリセットする"
 
-#: ../gio/gsettings-tool.c:609
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "SCHEMA 内のすべてのキーをデフォルト値にリセットする"
 
-#: ../gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
 msgstr "KEY が書き込み可能か確認する"
 
-#: ../gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
-"KEY ã\81®å\80¤ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\81®ã\82\92ç\9b£è¦\96ã\81\99ã\82\8b。\n"
-"KEY ã\82\92æ\8c\87å®\9aã\81\97ã\81ªã\81\84å ´å\90\88ã\80\81SCHEMA å\86\85ã\81®ã\81\99ã\81¹ã\81¦ã\81®ã\82­ã\83¼ã\82\92ç\9b£è¦\96ã\81\99ã\82\8b。\n"
-"^C ã\81§ç\9b£è¦\96ã\82\92æ­¢ã\82\81ã\82\8b。\n"
+"KEY ã\81®å\80¤ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\81®ã\82\92ç\9b£è¦\96ã\81\97ã\81¾ã\81\99。\n"
+"KEY ã\82\92æ\8c\87å®\9aã\81\97ã\81ªã\81\84å ´å\90\88ã\80\81SCHEMA å\86\85ã\81®ã\81\99ã\81¹ã\81¦ã\81®ã\82­ã\83¼ã\82\92ç\9b£è¦\96ã\81\97ã\81¾ã\81\99。\n"
+"^C ã\81§ç\9b£è¦\96ã\82\92æ­¢ã\82\81ã\81¾ã\81\99。\n"
 
-#: ../gio/gsettings-tool.c:624
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: ../gio/gsettings-tool.c:636
+#: gio/gsettings-tool.c:667
+#, fuzzy
+#| msgid ""
+#| "Usage:\n"
+#| "  gsettings [--schemadir SCHEMADIR] 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"
+#| "  reset-recursively         Reset all values in a given schema\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"
 msgid ""
 "Usage:\n"
-"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]\n"
+"  gsettings --version\n"
+"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS…]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2225,6 +3586,7 @@ msgid ""
 "  list-children             List children of a schema\n"
 "  list-recursively          List keys and values, recursively\n"
 "  range                     Queries the range of a key\n"
+"  describe                  Queries the description 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"
@@ -2232,7 +3594,7 @@ msgid ""
 "  writable                  Check if a key is writable\n"
 "  monitor                   Watch for changes\n"
 "\n"
-"Use 'gsettings help COMMAND' to get detailed help.\n"
+"Use “gsettings help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
 "用法:\n"
@@ -2256,7 +3618,7 @@ msgstr ""
 "詳細なヘルプを参照するには 'gsettings help COMMAND' を実行します。\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:658
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
@@ -2271,11 +3633,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:664
+#: gio/gsettings-tool.c:697
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR 追加スキーマを検索するディレクトリ\n"
 
-#: ../gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -2283,2016 +3645,2361 @@ msgstr ""
 "  SCHEMA    スキーマ名\n"
 "  PATH      再配置可能なスキーマの場合、そのパス\n"
 
-#: ../gio/gsettings-tool.c:677
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       スキーマ内のキー (任意)\n"
 
-#: ../gio/gsettings-tool.c:681
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       スキーマ内のキー\n"
 
-#: ../gio/gsettings-tool.c:685
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     設定する値\n"
 
-#: ../gio/gsettings-tool.c:744
+#: gio/gsettings-tool.c:773
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "'%s' からスキーマを読み込めませんでした: %s\n"
 
-#: ../gio/gsettings-tool.c:806
-#, c-format
+#: gio/gsettings-tool.c:785
+msgid "No schemas installed\n"
+msgstr "スキーマがインストールされていません\n"
+
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
 msgstr "スキーマ名が空です\n"
 
-#: ../gio/gsocket.c:313
+#: gio/gsettings-tool.c:919
+#, c-format
+msgid "No such key “%s”\n"
+msgstr "キー“%s”がありません\n"
+
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
-msgstr "無効なソケットです。初期化されていません"
+msgstr "初期化されていない不正なソケットです"
 
-#: ../gio/gsocket.c:320
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
-msgstr "無効なソケットです。初期化に失敗しました: %s"
+msgstr "不正なソケットです。初期化に失敗しました: %s"
 
-#: ../gio/gsocket.c:328
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
-msgstr "ソースはに閉じられています"
+msgstr "ソースはすでに閉じられています"
 
-#: ../gio/gsocket.c:336 ../gio/gsocket.c:3603 ../gio/gsocket.c:3658
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
-msgstr ""
+msgstr "ソケット I/O がタイムアウトしました"
 
-#: ../gio/gsocket.c:483
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "ファイルディスクリプター GSocket を作成: %s"
 
-#: ../gio/gsocket.c:511 ../gio/gsocket.c:565 ../gio/gsocket.c:572
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "ソケットを作成できません: %s"
 
-#: ../gio/gsocket.c:565
-#, fuzzy
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
-msgstr "不明なプロトコルが指定されました"
+msgstr ""
 
-#: ../gio/gsocket.c:572
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "不明なプロトコルが指定されました"
 
-#: ../gio/gsocket.c:1730
+#: gio/gsocket.c:1164
+#, c-format
+msgid "Cannot use datagram operations on a non-datagram socket."
+msgstr ""
+
+#: gio/gsocket.c:1181
+#, c-format
+msgid "Cannot use datagram operations on a socket with a timeout set."
+msgstr ""
+
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "ローカルのアドレスを取得できませんでした: %s"
 
-#: ../gio/gsocket.c:1773
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "リモートのアドレスを取得できませんでした: %s"
 
-#: ../gio/gsocket.c:1834
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "listen できませんでした: %s"
 
-#: ../gio/gsocket.c:1933
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "アドレスに bind 時にエラー: %s"
+msgid "Error binding to address %s: %s"
+msgstr "アドレス %s への bind 中にエラーが発生しました: %s"
 
-#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082
-#, fuzzy, c-format
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
+#, c-format
 msgid "Error joining multicast group: %s"
-msgstr "ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\82\92èµ·å\8b\95ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83\9eã\83«ã\83\81ã\82­ã\83£ã\82¹ã\83\88ã\82°ã\83«ã\83¼ã\83\97ã\81¸ã\81® join ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083
-#, fuzzy, c-format
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
+#, c-format
 msgid "Error leaving multicast group: %s"
-msgstr "ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\82\92èµ·å\8b\95ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83\9eã\83«ã\83\81ã\82­ã\83£ã\82¹ã\83\88ã\82°ã\83«ã\83¼ã\83\97ã\81\8bã\82\89ã\81® leave ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gsocket.c:2047
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
+msgstr "SSM (送信元特定マルチキャスト) はサポートしていません"
+
+#: gio/gsocket.c:2529
+msgid "Unsupported socket family"
+msgstr ""
+
+#: gio/gsocket.c:2554
+msgid "source-specific not an IPv4 address"
 msgstr ""
 
-#: ../gio/gsocket.c:2266
+#: gio/gsocket.c:2578
+#, c-format
+msgid "Interface name too long"
+msgstr "インターフェース名が長すぎます"
+
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
+#, c-format
+msgid "Interface not found: %s"
+msgstr "インターフェースが見つかりませんでした: %s"
+
+#: gio/gsocket.c:2617
+msgid "No support for IPv4 source-specific multicast"
+msgstr "IPv4 SSM (送信元特定マルチキャスト) はサポートしていません"
+
+#: gio/gsocket.c:2675
+msgid "No support for IPv6 source-specific multicast"
+msgstr "IPv6 SSM (送信元特定マルチキャスト) はサポートしていません"
+
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
-msgstr "接続を accept する時にエラー: %s"
+msgstr "接続を accept するときにエラーが発生しました: %s"
 
-#: ../gio/gsocket.c:2387
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "接続中"
 
-#: ../gio/gsocket.c:2434
-#, fuzzy
-#| msgid "Unable to get pending error: %s"
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
-msgstr "エラーをペンディングできません: %s"
+msgstr "エラーをペンディングできません: "
 
-#: ../gio/gsocket.c:2600
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
-msgstr "データの受信時にエラー: %s"
+msgstr "データ受信中にエラーが発生しました: %s"
 
-#: ../gio/gsocket.c:2778
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
-msgstr "データの送信時にエラー: %s"
+msgstr "データ送信中にエラーが発生しました: %s"
 
-#: ../gio/gsocket.c:2892
-#, fuzzy, c-format
+#: gio/gsocket.c:3631
+#, c-format
 msgid "Unable to shutdown socket: %s"
-msgstr "ソケットを作成できません: %s"
+msgstr ""
 
-#: ../gio/gsocket.c:2971
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
-msgstr "ソケットを閉じる際にエラー: %s"
+msgstr "ソケットを閉じるときにエラーが発生しました: %s"
 
-#: ../gio/gsocket.c:3596
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "ソケットの指定された状態を wait: %s"
 
-#: ../gio/gsocket.c:3874 ../gio/gsocket.c:3955
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
-msgstr "ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92é\80\81信中ã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81®é\80\81信中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gsocket.c:3899
-#, fuzzy
-#| msgid "GSocketControlMessage not supported on windows"
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
-msgstr "GSocketControlMessage ã\81¯ Windows ã\81§ã\81¯ã\82µã\83\9dã\83¼ã\83\88ã\81\95ã\82\8cていません"
+msgstr "GSocketControlMessage ã\81¯ Windows ã\81§ã\81¯ã\82µã\83\9dã\83¼ã\83\88ã\81\97ていません"
 
-#: ../gio/gsocket.c:4233 ../gio/gsocket.c:4368
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
-msgstr "ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92å\8f\97信中ã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81®å\8f\97信中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gsocket.c:4450
-#, fuzzy, c-format
-#| msgid "Unable to create socket: %s"
+#: gio/gsocket.c:5995
+#, c-format
 msgid "Unable to read socket credentials: %s"
-msgstr "ソケットを作成できません: %s"
+msgstr ""
 
-#: ../gio/gsocket.c:4469
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
-msgstr ""
+msgstr "この OS では g_socket_get_credentials は実装されていません"
 
-#: ../gio/gsocketclient.c:177
+#: gio/gsocketclient.c:182
 #, c-format
 msgid "Could not connect to proxy server %s: "
-msgstr ""
+msgstr "プロキシサーバー %s に接続できませんでした: "
 
-#: ../gio/gsocketclient.c:191
-#, fuzzy, c-format
+#: gio/gsocketclient.c:196
+#, c-format
 msgid "Could not connect to %s: "
-msgstr "'%s' から '%s' へ変換するコンバーターを開けませんでした: %s"
+msgstr "%s に接続できませんでした: "
 
-#: ../gio/gsocketclient.c:193
-#, fuzzy
+#: gio/gsocketclient.c:198
 msgid "Could not connect: "
-msgstr "listen できませんでした: %s"
+msgstr "接続できませんでした: "
 
-#: ../gio/gsocketclient.c:1067 ../gio/gsocketclient.c:1631
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1764
 msgid "Unknown error on connect"
-msgstr "接続時に原因不明のエラー"
+msgstr "接続時に原因不明のエラーが発生しました"
 
-#: ../gio/gsocketclient.c:1120 ../gio/gsocketclient.c:1569
-#, fuzzy
-#| msgid "Proxy protocol '%s' is not supported."
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1672
 msgid "Proxying over a non-TCP connection is not supported."
-msgstr "プロキシのプロトコル '%s' がサポートされていません"
+msgstr ""
 
-#: ../gio/gsocketclient.c:1146 ../gio/gsocketclient.c:1590
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
 #, c-format
-msgid "Proxy protocol '%s' is not supported."
-msgstr "プロキシのプロトコル '%s' がサポートされていません"
+msgid "Proxy protocol “%s” is not supported."
+msgstr "プロキシのプロトコル“%s”はサポートしていません。"
 
-#: ../gio/gsocketlistener.c:187
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
-msgstr "受信を待つ Listener はに閉じています"
+msgstr "受信を待つ Listener はすでに閉じています"
 
-#: ../gio/gsocketlistener.c:228
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "追加されたソケットは閉じています"
 
-#: ../gio/gsocks4aproxy.c:120
+#: gio/gsocks4aproxy.c:118
 #, c-format
-msgid "SOCKSv4 does not support IPv6 address '%s'"
-msgstr ""
+msgid "SOCKSv4 does not support IPv6 address “%s”"
+msgstr "SOCKSv4 は IPv6 アドレス“%s”をサポートしていません"
 
-#: ../gio/gsocks4aproxy.c:138
+#: gio/gsocks4aproxy.c:136
 msgid "Username is too long for SOCKSv4 protocol"
-msgstr ""
+msgstr "SOCKSv4 プロトコルのユーザー名が長すぎます"
 
-#: ../gio/gsocks4aproxy.c:155
+#: gio/gsocks4aproxy.c:153
 #, c-format
-msgid "Hostname '%s' is too long for SOCKSv4 protocol"
-msgstr ""
+msgid "Hostname “%s” is too long for SOCKSv4 protocol"
+msgstr "SOCKSv4 プロトコルのホスト名“%s”が長すぎます"
 
-#: ../gio/gsocks4aproxy.c:181
+#: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
-msgstr ""
+msgstr "サーバーが SOCKSv4 プロキシサーバーではありません。"
 
-#: ../gio/gsocks4aproxy.c:188
+#: gio/gsocks4aproxy.c:186
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr ""
 
-#: ../gio/gsocks5proxy.c:155 ../gio/gsocks5proxy.c:326
-#: ../gio/gsocks5proxy.c:336
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
 msgid "The server is not a SOCKSv5 proxy server."
-msgstr ""
+msgstr "サーバーが SOCKSv5 プロキシサーバーではありません。"
 
-#: ../gio/gsocks5proxy.c:169
+#: gio/gsocks5proxy.c:167
 msgid "The SOCKSv5 proxy requires authentication."
-msgstr ""
+msgstr "SOCKSv5 プロキシは認証が必要です。"
 
-#: ../gio/gsocks5proxy.c:179
-msgid "The SOCKSv5 proxy requires an authentication method that is not supported by GLib."
-msgstr ""
+#: gio/gsocks5proxy.c:177
+msgid ""
+"The SOCKSv5 proxy requires an authentication method that is not supported by "
+"GLib."
+msgstr "SOCKSv5 プロキシは GLib がサポートしていない認証方式が必要です。"
 
-#: ../gio/gsocks5proxy.c:208
+#: gio/gsocks5proxy.c:206
 msgid "Username or password is too long for SOCKSv5 protocol."
-msgstr ""
+msgstr "SOCKSv5 プロトコルのユーザー名またはパスワードが長すぎます。"
 
-#: ../gio/gsocks5proxy.c:238
+#: gio/gsocks5proxy.c:236
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
+"ユーザー名またはパスワードに誤りがあるため、SOCKSv5 認証に失敗しました。"
 
-#: ../gio/gsocks5proxy.c:288
+#: gio/gsocks5proxy.c:286
 #, c-format
-msgid "Hostname '%s' is too long for SOCKSv5 protocol"
-msgstr ""
+msgid "Hostname “%s” is too long for SOCKSv5 protocol"
+msgstr "SOCKSv5 プロトコルのホスト名“%s”が長すぎます"
 
-#: ../gio/gsocks5proxy.c:350
+#: gio/gsocks5proxy.c:348
 msgid "The SOCKSv5 proxy server uses unknown address type."
-msgstr ""
+msgstr "SOCKSv5 プロキシサーバーが不明なアドレス形式を使用しています。"
 
-#: ../gio/gsocks5proxy.c:357
+#: gio/gsocks5proxy.c:355
 msgid "Internal SOCKSv5 proxy server error."
-msgstr ""
+msgstr "SOCKSv5 プロキシサーバーの内部エラーです。"
 
-#: ../gio/gsocks5proxy.c:363
+#: gio/gsocks5proxy.c:361
 msgid "SOCKSv5 connection not allowed by ruleset."
-msgstr ""
+msgstr "ルールセットで SOCKSv5 接続が許可されていません。"
 
-#: ../gio/gsocks5proxy.c:370
+#: gio/gsocks5proxy.c:368
 msgid "Host unreachable through SOCKSv5 server."
 msgstr ""
 
-#: ../gio/gsocks5proxy.c:376
+#: gio/gsocks5proxy.c:374
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr ""
 
-#: ../gio/gsocks5proxy.c:382
+#: gio/gsocks5proxy.c:380
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr ""
 
-#: ../gio/gsocks5proxy.c:388
-msgid "SOCKSv5 proxy does not support 'connect' command."
-msgstr ""
+#: gio/gsocks5proxy.c:386
+msgid "SOCKSv5 proxy does not support “connect” command."
+msgstr "SOCKSv5 プロキシが“connect”コマンドをサポートしていません。"
 
-#: ../gio/gsocks5proxy.c:394
+#: gio/gsocks5proxy.c:392
 msgid "SOCKSv5 proxy does not support provided address type."
-msgstr ""
+msgstr "SOCKSv5 プロキシが指定したアドレス形式をサポートしていません。"
 
-#: ../gio/gsocks5proxy.c:400
+#: gio/gsocks5proxy.c:398
 msgid "Unknown SOCKSv5 proxy error."
-msgstr ""
+msgstr "不明な SOCKSv5 プロキシエラーです。"
 
-#: ../gio/gthemedicon.c:521
+#: gio/gthemedicon.c:595
 #, c-format
-msgid "Can't handle version %d of GThemedIcon encoding"
+msgid "Cant handle version %d of GThemedIcon encoding"
 msgstr "バージョン %d の GThemedIcon のエンコーディングはサポートしていません"
 
-#: ../gio/gthreadedresolver.c:110
-#, c-format
-msgid "Error resolving '%s': %s"
-msgstr "'%s' の解決中にエラー: %s"
+#: gio/gthreadedresolver.c:152
+msgid "No valid addresses were found"
+msgstr "正しいアドレスが見つかりませんでした"
 
-#: ../gio/gthreadedresolver.c:195
+#: gio/gthreadedresolver.c:334
 #, c-format
-msgid "Error reverse-resolving '%s': %s"
-msgstr "'%s' の逆引き中にエラー: %s"
+msgid "Error reverse-resolving “%s”: %s"
+msgstr "“%s”の逆引き中にエラーが発生しました: %s"
 
-#: ../gio/gthreadedresolver.c:533 ../gio/gthreadedresolver.c:614
-#: ../gio/gthreadedresolver.c:715 ../gio/gthreadedresolver.c:766
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
 #, c-format
-msgid "No DNS record of the requested type for '%s'"
+msgid "No DNS record of the requested type for “%s”"
 msgstr ""
 
-#: ../gio/gthreadedresolver.c:538 ../gio/gthreadedresolver.c:720
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
 #, c-format
-msgid "Temporarily unable to resolve '%s'"
-msgstr "一時的に '%s' を解決することができません"
+msgid "Temporarily unable to resolve “%s”"
+msgstr "一時的に“%s”を解決できません"
 
-#: ../gio/gthreadedresolver.c:543 ../gio/gthreadedresolver.c:725
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
 #, c-format
-msgid "Error resolving '%s'"
-msgstr "'%s' の解決時にエラー"
-
-#: ../gio/gtlscertificate.c:248
-msgid "Cannot decrypt PEM-encoded private key"
-msgstr ""
+msgid "Error resolving “%s”"
+msgstr "“%s”の解決中にエラーが発生しました"
 
-#: ../gio/gtlscertificate.c:253
+#: gio/gtlscertificate.c:243
 msgid "No PEM-encoded private key found"
-msgstr ""
+msgstr "PEM でエンコードされた秘密鍵が見つかりませんでした"
+
+#: gio/gtlscertificate.c:253
+msgid "Cannot decrypt PEM-encoded private key"
+msgstr "PEM でエンコードされた秘密鍵を復号できません"
 
-#: ../gio/gtlscertificate.c:263
+#: gio/gtlscertificate.c:264
 msgid "Could not parse PEM-encoded private key"
-msgstr ""
+msgstr "PEM でエンコードされた秘密鍵を解析できませんでした"
 
-#: ../gio/gtlscertificate.c:288
+#: gio/gtlscertificate.c:291
 msgid "No PEM-encoded certificate found"
-msgstr ""
+msgstr "PEM でエンコードされた証明書が見つかりませんでした"
 
-#: ../gio/gtlscertificate.c:297
+#: gio/gtlscertificate.c:300
 msgid "Could not parse PEM-encoded certificate"
-msgstr ""
+msgstr "PEM でエンコードされた証明書を解析できませんでした"
 
-#: ../gio/gtlspassword.c:113
-msgid "This is the last chance to enter the password correctly before your access is locked out."
+#: gio/gtlspassword.c:111
+msgid ""
+"This is the last chance to enter the password correctly before your access "
+"is locked out."
 msgstr ""
+"これは、あなたのアクセスがロックアウトされる前の、正しいパスワードを入力する"
+"最後の機会です。"
 
-#: ../gio/gtlspassword.c:115
-msgid "Several password entered have been incorrect, and your access will be locked out after further failures."
+#. Translators: This is not the 'This is the last chance' string. It is
+#. * displayed when more than one attempt is allowed.
+#: gio/gtlspassword.c:115
+msgid ""
+"Several passwords entered have been incorrect, and your access will be "
+"locked out after further failures."
 msgstr ""
+"これまで入力したパスワードは正しくありません。このまま正しくないパスワードを"
+"入力し続けると、アクセスがロックアウトされます。"
 
-#: ../gio/gtlspassword.c:117
+#: gio/gtlspassword.c:117
 msgid "The password entered is incorrect."
-msgstr ""
+msgstr "入力したパスワードは正しくありません。"
 
-#: ../gio/gunixconnection.c:159 ../gio/gunixconnection.c:554
-#, fuzzy, c-format
-#| msgid "Expecting 1 control message, got %d"
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
-msgstr[0] "コントロールメッセージを一つ待ち受けていましたが、%d 受信しました"
+msgstr[0] "ã\82³ã\83³ã\83\88ã\83­ã\83¼ã\83«ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ä¸\80ã\81¤å¾\85ã\81¡å\8f\97ã\81\91ã\81¦ã\81\84ã\81¾ã\81\97ã\81\9fã\81\8cã\80\81%d å\80\8bå\8f\97ä¿¡ã\81\97ã\81¾ã\81\97ã\81\9f"
 
-#: ../gio/gunixconnection.c:175 ../gio/gunixconnection.c:566
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
-msgstr "想定してない種類の補助データです"
+msgstr "æ\83³å®\9aã\81\97ã\81¦ã\81\84ã\81ªã\81\84種é¡\9eã\81®è£\9cå\8a©ã\83\87ã\83¼ã\82¿ã\81§ã\81\99"
 
-#: ../gio/gunixconnection.c:193
-#, fuzzy, c-format
-#| msgid "Expecting one fd, but got %d\n"
+#: gio/gunixconnection.c:200
+#, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
-msgstr[0] "ファイルディスクリプターを一つ待ち受けていましたが、%d 受信しました\n"
+msgstr[0] ""
+"ファイルディスクリプターを一つ待ち受けていましたが、%d 個受信しました\n"
 
-#: ../gio/gunixconnection.c:212
+#: gio/gunixconnection.c:219
 msgid "Received invalid fd"
-msgstr "無効なファイルディスクリプターを受けとりました"
+msgstr "不正なファイルディスクリプターを受けとりました"
 
-#: ../gio/gunixconnection.c:348
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
-msgstr "クレデンシャル送信時にエラー: "
+msgstr "クレデンシャル送信中にエラーが発生しました: "
 
-#: ../gio/gunixconnection.c:496
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
+"ソケットの SO_PASSCRED が有効になっているかどうか確認中にエラーが発生しまし"
+"た: %s"
 
-#: ../gio/gunixconnection.c:511
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
-msgstr "SO_PASSCRED を有効にする際にエラー: %s"
+msgstr "SO_PASSCRED を有効にするときにエラーが発生しました: %s"
 
-#: ../gio/gunixconnection.c:540
-msgid "Expecting to read a single byte for receiving credentials but read zero bytes"
+#: gio/gunixconnection.c:565
+msgid ""
+"Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 
-#: ../gio/gunixconnection.c:580
-#, fuzzy, c-format
+#: gio/gunixconnection.c:605
+#, c-format
 msgid "Not expecting control message, but got %d"
-msgstr "コントロールメッセージを一つ待ち受けていましたが、%d 受信しました"
+msgstr "コントロールメッセージを待ち受けていませんでしたが、%d 個受信しました"
 
-#: ../gio/gunixconnection.c:604
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
-msgstr ""
+msgstr "SO_PASSCRED の無効化中にエラーが発生しました: %s"
 
-#: ../gio/gunixinputstream.c:372 ../gio/gunixinputstream.c:393
-#, fuzzy, c-format
+#: gio/gunixinputstream.c:372 gio/gunixinputstream.c:393
+#, c-format
 msgid "Error reading from file descriptor: %s"
-msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ç\8a¶æ\85\8bã\82\92å\8f\96å¾\97ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®èª­ã\81¿å\8f\96ã\82\8a中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gunixinputstream.c:426 ../gio/gunixoutputstream.c:412
-#, fuzzy, c-format
+#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:535
+#: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
+#, c-format
 msgid "Error closing file descriptor: %s"
-msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ç\8a¶æ\85\8bã\82\92å\8f\96å¾\97ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92é\96\89ã\81\98ã\82\8bã\81¨ã\81\8dã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gunixmounts.c:1985 ../gio/gunixmounts.c:2038
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "ファイルシステムのルート"
 
-#: ../gio/gunixoutputstream.c:358 ../gio/gunixoutputstream.c:379
-#, fuzzy, c-format
+#: gio/gunixoutputstream.c:372 gio/gunixoutputstream.c:392
+#: gio/gunixoutputstream.c:479 gio/gunixoutputstream.c:499
+#: gio/gunixoutputstream.c:676
+#, c-format
 msgid "Error writing to file descriptor: %s"
-msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ç\8a¶æ\85\8bã\82\92å\8f\96å¾\97ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../gio/gunixsocketaddress.c:234
-#, fuzzy
-#| msgid "Abstract unix domain socket addresses not supported on this system"
+#: gio/gunixsocketaddress.c:243
 msgid "Abstract UNIX domain socket addresses not supported on this system"
-msgstr "抽象化されたUNIXドメインソケットのアドレスはこのシステムではサポートされていません"
+msgstr ""
+"抽象化された UNIX ドメインソケットのアドレスはこのシステムではサポートされて"
+"いません"
 
-#: ../gio/gvolume.c:439
-msgid "volume doesn't implement eject"
-msgstr "ボリュームは「取り出し」を実装していません"
+#: gio/gvolume.c:438
+msgid "volume doesnt implement eject"
+msgstr "ボリュームは eject を実装していません"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gvolume.c:516
-msgid "volume doesn't implement eject or eject_with_operation"
-msgstr "ボリュームは eject  あるいは eject_with_operation を実装していません"
+#: gio/gvolume.c:515
+msgid "volume doesnt implement eject or eject_with_operation"
+msgstr "ボリュームは eject または eject_with_operation を実装していません"
 
-#: ../gio/gwin32appinfo.c:276
-msgid "Can't find application"
-msgstr "アプリケーションが見つかりません"
-
-#: ../gio/gwin32appinfo.c:308
-#, c-format
-msgid "Error launching application: %s"
-msgstr "アプリケーションを起動する際にエラー: %s"
-
-#: ../gio/gwin32appinfo.c:344
-msgid "URIs not supported"
-msgstr "URI はサポートしていません"
-
-#: ../gio/gwin32appinfo.c:366
-msgid "association changes not supported on win32"
-msgstr "win32 で組み合わせの変更はサポートしていません"
-
-#: ../gio/gwin32appinfo.c:378
-msgid "Association creation not supported on win32"
-msgstr "win32 で組み合わせの生成はサポートしていません"
-
-#: ../gio/gwin32inputstream.c:343
+#: gio/gwin32inputstream.c:185
 #, c-format
 msgid "Error reading from handle: %s"
-msgstr "ハンドルから読み込む際にエラー: %s"
+msgstr "ハンドルから読み込むときにエラーが発生しました: %s"
 
-#: ../gio/gwin32inputstream.c:375 ../gio/gwin32outputstream.c:362
+#: gio/gwin32inputstream.c:232 gio/gwin32outputstream.c:219
 #, c-format
 msgid "Error closing handle: %s"
-msgstr "ハンドルを閉じる際にエラー: %s"
+msgstr "ハンドルを閉じるときにエラーが発生しました: %s"
 
-#: ../gio/gwin32outputstream.c:330
+#: gio/gwin32outputstream.c:172
 #, c-format
 msgid "Error writing to handle: %s"
-msgstr "ハンドルに書き込む際にエラー: %s"
+msgstr "ハンドルに書き込むときにエラーが発生しました: %s"
 
-#: ../gio/gzlibcompressor.c:396 ../gio/gzlibdecompressor.c:349
+#: gio/gzlibcompressor.c:394 gio/gzlibdecompressor.c:347
 msgid "Not enough memory"
 msgstr "メモリが足りません"
 
-#: ../gio/gzlibcompressor.c:403 ../gio/gzlibdecompressor.c:356
+#: gio/gzlibcompressor.c:401 gio/gzlibdecompressor.c:354
 #, c-format
 msgid "Internal error: %s"
 msgstr "内部エラー: %s"
 
-#: ../gio/gzlibcompressor.c:416 ../gio/gzlibdecompressor.c:370
+#: gio/gzlibcompressor.c:414 gio/gzlibdecompressor.c:368
 msgid "Need more input"
 msgstr ""
 
-#: ../gio/gzlibdecompressor.c:342
+#: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
 msgstr "無効な圧縮データです"
 
-#: ../gio/tests/gdbus-daemon.c:18
+#: gio/tests/gdbus-daemon.c:18
 msgid "Address to listen on"
 msgstr ""
 
-#: ../gio/tests/gdbus-daemon.c:19
+#: gio/tests/gdbus-daemon.c:19
 msgid "Ignored, for compat with GTestDbus"
 msgstr ""
 
-#: ../gio/tests/gdbus-daemon.c:20
-#, fuzzy
-#| msgid "Print help"
+#: gio/tests/gdbus-daemon.c:20
 msgid "Print address"
-msgstr "ã\83\98ã\83«ã\83\97を表示する"
+msgstr "ã\82¢ã\83\89ã\83¬ã\82¹を表示する"
 
-#: ../gio/tests/gdbus-daemon.c:21
+#: gio/tests/gdbus-daemon.c:21
 msgid "Print address in shell mode"
-msgstr ""
+msgstr "シェルモードでアドレスを表示する"
 
-#: ../gio/tests/gdbus-daemon.c:28
+#: gio/tests/gdbus-daemon.c:28
 msgid "Run a dbus service"
-msgstr ""
+msgstr "dbus サービスを実行する"
 
-#: ../gio/tests/gdbus-daemon.c:42
-#, c-format
+#: gio/tests/gdbus-daemon.c:42
 msgid "Wrong args\n"
-msgstr ""
+msgstr "引数が間違っています\n"
 
-#: ../glib/gbookmarkfile.c:760
+#: glib/gbookmarkfile.c:756
 #, c-format
-msgid "Unexpected attribute '%s' for element '%s'"
-msgstr "'%s' は '%s' という要素に対して想定外の属性です"
+msgid "Unexpected attribute “%s” for element “%s”"
+msgstr "“%s”は“%s”という要素に対して想定外の属性です"
 
-#: ../glib/gbookmarkfile.c:771 ../glib/gbookmarkfile.c:842
-#: ../glib/gbookmarkfile.c:852 ../glib/gbookmarkfile.c:959
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
-msgid "Attribute '%s' of element '%s' not found"
-msgstr "'%s' という属性は '%s' という要素にはありません"
+msgid "Attribute “%s” of element “%s” not found"
+msgstr "“%s”という属性は“%s”という要素にはありません"
 
-#: ../glib/gbookmarkfile.c:1129 ../glib/gbookmarkfile.c:1194
-#: ../glib/gbookmarkfile.c:1258 ../glib/gbookmarkfile.c:1268
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
-msgid "Unexpected tag '%s', tag '%s' expected"
-msgstr "'%s' は想定外のタグです (想定していたタグは '%s')"
+msgid "Unexpected tag “%s”, tag “%s” expected"
+msgstr "“%s”は想定外のタグです (想定していたタグは“%s”)"
 
-#: ../glib/gbookmarkfile.c:1154 ../glib/gbookmarkfile.c:1168
-#: ../glib/gbookmarkfile.c:1236 ../glib/gbookmarkfile.c:1288
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
-msgid "Unexpected tag '%s' inside '%s'"
-msgstr "'%s' は '%s' の中では想定外のタグです"
+msgid "Unexpected tag “%s” inside “%s”"
+msgstr "“%s”は“%s”の中では想定外のタグです"
 
-#: ../glib/gbookmarkfile.c:1798
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr "ブックマークファイルの日付/時間‘%s’は不正です"
+
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
-msgstr "ã\83\87ã\83¼ã\82¿ã\83»ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81®ä¸­ã\81«å¦¥å½\93ã\81ªã\83\96ã\83\83ã\82¯ã\83\9eã\83¼ã\82¯ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ありません"
+msgstr "ã\83\87ã\83¼ã\82¿ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81«æ­£ã\81\97ã\81\84ã\83\96ã\83\83ã\82¯ã\83\9eã\83¼ã\82¯ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cありません"
 
-#: ../glib/gbookmarkfile.c:1999
+#: glib/gbookmarkfile.c:2032
 #, c-format
-msgid "A bookmark for URI '%s' already exists"
-msgstr "'%s' という URI のブックマークが既に存在しています"
+msgid "A bookmark for URI “%s” already exists"
+msgstr "URI “%s”のブックマークはすでに存在します"
 
-#: ../glib/gbookmarkfile.c:2045 ../glib/gbookmarkfile.c:2203
-#: ../glib/gbookmarkfile.c:2288 ../glib/gbookmarkfile.c:2368
-#: ../glib/gbookmarkfile.c:2453 ../glib/gbookmarkfile.c:2536
-#: ../glib/gbookmarkfile.c:2614 ../glib/gbookmarkfile.c:2693
-#: ../glib/gbookmarkfile.c:2735 ../glib/gbookmarkfile.c:2832
-#: ../glib/gbookmarkfile.c:2952 ../glib/gbookmarkfile.c:3142
-#: ../glib/gbookmarkfile.c:3218 ../glib/gbookmarkfile.c:3386
-#: ../glib/gbookmarkfile.c:3475 ../glib/gbookmarkfile.c:3565
-#: ../glib/gbookmarkfile.c:3693
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
-msgid "No bookmark found for URI '%s'"
-msgstr "'%s' という URI のブックマークが見つかりませんでした"
+msgid "No bookmark found for URI “%s”"
+msgstr "URI “%s”のブックマークが見つかりませんでした"
 
-#: ../glib/gbookmarkfile.c:2377
+#: glib/gbookmarkfile.c:2410
 #, c-format
-msgid "No MIME type defined in the bookmark for URI '%s'"
-msgstr "'%s' という URI のブックマークには MIME 型が定義されていません"
+msgid "No MIME type defined in the bookmark for URI “%s”"
+msgstr "URI “%s”のブックマークで MIME 型が定義されていません"
 
-#: ../glib/gbookmarkfile.c:2462
+#: glib/gbookmarkfile.c:2495
 #, c-format
-msgid "No private flag has been defined in bookmark for URI '%s'"
-msgstr "'%s' という URI のブックマークにはプライベートではないフラグが定義されています"
+msgid "No private flag has been defined in bookmark for URI “%s”"
+msgstr "URI “%s”のブックマークにはプライベートではないフラグが定義されています"
 
-#: ../glib/gbookmarkfile.c:2841
+#: glib/gbookmarkfile.c:2874
 #, c-format
-msgid "No groups set in bookmark for URI '%s'"
-msgstr "'%s' という URI のブックマークにはグループがありません"
+msgid "No groups set in bookmark for URI “%s”"
+msgstr "URI “%s”のブックマークにグループがありません"
 
-#: ../glib/gbookmarkfile.c:3239 ../glib/gbookmarkfile.c:3396
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
-msgid "No application with name '%s' registered a bookmark for '%s'"
-msgstr "アプリケーションの '%s' は '%s' というブックマークを登録していません"
+msgid "No application with name “%s” registered a bookmark for “%s”"
+msgstr "アプリケーション“%s”は“%s”というブックマークを登録していません"
 
-#: ../glib/gbookmarkfile.c:3419
+#: glib/gbookmarkfile.c:3453
 #, c-format
-msgid "Failed to expand exec line '%s' with URI '%s'"
-msgstr "コマンドラインの '%s' を '%s' という URI に展開できませんでした"
+msgid "Failed to expand exec line “%s” with URI “%s”"
+msgstr "コマンドラインの“%s”を“%s”という URI に展開できませんでした"
 
-#: ../glib/gconvert.c:506 ../glib/gutf8.c:829 ../glib/gutf8.c:1039
-#: ../glib/gutf8.c:1176 ../glib/gutf8.c:1280
+#: glib/gconvert.c:466
+msgid "Unrepresentable character in conversion input"
+msgstr "変換する入力に表現できない文字があります"
+
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "入力の最後に不完全な文字シーケンスがあります"
 
-#: ../glib/gconvert.c:756
+#: glib/gconvert.c:762
 #, c-format
-msgid "Cannot convert fallback '%s' to codeset '%s'"
-msgstr "フォールバック '%s' を '%s' という文字集合に変換できません"
+msgid "Cannot convert fallback “%s” to codeset “%s”"
+msgstr "フォールバック“%s”を“%s”という文字集合に変換できません"
 
-#: ../glib/gconvert.c:1574
-#, c-format
-msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
-msgstr "'%s' は \"file\" スキームの絶対 URI ではありません"
+#: glib/gconvert.c:934
+msgid "Embedded NUL byte in conversion input"
+msgstr "変換する入力に埋め込まれた NUL バイトがあります"
 
-#: ../glib/gconvert.c:1584
-#, c-format
-msgid "The local file URI '%s' may not include a '#'"
-msgstr "'#' を含んだ '%s' はローカルファイルの URI としては正しくありません"
+#: glib/gconvert.c:955
+msgid "Embedded NUL byte in conversion output"
+msgstr "変換する出力に埋め込まれた NUL バイトがあります"
 
-#: ../glib/gconvert.c:1601
+#: glib/gconvert.c:1640
 #, c-format
-msgid "The URI '%s' is invalid"
-msgstr "'%s' という URI は正しくありません"
+msgid "The URI “%s” is not an absolute URI using the “file” scheme"
+msgstr "“%s”は“file”スキームの絶対 URI ではありません"
 
-#: ../glib/gconvert.c:1613
+#: glib/gconvert.c:1650
 #, c-format
-msgid "The hostname of the URI '%s' is invalid"
-msgstr "URI に含まれる '%s' というホスト名は間違っています"
+msgid "The local file URI “%s” may not include a “#”"
+msgstr "“#”を含んだ“%s”は正しいローカルファイル URI ではありません"
 
-#: ../glib/gconvert.c:1629
+#: glib/gconvert.c:1667
 #, c-format
-msgid "The URI '%s' contains invalidly escaped characters"
-msgstr "'%s' という URI に無効なエスケープ文字が含まれています"
+msgid "The URI “%s” is invalid"
+msgstr "URI “%s”は正しくありません"
 
-#: ../glib/gconvert.c:1724
+#: glib/gconvert.c:1679
 #, c-format
-msgid "The pathname '%s' is not an absolute path"
-msgstr "'%s' は絶対パスではありません"
-
-#: ../glib/gconvert.c:1734
-msgid "Invalid hostname"
-msgstr "無効なホスト名です"
+msgid "The hostname of the URI “%s” is invalid"
+msgstr "URI “%s”のホスト名は正しくありません"
 
-#. Translators: 'before midday' indicator
-#: ../glib/gdatetime.c:205
-msgctxt "GDateTime"
-msgid "AM"
-msgstr "午前"
+#: glib/gconvert.c:1695
+#, c-format
+msgid "The URI “%s” contains invalidly escaped characters"
+msgstr "URI “%s”は不正なエスケープ文字を含んでいます"
 
-#. Translators: 'after midday' indicator
-#: ../glib/gdatetime.c:207
-msgctxt "GDateTime"
-msgid "PM"
-msgstr "午後"
+#: glib/gconvert.c:1767
+#, c-format
+msgid "The pathname “%s” is not an absolute path"
+msgstr "“%s”は絶対パスではありません"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: ../glib/gdatetime.c:210
+#: glib/gdatetime.c:220
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%Y年%m月%d日 %H時%M分%S秒"
 
 #. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:213
+#: glib/gdatetime.c:223
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%Y/%m/%d"
 
 #. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:216
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: ../glib/gdatetime.c:219
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%p%I時%M分%S秒"
 
-#: ../glib/gdatetime.c:232
+#. Translators: Some languages (Baltic, Slavic, Greek, and some more)
+#. * need different grammatical forms of month names depending on whether
+#. * they are standalone or in a complete date context, with the day
+#. * number.  Some other languages may prefer starting with uppercase when
+#. * they are standalone and with lowercase when they are in a complete
+#. * date context.  Here are full month names in a form appropriate when
+#. * they are used standalone.  If your system is Linux with the glibc
+#. * version 2.27 (released Feb 1, 2018) or newer or if it is from the BSD
+#. * family (which includes OS X) then you can refer to the date command
+#. * line utility and see what the command `date +%OB' produces.  Also in
+#. * the latest Linux the command `locale alt_mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  Note that in most of the languages (western European,
+#. * non-European) there is no difference between the standalone and
+#. * complete date form.
+#.
+#: glib/gdatetime.c:268
 msgctxt "full month name"
 msgid "January"
 msgstr "1月"
 
-#: ../glib/gdatetime.c:234
+#: glib/gdatetime.c:270
 msgctxt "full month name"
 msgid "February"
 msgstr "2月"
 
-#: ../glib/gdatetime.c:236
+#: glib/gdatetime.c:272
 msgctxt "full month name"
 msgid "March"
 msgstr "3月"
 
-#: ../glib/gdatetime.c:238
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "April"
 msgstr "4月"
 
-#: ../glib/gdatetime.c:240
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "May"
 msgstr "5月"
 
-#: ../glib/gdatetime.c:242
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "June"
 msgstr "6月"
 
-#: ../glib/gdatetime.c:244
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "July"
 msgstr "7月"
 
-#: ../glib/gdatetime.c:246
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "August"
 msgstr "8月"
 
-#: ../glib/gdatetime.c:248
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "September"
 msgstr "9月"
 
-#: ../glib/gdatetime.c:250
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "October"
 msgstr "10月"
 
-#: ../glib/gdatetime.c:252
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "November"
 msgstr "11月"
 
-#: ../glib/gdatetime.c:254
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "December"
 msgstr "12月"
 
-#: ../glib/gdatetime.c:269
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a complete
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  However, as these names are abbreviated
+#. * the grammatical difference is visible probably only in Belarusian
+#. * and Russian.  In other languages there is no difference between
+#. * the standalone and complete date form when they are abbreviated.
+#. * If your system is Linux with the glibc version 2.27 (released
+#. * Feb 1, 2018) or newer then you can refer to the date command line
+#. * utility and see what the command `date +%Ob' produces.  Also in
+#. * the latest Linux the command `locale ab_alt_mon' in your native
+#. * locale produces a complete list of month names almost ready to copy
+#. * and paste here.  Note that this feature is not yet supported by any
+#. * other platform.  Here are abbreviated month names in a form
+#. * appropriate when they are used standalone.
+#.
+#: glib/gdatetime.c:322
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr " 1月"
 
-#: ../glib/gdatetime.c:271
+#: glib/gdatetime.c:324
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr " 2月"
 
-#: ../glib/gdatetime.c:273
+#: glib/gdatetime.c:326
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr " 3月"
 
-#: ../glib/gdatetime.c:275
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr " 4月"
 
-#: ../glib/gdatetime.c:277
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr " 5月"
 
-#: ../glib/gdatetime.c:279
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr " 6月"
 
-#: ../glib/gdatetime.c:281
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr " 7月"
 
-#: ../glib/gdatetime.c:283
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr " 8月"
 
-#: ../glib/gdatetime.c:285
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr " 9月"
 
-#: ../glib/gdatetime.c:287
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "10月"
 
-#: ../glib/gdatetime.c:289
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "11月"
 
-#: ../glib/gdatetime.c:291
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "12月"
 
-#: ../glib/gdatetime.c:306
+#: glib/gdatetime.c:359
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "月曜日"
 
-#: ../glib/gdatetime.c:308
+#: glib/gdatetime.c:361
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "火曜日"
 
-#: ../glib/gdatetime.c:310
+#: glib/gdatetime.c:363
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "水曜日"
 
-#: ../glib/gdatetime.c:312
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "木曜日"
 
-#: ../glib/gdatetime.c:314
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "金曜日"
 
-#: ../glib/gdatetime.c:316
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "土曜日"
 
-#: ../glib/gdatetime.c:318
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "日曜日"
 
-#: ../glib/gdatetime.c:333
+#: glib/gdatetime.c:386
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "月"
 
-#: ../glib/gdatetime.c:335
+#: glib/gdatetime.c:388
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "火"
 
-#: ../glib/gdatetime.c:337
+#: glib/gdatetime.c:390
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "水"
 
-#: ../glib/gdatetime.c:339
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "木"
 
-#: ../glib/gdatetime.c:341
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "金"
 
-#: ../glib/gdatetime.c:343
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "土"
 
-#: ../glib/gdatetime.c:345
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "日"
 
-#: ../glib/gdir.c:120 ../glib/gdir.c:143
-#, c-format
-msgid "Error opening directory '%s': %s"
-msgstr "'%s' を開く時にエラー: %s"
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are full month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  If your system is Linux with the glibc version 2.27
+#. * (released Feb 1, 2018) or newer or if it is from the BSD family
+#. * (which includes OS X) then you can refer to the date command line
+#. * utility and see what the command `date +%B' produces.  Also in
+#. * the latest Linux the command `locale mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  In older Linux systems due to a bug the result is
+#. * incorrect in some languages.  Note that in most of the languages
+#. * (western European, non-European) there is no difference between the
+#. * standalone and complete date form.
+#.
+#: glib/gdatetime.c:462
+msgctxt "full month name with day"
+msgid "January"
+msgstr "1月"
+
+#: glib/gdatetime.c:464
+msgctxt "full month name with day"
+msgid "February"
+msgstr "2月"
+
+#: glib/gdatetime.c:466
+msgctxt "full month name with day"
+msgid "March"
+msgstr "3月"
+
+#: glib/gdatetime.c:468
+msgctxt "full month name with day"
+msgid "April"
+msgstr "4月"
+
+#: glib/gdatetime.c:470
+msgctxt "full month name with day"
+msgid "May"
+msgstr "5月"
+
+#: glib/gdatetime.c:472
+msgctxt "full month name with day"
+msgid "June"
+msgstr "6月"
+
+#: glib/gdatetime.c:474
+msgctxt "full month name with day"
+msgid "July"
+msgstr "7月"
+
+#: glib/gdatetime.c:476
+msgctxt "full month name with day"
+msgid "August"
+msgstr "8月"
+
+#: glib/gdatetime.c:478
+msgctxt "full month name with day"
+msgid "September"
+msgstr "9月"
+
+#: glib/gdatetime.c:480
+msgctxt "full month name with day"
+msgid "October"
+msgstr "10月"
+
+#: glib/gdatetime.c:482
+msgctxt "full month name with day"
+msgid "November"
+msgstr "11月"
+
+#: glib/gdatetime.c:484
+msgctxt "full month name with day"
+msgid "December"
+msgstr "12月"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are abbreviated month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  However, as these names are abbreviated the grammatical
+#. * difference is visible probably only in Belarusian and Russian.
+#. * In other languages there is no difference between the standalone
+#. * and complete date form when they are abbreviated.  If your system
+#. * is Linux with the glibc version 2.27 (released Feb 1, 2018) or newer
+#. * then you can refer to the date command line utility and see what the
+#. * command `date +%b' produces.  Also in the latest Linux the command
+#. * `locale abmon' in your native locale produces a complete list of
+#. * month names almost ready to copy and paste here.  In other systems
+#. * due to a bug the result is incorrect in some languages.
+#.
+#: glib/gdatetime.c:549
+msgctxt "abbreviated month name with day"
+msgid "Jan"
+msgstr " 1月"
+
+#: glib/gdatetime.c:551
+msgctxt "abbreviated month name with day"
+msgid "Feb"
+msgstr " 2月"
+
+#: glib/gdatetime.c:553
+msgctxt "abbreviated month name with day"
+msgid "Mar"
+msgstr " 3月"
+
+#: glib/gdatetime.c:555
+msgctxt "abbreviated month name with day"
+msgid "Apr"
+msgstr " 4月"
+
+#: glib/gdatetime.c:557
+msgctxt "abbreviated month name with day"
+msgid "May"
+msgstr " 5月"
+
+#: glib/gdatetime.c:559
+msgctxt "abbreviated month name with day"
+msgid "Jun"
+msgstr " 6月"
+
+#: glib/gdatetime.c:561
+msgctxt "abbreviated month name with day"
+msgid "Jul"
+msgstr " 7月"
+
+#: glib/gdatetime.c:563
+msgctxt "abbreviated month name with day"
+msgid "Aug"
+msgstr " 8月"
+
+#: glib/gdatetime.c:565
+msgctxt "abbreviated month name with day"
+msgid "Sep"
+msgstr " 9月"
+
+#: glib/gdatetime.c:567
+msgctxt "abbreviated month name with day"
+msgid "Oct"
+msgstr "10月"
+
+#: glib/gdatetime.c:569
+msgctxt "abbreviated month name with day"
+msgid "Nov"
+msgstr "11月"
+
+#: glib/gdatetime.c:571
+msgctxt "abbreviated month name with day"
+msgid "Dec"
+msgstr "12月"
+
+#. Translators: 'before midday' indicator
+#: glib/gdatetime.c:588
+msgctxt "GDateTime"
+msgid "AM"
+msgstr "午前"
 
-#: ../glib/gfileutils.c:671 ../glib/gfileutils.c:759
-#, fuzzy, c-format
-#| msgid "Could not allocate %lu bytes to read file \"%s\""
-msgid "Could not allocate %lu byte to read file \"%s\""
-msgid_plural "Could not allocate %lu bytes to read file \"%s\""
-msgstr[0] "%lu バイトを確保できませんでした (ファイル \"%s\" の読み込みに必要)"
+#. Translators: 'after midday' indicator
+#: glib/gdatetime.c:591
+msgctxt "GDateTime"
+msgid "PM"
+msgstr "午後"
 
-#: ../glib/gfileutils.c:686
+#: glib/gdir.c:154
 #, c-format
-msgid "Error reading file '%s': %s"
-msgstr "'%s' の読み出し中にエラー: %s"
+msgid "Error opening directory “%s”: %s"
+msgstr "ディレクトリ“%s”を開くときにエラーが発生しました: %s"
 
-#: ../glib/gfileutils.c:700
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
-msgid "File \"%s\" is too large"
-msgstr "'%s' のサイズが大きすぎます"
+msgid "Could not allocate %lu byte to read file “%s”"
+msgid_plural "Could not allocate %lu bytes to read file “%s”"
+msgstr[0] "%lu バイトを確保できませんでした (ファイル“%s”の読み込みに必要)"
 
-#: ../glib/gfileutils.c:783
+#: glib/gfileutils.c:750
 #, c-format
-msgid "Failed to read from file '%s': %s"
-msgstr "'%s' が読めません: %s"
+msgid "Error reading file “%s”: %s"
+msgstr "ファイル“%s”の読み取り中にエラーが発生しました: %s"
 
-#: ../glib/gfileutils.c:834 ../glib/gfileutils.c:921
+#: glib/gfileutils.c:786
 #, c-format
-msgid "Failed to open file '%s': %s"
-msgstr "'%s' を開けません: %s"
+msgid "File “%s” is too large"
+msgstr "ファイル“%s”のサイズが大きすぎます"
 
-#: ../glib/gfileutils.c:851
+#: glib/gfileutils.c:850
 #, c-format
-msgid "Failed to get attributes of file '%s': fstat() failed: %s"
-msgstr "'%s' の属性を取得できません: fstat() に失敗しました: %s"
+msgid "Failed to read from file “%s”: %s"
+msgstr "ファイル“%s”からの読み取りに失敗しました: %s"
 
-#: ../glib/gfileutils.c:885
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
 #, c-format
-msgid "Failed to open file '%s': fdopen() failed: %s"
-msgstr "'%s' を開けません: fdopen() に失敗しました: %s"
+msgid "Failed to open file “%s”: %s"
+msgstr "ファイル“%s”を開くのに失敗しました: %s"
 
-#: ../glib/gfileutils.c:993
+#: glib/gfileutils.c:910
 #, c-format
-msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
-msgstr "'%s' から '%s' にファイル名を変更できません: g_rename() に失敗しました: %s"
+msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
+msgstr "ファイル“%s”の属性を取得できません: fstat() に失敗しました: %s"
 
-#: ../glib/gfileutils.c:1047 ../glib/gfileutils.c:1554
+#: glib/gfileutils.c:940
 #, c-format
-msgid "Failed to create file '%s': %s"
-msgstr "'%s' というファイルを生成できませんでした: %s"
+msgid "Failed to open file “%s”: fdopen() failed: %s"
+msgstr "ファイル“%s”を開けません: fdopen() に失敗しました: %s"
 
-#: ../glib/gfileutils.c:1071
-#, fuzzy, c-format
-#| msgid "Failed to write file '%s': fwrite() failed: %s"
-msgid "Failed to write file '%s': write() failed: %s"
-msgstr "'%s' への書き込みに失敗しました: fwrite() に失敗しました: %s"
+#: glib/gfileutils.c:1039
+#, c-format
+msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
+msgstr ""
+"“%s”から“%s”にファイル名を変更できません: g_rename() に失敗しました: %s"
 
-#: ../glib/gfileutils.c:1111
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
 #, c-format
-msgid "Failed to write file '%s': fsync() failed: %s"
-msgstr "'%s' への書き込みに失敗しました: fsync() に失敗しました: %s"
+msgid "Failed to create file “%s”: %s"
+msgstr "ファイル“%s”の作成に失敗しました: %s"
 
-#: ../glib/gfileutils.c:1243
+#: glib/gfileutils.c:1101
 #, c-format
-msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
-msgstr "'%s' という既存のファイルを削除できませんでした: g_unlink() に失敗しました: %s"
+msgid "Failed to write file “%s”: write() failed: %s"
+msgstr "ファイル“%s”へ書き込めません: write() に失敗しました: %s"
 
-#: ../glib/gfileutils.c:1517
+#: glib/gfileutils.c:1144
 #, c-format
-msgid "Template '%s' invalid, should not contain a '%s'"
-msgstr "'%s' というテンプレートは間違っています ('%s' を含めないこと)"
+msgid "Failed to write file “%s”: fsync() failed: %s"
+msgstr "ファイル“%s”へ書き込めません: fsync() に失敗しました: %s"
 
-#: ../glib/gfileutils.c:1530
+#: glib/gfileutils.c:1279
 #, c-format
-msgid "Template '%s' doesn't contain XXXXXX"
-msgstr "'%s' というテンプレートに XXXXXX が含まれていません"
+msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
+msgstr ""
+"既存のファイル“%s”を削除できませんでした: g_unlink() に失敗しました: %s"
 
-#: ../glib/gfileutils.c:2058
+#: glib/gfileutils.c:1558
 #, c-format
-msgid "Failed to read the symbolic link '%s': %s"
-msgstr "ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83ªã\83³ã\82¯ '%s' ã\81®èª­ã\81¿è¾¼ã\81¿ã\81\8c失æ\95\97: %s"
+msgid "Template “%s” invalid, should not contain a “%s”"
+msgstr "ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88â\80\9c%sâ\80\9dã\81¯ä¸\8dæ­£ã\81§ã\81\99 (â\80\9c%sâ\80\9dã\82\92å\90«ã\82\81ã\81ªã\81\84ã\81\93ã\81¨)"
 
-#: ../glib/gfileutils.c:2079
-msgid "Symbolic links not supported"
-msgstr "シンボリックリンクはサポートしていません"
+#: glib/gfileutils.c:1571
+#, c-format
+msgid "Template “%s” doesn’t contain XXXXXX"
+msgstr "テンプレート“%s”に XXXXXX が含まれていません"
+
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
+#, c-format
+msgid "Failed to read the symbolic link “%s”: %s"
+msgstr "シンボリックリンク“%s”の読み取りに失敗しました: %s"
 
-#: ../glib/giochannel.c:1418
+#: glib/giochannel.c:1396
 #, c-format
-msgid "Could not open converter from '%s' to '%s': %s"
-msgstr "'%s' から '%s' へ変換するコンバーターを開けませんでした: %s"
+msgid "Could not open converter from “%s” to “%s”: %s"
+msgstr "“%s”から“%s”へ変換するコンバーターを開けませんでした: %s"
 
-#: ../glib/giochannel.c:1763
-msgid "Can't do a raw read in g_io_channel_read_line_string"
-msgstr "g_io_channel_read_line_string ã\81§ã\81¯ raw ã\83¢ã\83¼ã\83\89ã\81§èª­ã\82\81ません"
+#: glib/giochannel.c:1741
+msgid "Cant do a raw read in g_io_channel_read_line_string"
+msgstr "g_io_channel_read_line_string ã\81§ã\81¯ raw ã\83¢ã\83¼ã\83\89ã\81§èª­ã\81¿å\8f\96ã\82\8cません"
 
-#: ../glib/giochannel.c:1810 ../glib/giochannel.c:2068
-#: ../glib/giochannel.c:2155
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
-msgstr "変換されていないデータが読みみバッファーに残っています"
+msgstr "変換されていないデータが読みみバッファーに残っています"
 
-#: ../glib/giochannel.c:1891 ../glib/giochannel.c:1968
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "チャンネルが不完全な文字で終わっています"
 
-#: ../glib/giochannel.c:1954
-msgid "Can't do a raw read in g_io_channel_read_to_end"
-msgstr "g_io_channel_read_to_end ã\81§ã\81¯ raw ã\83¢ã\83¼ã\83\89ã\81§èª­ã\82\81ません"
+#: glib/giochannel.c:1932
+msgid "Cant do a raw read in g_io_channel_read_to_end"
+msgstr "g_io_channel_read_to_end ã\81§ã\81¯ raw ã\83¢ã\83¼ã\83\89ã\81§èª­ã\81¿å\8f\96ã\82\8cません"
 
-#: ../glib/gkeyfile.c:722
+#: glib/gkeyfile.c:789
 msgid "Valid key file could not be found in search dirs"
-msgstr "検索ディレクトリには妥当なキー・ファイルがありませんでした"
+msgstr "検索ディレクトリに正しいキーファイルがありませんでした"
 
-#: ../glib/gkeyfile.c:758
+#: glib/gkeyfile.c:826
 msgid "Not a regular file"
 msgstr "通常のファイルではありません"
 
-#: ../glib/gkeyfile.c:1158
+#: glib/gkeyfile.c:1275
 #, c-format
-msgid "Key file contains line '%s' which is not a key-value pair, group, or comment"
-msgstr "キー・ファイルの行 '%s' がキー/値のペア、グループ、またはコメントではありません"
+msgid ""
+"Key file contains line “%s” which is not a key-value pair, group, or comment"
+msgstr ""
+"キーファイルの行“%s”がキー/値のペア、グループ、またはコメントではありません"
 
-#: ../glib/gkeyfile.c:1215
+#: glib/gkeyfile.c:1332
 #, c-format
 msgid "Invalid group name: %s"
-msgstr "グループ名が無効です: %s"
+msgstr "グループ名が不正です: %s"
 
-#: ../glib/gkeyfile.c:1237
+#: glib/gkeyfile.c:1354
 msgid "Key file does not start with a group"
-msgstr "ã\82­ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cã\82°ã\83«ã\83¼ã\83\97ã\81§å§\8bã\81¾ã\81£ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93"
+msgstr "キーファイルがグループで始まっていません"
 
-#: ../glib/gkeyfile.c:1263
+#: glib/gkeyfile.c:1380
 #, c-format
 msgid "Invalid key name: %s"
-msgstr "キーの名前が無効です: %s"
+msgstr "キーの名前が不正です: %s"
 
-#: ../glib/gkeyfile.c:1290
+#: glib/gkeyfile.c:1407
 #, c-format
-msgid "Key file contains unsupported encoding '%s'"
-msgstr "ã\82­ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\82µã\83\9dã\83¼ã\83\88ã\81\97ã\81¦ã\81ªã\81\84ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82° '%s' があります"
+msgid "Key file contains unsupported encoding “%s”"
+msgstr "ã\82­ã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\82µã\83\9dã\83¼ã\83\88ã\81\97ã\81¦ã\81ªã\81\84ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°â\80\9c%sâ\80\9dがあります"
 
-#: ../glib/gkeyfile.c:1533 ../glib/gkeyfile.c:1695 ../glib/gkeyfile.c:3073
-#: ../glib/gkeyfile.c:3139 ../glib/gkeyfile.c:3265 ../glib/gkeyfile.c:3398
-#: ../glib/gkeyfile.c:3540 ../glib/gkeyfile.c:3770 ../glib/gkeyfile.c:3837
+#: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
-msgid "Key file does not have group '%s'"
-msgstr "ã\82­ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\82°ã\83«ã\83¼ã\83\97 '%s' がありません"
+msgid "Key file does not have group “%s”"
+msgstr "ã\82­ã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\82°ã\83«ã\83¼ã\83\97â\80\9c%sâ\80\9dがありません"
 
-#: ../glib/gkeyfile.c:1707
+#: glib/gkeyfile.c:1778
 #, c-format
-msgid "Key file does not have key '%s'"
-msgstr "ã\82­ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\82­ã\83¼ '%s' がありません"
+msgid "Key file does not have key “%s” in group “%s”"
+msgstr "ã\82­ã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\82°ã\83«ã\83¼ã\83\97â\80\9c%2$sâ\80\9dã\81®ã\82­ã\83¼â\80\9c%1$sâ\80\9dがありません"
 
-#: ../glib/gkeyfile.c:1814 ../glib/gkeyfile.c:1930
+#: glib/gkeyfile.c:1940 glib/gkeyfile.c:2056
 #, c-format
-msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
-msgstr "ã\82­ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\82­ã\83¼ '%s' ã\81®å\80¤ '%s' が UTF-8 ではありません"
+msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
+msgstr "ã\82­ã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\82­ã\83¼â\80\9c%sâ\80\9dã\81®å\80¤â\80\9c%sâ\80\9dが UTF-8 ではありません"
 
-#: ../glib/gkeyfile.c:1834 ../glib/gkeyfile.c:1950 ../glib/gkeyfile.c:2319
+#: glib/gkeyfile.c:1960 glib/gkeyfile.c:2076 glib/gkeyfile.c:2518
 #, c-format
-msgid "Key file contains key '%s' which has a value that cannot be interpreted."
-msgstr "キー・ファイルに解釈できない値を持つキー '%s' が含まれています。"
-
-#: ../glib/gkeyfile.c:2536 ../glib/gkeyfile.c:2902
-#, fuzzy, c-format
-msgid "Key file contains key '%s' in group '%s' which has a value that cannot be interpreted."
-msgstr "キー・ファイルのグループ '%2$s' にあるキー '%1$s' の値を解釈できませんでした"
+msgid ""
+"Key file contains key “%s” which has a value that cannot be interpreted."
+msgstr "キーファイルに解釈できない値を持つキー“%s”が含まれています。"
 
-#: ../glib/gkeyfile.c:2614 ../glib/gkeyfile.c:2690
-#, fuzzy, c-format
-msgid "Key '%s' in group '%s' has value '%s' where %s was expected"
-msgstr "キー・ファイルのグループ '%2$s' にあるキー '%1$s' の値を解釈できませんでした"
+#: glib/gkeyfile.c:2736 glib/gkeyfile.c:3105
+#, c-format
+msgid ""
+"Key file contains key “%s” in group “%s” which has a value that cannot be "
+"interpreted."
+msgstr ""
+"グループ“%2$s”のキーファイルに解釈できない値を持つキー“%1$s”が含まれていま"
+"す。"
 
-#: ../glib/gkeyfile.c:3088 ../glib/gkeyfile.c:3280 ../glib/gkeyfile.c:3848
+#: glib/gkeyfile.c:2814 glib/gkeyfile.c:2891
 #, c-format
-msgid "Key file does not have key '%s' in group '%s'"
-msgstr "キー・ファイルにはグループ '%2$s' のキー '%1$s' がありません"
+msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
+msgstr ""
 
-#: ../glib/gkeyfile.c:4080
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
-msgstr "ã\82­ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81®è¡\8cæ\9c«ã\81«ã\82¨ã\82¹ã\82±ã\83¼ã\83\97æ\96\87å­\97ã\81\8cå\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99"
+msgstr "キーファイルの行末にエスケープ文字が含まれています"
 
-#: ../glib/gkeyfile.c:4102
+#: glib/gkeyfile.c:4306
 #, c-format
-msgid "Key file contains invalid escape sequence '%s'"
-msgstr "ã\82­ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\81«ç\84¡å\8a¹ã\81ªã\82¨ã\82¹ã\82±ã\83¼ã\83\97ã\83»ã\82·ã\83¼ã\82±ã\83³ã\82¹ '%s' が含まれています"
+msgid "Key file contains invalid escape sequence “%s”"
+msgstr "ã\82­ã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\81«ä¸\8dæ­£ã\81ªã\82¨ã\82¹ã\82±ã\83¼ã\83\97ã\82·ã\83¼ã\82±ã\83³ã\82¹â\80\9c%sâ\80\9dが含まれています"
 
-#: ../glib/gkeyfile.c:4244
+#: glib/gkeyfile.c:4450
 #, c-format
-msgid "Value '%s' cannot be interpreted as a number."
-msgstr "値 '%s' を数値として解釈できません"
+msgid "Value “%s” cannot be interpreted as a number."
+msgstr "値“%s”を数値として解釈できません。"
 
-#: ../glib/gkeyfile.c:4258
+#: glib/gkeyfile.c:4464
 #, c-format
-msgid "Integer value '%s' out of range"
-msgstr "整数値 '%s' は範囲外の値です"
+msgid "Integer value “%s” out of range"
+msgstr "Integer 値“%s”は範囲外の値です"
 
-#: ../glib/gkeyfile.c:4291
+#: glib/gkeyfile.c:4497
 #, c-format
-msgid "Value '%s' cannot be interpreted as a float number."
-msgstr "値 '%s' を実数値として解釈できません"
+msgid "Value “%s” cannot be interpreted as a float number."
+msgstr "値“%s”を Float として解釈できません。"
 
-#: ../glib/gkeyfile.c:4315
+#: glib/gkeyfile.c:4536
 #, c-format
-msgid "Value '%s' cannot be interpreted as a boolean."
-msgstr "値 '%s' を論理値として解釈できません"
+msgid "Value “%s” cannot be interpreted as a boolean."
+msgstr "値“%s”を論理値として解釈できません。"
 
-#: ../glib/gmappedfile.c:130
-#, fuzzy, c-format
-msgid "Failed to get attributes of file '%s%s%s%s': fstat() failed: %s"
-msgstr "'%s' の属性の取得できません: fstat() に失敗しました: %s"
+#: glib/gmappedfile.c:129
+#, c-format
+msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
+msgstr "ファイル“%s%s%s%s”の属性を取得できません: fstat() に失敗しました: %s"
 
-#: ../glib/gmappedfile.c:196
-#, fuzzy, c-format
+#: glib/gmappedfile.c:195
+#, c-format
 msgid "Failed to map %s%s%s%s: mmap() failed: %s"
-msgstr "ファイル '%s' のマップに失敗しました: mmap() が失敗: %s"
+msgstr "%s%s%s%s をマップできません: mmap() に失敗しました: %s"
 
-#: ../glib/gmappedfile.c:262
+#: glib/gmappedfile.c:262
 #, c-format
-msgid "Failed to open file '%s': open() failed: %s"
-msgstr "ファイル '%s' を開けません: open() が失敗: %s"
+msgid "Failed to open file “%s”: open() failed: %s"
+msgstr "ファイル“%s”を開けません: open() に失敗しました: %s"
 
-#: ../glib/gmarkup.c:397 ../glib/gmarkup.c:439
+#: glib/gmarkup.c:398 glib/gmarkup.c:440
 #, c-format
 msgid "Error on line %d char %d: "
-msgstr "%d è¡\8cã\81® %d æ\96\87å­\97ç\9b®ã\81§ã\82¨ã\83©ã\83¼: "
+msgstr "%d è¡\8cã\81® %d æ\96\87å­\97ç\9b®ã\81«ã\82¨ã\83©ã\83¼ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99: "
 
-#: ../glib/gmarkup.c:461 ../glib/gmarkup.c:544
+#: glib/gmarkup.c:462 glib/gmarkup.c:545
 #, c-format
-msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
-msgstr "å\90\8då\89\8dã\81¯UTF-8ã\81¨ã\81\97ã\81¦æ­£ã\81\97ã\81\8fã\81ªã\81\84æ\96\87å­\97å\88\97ã\81§ã\81\99 - '%s' ã\81¯å¦¥å½\93ã\81§ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93"
+msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
+msgstr "å\90\8då\89\8dã\81« UTF-8 ã\81¨ã\81\97ã\81¦æ­£ã\81\97ã\81\8fã\81ªã\81\84æ\96\87å­\97å\88\97ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99 â\80\94 â\80\9c%sâ\80\9dã\81¯ä¸\8dæ­£ã\81§ã\81\99"
 
-#: ../glib/gmarkup.c:472
-#, fuzzy, c-format
-#| msgid "'%s' is not a valid name "
-msgid "'%s' is not a valid name"
-msgstr "'%s' は妥当な名前ではありません "
+#: glib/gmarkup.c:473
+#, c-format
+msgid "“%s” is not a valid name"
+msgstr "“%s”は正しい名前ではありません"
 
-#: ../glib/gmarkup.c:488
-#, fuzzy, c-format
-#| msgid "'%s' is not a valid name: '%c' "
-msgid "'%s' is not a valid name: '%c'"
-msgstr "'%s' は妥当な名前ではありません: '%c' "
+#: glib/gmarkup.c:489
+#, c-format
+msgid "“%s” is not a valid name: “%c”"
+msgstr "“%s”は正しい名前ではありません: “%c”"
 
-#: ../glib/gmarkup.c:598
+#: glib/gmarkup.c:613
 #, c-format
 msgid "Error on line %d: %s"
-msgstr "%d è¡\8cç\9b®ã\81§ã\82¨ã\83©ã\83¼: %s"
+msgstr "%d è¡\8cç\9b®ã\81«ã\82¨ã\83©ã\83¼ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99: %s"
 
-#: ../glib/gmarkup.c:682
+#: glib/gmarkup.c:690
 #, 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 "'%-.*s' をパースできません。文字参照の範囲内の数字でなければなりません (例: &#234;) 数字が大きすぎる可能性もあります"
+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 ""
+"“%-.*s”を解析できません。文字参照の範囲内の数字である必要があります (例: "
+"&#234;) 数字が大きすぎる可能性もあります"
 
-#: ../glib/gmarkup.c:694
-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 "文字参照がセミコロンで終わっていません。エンティティのつもりもないのにアンパサンド文字を使っているのかもしれません。アンパサンドは &amp; とエスケープしてください"
+#: glib/gmarkup.c:702
+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 ""
+"文字参照がセミコロンで終わっていません。エンティティでもないのにアンパサンド"
+"を使用したのではないでしょうか。アンパサンドは &amp; のようにエスケープしてく"
+"ださい"
 
-#: ../glib/gmarkup.c:720
+#: glib/gmarkup.c:728
 #, c-format
-msgid "Character reference '%-.*s' does not encode a permitted character"
-msgstr "文字参照 '%-.*s' が使用可能な文字をエンコードしていません"
+msgid "Character reference “%-.*s” does not encode a permitted character"
+msgstr "文字参照“%-.*s”が使用可能な文字をエンコードしていません"
 
-#: ../glib/gmarkup.c:758
-msgid "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
-msgstr "空のエンティティ '&;' があります; 正しいエンティティは: &amp; &quot; &lt; &gt; &apos;"
+#: glib/gmarkup.c:766
+msgid ""
+"Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+msgstr ""
+"空のエンティティ“&;”があります。正しいエンティティ: &amp; &quot; &lt; &gt; "
+"&apos;"
 
-#: ../glib/gmarkup.c:766
+#: glib/gmarkup.c:774
 #, c-format
-msgid "Entity name '%-.*s' is not known"
-msgstr "エンティティ名 '%-.*s' というのは不明です"
+msgid "Entity name “%-.*s” is not known"
+msgstr "エンティティ名“%-.*s”は不明です"
 
-#: ../glib/gmarkup.c:771
-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 "エンティティがセミコロンで終わってません。エンティティでもないのにアンパサンドを使ったのではないでしょうか。アンパサンドは &amp; のようにエスケープしてください"
+#: glib/gmarkup.c:779
+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 ""
+"エンティティがセミコロンで終わってません。エンティティでもないのにアンパサン"
+"ドを使用したのではないでしょうか。アンパサンドは &amp; のようにエスケープして"
+"ください"
 
-#: ../glib/gmarkup.c:1119
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
-msgstr "ドキュメントは要素 (例 <book>) で始まってなくてはなりません"
+msgstr "ドキュメントは要素 (例 <book>) で始まっている必要があります"
+
+#: glib/gmarkup.c:1233
+#, c-format
+msgid ""
+"“%s” is not a valid character following a “<” character; it may not begin an "
+"element name"
+msgstr ""
+"“%s”は“<”に続く文字として正しくありません。おそらく要素名の開始になっていませ"
+"ん"
 
-#: ../glib/gmarkup.c:1159
+#: glib/gmarkup.c:1276
 #, c-format
-msgid "'%s' is not a valid character following a '<' character; it may not begin an element name"
-msgstr "'%s' は '<' に続く文字としては正しくありません。おそらく要素名の開始になっていません"
+msgid ""
+"Odd character “%s”, expected a “>” character to end the empty-element tag "
+"“%s”"
+msgstr ""
+"おかしな文字“%s”があります。空の要素のタグ“%s”の最後は“>”でなくてはなりません"
 
-#: ../glib/gmarkup.c:1227
+#: glib/gmarkup.c:1346
 #, c-format
-msgid "Odd character '%s', expected a '>' character to end the empty-element tag '%s'"
-msgstr "おかしな文字 '%s' があります。空の要素のタグ '%s' の最後は '>' でなくてはなりません"
+msgid "Too many attributes in element “%s”"
+msgstr "要素“%s”の属性が多すぎます"
 
-#: ../glib/gmarkup.c:1311
+#: glib/gmarkup.c:1366
 #, c-format
-msgid "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
-msgstr "おかしな文字 '%s' です。属性名'%s' (要素 '%s') の後には '=' が必要です"
+msgid ""
+"Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
+msgstr "おかしな文字“%s”です。属性名“%s” (要素“%s”) の後には“=”が必要です"
 
-#: ../glib/gmarkup.c:1352
+#: glib/gmarkup.c:1408
 #, 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 "おかしな文字 '%s' です。要素 '%s' の開始タグの末尾は '>' または '/' でなくてはなりません。あるいは属性になります。おかしな文字を属性名に使ったのかもしれません"
+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 ""
+"おかしな文字“%s”です。要素“%s”の開始タグの末尾は“>”または“/”でなくてはなりま"
+"せん。あるいは属性になります。おかしな文字を属性名に使用したのかもしれません"
 
-#: ../glib/gmarkup.c:1396
+#: glib/gmarkup.c:1453
 #, 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 "おかしな文字 '%s' です。属性 '%s' (要素 '%s') の値を設定するには等号記号の後は引用記号で始まってなくてはなりません"
+msgid ""
+"Odd character “%s”, expected an open quote mark after the equals sign when "
+"giving value for attribute “%s” of element “%s”"
+msgstr ""
+"おかしな文字“%s”です。属性“%s” (要素“%s”) の値を設定するには等号記号の後は引"
+"用記号で始まってなくてはなりません"
 
-#: ../glib/gmarkup.c:1529
+#: glib/gmarkup.c:1587
 #, c-format
-msgid "'%s' is not a valid character following the characters '</'; '%s' may not begin an element name"
-msgstr "'%s' は '</' に続く文字としては正しくありません。'%s' では要素名は始まってません"
+msgid ""
+"“%s” is not a valid character following the characters “</”; “%s” may not "
+"begin an element name"
+msgstr ""
+"“%s”は“</”に続く文字としては正しくありません。“%s”では要素名は始まってません"
 
-#: ../glib/gmarkup.c:1565
+#: glib/gmarkup.c:1625
 #, c-format
-msgid "'%s' is not a valid character following the close element name '%s'; the allowed character is '>'"
-msgstr "'%s' は閉じ要素名 '%s' に続く文字としては正しくありあません。'>' のみが使用できます"
+msgid ""
+"“%s” is not a valid character following the close element name “%s”; the "
+"allowed character is “>”"
+msgstr ""
+"“%s”は閉じ要素名“%s”に続く文字としては正しくありあません。“>”のみが使用できま"
+"す"
 
-#: ../glib/gmarkup.c:1576
+#: glib/gmarkup.c:1637
 #, c-format
-msgid "Element '%s' was closed, no element is currently open"
-msgstr "要素 '%s' は閉じています。要素は何も開かれてません"
+msgid "Element “%s” was closed, no element is currently open"
+msgstr "要素“%s”は閉じています。要素は何も開かれてません"
 
-#: ../glib/gmarkup.c:1585
+#: glib/gmarkup.c:1646
 #, c-format
-msgid "Element '%s' was closed, but the currently open element is '%s'"
-msgstr "要素'%s' が閉じました。しかし現在開いている要素は '%s' です"
+msgid "Element “%s” was closed, but the currently open element is “%s”"
+msgstr "要素“%s”が閉じました。しかし現在開いている要素は“%s”です"
 
-#: ../glib/gmarkup.c:1753
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "ドキュメントが空か、空白だけが含まれています"
 
-#: ../glib/gmarkup.c:1767
-msgid "Document ended unexpectedly just after an open angle bracket '<'"
-msgstr "ドキュメントが開きカギカッコ '<' の直後で終了しています"
+#: glib/gmarkup.c:1813
+msgid "Document ended unexpectedly just after an open angle bracket “<”"
+msgstr "ドキュメントが開きカギカッコ“<”の直後で終了しています"
 
-#: ../glib/gmarkup.c:1775 ../glib/gmarkup.c:1820
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
-msgid "Document ended unexpectedly with elements still open - '%s' was the last element opened"
-msgstr "ドキュメントが突然終了しています。要素が開きっぱなしです。最後に開いた要素は '%s' です。"
+msgid ""
+"Document ended unexpectedly with elements still open — “%s” was the last "
+"element opened"
+msgstr ""
+"ドキュメントが突然終了しています。要素が開いたままです。最後に開いた要素"
+"は“%s”です"
 
-#: ../glib/gmarkup.c:1783
+#: glib/gmarkup.c:1829
 #, c-format
-msgid "Document ended unexpectedly, expected to see a close angle bracket ending the tag <%s/>"
-msgstr "ドキュメントはタグ <%s/> で終了しているものと想定していましたが、突然終了しています。"
+msgid ""
+"Document ended unexpectedly, expected to see a close angle bracket ending "
+"the tag <%s/>"
+msgstr ""
+"ドキュメントはタグ <%s/> で終了しているものと想定していましたが、突然終了して"
+"います"
 
-#: ../glib/gmarkup.c:1789
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "要素名の途中でドキュメントが突然終了しています"
 
-#: ../glib/gmarkup.c:1795
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "属性名の途中でドキュメントが突然終了しています"
 
-#: ../glib/gmarkup.c:1800
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "要素の開始タグの途中でドキュメントが突然終了しています"
 
-#: ../glib/gmarkup.c:1806
-msgid "Document ended unexpectedly after the equals sign following an attribute name; no attribute value"
-msgstr "属性名の後にある等号記号の次でドキュメントが突然終了しています: 属性値がありません"
+#: glib/gmarkup.c:1852
+msgid ""
+"Document ended unexpectedly after the equals sign following an attribute "
+"name; no attribute value"
+msgstr ""
+"属性名の後にある等号記号の次でドキュメントが突然終了しています: 属性値があり"
+"ません"
 
-#: ../glib/gmarkup.c:1813
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "ドキュメントが属性値の途中で突然終了しています"
 
-#: ../glib/gmarkup.c:1829
+#: glib/gmarkup.c:1876
 #, c-format
-msgid "Document ended unexpectedly inside the close tag for element '%s'"
-msgstr "ドキュメントが要素 '%s' の閉じタグの途中で突然終了しています"
+msgid "Document ended unexpectedly inside the close tag for element “%s”"
+msgstr "ドキュメントが要素“%s”の閉じタグの途中で突然終了しています"
 
-#: ../glib/gmarkup.c:1835
-msgid "Document ended unexpectedly inside a comment or processing instruction"
-msgstr "ドキュメントがコメントあるいはプロセシング指示子の途中で突然終了しています"
+#: glib/gmarkup.c:1880
+msgid ""
+"Document ended unexpectedly inside the close tag for an unopened element"
+msgstr "ドキュメントが開かれていない要素の閉じタグの途中で突然終了しています"
 
-#: ../glib/goption.c:754
-msgid "Usage:"
-msgstr "用法:"
+#: glib/gmarkup.c:1886
+msgid "Document ended unexpectedly inside a comment or processing instruction"
+msgstr ""
+"ドキュメントがコメントまたはプロセシング指示子の途中で突然終了しています"
 
-#: ../glib/goption.c:754
-msgid "[OPTION...]"
-msgstr "[オプション...]"
+#: glib/goption.c:868
+msgid "[OPTION]"
+msgstr "[オプション]"
 
-#: ../glib/goption.c:870
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "ヘルプのオプション:"
 
-#: ../glib/goption.c:871
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "ヘルプのオプションを表示する"
 
-#: ../glib/goption.c:877
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "ヘルプのオプションをすべて表示する"
 
-#: ../glib/goption.c:939
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "アプリケーションのオプション:"
 
-#: ../glib/goption.c:1003 ../glib/goption.c:1073
+#: glib/goption.c:1056
+msgid "Options:"
+msgstr "オプション:"
+
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
-msgid "Cannot parse integer value '%s' for %s"
-msgstr "%2$s の整数値 '%1$s' を解析できません"
+msgid "Cannot parse integer value “%s” for %s"
+msgstr "%2$s の整数値“%1$s”を解析できません"
 
-#: ../glib/goption.c:1013 ../glib/goption.c:1081
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
-msgid "Integer value '%s' for %s out of range"
-msgstr "%2$s の整数値 '%1$s' は範囲外の値です"
+msgid "Integer value “%s” for %s out of range"
+msgstr "%2$s の整数値“%1$s”は範囲外の値です"
 
-#: ../glib/goption.c:1038
+#: glib/goption.c:1155
 #, c-format
-msgid "Cannot parse double value '%s' for %s"
-msgstr "%2$s の実数値 '%1$s' を解析できません"
+msgid "Cannot parse double value “%s” for %s"
+msgstr "%2$s の実数値“%1$s”を解析できません"
 
-#: ../glib/goption.c:1046
+#: glib/goption.c:1163
 #, c-format
-msgid "Double value '%s' for %s out of range"
-msgstr "%2$s の実数値 '%1$s' は範囲外の値です"
+msgid "Double value “%s” for %s out of range"
+msgstr "%2$s の実数値“%1$s”は範囲外の値です"
 
-#: ../glib/goption.c:1309 ../glib/goption.c:1388
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
-msgstr "オプション %s の解析中にエラー"
+msgstr "オプション %s の解析中にエラーが発生しました"
 
-#: ../glib/goption.c:1419 ../glib/goption.c:1532
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "%s の引数がありません"
 
-#: ../glib/goption.c:1985
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "%s は不明なオプションです"
 
-#: ../glib/gregex.c:257
+#: glib/gregex.c:257
 msgid "corrupted object"
-msgstr "不正なオブジェクト"
+msgstr "不正なオブジェクトです"
 
-#: ../glib/gregex.c:259
+#: glib/gregex.c:259
 msgid "internal error or corrupted object"
-msgstr "内部エラーまたは不正なオブジェクト"
+msgstr "内部エラーまたは不正なオブジェクトです"
 
-#: ../glib/gregex.c:261
+#: glib/gregex.c:261
 msgid "out of memory"
 msgstr "メモリが足りません"
 
-#: ../glib/gregex.c:266
+#: glib/gregex.c:266
 msgid "backtracking limit reached"
 msgstr "バックトラック処理の上限に達しました"
 
-#: ../glib/gregex.c:278 ../glib/gregex.c:286
+#: glib/gregex.c:278 glib/gregex.c:286
 msgid "the pattern contains items not supported for partial matching"
 msgstr "パターンに含まれているアイテムは部分マッチングをサポートしていません"
 
-#: ../glib/gregex.c:288
+#: glib/gregex.c:280
+msgid "internal error"
+msgstr "内部エラー"
+
+#: glib/gregex.c:288
 msgid "back references as conditions are not supported for partial matching"
 msgstr "条件の後方参照は部分マッチングをサポートしていません"
 
-#: ../glib/gregex.c:297
+#: glib/gregex.c:297
 msgid "recursion limit reached"
 msgstr "再帰の上限に達しました"
 
-#: ../glib/gregex.c:299
+#: glib/gregex.c:299
 msgid "invalid combination of newline flags"
 msgstr "改行フラグの連携が間違っています"
 
-#: ../glib/gregex.c:301
+#: glib/gregex.c:301
 msgid "bad offset"
-msgstr ""
+msgstr "不正なオフセットです"
 
-#: ../glib/gregex.c:303
+#: glib/gregex.c:303
 msgid "short utf8"
 msgstr ""
 
-#: ../glib/gregex.c:305
+#: glib/gregex.c:305
 msgid "recursion loop"
-msgstr ""
+msgstr "再帰のループです"
 
-#: ../glib/gregex.c:309
+#: glib/gregex.c:309
 msgid "unknown error"
 msgstr "原因不明のエラー"
 
-#: ../glib/gregex.c:329
+#: glib/gregex.c:329
 msgid "\\ at end of pattern"
 msgstr "パターンの終端に \\ があります"
 
-#: ../glib/gregex.c:332
+#: glib/gregex.c:332
 msgid "\\c at end of pattern"
 msgstr "パターンの終端に \\c があります"
 
-#: ../glib/gregex.c:335
-#, fuzzy
-#| msgid "unrecognized character follows \\"
+#: glib/gregex.c:335
 msgid "unrecognized character following \\"
-msgstr "認識できない文字の後ろに \\ があります"
+msgstr "\\ の後に認識できない文字があります"
 
-#: ../glib/gregex.c:338
+#: glib/gregex.c:338
 msgid "numbers out of order in {} quantifier"
 msgstr "量指定子 '{}' の中にある数値の順番が間違っています"
 
-#: ../glib/gregex.c:341
+#: glib/gregex.c:341
 msgid "number too big in {} quantifier"
 msgstr "量指定子 '{}' の中にある数値が大きすぎます"
 
-#: ../glib/gregex.c:344
+#: glib/gregex.c:344
 msgid "missing terminating ] for character class"
-msgstr "文字クラスを表す終端文字 '] ' がありません"
+msgstr "文字クラスを表す終端文字 ']' がありません"
 
-#: ../glib/gregex.c:347
+#: glib/gregex.c:347
 msgid "invalid escape sequence in character class"
-msgstr "æ\96\87å­\97ã\82¯ã\83©ã\82¹ã\81®ä¸­ã\81«ç\84¡å\8a¹ã\81ªã\82¨ã\82¹ã\82±ã\83¼ã\83\97ã\83»ã\82·ã\83¼ã\82±ã\83³ã\82¹ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99"
+msgstr "文字クラスの中に無効なエスケープシーケンスがあります"
 
-#: ../glib/gregex.c:350
+#: glib/gregex.c:350
 msgid "range out of order in character class"
 msgstr "文字クラスで文字の順番が間違っています"
 
-#: ../glib/gregex.c:353
+#: glib/gregex.c:353
 msgid "nothing to repeat"
 msgstr "繰り返すものがありません"
 
-#: ../glib/gregex.c:357
+#: glib/gregex.c:357
 msgid "unexpected repeat"
 msgstr "想定外の繰り返しです"
 
-#: ../glib/gregex.c:360
-#, fuzzy
-#| msgid "unrecognized character after (?"
+#: glib/gregex.c:360
 msgid "unrecognized character after (? or (?-"
-msgstr "'(?' ã\81®å¾\8cã\82\8dに認識できない文字があります"
+msgstr "'(?' ã\81¾ã\81\9fã\81¯ '(?-' ã\81®å¾\8cに認識できない文字があります"
 
-#: ../glib/gregex.c:363
+#: glib/gregex.c:363
 msgid "POSIX named classes are supported only within a class"
 msgstr "POSIX の名前付きクラスはクラスの内部でのみ利用できます"
 
-#: ../glib/gregex.c:366
+#: glib/gregex.c:366
 msgid "missing terminating )"
 msgstr "終端文字の ')' がありません"
 
-#: ../glib/gregex.c:369
+#: glib/gregex.c:369
 msgid "reference to non-existent subpattern"
 msgstr "存在しないサブパターンへの参照です"
 
-#: ../glib/gregex.c:372
+#: glib/gregex.c:372
 msgid "missing ) after comment"
-msgstr "ã\82³ã\83¡ã\83³ã\83\88ã\81®å¾\8cã\82\8dã\81« ')' ã\81\8cã\81\82ã\82\8aã\81¾ã\81\9bã\82\93"
+msgstr "コメントの後に ')' がありません"
 
-#: ../glib/gregex.c:375
-#, fuzzy
-#| msgid "regular expression too large"
+#: glib/gregex.c:375
 msgid "regular expression is too large"
 msgstr "正規表現が長すぎます"
 
-#: ../glib/gregex.c:378
+#: glib/gregex.c:378
 msgid "failed to get memory"
 msgstr "メモリの確保に失敗しました"
 
-#: ../glib/gregex.c:382
+#: glib/gregex.c:382
 msgid ") without opening ("
-msgstr "開始文字 '(' が無い終端文字 ')'"
+msgstr "開始文字 '(' が無い終端文字 ')' です"
 
-#: ../glib/gregex.c:386
+#: glib/gregex.c:386
 msgid "code overflow"
 msgstr "コードがオーバーフローしました"
 
-#: ../glib/gregex.c:390
+#: glib/gregex.c:390
 msgid "unrecognized character after (?<"
-msgstr "'(?<' ã\81®å¾\8cã\82\8dã\81«èª\8dè­\98ã\81§ã\81\8dã\81ªã\81\84æ\96\87å­\97ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99"
+msgstr "'(?<' の後に認識できない文字があります"
 
-#: ../glib/gregex.c:393
+#: glib/gregex.c:393
 msgid "lookbehind assertion is not fixed length"
 msgstr "後読み (lookbehind assertion) が固定長ではありません"
 
-#: ../glib/gregex.c:396
+#: glib/gregex.c:396
 msgid "malformed number or name after (?("
-msgstr "'(?(' ã\81®å¾\8cã\82\8dã\81«ä¸\8dæ­£ã\81ªå½¢å¼\8fã\81®æ\95°å\80¤ã\81¾ã\81\9fã\81¯å\90\8då\89\8dã\81\8cã\81\82ã\82\8aã\81¾ã\81\99"
+msgstr "'(?(' の後に不正な形式の数値または名前があります"
 
-#: ../glib/gregex.c:399
+#: glib/gregex.c:399
 msgid "conditional group contains more than two branches"
 msgstr "条件グループに二つ以上のブランチがあります"
 
-#: ../glib/gregex.c:402
+#: glib/gregex.c:402
 msgid "assertion expected after (?("
-msgstr "assertion expected after (?("
+msgstr ""
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: ../glib/gregex.c:409
+#: glib/gregex.c:409
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "'(?R' または '(?[+-]数値' の後には ')' が続く必要があります"
 
-#: ../glib/gregex.c:412
+#: glib/gregex.c:412
 msgid "unknown POSIX class name"
-msgstr "不明な POSIX のクラス名"
+msgstr "不明な POSIX のクラス名です"
 
-#: ../glib/gregex.c:415
+#: glib/gregex.c:415
 msgid "POSIX collating elements are not supported"
 msgstr "POSIX では照合順序の要素はサポートしていません"
 
-#: ../glib/gregex.c:418
+#: glib/gregex.c:418
 msgid "character value in \\x{...} sequence is too large"
 msgstr "\\x{...} の中にある文字値が大きすぎます"
 
-#: ../glib/gregex.c:421
+#: glib/gregex.c:421
 msgid "invalid condition (?(0)"
 msgstr "条件の '(?(0)' が間違っています"
 
-#: ../glib/gregex.c:424
+#: glib/gregex.c:424
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "後読みのアサーションでは \\C を指定できません"
 
-#: ../glib/gregex.c:431
+#: glib/gregex.c:431
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
-msgstr ""
+msgstr "次のエスケープはサポートしていません: \\L, \\l, \\N{name}, \\U, \\u"
 
-#: ../glib/gregex.c:434
+#: glib/gregex.c:434
 msgid "recursive call could loop indefinitely"
 msgstr "繰り返しの呼び出しが無限ループになっています"
 
-#: ../glib/gregex.c:438
+#: glib/gregex.c:438
 msgid "unrecognized character after (?P"
-msgstr "(?P ã\81®å¾\8cã\82\8dã\81«èª\8dè­\98ã\81§ã\81\8dã\81ªã\81\84æ\96\87å­\97ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99"
+msgstr "(?P の後に認識できない文字があります"
 
-#: ../glib/gregex.c:441
+#: glib/gregex.c:441
 msgid "missing terminator in subpattern name"
 msgstr "サブパターンの名前に終端文字がありません"
 
-#: ../glib/gregex.c:444
+#: glib/gregex.c:444
 msgid "two named subpatterns have the same name"
 msgstr "二つある名前付きサブパターンが同じ名前です"
 
-#: ../glib/gregex.c:447
+#: glib/gregex.c:447
 msgid "malformed \\P or \\p sequence"
 msgstr "不正な \\P または \\p のシーケンスです"
 
-#: ../glib/gregex.c:450
+#: glib/gregex.c:450
 msgid "unknown property name after \\P or \\p"
-msgstr "\\P ã\81¾ã\81\9fã\81¯ \\p ã\81®å¾\8cã\82\8dã\81«ã\81\82ã\82\8bã\83\97ã\83­ã\83\91ã\83\86ã\82£å\90\8dã\81\8cä¸\8dæ\98\8eã\81§す"
+msgstr "\\P ã\81¾ã\81\9fã\81¯ \\p ã\81®å¾\8cã\81«ä¸\8dæ\98\8eã\81ªã\83\97ã\83­ã\83\91ã\83\86ã\82£å\90\8dã\81\8cã\81\82ã\82\8aã\81¾す"
 
-#: ../glib/gregex.c:453
+#: glib/gregex.c:453
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "サブパターンの名前が長すぎます (32 文字以下にしてください)"
 
-#: ../glib/gregex.c:456
+#: glib/gregex.c:456
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "名前付きサブパターンが多すぎます (10,000 個以下にしてください)"
 
-#: ../glib/gregex.c:459
+#: glib/gregex.c:459
 msgid "octal value is greater than \\377"
-msgstr "8進数値が \\377 よりも大きいです"
+msgstr "8 進数値が \\377 よりも大きいです"
 
-#: ../glib/gregex.c:463
+#: glib/gregex.c:463
 msgid "overran compiling workspace"
 msgstr "正規表現をコンパイルする領域で上限を超えました"
 
-#: ../glib/gregex.c:467
+#: glib/gregex.c:467
 msgid "previously-checked referenced subpattern not found"
 msgstr "直前にチェックしたサブパターンのリファレンスが見つかりませんでした"
 
-#: ../glib/gregex.c:470
+#: glib/gregex.c:470
 msgid "DEFINE group contains more than one branch"
-msgstr "DEFINE グループに1つ以上のブランチが含まれています"
+msgstr "DEFINE グループにつ以上のブランチが含まれています"
 
-#: ../glib/gregex.c:473
+#: glib/gregex.c:473
 msgid "inconsistent NEWLINE options"
 msgstr "NEWLINE オプションに矛盾があります"
 
-#: ../glib/gregex.c:476
-#, fuzzy
-#| msgid "\\g is not followed by a braced name or an optionally braced non-zero number"
-msgid "\\g is not followed by a braced, angle-bracketed, or quoted name or number, or by a plain number"
-msgstr "ブレース名の後ろに \\g が存在していないか、または0以外の数値でブレースしています"
+#: glib/gregex.c:476
+msgid ""
+"\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
+"or by a plain number"
+msgstr ""
 
-#: ../glib/gregex.c:480
+#: glib/gregex.c:480
 msgid "a numbered reference must not be zero"
-msgstr ""
+msgstr "数値での参照は 0 にできません"
 
-#: ../glib/gregex.c:483
+#: glib/gregex.c:483
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
-msgstr ""
+msgstr "(*ACCEPT)、(*FAIL)、(*COMMIT) の引数は一つではありません"
 
-#: ../glib/gregex.c:486
+#: glib/gregex.c:486
 msgid "(*VERB) not recognized"
-msgstr ""
+msgstr "(*VERB) を認識できません"
 
-#: ../glib/gregex.c:489
+#: glib/gregex.c:489
 msgid "number is too big"
-msgstr ""
+msgstr "数値が大きすぎます"
 
-#: ../glib/gregex.c:492
-#, fuzzy
-#| msgid "missing terminator in subpattern name"
+#: glib/gregex.c:492
 msgid "missing subpattern name after (?&"
-msgstr "サブパターンの名前に終端文字がありません"
+msgstr "(?& の後にサブパターンの名前がありません"
 
-#: ../glib/gregex.c:495
-#, fuzzy
-#| msgid "digit expected"
+#: glib/gregex.c:495
 msgid "digit expected after (?+"
-msgstr "数値を想定していました"
+msgstr "(?+ の後は数値を想定していました"
 
-#: ../glib/gregex.c:498
+#: glib/gregex.c:498
 msgid "] is an invalid data character in JavaScript compatibility mode"
-msgstr ""
+msgstr "JavaScript 互換モードでは ']' は不正なデータ文字です"
 
-#: ../glib/gregex.c:501
-#, fuzzy
-#| msgid "two named subpatterns have the same name"
+#: glib/gregex.c:501
 msgid "different names for subpatterns of the same number are not allowed"
-msgstr "二つある名前付きサブパターンが同じ名前です"
+msgstr "同じ番号のサブパターンを異なる名前にすることはできません"
 
-#: ../glib/gregex.c:504
+#: glib/gregex.c:504
 msgid "(*MARK) must have an argument"
-msgstr ""
+msgstr "(*MARK) は引数が一つ必要です"
 
-#: ../glib/gregex.c:507
+#: glib/gregex.c:507
 msgid "\\c must be followed by an ASCII character"
-msgstr ""
+msgstr "\\c の後には ASCII 文字が続く必要があります"
 
-#: ../glib/gregex.c:510
-#, fuzzy
-#| msgid "\\g is not followed by a braced name or an optionally braced non-zero number"
+#: glib/gregex.c:510
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
-msgstr "ブレース名の後ろに \\g が存在していないか、または0以外の数値でブレースしています"
+msgstr ""
 
-#: ../glib/gregex.c:513
-#, fuzzy
-#| msgid "URIs not supported"
+#: glib/gregex.c:513
 msgid "\\N is not supported in a class"
-msgstr "URI はサポートしていません"
+msgstr "クラスでは \\N はサポートしていません"
 
-#: ../glib/gregex.c:516
+#: glib/gregex.c:516
 msgid "too many forward references"
-msgstr ""
+msgstr "前方参照が多すぎます"
 
-#: ../glib/gregex.c:519
+#: glib/gregex.c:519
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
-msgstr ""
+msgstr "(*MARK)、(*PRUNE)、(*SKIP)、(*THEN) の名前が長すぎます"
 
-#: ../glib/gregex.c:522
-#, fuzzy
-#| msgid "character value in \\x{...} sequence is too large"
+#: glib/gregex.c:522
 msgid "character value in \\u.... sequence is too large"
-msgstr "\\x{...} の中にある文字値が大きすぎます"
+msgstr "\\u.... シーケンスの文字値が大きすぎます"
 
-#: ../glib/gregex.c:745 ../glib/gregex.c:1914
+#: glib/gregex.c:745 glib/gregex.c:1983
 #, c-format
 msgid "Error while matching regular expression %s: %s"
-msgstr "æ­£è¦\8f表ç\8f¾ %s ã\81§ã\83\9eã\83\83ã\83\81ã\83³ã\82°ã\81\97ã\81¦ã\81\84ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgstr "æ­£è¦\8f表ç\8f¾ %s ã\81®ã\83\9eã\83\83ã\83\81ã\83³ã\82°ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../glib/gregex.c:1311
+#: glib/gregex.c:1316
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "お使いの PCRE ライブラリは UTF-8 をサポートしていません"
 
-#: ../glib/gregex.c:1315
+#: glib/gregex.c:1320
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "お使いの PCRE ライブラリは UTF-8 のプロパティをサポートしていません"
 
-#: ../glib/gregex.c:1323
-#, fuzzy
-#| msgid "PCRE library is compiled without UTF8 properties support"
+#: glib/gregex.c:1328
 msgid "PCRE library is compiled with incompatible options"
-msgstr "お使いの PCRE ライブラリは UTF-8 のプロパティをサポートしていません"
+msgstr ""
+"お使いの PCRE ライブラリは互換性のないオプションでコンパイルされています"
 
-#: ../glib/gregex.c:1382
+#: glib/gregex.c:1357
 #, c-format
-msgid "Error while compiling regular expression %s at char %d: %s"
-msgstr "æ­£è¦\8f表ç\8f¾ %s ã\82\92ã\82³ã\83³ã\83\91ã\82¤ã\83«ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼ (%d æ\96\87å­\97ç\9b®): %s"
+msgid "Error while optimizing regular expression %s: %s"
+msgstr "æ­£è¦\8f表ç\8f¾ %s ã\81®æ\9c\80é\81©å\8c\96中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f: %s"
 
-#: ../glib/gregex.c:1424
+#: glib/gregex.c:1437
 #, c-format
-msgid "Error while optimizing regular expression %s: %s"
-msgstr "æ­£è¦\8f表ç\8f¾ %s ã\82\92æ\9c\80é\81©å\8c\96ã\81\99ã\82\8bé\9a\9bã\81«ã\82¨ã\83©ã\83¼: %s"
+msgid "Error while compiling regular expression %s at char %d: %s"
+msgstr "æ­£è¦\8f表ç\8f¾ %s ã\81®ã\82³ã\83³ã\83\91ã\82¤ã\83«ä¸­ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f (%d æ\96\87å­\97ç\9b®): %s"
 
-#: ../glib/gregex.c:2346
-msgid "hexadecimal digit or '}' expected"
-msgstr "16進数の数値または '}' を想定していました"
+#: glib/gregex.c:2419
+msgid "hexadecimal digit or “}” expected"
+msgstr "16 進数の数値または“}”を想定していました"
 
-#: ../glib/gregex.c:2362
+#: glib/gregex.c:2435
 msgid "hexadecimal digit expected"
-msgstr "16進数の数値を想定していました"
+msgstr "16 進数の数値を想定していました"
 
-#: ../glib/gregex.c:2402
-msgid "missing '<' in symbolic reference"
-msgstr "ã\82·ã\83³ã\83\9cã\83«å\8f\82ç\85§ã\81®ä¸­ã\81« '<' がありません"
+#: glib/gregex.c:2475
+msgid "missing “<” in symbolic reference"
+msgstr "ã\82·ã\83³ã\83\9cã\83«å\8f\82ç\85§ã\81«â\80\9c\80\9dがありません"
 
-#: ../glib/gregex.c:2411
+#: glib/gregex.c:2484
 msgid "unfinished symbolic reference"
 msgstr "中途半端なシンボル参照です"
 
-#: ../glib/gregex.c:2418
+#: glib/gregex.c:2491
 msgid "zero-length symbolic reference"
-msgstr "サイズが0のシンボル参照です"
+msgstr "サイズが 0 のシンボル参照です"
 
-#: ../glib/gregex.c:2429
+#: glib/gregex.c:2502
 msgid "digit expected"
 msgstr "数値を想定していました"
 
-#: ../glib/gregex.c:2447
+#: glib/gregex.c:2520
 msgid "illegal symbolic reference"
 msgstr "シンボル参照が間違っています"
 
-#: ../glib/gregex.c:2509
-msgid "stray final '\\'"
-msgstr "最後の '\\' に対応するシンボルがありません"
+#: glib/gregex.c:2583
+msgid "stray final “\\”"
+msgstr "最後の“\\”に対応するシンボルがありません"
 
-#: ../glib/gregex.c:2513
+#: glib/gregex.c:2587
 msgid "unknown escape sequence"
-msgstr "ä¸\8dæ\98\8eã\81ªã\82¨ã\82¹ã\82±ã\83¼ã\83\97ã\83»ã\82·ã\83¼ã\82±ã\83³ã\82¹ã\81§ã\81\99"
+msgstr "不明なエスケープシーケンスです"
 
-#: ../glib/gregex.c:2523
+#: glib/gregex.c:2597
 #, c-format
-msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
-msgstr "代替文字列 \"%s\" の %lu 文字目を解析する際にエラー: %s"
+msgid "Error while parsing replacement text “%s” at char %lu: %s"
+msgstr "代替文字列“%s”の %lu 文字目の解析中にエラーが発生しました: %s"
 
-#: ../glib/gshell.c:88
-msgid "Quoted text doesn't begin with a quotation mark"
+#: glib/gshell.c:94
+msgid "Quoted text doesnt begin with a quotation mark"
 msgstr "引用テキストが引用記号で始まっていません"
 
-#: ../glib/gshell.c:178
+#: glib/gshell.c:184
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
-msgstr "コマンドライン、あるいはシェルの引用テキストにおいて引用記号の対応が取れていません"
+msgstr ""
+"コマンドライン、またはシェルの引用テキストにおいて引用記号の対応が取れていま"
+"せん"
 
-#: ../glib/gshell.c:574
+#: glib/gshell.c:580
 #, c-format
-msgid "Text ended just after a '\\' character. (The text was '%s')"
-msgstr "テキストが '\\' 文字の直後で終了しています (テキストは '%s')"
+msgid "Text ended just after a “\\” character. (The text was “%s”)"
+msgstr "テキストが“\\”文字の直後で終了しています (テキストは“%s”)"
 
-#: ../glib/gshell.c:581
+#: glib/gshell.c:587
 #, c-format
-msgid "Text ended before matching quote was found for %c. (The text was '%s')"
-msgstr "%c に対応する引用記号の前でテキストが終了しています (テキストは '%s')"
+msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
+msgstr "%c に対応する引用記号の前でテキストが終了しています (テキストは“%s”)"
 
-#: ../glib/gshell.c:593
+#: glib/gshell.c:599
 msgid "Text was empty (or contained only whitespace)"
-msgstr "ã\83\86ã\82­ã\82¹ã\83\88ã\81\8c空ã\81§ã\81\99 (ã\81\82ã\82\8bã\81\84は空白のみ)"
+msgstr "ã\83\86ã\82­ã\82¹ã\83\88ã\81\8c空ã\81§ã\81\99 (ã\81¾ã\81\9fは空白のみ)"
 
-#: ../glib/gspawn.c:202
+#: glib/gspawn.c:315
 #, c-format
 msgid "Failed to read data from child process (%s)"
-msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81\8bã\82\89ã\83\87ã\83¼ã\82¿ã\82\92読ã\82\81ません (%s)"
+msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81\8bã\82\89ã\83\87ã\83¼ã\82¿ã\82\92読ã\81¿å\8f\96ã\82\8cません (%s)"
 
-#: ../glib/gspawn.c:345
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81\8bã\82\89ã\83\87ã\83¼ã\82¿ã\82\92読ã\81¿å\87ºã\81\99é\9a\9bã\81« select() ã\81§æ\83³å®\9aå¤\96ã\81®ã\82¨ã\83©ã\83¼ (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81\8bã\82\89ã\81®ã\83\87ã\83¼ã\82¿èª­ã\81¿å\8f\96ã\82\8a中ã\81«æ\83³å®\9aå¤\96ã\81®ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f (%s)"
 
-#: ../glib/gspawn.c:430
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
-msgstr "waitpid() で想定外のエラー (%s)"
+msgstr "waitpid() で想定外のエラーが発生しました (%s)"
 
-#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
-msgstr ""
+msgstr "子プロセスがコード %ld で終了しました"
 
-#: ../glib/gspawn.c:857
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
-msgstr ""
+msgstr "子プロセスがシグナル %ld で強制終了されました"
 
-#: ../glib/gspawn.c:864
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
-msgstr ""
+msgstr "子プロセスがシグナル %ld で停止されました"
 
-#: ../glib/gspawn.c:871
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
-msgstr ""
+msgstr "子プロセスが異常終了しました"
 
-#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
-msgstr "å­\90ã\81®ã\83\91ã\82¤ã\83\97ã\81\8bã\82\89ã\83\87ã\83¼ã\82¿ã\82\92å\8f\96å¾\97ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§した (%s)"
+msgstr "å­\90ã\81®ã\83\91ã\82¤ã\83\97ã\81\8bã\82\89ã\81®ã\83\87ã\83¼ã\82¿èª­ã\81¿å\8f\96ã\82\8aã\81«å¤±æ\95\97ã\81\97ã\81¾した (%s)"
 
-#: ../glib/gspawn.c:1344
+#: glib/gspawn.c:1723
+#, c-format
+msgid "Failed to spawn child process “%s” (%s)"
+msgstr "子プロセス“%s”の spawn に失敗しました (%s)"
+
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
-msgstr "fork 失敗 (%s)"
+msgstr "fork に失敗しました (%s)"
 
-#: ../glib/gspawn.c:1493 ../glib/gspawn-win32.c:370
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
-msgid "Failed to change to directory '%s' (%s)"
-msgstr "'%s' というディレクトリへ移動できませんでした (%s)"
+msgid "Failed to change to directory “%s” (%s)"
+msgstr "ディレクトリ“%s”への移動に失敗しました (%s)"
 
-#: ../glib/gspawn.c:1503
+#: glib/gspawn.c:1921
 #, c-format
-msgid "Failed to execute child process \"%s\" (%s)"
-msgstr "%s を子プロセスとして起動できませんでした: %s"
+msgid "Failed to execute child process “%s” (%s)"
+msgstr "子プロセス“%s”の起動に失敗しました (%s)"
 
-#: ../glib/gspawn.c:1513
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
-msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81®å\87ºå\8a\9bã\81¾ã\81\9fã\81¯å\85¥å\8a\9bã\82\92ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81§ã\81\8dã\81¾ã\81\9bã\82\93 (%s)"
+msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81®å\87ºå\8a\9bã\81¾ã\81\9fã\81¯å\85¥å\8a\9bã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9f (%s)"
 
-#: ../glib/gspawn.c:1522
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
-msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\82\92 fork ã\81§ã\81\8dã\81¾ã\81\9bã\82\93 (%s)"
+msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81® fork ã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9f (%s)"
 
-#: ../glib/gspawn.c:1530
+#: glib/gspawn.c:1948
 #, c-format
-msgid "Unknown error executing child process \"%s\""
-msgstr "子プロセスの実行時に不明なエラー \"%s\""
+msgid "Unknown error executing child process “%s”"
+msgstr "子プロセス“%s”の起動時に不明なエラーが発生しました"
 
-#: ../glib/gspawn.c:1554
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "子プロセスのパイプから十分なデータを取得できません (%s)"
 
-#: ../glib/gspawn.c:1627 ../glib/gspawn-win32.c:300
+#: glib/gspawn-win32.c:294
+msgid "Failed to read data from child process"
+msgstr "子プロセスからのデータ読み取りに失敗しました"
+
+#: glib/gspawn-win32.c:311
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81¨ã\81®é\80\9aä¿¡ç\94¨ã\81®ã\83\91ã\82¤ã\83\97ã\82\92ä½\9cæ\88\90ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§した (%s)"
+msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81¨ã\81®é\80\9aä¿¡ç\94¨ã\83\91ã\82¤ã\83\97ã\81®ä½\9cæ\88\90ã\81«å¤±æ\95\97ã\81\97ã\81¾した (%s)"
 
-#: ../glib/gspawn-win32.c:283
-msgid "Failed to read data from child process"
-msgstr "子プロセスからデータを取得できませんでした"
-
-#: ../glib/gspawn-win32.c:376 ../glib/gspawn-win32.c:495
+#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
 #, c-format
 msgid "Failed to execute child process (%s)"
-msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\82\92èµ·å\8b\95ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§した (%s)"
+msgstr "å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81®èµ·å\8b\95ã\81«å¤±æ\95\97ã\81\97ã\81¾した (%s)"
 
-#: ../glib/gspawn-win32.c:445
+#: glib/gspawn-win32.c:461
 #, c-format
 msgid "Invalid program name: %s"
-msgstr "プログラム名が無効です: %s"
+msgstr "不正なプログラム名です: %s"
 
-#: ../glib/gspawn-win32.c:455 ../glib/gspawn-win32.c:722
-#: ../glib/gspawn-win32.c:1297
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "%d の引数ベクターに不正な文字列があります: %s"
 
-#: ../glib/gspawn-win32.c:466 ../glib/gspawn-win32.c:737
-#: ../glib/gspawn-win32.c:1330
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "環境変数に不正な文字列があります: %s"
 
-#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1278
+#: glib/gspawn-win32.c:721
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "作業ディレクトリが不正です: %s"
 
-#: ../glib/gspawn-win32.c:783
+#: glib/gspawn-win32.c:783
 #, c-format
 msgid "Failed to execute helper program (%s)"
-msgstr "ヘルパー・プログラムを起動できませんでした (%s)"
+msgstr "ヘルパープログラムの起動に失敗しました (%s)"
+
+#: glib/gspawn-win32.c:1056
+msgid ""
+"Unexpected error in g_io_channel_win32_poll() reading data from a child "
+"process"
+msgstr ""
+"g_io_channel_win32_poll() が子プロセスからデータを読み出すときに想定外のエ"
+"ラーが発生しました"
+
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
+msgid "Empty string is not a number"
+msgstr "空文字列は数値ではありません"
+
+#: glib/gstrfuncs.c:3333
+#, c-format
+msgid "“%s” is not a signed number"
+msgstr "“%s”は符号付き数値ではありません"
+
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
+#, c-format
+msgid "Number “%s” is out of bounds [%s, %s]"
+msgstr "数値“%s”は次の範囲を超えています: [%s, %s]"
+
+#: glib/gstrfuncs.c:3437
+#, c-format
+msgid "“%s” is not an unsigned number"
+msgstr "“%s”は符号なし数値ではありません"
 
-#: ../glib/gspawn-win32.c:997
-msgid "Unexpected error in g_io_channel_win32_poll() reading data from a child process"
-msgstr "g_io_channel_win32_poll() が子プロセスからデータを読み出す際に想定外のエラー"
+#: glib/gutf8.c:817
+msgid "Failed to allocate memory"
+msgstr "メモリの確保に失敗しました"
 
-#: ../glib/gutf8.c:907
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "UTF-8 の範囲外の文字です"
 
-#: ../glib/gutf8.c:1007 ../glib/gutf8.c:1016 ../glib/gutf8.c:1146
-#: ../glib/gutf8.c:1155 ../glib/gutf8.c:1294 ../glib/gutf8.c:1390
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
-msgstr "å¤\89æ\8f\9bã\81\99ã\82\8bå\85¥å\8a\9bã\81§ç\84¡å\8a¹なシーケンスがあります"
+msgstr "å¤\89æ\8f\9bã\81\99ã\82\8bå\85¥å\8a\9bã\81«ä¸\8dæ­£なシーケンスがあります"
 
-#: ../glib/gutf8.c:1305 ../glib/gutf8.c:1401
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "UTF-16 の範囲外の文字です"
 
-#: ../glib/gutils.c:2179 ../glib/gutils.c:2206 ../glib/gutils.c:2310
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2756
 #, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] "%u バイト"
+msgid "%.1f kB"
+msgstr "%.1f kB"
 
-#: ../glib/gutils.c:2185
-#, fuzzy, c-format
-msgid "%.1f KiB"
-msgstr "%.1f KB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2758
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
 
-#: ../glib/gutils.c:2187
-#, fuzzy, c-format
-msgid "%.1f MiB"
-msgstr "%.1f MB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2760
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
 
-#: ../glib/gutils.c:2190
-#, fuzzy, c-format
-msgid "%.1f GiB"
-msgstr "%.1f GB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2762
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
 
-#: ../glib/gutils.c:2193
-#, fuzzy, c-format
-msgid "%.1f TiB"
-msgstr "%.1f TB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2764
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
 
-#: ../glib/gutils.c:2196
-#, fuzzy, c-format
-msgid "%.1f PiB"
-msgstr "%.1f PB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2766
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
 
-#: ../glib/gutils.c:2199
-#, fuzzy, c-format
-msgid "%.1f EiB"
-msgstr "%.1f EB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2770
+#, c-format
+msgid "%.1f KiB"
+msgstr "%.1f KiB"
 
-#: ../glib/gutils.c:2212
-#, fuzzy, c-format
-msgid "%.1f kB"
-msgstr "%.1f KB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2772
+#, c-format
+msgid "%.1f MiB"
+msgstr "%.1f MiB"
 
-#: ../glib/gutils.c:2215 ../glib/gutils.c:2328
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2774
 #, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
+msgid "%.1f GiB"
+msgstr "%.1f GiB"
 
-#: ../glib/gutils.c:2218 ../glib/gutils.c:2333
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2776
 #, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
+msgid "%.1f TiB"
+msgstr "%.1f TiB"
 
-#: ../glib/gutils.c:2220 ../glib/gutils.c:2338
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2778
 #, c-format
-msgid "%.1f TB"
-msgstr "%.1f TB"
+msgid "%.1f PiB"
+msgstr "%.1f PiB"
 
-#: ../glib/gutils.c:2223 ../glib/gutils.c:2343
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2780
 #, c-format
-msgid "%.1f PB"
-msgstr "%.1f PB"
+msgid "%.1f EiB"
+msgstr "%.1f EiB"
 
-#: ../glib/gutils.c:2226 ../glib/gutils.c:2348
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2784
 #, c-format
-msgid "%.1f EB"
-msgstr "%.1f EB"
+msgid "%.1f kb"
+msgstr "%.1f kb"
 
-#. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2263
-#, fuzzy, c-format
-msgid "%s byte"
-msgid_plural "%s bytes"
-msgstr[0] "%u バイト"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2786
+#, c-format
+msgid "%.1f Mb"
+msgstr "%.1f Mb"
 
-#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
-#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
-#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
-#. * Please translate as literally as possible.
-#.
-#: ../glib/gutils.c:2323
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2788
 #, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
+msgid "%.1f Gb"
+msgstr "%.1f Gb"
 
-msgctxt "full month name with day"
-msgid "January"
-msgstr "1月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2790
+#, c-format
+msgid "%.1f Tb"
+msgstr "%.1f Tb"
 
-msgctxt "full month name with day"
-msgid "February"
-msgstr "2月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2792
+#, c-format
+msgid "%.1f Pb"
+msgstr "%.1f Pb"
 
-msgctxt "full month name with day"
-msgid "March"
-msgstr "3月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2794
+#, c-format
+msgid "%.1f Eb"
+msgstr "%.1f Eb"
 
-msgctxt "full month name with day"
-msgid "April"
-msgstr "4月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2798
+#, c-format
+msgid "%.1f Kib"
+msgstr "%.1f Kib"
 
-msgctxt "full month name with day"
-msgid "May"
-msgstr "5月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2800
+#, c-format
+msgid "%.1f Mib"
+msgstr "%.1f Mib"
 
-msgctxt "full month name with day"
-msgid "June"
-msgstr "6月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2802
+#, c-format
+msgid "%.1f Gib"
+msgstr "%.1f Gib"
 
-msgctxt "full month name with day"
-msgid "July"
-msgstr "7月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2804
+#, c-format
+msgid "%.1f Tib"
+msgstr "%.1f Tib"
 
-msgctxt "full month name with day"
-msgid "August"
-msgstr "8月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2806
+#, c-format
+msgid "%.1f Pib"
+msgstr "%.1f Pib"
 
-msgctxt "full month name with day"
-msgid "September"
-msgstr "9月"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2808
+#, c-format
+msgid "%.1f Eib"
+msgstr "%.1f Eib"
 
-msgctxt "full month name with day"
-msgid "October"
-msgstr "10月"
+#: glib/gutils.c:2842 glib/gutils.c:2959
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u バイト"
 
-msgctxt "full month name with day"
-msgid "November"
-msgstr "11月"
+#: glib/gutils.c:2846
+#, c-format
+msgid "%u bit"
+msgid_plural "%u bits"
+msgstr[0] "%u ビット"
 
-msgctxt "full month name with day"
-msgid "December"
-msgstr "12月"
+#. Translators: the %s in "%s bytes" will always be replaced by a number.
+#: glib/gutils.c:2913
+#, c-format
+msgid "%s byte"
+msgid_plural "%s bytes"
+msgstr[0] "%s バイト"
 
-msgctxt "abbreviated month name with day"
-msgid "Jan"
-msgstr " 1月"
+#. Translators: the %s in "%s bits" will always be replaced by a number.
+#: glib/gutils.c:2918
+#, c-format
+msgid "%s bit"
+msgid_plural "%s bits"
+msgstr[0] "%s ビット"
 
-msgctxt "abbreviated month name with day"
-msgid "Feb"
-msgstr " 2月"
+#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
+#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
+#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
+#. * Please translate as literally as possible.
+#.
+#: glib/gutils.c:2972
+#, c-format
+msgid "%.1f KB"
+msgstr "%.1f KB"
 
-msgctxt "abbreviated month name with day"
-msgid "Mar"
-msgstr " 3月"
+#: glib/gutils.c:2977
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
 
-msgctxt "abbreviated month name with day"
-msgid "Apr"
-msgstr " 4月"
+#: glib/gutils.c:2982
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
 
-msgctxt "abbreviated month name with day"
-msgid "May"
-msgstr " 5月"
+#: glib/gutils.c:2987
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
 
-msgctxt "abbreviated month name with day"
-msgid "Jun"
-msgstr " 6月"
+#: glib/gutils.c:2992
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
 
-msgctxt "abbreviated month name with day"
-msgid "Jul"
-msgstr " 7月"
+#: glib/gutils.c:2997
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
 
-msgctxt "abbreviated month name with day"
-msgid "Aug"
-msgstr " 8月"
+#~ msgid "Error in address '%s' - the family attribute is malformed"
+#~ msgstr "アドレス '%s' 中にエラー - family 属性が不正です"
 
-msgctxt "abbreviated month name with day"
-msgid "Sep"
-msgstr " 9月"
+#~ msgid "No such interface"
+#~ msgstr "そのようなインターフェースはありません"
 
-msgctxt "abbreviated month name with day"
-msgid "Oct"
-msgstr "10月"
+#, fuzzy
+#~ msgid ""
+#~ "Message has %d file descriptors but the header field indicates %d file "
+#~ "descriptors"
+#~ msgstr ""
+#~ "メッセージには %d 個の fd が含まれていますが、ヘッダーフィールドでは %d 個"
+#~ "の fd があることになってます"
 
-msgctxt "abbreviated month name with day"
-msgid "Nov"
-msgstr "11月"
+#~ msgid "doing nothing.\n"
+#~ msgstr "何もしません。\n"
 
-msgctxt "abbreviated month name with day"
-msgid "Dec"
-msgstr "12月"
+#~ msgid "association changes not supported on win32"
+#~ msgstr "win32 で組み合わせの変更はサポートしていません"
+
+#~ msgid "Association creation not supported on win32"
+#~ msgstr "win32 で組み合わせの生成はサポートしていません"
 
 #~ msgid "Unable to get pending error: %s"
 #~ msgstr "エラーをペンディングできません: %s"
 
-#~ msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
-#~ msgstr "'%s' を書き込みモードで開けませんでした: fdopen() に失敗しました: %s"
-
-#~ msgid "Failed to write file '%s': fflush() failed: %s"
-#~ msgstr "'%s' への書き込みに失敗しました: fflush() に失敗しました: %s"
-
-#~ msgid "Failed to close file '%s': fclose() failed: %s"
-#~ msgstr "'%s' をクローズできません: fclose() に失敗しました: %s"
-
-#~ msgid "Abnormal program termination spawning command line '%s': %s"
-#~ msgstr "コマンドライン '%s' の起動が異常終了しました: %s"
-
 #~ msgid "Command line '%s' exited with non-zero exit status %d: %s"
 #~ msgstr "コマンドライン '%s' が非ゼロの終了コード %d で終了しました: %s"
 
@@ -4302,36 +6009,12 @@ msgstr "12月"
 #~ msgid "workspace limit for empty substrings reached"
 #~ msgstr "空の部分文字列に対する作業領域の上限に達しました"
 
-#~ msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here"
-#~ msgstr "ここに大/小文字の変換を行うエスケープ (\\l、\\L、\\u、\\U) を挿入できません"
-
 #~ msgid "repeating a DEFINE group is not allowed"
 #~ msgstr "DEFINE グループは繰り返せません"
 
 #~ msgid "File is empty"
 #~ msgstr "ファイルが空です"
 
-#~ msgid "Key file contains key '%s' which has value that cannot be interpreted."
-#~ msgstr "キー・ファイルのキー '%s' の値を解釈できませんでした"
-
-#~ msgid "Error stating file '%s': %s"
-#~ msgstr "'%s' というファイルの状態を取得する際にエラー: %s"
-
-#~ msgid "Error connecting: "
-#~ msgstr "接続エラー: "
-
-#~ msgid "Error connecting: %s"
-#~ msgstr "接続中にエラー: %s"
-
-#~ msgid "Error reading from unix: %s"
-#~ msgstr "unix から読み込む際にエラー: %s"
-
-#~ msgid "Error closing unix: %s"
-#~ msgstr "unix を閉じる際にエラー: %s"
-
-#~ msgid "Error writing to unix: %s"
-#~ msgstr "UNIXストリームに書き込む際にエラー: %s"
-
 #~ msgctxt "GDateTime"
 #~ msgid "am"
 #~ msgstr "午前"
@@ -4340,12 +6023,6 @@ msgstr "12月"
 #~ msgid "pm"
 #~ msgstr "午後"
 
-#~ msgid "Type of return value is incorrect, got '%s', expected '%s'"
-#~ msgstr "返り値の型が正しくありません。'%s' を受け取りましたが、期待したのは '%s' です"
-
-#~ msgid "Trying to set property %s of type %s but according to the expected interface the type is %s"
-#~ msgstr "型 %2$s のプロパティ %1$s を設定しようとしましたが、期待するインターフェイスによれば型は %3$s です"
-
 #~ msgid ""
 #~ "Commands:\n"
 #~ "  help        Show this information\n"
@@ -4370,25 +6047,17 @@ msgstr "12月"
 #~ msgid "Specify the path for the schema"
 #~ msgstr "スキーマのパスを指定してください"
 
-#, fuzzy
-#~ msgid "Do not give error for empty directory"
-#~ msgstr "ディレクトリからディレクトリへ移動できません"
-
-#, fuzzy
-#~ msgid "Invalid UTF-8 sequence in input"
-#~ msgstr "変換する入力で無効なシーケンスがあります"
-
 #~ msgid "Reached maximum data array limit"
 #~ msgstr "データ配列の上限に到達しました"
 
-#~ msgid "do not hide entries"
-#~ msgstr "エントリを隠さない"
-
-#~ msgid "use a long listing format"
-#~ msgstr "長い形式で一覧表示する"
-
-#~ msgid "Character '%s' is not valid at the start of an entity name; the & character begins an entity; if this ampersand isn't supposed to be an entity, escape it as &amp;"
-#~ msgstr "文字 '%s' はエンティティ名の最初には使えません。文字 & はエンティティの開始を表わします。もしアンパサンドがエンティティでなければ、&amp; のようにエスケープしてください"
+#~ msgid ""
+#~ "Character '%s' is not valid at the start of an entity name; the & "
+#~ "character begins an entity; if this ampersand isn't supposed to be an "
+#~ "entity, escape it as &amp;"
+#~ msgstr ""
+#~ "文字 '%s' はエンティティ名の最初には使えません。文字 & はエンティティの開"
+#~ "始を表わします。もしアンパサンドがエンティティでなければ、&amp; のようにエ"
+#~ "スケープしてください"
 
 #~ msgid "Character '%s' is not valid inside an entity name"
 #~ msgstr "文字 '%s' はエンティティ名として使えません"
@@ -4408,35 +6077,10 @@ msgstr "12月"
 #~ msgid "Invalid UTF-8 encoded text - not a start char"
 #~ msgstr "UTF-8 として正しくない文字列です (文字で始まっていません)"
 
-#~ msgid "file"
-#~ msgstr "ファイル"
-
-#~ msgid "The file containing the icon"
-#~ msgstr "アイコンの情報を格納したファイルです"
-
-#~ msgid "names"
-#~ msgstr "名前の集合"
-
-#~ msgid "An array containing the icon names"
-#~ msgstr "アイコンの名前を格納した配列です"
-
-#~ msgid "use default fallbacks"
-#~ msgstr "デフォルトのフォールバックを使用する"
-
-#~ msgid "Whether to use default fallbacks found by shortening the name at '-' characters. Ignores names after the first if multiple names are given."
-#~ msgstr "'-' という代替え文字で名前を省略するデフォルトのフォールバックを使用するかどうかです (複数の名前を指定すると一番最初の名前より後ろの名前をすべて無視します)"
-
-#~ msgid "File descriptor"
-#~ msgstr "ファイル・ディスクリプター"
-
-#~ msgid "The file descriptor to read from"
-#~ msgstr "読み込むファイルのファイル・ディスクリプターです"
-
-#~ msgid "Close file descriptor"
-#~ msgstr "ファイル・ディスクリプターを閉じるかどうか"
-
-#~ msgid "Whether to close the file descriptor when the stream is closed"
-#~ msgstr "ストリームが閉じたらファイル・ディスクリプターを閉じるかどうかです"
-
-#~ msgid "The file descriptor to write to"
-#~ msgstr "書き込むファイルのファイル・ディスクリプターです"
+#~ msgid ""
+#~ "Whether to use default fallbacks found by shortening the name at '-' "
+#~ "characters. Ignores names after the first if multiple names are given."
+#~ msgstr ""
+#~ "'-' という代替え文字で名前を省略するデフォルトのフォールバックを使用するか"
+#~ "どうかです (複数の名前を指定すると一番最初の名前より後の名前をすべて無視し"
+#~ "ます)"
index af6be68..e822fb4 100644 (file)
--- a/po/kk.po
+++ b/po/kk.po
@@ -1,14 +1,14 @@
 # glib to kazakh.
 # Copyright (C) 2010 HZ
 # This file is distributed under the same license as the glib package.
-# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2010-2016.
+# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2010-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-02-12 14:26+0000\n"
-"PO-Revision-Date: 2019-02-16 17:15+0500\n"
+"POT-Creation-Date: 2020-06-09 04:01+0000\n"
+"PO-Revision-Date: 2020-06-25 12:38+0500\n"
 "Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
 "Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
 "Language: kk\n"
@@ -16,34 +16,34 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.2.1\n"
+"X-Generator: Poedit 2.3.1\n"
 
-#: gio/gapplication.c:499
+#: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication опциялары"
 
-#: gio/gapplication.c:499
+#: gio/gapplication.c:500
 msgid "Show GApplication options"
 msgstr "GApplication опцияларын көрсету"
 
-#: gio/gapplication.c:544
+#: gio/gapplication.c:545
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 
-#: gio/gapplication.c:556
+#: gio/gapplication.c:557
 msgid "Override the application’s ID"
 msgstr ""
 
-#: gio/gapplication.c:568
+#: gio/gapplication.c:569
 msgid "Replace the running instance"
 msgstr ""
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:495 gio/gsettings-tool.c:569
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
 msgid "Print help"
 msgstr "Көмекті шығару"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:496 gio/gresource-tool.c:564
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
 msgid "[COMMAND]"
 msgstr "[КОМАНДА]"
 
@@ -51,7 +51,7 @@ msgstr "[КОМАНДА]"
 msgid "Print version"
 msgstr "Нұсқа ақпаратын шығару"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:575
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
 msgid "Print version information and exit"
 msgstr "Нұсқа ақпаратын шығару және шығу"
 
@@ -99,7 +99,7 @@ msgstr ""
 msgid "APPID"
 msgstr "APPID"
 
-#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:90
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
 #: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "КОМАНДА"
@@ -114,7 +114,7 @@ msgstr ""
 
 #: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
 #: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
-#: gio/gresource-tool.c:502 gio/gresource-tool.c:568
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "ФАЙЛ"
 
@@ -138,7 +138,7 @@ msgstr "ПАРАМЕТР"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr ""
 
-#: gio/gapplication-tool.c:96 gio/gresource-tool.c:533 gio/gsettings-tool.c:661
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -149,8 +149,8 @@ msgstr ""
 msgid "Usage:\n"
 msgstr "Қолданылуы:\n"
 
-#: gio/gapplication-tool.c:114 gio/gresource-tool.c:558
-#: gio/gsettings-tool.c:696
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
 msgid "Arguments:\n"
 msgstr "Аргументтер:\n"
 
@@ -267,7 +267,7 @@ msgstr ""
 msgid "Truncate not supported on base stream"
 msgstr ""
 
-#: gio/gcancellable.c:317 gio/gdbusconnection.c:1867 gio/gdbusprivate.c:1402
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -286,28 +286,28 @@ msgid "Not enough space in destination"
 msgstr ""
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1261 glib/gconvert.c:455 glib/gconvert.c:885
-#: glib/giochannel.c:1557 glib/giochannel.c:1599 glib/giochannel.c:2443
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr ""
 
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:463 glib/gconvert.c:799
-#: glib/giochannel.c:1564 glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr ""
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1093
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Бас тартуға болатын инициализацияға қолдау жоқ"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:328 glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr ""
 
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:332
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr ""
@@ -317,28 +317,32 @@ msgstr ""
 msgid "%s type"
 msgstr "%s түрі"
 
-#: gio/gcontenttype-win32.c:177
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "Белгісіз түрі"
 
-#: gio/gcontenttype-win32.c:179
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
 msgstr "%s файл түрі"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr ""
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr ""
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr ""
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 
@@ -346,43 +350,45 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr ""
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:246 gio/gdbusaddress.c:327
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:185
-#, c-format
-msgid ""
-"Address “%s” is invalid (need exactly one of path, tmpdir or abstract keys)"
-msgstr ""
-
-#: gio/gdbusaddress.c:198
+#: gio/gdbusaddress.c:171
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:261 gio/gdbusaddress.c:342
+#: gio/gdbusaddress.c:180
 #, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
+msgid ""
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
 msgstr ""
 
-#: gio/gdbusaddress.c:272 gio/gdbusaddress.c:353
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr ""
 
-#: gio/gdbusaddress.c:423 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:467
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr ""
 
-#: gio/gdbusaddress.c:488
+#: gio/gdbusaddress.c:470
+#, c-format
+msgid "Transport name in address element “%s” must not be empty"
+msgstr ""
+
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -392,354 +398,354 @@ msgstr ""
 #: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr ""
+
+#: gio/gdbusaddress.c:516
+#, c-format
+msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 msgstr ""
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr ""
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "\"%s\" файлын ашу қатесі: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "\"%s\" nonce файлынан оқу қатесі: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr ""
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr ""
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr ""
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr ""
 
-#: gio/gdbusaddress.c:1359
-#, c-format
-msgid "(Type any character to close this window)\n"
-msgstr ""
-
-#: gio/gdbusaddress.c:1513
-#, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr ""
-
-#: gio/gdbusaddress.c:1524
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 
-#: gio/gdbusaddress.c:1662 gio/gdbusconnection.c:7174
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:1671 gio/gdbusconnection.c:7183
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr ""
 
-#: gio/gdbusaddress.c:1681
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr ""
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr ""
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr ""
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:265
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "\"%s\" бума ақпаратын алу қатесі: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:280
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:310
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "\"%s\" бумасын жасау қатесі: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:355
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:378 gio/gdbusauthmechanismsha1.c:700
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:392 gio/gdbusauthmechanismsha1.c:714
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:406 gio/gdbusauthmechanismsha1.c:728
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:430
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:476
 #, c-format
-msgid "Error deleting stale lock file “%s”: %s"
+msgid "Error creating lock file “%s”: %s"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:540
 #, c-format
-msgid "Error creating lock file “%s”: %s"
+msgid "Error deleting stale lock file “%s”: %s"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:590
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:667
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:863
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2396
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "Байланыс жабылған"
 
-#: gio/gdbusconnection.c:1897
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr ""
 
-#: gio/gdbusconnection.c:2518
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 
-#: gio/gdbusconnection.c:4147 gio/gdbusconnection.c:4494
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 
-#: gio/gdbusconnection.c:4289
+#: gio/gdbusconnection.c:4303
 #, c-format
 msgid "No such property “%s”"
 msgstr "\"%s\" қасиеті табылмады"
 
-#: gio/gdbusconnection.c:4301
+#: gio/gdbusconnection.c:4315
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "\"%s\" қасиетін оқу мүмкін емес"
 
-#: gio/gdbusconnection.c:4312
+#: gio/gdbusconnection.c:4326
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "\"%s\" қасиетін жазу мүмкін емес"
 
-#: gio/gdbusconnection.c:4332
+#: gio/gdbusconnection.c:4346
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:4437 gio/gdbusconnection.c:4645
-#: gio/gdbusconnection.c:6614
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
 #, c-format
 msgid "No such interface “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:4863 gio/gdbusconnection.c:7123
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr ""
 
-#: gio/gdbusconnection.c:4961
+#: gio/gdbusconnection.c:4975
 #, c-format
 msgid "No such method “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:4992
+#: gio/gdbusconnection.c:5006
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:5190
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr ""
 
-#: gio/gdbusconnection.c:5416
+#: gio/gdbusconnection.c:5430
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr ""
 
-#: gio/gdbusconnection.c:5472
+#: gio/gdbusconnection.c:5486
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "%s қасиетін орнату мүмкін емес.%s"
 
-#: gio/gdbusconnection.c:5650
+#: gio/gdbusconnection.c:5664
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:6725
+#: gio/gdbusconnection.c:6741
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
 
-#: gio/gdbusconnection.c:6846
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr ""
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr ""
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr ""
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 msgstr ""
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 msgstr ""
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] ""
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, 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 ""
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr ""
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -747,152 +753,163 @@ msgid_plural ""
 "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 msgstr[0] ""
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
 "bytes, but found to be %u bytes in length"
 msgstr ""
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr ""
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2724
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] ""
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr ""
 
-#: gio/gdbusmessage.c:2541
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 
-#: gio/gdbusmessage.c:2678
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 
-#: gio/gdbusmessage.c:2686
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr ""
 
-#: gio/gdbusmessage.c:2739
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 
-#: gio/gdbusmessage.c:2749
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr ""
 
-#: gio/gdbusmessage.c:2765
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 
-#: gio/gdbusmessage.c:3318
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr ""
 
-#: gio/gdbusmessage.c:3326
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr ""
 
-#: gio/gdbusprivate.c:2075
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr ""
+
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr ""
+
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr ""
 
-#: gio/gdbusprivate.c:2120
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr ""
 
-#: gio/gdbusproxy.c:1617
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr ""
 
-#: gio/gdbusproxy.c:1640
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr ""
 
-#: gio/gdbusproxy.c:2740 gio/gdbusproxy.c:2875
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
 "and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
 
-#: gio/gdbusserver.c:708
-msgid "Abstract name space not supported"
+#: gio/gdbusserver.c:755
+#| msgid "Operation not supported"
+msgid "Abstract namespace not supported"
 msgstr ""
 
-#: gio/gdbusserver.c:795
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 
-#: gio/gdbusserver.c:876
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "\"%s\" үшін nonce файлын жазу қатесі: %s"
 
-#: gio/gdbusserver.c:1047
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr ""
 
-#: gio/gdbusserver.c:1087
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr ""
 
-#: gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:107
 #, c-format
 msgid ""
 "Commands:\n"
@@ -906,283 +923,283 @@ msgid ""
 "Use “%s COMMAND --help” to get help on each command.\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:185 gio/gdbus-tool.c:252 gio/gdbus-tool.c:324
-#: gio/gdbus-tool.c:348 gio/gdbus-tool.c:834 gio/gdbus-tool.c:1171
-#: gio/gdbus-tool.c:1613
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Қате: %s\n"
 
-#: gio/gdbus-tool.c:196 gio/gdbus-tool.c:265 gio/gdbus-tool.c:1629
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:234
+#: gio/gdbus-tool.c:246
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:382
+#: gio/gdbus-tool.c:394
 msgid "Connect to the system bus"
 msgstr ""
 
-#: gio/gdbus-tool.c:383
+#: gio/gdbus-tool.c:395
 msgid "Connect to the session bus"
 msgstr ""
 
-#: gio/gdbus-tool.c:384
+#: gio/gdbus-tool.c:396
 msgid "Connect to given D-Bus address"
 msgstr ""
 
-#: gio/gdbus-tool.c:394
+#: gio/gdbus-tool.c:406
 msgid "Connection Endpoint Options:"
 msgstr ""
 
-#: gio/gdbus-tool.c:395
+#: gio/gdbus-tool.c:407
 msgid "Options specifying the connection endpoint"
 msgstr ""
 
-#: gio/gdbus-tool.c:417
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
 msgstr ""
 
-#: gio/gdbus-tool.c:427
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr ""
 
-#: gio/gdbus-tool.c:497
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:506
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:568
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
 msgstr ""
 
-#: gio/gdbus-tool.c:569
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
 msgstr ""
 
-#: gio/gdbus-tool.c:570
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr ""
 
-#: gio/gdbus-tool.c:603
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "Сигналды жіберу."
 
-#: gio/gdbus-tool.c:658 gio/gdbus-tool.c:965 gio/gdbus-tool.c:1715
-#: gio/gdbus-tool.c:1944 gio/gdbus-tool.c:2164
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Байланысу қатесі: %s\n"
 
-#: gio/gdbus-tool.c:678
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:697 gio/gdbus-tool.c:1008 gio/gdbus-tool.c:1758
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:720 gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1778
-#: gio/gdbus-tool.c:2015
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:740
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
 msgstr "Қате: сигнал көрсетілмеген.\n"
 
-#: gio/gdbus-tool.c:754
+#: gio/gdbus-tool.c:770
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:772
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr ""
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:809 gio/gdbus-tool.c:1140
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:841
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:868
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
 msgstr ""
 
-#: gio/gdbus-tool.c:869
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
 msgstr ""
 
-#: gio/gdbus-tool.c:870
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr ""
 
-#: gio/gdbus-tool.c:871
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr ""
 
-#: gio/gdbus-tool.c:910
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr ""
 
-#: gio/gdbus-tool.c:982 gio/gdbus-tool.c:1732 gio/gdbus-tool.c:1969
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:993 gio/gdbus-tool.c:1749 gio/gdbus-tool.c:1980
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1043
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1054
+#: gio/gdbus-tool.c:1070
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1132
+#: gio/gdbus-tool.c:1148
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1576
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
 msgstr ""
 
-#: gio/gdbus-tool.c:1577
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
 msgstr ""
 
-#: gio/gdbus-tool.c:1578
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "XML баспаға шығару"
 
-#: gio/gdbus-tool.c:1579
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr ""
 
-#: gio/gdbus-tool.c:1580
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Тек қасиеттерін баспаға шығару"
 
-#: gio/gdbus-tool.c:1667
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr ""
 
-#: gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
 msgstr "Бақылау үшін мақсат атауы"
 
-#: gio/gdbus-tool.c:1871
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr ""
 
-#: gio/gdbus-tool.c:1896
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr ""
 
-#: gio/gdbus-tool.c:1954
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:2078
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2081
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2129
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
 msgstr "[ОПЦИЯ…] ШИНА-АТЫ"
 
-#: gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
 msgstr ""
 
-#: gio/gdbus-tool.c:2206
+#: gio/gdbus-tool.c:2269
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Қате: белсендіру үшін қызмет көрсетілуі керек.\n"
 
-#: gio/gdbus-tool.c:2211
+#: gio/gdbus-tool.c:2274
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Қате: күту үшін қызмет көрсетілуі керек.\n"
 
-#: gio/gdbus-tool.c:2216
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:2224 gio/gdbus-tool.c:2231
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Қате: \"%s\" - кеңінен белгілі шина аты емес.\n"
 
-#: gio/gdesktopappinfo.c:2041 gio/gdesktopappinfo.c:4822
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Атаусыз"
 
-#: gio/gdesktopappinfo.c:2451
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:2710
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:3362
+#: gio/gdesktopappinfo.c:3413
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:3366
+#: gio/gdesktopappinfo.c:3417
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:3606 gio/gdesktopappinfo.c:3630
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:3864
+#: gio/gdesktopappinfo.c:3915
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "%s пайдаланушы жұмыс үстел файлын жасау мүмкін емес"
 
-#: gio/gdesktopappinfo.c:3998
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr ""
@@ -1210,12 +1227,12 @@ msgstr ""
 msgid "drive doesn’t implement stop"
 msgstr ""
 
-#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
-#: gio/gdummytlsbackend.c:509
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321
+#: gio/gdummytlsbackend.c:513
 msgid "TLS support is not available"
 msgstr "TLS қолдауы қолжетерсіз"
 
-#: gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:423
 msgid "DTLS support is not available"
 msgstr "DTLS қолдауы қолжетерсіз"
 
@@ -1243,12 +1260,12 @@ msgstr ""
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr ""
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3738 gio/gfile.c:3793
-#: gio/gfile.c:4029 gio/gfile.c:4071 gio/gfile.c:4539 gio/gfile.c:4950
-#: gio/gfile.c:5035 gio/gfile.c:5125 gio/gfile.c:5222 gio/gfile.c:5309
-#: gio/gfile.c:5410 gio/gfile.c:8113 gio/gfile.c:8203 gio/gfile.c:8287
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8104 gio/gfile.c:8194 gio/gfile.c:8278
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Әрекетке қолдау жоқ"
@@ -1257,69 +1274,73 @@ msgstr "Әрекетке қолдау жоқ"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr ""
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Бума үстіне көшіру мүмкін емес"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Буманы бума үстіне көшіру мүмкін емес"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Мақсат файлы бар болып тұр"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Буманы рекурсивті көшіру мүмкін емес"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr ""
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr ""
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
-msgstr ""
+msgstr "Арнайы файлды көшіру мүмкін емес"
 
-#: gio/gfile.c:4019
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr ""
 
-#: gio/gfile.c:4180
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Символдық сілтемелерге қолдау жоқ"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
-msgstr ""
+msgstr "Қоқыс шелегіне қолдау жоқ"
 
-#: gio/gfile.c:4292
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr ""
 
-#: gio/gfile.c:6773 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
-msgstr ""
+msgstr "том тіркеуді жүзеге асырмайды"
 
-#: gio/gfile.c:6884 gio/gfile.c:6930
+#: gio/gfile.c:6871 gio/gfile.c:6919
 msgid "No application is registered as handling this file"
 msgstr ""
 
@@ -1364,35 +1385,35 @@ msgstr ""
 msgid "Truncate not supported on stream"
 msgstr ""
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:377 gio/gresolver.c:529
-#: glib/gconvert.c:1785
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Хост аты қате"
 
 #: gio/ghttpproxy.c:143
 msgid "Bad HTTP proxy reply"
-msgstr ""
+msgstr "HTTP прокси жауабы қате"
 
 #: gio/ghttpproxy.c:159
 msgid "HTTP proxy connection not allowed"
-msgstr ""
+msgstr "HTTP прокси байланысы рұқсат етілмеген"
 
 #: gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
-msgstr ""
+msgstr "HTTP прокси аутентификациясы сәтсіз"
 
 #: gio/ghttpproxy.c:167
 msgid "HTTP proxy authentication required"
-msgstr ""
+msgstr "HTTP прокси аутентификациясы керек"
 
 #: gio/ghttpproxy.c:171
 #, c-format
 msgid "HTTP proxy connection failed: %i"
-msgstr ""
+msgstr "HTTP прокси байланысы сәтсіз аяқталды: %i"
 
 #: gio/ghttpproxy.c:269
 msgid "HTTP proxy server closed connection unexpectedly."
-msgstr ""
+msgstr "HTTP прокси сервері күтпегенде байланысты үзді."
 
 #: gio/gicon.c:298
 #, c-format
@@ -1481,7 +1502,7 @@ msgstr ""
 msgid "“version” takes no arguments"
 msgstr "\"version\" аргументтерді қабылдамайды"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:857
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Қолданылуы:"
 
@@ -1567,10 +1588,10 @@ msgid "Error writing to stdout"
 msgstr "Қалыпты шығысқа жазу қатесі"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1587,144 +1608,158 @@ msgid ""
 "like smb://server/resource/file.txt as location."
 msgstr ""
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr ""
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Мақсат бумасы жоқ"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Орындалу барысын көрсету"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Үстінен жазу алдында сұрау"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Барлық атрибуттарды сақтап қалу"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Бар болып тұрған мақсат файлдардың қор көшірмелерін жасау"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Символдық сілтемелер соңынан ермеу"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr ""
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr ""
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "ҚАЙНАР_КӨЗІ"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "МАҚСАТЫ"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr ""
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 msgstr ""
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "%s мақсаты бума емес"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: \"%s\" үстінен жазу керек пе? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr ""
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Файлдық жүйе ақпаратын алу"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr ""
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "АТРИБУТТАР"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr ""
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "атрибуттар:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr ""
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr ""
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "аты: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "түрі: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "өлшемі: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "жасырын\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr ""
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr ""
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Орнатуға болатын атрибуттар:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr ""
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Орналасулар жөнінде ақпаратты көрсету."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1733,23 +1768,27 @@ msgid ""
 "namespace, e.g. unix, or by “*”, which matches all attributes"
 msgstr ""
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Жасырын файлдарды көрсету"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr ""
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr ""
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Толық URI шығару"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Орналасулар құрамаларын тізіп шығару."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1865,12 +1904,12 @@ msgid "Mount as mountable"
 msgstr "Тіркелетін ретінде тіркеу"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
+msgid "Mount volume with device file, or other identifier"
 msgstr ""
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "ҚҰРЫЛҒЫ"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -1884,6 +1923,10 @@ msgstr "Шығару"
 msgid "Stop drive with device file"
 msgstr ""
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "ҚҰРЫЛҒЫ"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr ""
@@ -1915,11 +1958,11 @@ msgstr "Қосымша ақпаратты көрсету"
 
 #: gio/gio-tool-mount.c:75
 msgid "The numeric PIM when unlocking a VeraCrypt volume"
-msgstr ""
+msgstr "VeraCrypt томын ашу кезіндегі сандық PIM"
 
 #: gio/gio-tool-mount.c:75
 msgid "PIM"
-msgstr ""
+msgstr "PIM"
 
 #: gio/gio-tool-mount.c:76
 msgid "Mount a TCRYPT hidden volume"
@@ -1937,16 +1980,12 @@ msgstr ""
 msgid "No drive for device file"
 msgstr ""
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr ""
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
+#: gio/gio-tool-mount.c:1014
+#| msgid "No files given"
+msgid "No volume for given ID"
 msgstr ""
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Орналасуларды тіркеу немесе тіркеуден шығару."
 
@@ -2105,32 +2144,32 @@ msgstr "Символдық сілтемелер, тіркеулер және ж
 msgid "List contents of directories in a tree-like format."
 msgstr "Бумалар құрамаларын ағаш тектес пішімде шығару."
 
-#: gio/glib-compile-resources.c:143 gio/glib-compile-schemas.c:1515
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "<%s> элементін <%s> ішінде орналастыру рұқсат етілмеген"
 
-#: gio/glib-compile-resources.c:147
+#: gio/glib-compile-resources.c:144
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "<%s> элементі жоғары деңгейде орналасуы рұқсат етілмеген"
 
-#: gio/glib-compile-resources.c:237
+#: gio/glib-compile-resources.c:234
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr ""
 
-#: gio/glib-compile-resources.c:248
+#: gio/glib-compile-resources.c:245
 #, c-format
 msgid "Failed to locate “%s” in any source directory"
 msgstr ""
 
-#: gio/glib-compile-resources.c:259
+#: gio/glib-compile-resources.c:256
 #, c-format
 msgid "Failed to locate “%s” in current directory"
 msgstr ""
 
-#: gio/glib-compile-resources.c:293
+#: gio/glib-compile-resources.c:290
 #, c-format
 msgid "Unknown processing option “%s”"
 msgstr "Белгісіз өңдеу опциясы \"%s\""
@@ -2139,18 +2178,18 @@ msgstr "Белгісіз өңдеу опциясы \"%s\""
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
 #.
-#: gio/glib-compile-resources.c:313 gio/glib-compile-resources.c:370
-#: gio/glib-compile-resources.c:427
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
 #, c-format
 msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
 msgstr ""
 
-#: gio/glib-compile-resources.c:460
+#: gio/glib-compile-resources.c:457
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "%s файлын оқу қатесі: %s"
 
-#: gio/glib-compile-resources.c:480
+#: gio/glib-compile-resources.c:477
 #, c-format
 msgid "Error compressing file %s"
 msgstr "%s файлын сығу қатесі"
@@ -2160,7 +2199,7 @@ msgstr "%s файлын сығу қатесі"
 msgid "text may not appear inside <%s>"
 msgstr "мәтін <%s> ішінде болмауы мүмкін"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2139
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr ""
 
@@ -2174,8 +2213,8 @@ msgid ""
 "directory)"
 msgstr ""
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2140
-#: gio/glib-compile-schemas.c:2169
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "БУМА"
 
@@ -2233,428 +2272,437 @@ msgstr ""
 msgid "You should give exactly one file name\n"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:95
+#: gio/glib-compile-schemas.c:92
 #, c-format
 msgid "nick must be a minimum of 2 characters"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:106
+#: gio/glib-compile-schemas.c:103
 #, c-format
 msgid "Invalid numeric value"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:114
+#: gio/glib-compile-schemas.c:111
 #, c-format
 msgid "<value nick='%s'/> already specified"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:122
+#: gio/glib-compile-schemas.c:119
 #, c-format
 msgid "value='%s' already specified"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:136
+#: gio/glib-compile-schemas.c:133
 #, c-format
 msgid "flags values must have at most 1 bit set"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:161
+#: gio/glib-compile-schemas.c:158
 #, c-format
 msgid "<%s> must contain at least one <value>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:317
+#: gio/glib-compile-schemas.c:314
 #, c-format
 msgid "<%s> is not contained in the specified range"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:329
+#: gio/glib-compile-schemas.c:326
 #, c-format
 msgid "<%s> is not a valid member of the specified enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:335
+#: gio/glib-compile-schemas.c:332
 #, c-format
 msgid "<%s> contains string not in the specified flags type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:341
+#: gio/glib-compile-schemas.c:338
 #, c-format
 msgid "<%s> contains a string not in <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:375
+#: gio/glib-compile-schemas.c:372
 msgid "<range/> already specified for this key"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:393
+#: gio/glib-compile-schemas.c:390
 #, c-format
 msgid "<range> not allowed for keys of type “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:410
+#: gio/glib-compile-schemas.c:407
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:435
+#: gio/glib-compile-schemas.c:432
 #, c-format
 msgid "unsupported l10n category: %s"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:443
+#: gio/glib-compile-schemas.c:440
 msgid "l10n requested, but no gettext domain given"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:455
+#: gio/glib-compile-schemas.c:452
 msgid "translation context given for value without l10n enabled"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:477
+#: gio/glib-compile-schemas.c:474
 #, c-format
 msgid "Failed to parse <default> value of type “%s”: "
 msgstr ""
 
-#: gio/glib-compile-schemas.c:494
+#: gio/glib-compile-schemas.c:491
 msgid ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:503
+#: gio/glib-compile-schemas.c:500
 msgid "<choices> already specified for this key"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:515
+#: gio/glib-compile-schemas.c:512
 #, c-format
 msgid "<choices> not allowed for keys of type “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:531
+#: gio/glib-compile-schemas.c:528
 #, c-format
 msgid "<choice value='%s'/> already given"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:546
+#: gio/glib-compile-schemas.c:543
 #, c-format
 msgid "<choices> must contain at least one <choice>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:560
+#: gio/glib-compile-schemas.c:557
 msgid "<aliases> already specified for this key"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:564
+#: gio/glib-compile-schemas.c:561
 msgid ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:583
+#: gio/glib-compile-schemas.c:580
 #, c-format
 msgid ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
 "type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:589
+#: gio/glib-compile-schemas.c:586
 #, c-format
 msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:597
+#: gio/glib-compile-schemas.c:594
 #, c-format
 msgid "<alias value='%s'/> already specified"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:607
+#: gio/glib-compile-schemas.c:604
 #, c-format
 msgid "alias target “%s” is not in enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:608
+#: gio/glib-compile-schemas.c:605
 #, c-format
 msgid "alias target “%s” is not in <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:623
+#: gio/glib-compile-schemas.c:620
 #, c-format
 msgid "<aliases> must contain at least one <alias>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:798
+#: gio/glib-compile-schemas.c:797
 msgid "Empty names are not permitted"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:808
+#: gio/glib-compile-schemas.c:807
 #, c-format
 msgid "Invalid name “%s”: names must begin with a lowercase letter"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:820
+#: gio/glib-compile-schemas.c:819
 #, c-format
 msgid ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
 "and hyphen (“-”) are permitted"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:829
+#: gio/glib-compile-schemas.c:828
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:838
+#: gio/glib-compile-schemas.c:837
 #, c-format
 msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:846
+#: gio/glib-compile-schemas.c:845
 #, c-format
 msgid "Invalid name “%s”: maximum length is 1024"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:918
+#: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:944
+#: gio/glib-compile-schemas.c:943
 msgid "Cannot add keys to a “list-of” schema"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:955
+#: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:973
+#: gio/glib-compile-schemas.c:972
 #, 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:984
+#: gio/glib-compile-schemas.c:983
 #, c-format
 msgid ""
 "Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1003
+#: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1018
+#: gio/glib-compile-schemas.c:1017
 #, c-format
 msgid "Invalid GVariant type string “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1048
+#: gio/glib-compile-schemas.c:1047
 msgid "<override> given but schema isn’t extending anything"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1061
+#: gio/glib-compile-schemas.c:1060
 #, c-format
 msgid "No <key name='%s'> to override"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1069
+#: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1142
+#: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1154
+#: gio/glib-compile-schemas.c:1153
 #, c-format
 msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1170
+#: gio/glib-compile-schemas.c:1169
 #, c-format
 msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1178
+#: gio/glib-compile-schemas.c:1177
 #, c-format
 msgid "Cannot be a list of a schema with a path"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1188
+#: gio/glib-compile-schemas.c:1187
 #, c-format
 msgid "Cannot extend a schema with a path"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1198
+#: gio/glib-compile-schemas.c:1197
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1208
+#: gio/glib-compile-schemas.c:1207
 #, c-format
 msgid ""
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
 "does not extend “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1225
+#: gio/glib-compile-schemas.c:1224
 #, c-format
 msgid "A path, if given, must begin and end with a slash"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1232
+#: gio/glib-compile-schemas.c:1231
 #, c-format
 msgid "The path of a list must end with “:/”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1241
+#: gio/glib-compile-schemas.c:1240
 #, c-format
 msgid ""
 "Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
 "desktop/” or “/system/” are deprecated."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1271
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1421 gio/glib-compile-schemas.c:1437
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
 msgstr "<%s> ішінде тек бір <%s> элементіне рұқсат етілген"
 
-#: gio/glib-compile-schemas.c:1519
+#: gio/glib-compile-schemas.c:1518
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1537
+#: gio/glib-compile-schemas.c:1536
 msgid "Element <default> is required in <key>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1627
+#: gio/glib-compile-schemas.c:1626
 #, c-format
 msgid "Text may not appear inside <%s>"
-msgstr ""
+msgstr "Мәтін <%s> ішінде көрсетілмеуі керек"
 
-#: gio/glib-compile-schemas.c:1695
+#: gio/glib-compile-schemas.c:1694
 #, c-format
 msgid "Warning: undefined reference to <schema id='%s'/>"
 msgstr ""
 
 #. Translators: Do not translate "--strict".
-#: gio/glib-compile-schemas.c:1834 gio/glib-compile-schemas.c:1910
-#: gio/glib-compile-schemas.c:2025
-#, c-format
-msgid "--strict was specified; exiting.\n"
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+msgid "--strict was specified; exiting."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1845
+msgid "This entire file has been ignored."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1844
+#: gio/glib-compile-schemas.c:1908
+msgid "Ignoring this file."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1963
 #, c-format
-msgid "This entire file has been ignored.\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1906
+#: gio/glib-compile-schemas.c:1971
 #, c-format
-msgid "Ignoring this file.\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1959
+#: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "No such key “%s” in schema “%s” as specified in override file “%s”"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1965 gio/glib-compile-schemas.c:1990
-#: gio/glib-compile-schemas.c:2050 gio/glib-compile-schemas.c:2079
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "; ignoring override for this key.\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1969 gio/glib-compile-schemas.c:1994
-#: gio/glib-compile-schemas.c:2054 gio/glib-compile-schemas.c:2083
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid " and --strict was specified; exiting.\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1984
+#: gio/glib-compile-schemas.c:2038
 #, c-format
 msgid ""
-"cannot provide per-desktop overrides for localised key “%s” in schema "
-"“%s” (override file “%s”)"
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2011
+#: gio/glib-compile-schemas.c:2065
 #, c-format
 msgid ""
-"error parsing key “%s” in schema “%s” as specified in override file “%s”: %s."
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2021
+#: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "Ignoring override for this key.\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2040
+#: gio/glib-compile-schemas.c:2101
 #, c-format
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is outside the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2069
+#: gio/glib-compile-schemas.c:2111
 #, c-format
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2140
-msgid "where to store the gschemas.compiled file"
+#: gio/glib-compile-schemas.c:2173
+msgid "Where to store the gschemas.compiled file"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2141
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2142
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2143
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-schemas.c:2205
 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:2193
-#, c-format
-msgid "You should give exactly one directory name\n"
+#: gio/glib-compile-schemas.c:2226
+msgid "You should give exactly one directory name"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2235
-#, c-format
-msgid "No schema files found: "
+#: gio/glib-compile-schemas.c:2269
+msgid "No schema files found: doing nothing."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2238
-#, c-format
-msgid "doing nothing.\n"
-msgstr ""
-
-#: gio/glib-compile-schemas.c:2241
-#, c-format
-msgid "removed existing output file.\n"
+#: gio/glib-compile-schemas.c:2271
+msgid "No schema files found: removed existing output file."
 msgstr ""
 
 #: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
@@ -2690,7 +2738,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Файл атын ауыстыру мүмкін емес, ондай файл бар болып тұр"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:646
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Файл аты қате"
 
@@ -2764,200 +2812,196 @@ msgstr ""
 msgid "Error making symbolic link %s: %s"
 msgstr "%s символдық сілтемесін жасау қатесі: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2138
-msgid "Symbolic links not supported"
-msgstr "Символдық сілтемелерге қолдау жоқ"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "%s файлын жылжыту қатесі: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Буманы бума үстіне жылжыту мүмкін емес"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1030
-#: gio/glocalfileoutputstream.c:1044 gio/glocalfileoutputstream.c:1059
-#: gio/glocalfileoutputstream.c:1076 gio/glocalfileoutputstream.c:1090
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr ""
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Мақсат файлын өшіру қатесі: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr ""
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr ""
 
-#: gio/glocalfileinfo.c:745
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr ""
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr ""
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr ""
 
-#: gio/glocalfileinfo.c:799
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "\"%s\" кеңейтілген атрибутын орнату қатесі: %s"
 
-#: gio/glocalfileinfo.c:1625
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (кодталуы қате)"
 
-#: gio/glocalfileinfo.c:1789 gio/glocalfileoutputstream.c:908
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "\"%s\" файлы ақпаратын алу қатесі: %s"
 
-#: gio/glocalfileinfo.c:2059
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2104
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2122
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2141 gio/glocalfileinfo.c:2160
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2207
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2223
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Рұқсаттарды орнату қатесі: %s"
 
-#: gio/glocalfileinfo.c:2274
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Иесін орнату қатесі: %s"
 
-#: gio/glocalfileinfo.c:2297
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2307 gio/glocalfileinfo.c:2326
-#: gio/glocalfileinfo.c:2337
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2316
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2442
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2465
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2480
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2487
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2579
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr ""
 
-#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:791
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Файлдан оқу қатесі: %s"
 
 #: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
 #: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
-#: gio/glocalfileoutputstream.c:553 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Файлдан іздеу қатесі: %s"
 
-#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:343
-#: gio/glocalfileoutputstream.c:437
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Файлды жабу қатесі: %s"
 
-#: gio/glocalfilemonitor.c:856
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr ""
 
-#: gio/glocalfileoutputstream.c:208 gio/glocalfileoutputstream.c:286
-#: gio/glocalfileoutputstream.c:323 gio/glocalfileoutputstream.c:812
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Файлға жазу қатесі: %s"
 
-#: gio/glocalfileoutputstream.c:370
+#: gio/glocalfileoutputstream.c:371
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr ""
 
-#: gio/glocalfileoutputstream.c:384 gio/glocalfileoutputstream.c:397
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr ""
 
-#: gio/glocalfileoutputstream.c:415
+#: gio/glocalfileoutputstream.c:416
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr ""
 
-#: gio/glocalfileoutputstream.c:599 gio/glocalfileoutputstream.c:1159
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
 #, c-format
 msgid "Error truncating file: %s"
 msgstr ""
 
-#: gio/glocalfileoutputstream.c:652 gio/glocalfileoutputstream.c:890
-#: gio/glocalfileoutputstream.c:1140 gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "\"%s\" файлын ашу қатесі: %s"
 
-#: gio/glocalfileoutputstream.c:921
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
 msgstr "Мақсат файлы бума болып тұр"
 
-#: gio/glocalfileoutputstream.c:926
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
 msgstr "Мақсат файлы қалыпты файл емес болып тұр"
 
-#: gio/glocalfileoutputstream.c:938
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
 msgstr ""
 
-#: gio/glocalfileoutputstream.c:1124
+#: gio/glocalfileoutputstream.c:1125
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Ескі файлды өшіру қатесі: %s"
@@ -3045,16 +3089,16 @@ msgstr ""
 msgid "mount doesn’t implement synchronous content type guessing"
 msgstr ""
 
-#: gio/gnetworkaddress.c:388
+#: gio/gnetworkaddress.c:415
 #, c-format
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr ""
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Желі қолжетерсіз"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Хост қолжетерсіз"
 
@@ -3072,12 +3116,12 @@ msgstr ""
 msgid "Could not get network status: "
 msgstr ""
 
-#: gio/gnetworkmonitornm.c:313
+#: gio/gnetworkmonitornm.c:348
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager орындалы тұрған жоқ"
 
-#: gio/gnetworkmonitornm.c:324
+#: gio/gnetworkmonitornm.c:359
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager нұсқасы тым ескі"
@@ -3095,18 +3139,18 @@ msgstr ""
 msgid "Source stream is already closed"
 msgstr ""
 
-#: gio/gresolver.c:344 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:160
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr ""
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:389 gio/gresolver.c:547
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr ""
 
-#: gio/gresolver.c:915 gio/gresolver.c:967
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Хост аты қате"
 
@@ -3132,26 +3176,26 @@ msgstr ""
 msgid "Input stream doesn’t implement seek"
 msgstr ""
 
-#: gio/gresource-tool.c:501
+#: gio/gresource-tool.c:499
 msgid "List sections containing resources in an elf FILE"
 msgstr ""
 
-#: gio/gresource-tool.c:507
+#: gio/gresource-tool.c:505
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources"
 msgstr ""
 
-#: gio/gresource-tool.c:510 gio/gresource-tool.c:520
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
 msgid "FILE [PATH]"
 msgstr ""
 
-#: gio/gresource-tool.c:511 gio/gresource-tool.c:521 gio/gresource-tool.c:528
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
 msgid "SECTION"
 msgstr ""
 
-#: gio/gresource-tool.c:516
+#: gio/gresource-tool.c:514
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3159,15 +3203,15 @@ msgid ""
 "Details include the section, size and compression"
 msgstr ""
 
-#: gio/gresource-tool.c:526
+#: gio/gresource-tool.c:524
 msgid "Extract a resource file to stdout"
 msgstr ""
 
-#: gio/gresource-tool.c:527
+#: gio/gresource-tool.c:525
 msgid "FILE PATH"
 msgstr ""
 
-#: gio/gresource-tool.c:541
+#: gio/gresource-tool.c:539
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3183,7 +3227,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gresource-tool.c:555
+#: gio/gresource-tool.c:553
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3193,158 +3237,158 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gresource-tool.c:562
+#: gio/gresource-tool.c:560
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr ""
 
-#: gio/gresource-tool.c:566 gio/gsettings-tool.c:703
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr ""
 
-#: gio/gresource-tool.c:572
+#: gio/gresource-tool.c:570
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr ""
 
-#: gio/gresource-tool.c:575
+#: gio/gresource-tool.c:573
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
 msgstr ""
 
-#: gio/gresource-tool.c:579
+#: gio/gresource-tool.c:577
 msgid "[PATH]"
 msgstr ""
 
-#: gio/gresource-tool.c:581
+#: gio/gresource-tool.c:579
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr ""
 
-#: gio/gresource-tool.c:582
+#: gio/gresource-tool.c:580
 msgid "PATH"
 msgstr "ЖОЛ"
 
-#: gio/gresource-tool.c:584
+#: gio/gresource-tool.c:582
 msgid "  PATH      A resource path\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:51 gio/gsettings-tool.c:72 gio/gsettings-tool.c:908
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:57
+#: gio/gsettings-tool.c:55
 #, c-format
 msgid "Schema “%s” is not relocatable (path must not be specified)\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:76
 #, c-format
 msgid "Schema “%s” is relocatable (path must be specified)\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:92
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:98
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:104
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:110
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:538
+#: gio/gsettings-tool.c:536
 msgid "The provided value is outside of the valid range\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:545
+#: gio/gsettings-tool.c:543
 msgid "The key is not writable\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:581
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
 msgstr ""
 
-#: gio/gsettings-tool.c:587
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
 msgstr ""
 
-#: gio/gsettings-tool.c:593
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
 msgstr ""
 
-#: gio/gsettings-tool.c:594 gio/gsettings-tool.c:600 gio/gsettings-tool.c:643
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: gio/gsettings-tool.c:599
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
 msgstr ""
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:607
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:612
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:613 gio/gsettings-tool.c:619 gio/gsettings-tool.c:625
-#: gio/gsettings-tool.c:637 gio/gsettings-tool.c:649
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: gio/gsettings-tool.c:618
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:624
+#: gio/gsettings-tool.c:622
 msgid "Query the description for KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:630
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
 msgstr ""
 
-#: gio/gsettings-tool.c:631
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: gio/gsettings-tool.c:636
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
 msgstr ""
 
-#: gio/gsettings-tool.c:642
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr ""
 
-#: gio/gsettings-tool.c:648
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
 msgstr ""
 
-#: gio/gsettings-tool.c:654
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor 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:657
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr ""
 
-#: gio/gsettings-tool.c:669
+#: gio/gsettings-tool.c:667
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3370,7 +3414,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:693
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3380,247 +3424,248 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:697
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:707
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:712
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:716
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:720
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:775
+#: gio/gsettings-tool.c:773
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:787
+#: gio/gsettings-tool.c:785
 msgid "No schemas installed\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:866
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:921
+#: gio/gsettings-tool.c:919
 #, c-format
 msgid "No such key “%s”\n"
 msgstr ""
 
-#: gio/gsocket.c:373
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr ""
 
-#: gio/gsocket.c:380
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr ""
 
-#: gio/gsocket.c:388
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr ""
 
-#: gio/gsocket.c:403 gio/gsocket.c:3027 gio/gsocket.c:4244 gio/gsocket.c:4302
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr ""
 
-#: gio/gsocket.c:538
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr ""
 
-#: gio/gsocket.c:567 gio/gsocket.c:621 gio/gsocket.c:628
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr ""
 
-#: gio/gsocket.c:621
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr ""
 
-#: gio/gsocket.c:628
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr ""
 
-#: gio/gsocket.c:1119
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 
-#: gio/gsocket.c:1136
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 
-#: gio/gsocket.c:1943
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr ""
 
-#: gio/gsocket.c:1989
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr ""
 
-#: gio/gsocket.c:2055
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr ""
 
-#: gio/gsocket.c:2157
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
+#| msgid "Error reading file %s: %s"
+msgid "Error binding to address %s: %s"
 msgstr ""
 
-#: gio/gsocket.c:2215 gio/gsocket.c:2252 gio/gsocket.c:2362 gio/gsocket.c:2387
-#: gio/gsocket.c:2460 gio/gsocket.c:2518 gio/gsocket.c:2536
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr ""
 
-#: gio/gsocket.c:2216 gio/gsocket.c:2253 gio/gsocket.c:2363 gio/gsocket.c:2388
-#: gio/gsocket.c:2461 gio/gsocket.c:2519 gio/gsocket.c:2537
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr ""
 
-#: gio/gsocket.c:2217
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2364
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr ""
 
-#: gio/gsocket.c:2389
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr ""
 
-#: gio/gsocket.c:2407 gio/gsocket.c:2436 gio/gsocket.c:2486
+#: gio/gsocket.c:2578
 #, c-format
-msgid "Interface not found: %s"
+msgid "Interface name too long"
 msgstr ""
 
-#: gio/gsocket.c:2423
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
-msgid "Interface name too long"
+msgid "Interface not found: %s"
 msgstr ""
 
-#: gio/gsocket.c:2462
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2520
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2729
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr ""
 
-#: gio/gsocket.c:2855
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr ""
 
-#: gio/gsocket.c:2906
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr ""
 
-#: gio/gsocket.c:3092
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr ""
 
-#: gio/gsocket.c:3289
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr ""
 
-#: gio/gsocket.c:3476
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr ""
 
-#: gio/gsocket.c:3557
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr ""
 
-#: gio/gsocket.c:4237
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr ""
 
-#: gio/gsocket.c:4614 gio/gsocket.c:4616 gio/gsocket.c:4762 gio/gsocket.c:4847
-#: gio/gsocket.c:5027 gio/gsocket.c:5067 gio/gsocket.c:5069
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Хабарламаны жіберу сәтсіз: %s"
 
-#: gio/gsocket.c:4789
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr ""
 
-#: gio/gsocket.c:5260 gio/gsocket.c:5333 gio/gsocket.c:5560
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr ""
 
-#: gio/gsocket.c:5832
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr ""
 
-#: gio/gsocket.c:5841
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 
-#: gio/gsocketclient.c:181
+#: gio/gsocketclient.c:182
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr ""
 
-#: gio/gsocketclient.c:195
+#: gio/gsocketclient.c:196
 #, c-format
 msgid "Could not connect to %s: "
 msgstr ""
 
-#: gio/gsocketclient.c:197
+#: gio/gsocketclient.c:198
 msgid "Could not connect: "
 msgstr "Байланысу мүмкін емес: "
 
-#: gio/gsocketclient.c:1032 gio/gsocketclient.c:1731
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Байланысты орнату кезіндегі белгісіз қате"
 
-#: gio/gsocketclient.c:1086 gio/gsocketclient.c:1640
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 
-#: gio/gsocketclient.c:1115 gio/gsocketclient.c:1666
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr ""
 
-#: gio/gsocketlistener.c:225
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr ""
 
-#: gio/gsocketlistener.c:271
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr ""
 
@@ -3646,66 +3691,66 @@ msgstr ""
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr ""
 
-#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:338 gio/gsocks5proxy.c:348
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr ""
 
-#: gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167 gio/gsocks5proxy.c:184
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr ""
 
-#: gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:191
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
 msgstr ""
 
-#: gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:220
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr ""
 
-#: gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:250
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
 
-#: gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:300
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
 msgstr ""
 
-#: gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:362
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr ""
 
-#: gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:369
 msgid "Internal SOCKSv5 proxy server error."
 msgstr ""
 
-#: gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:375
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr ""
 
-#: gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:382
 msgid "Host unreachable through SOCKSv5 server."
 msgstr ""
 
-#: gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:388
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr ""
 
-#: gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:394
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr ""
 
-#: gio/gsocks5proxy.c:386
+#: gio/gsocks5proxy.c:400
 msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr ""
 
-#: gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:406
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr ""
 
-#: gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:412
 msgid "Unknown SOCKSv5 proxy error."
 msgstr ""
 
@@ -3718,24 +3763,24 @@ msgstr ""
 msgid "No valid addresses were found"
 msgstr ""
 
-#: gio/gthreadedresolver.c:317
+#: gio/gthreadedresolver.c:334
 #, c-format
 msgid "Error reverse-resolving “%s”: %s"
 msgstr ""
 
-#: gio/gthreadedresolver.c:653 gio/gthreadedresolver.c:732
-#: gio/gthreadedresolver.c:830 gio/gthreadedresolver.c:880
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr ""
 
-#: gio/gthreadedresolver.c:658 gio/gthreadedresolver.c:835
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr ""
 
-#: gio/gthreadedresolver.c:663 gio/gthreadedresolver.c:840
-#: gio/gthreadedresolver.c:948
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
 #, c-format
 msgid "Error resolving “%s”"
 msgstr ""
@@ -3781,13 +3826,13 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr ""
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:563
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] ""
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:575
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
 msgstr ""
 
@@ -3801,31 +3846,31 @@ msgstr[0] ""
 msgid "Received invalid fd"
 msgstr ""
 
-#: gio/gunixconnection.c:355
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
 msgstr ""
 
-#: gio/gunixconnection.c:504
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr ""
 
-#: gio/gunixconnection.c:549
+#: gio/gunixconnection.c:565
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 
-#: gio/gunixconnection.c:589
+#: gio/gunixconnection.c:605
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr ""
 
-#: gio/gunixconnection.c:614
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr ""
@@ -3835,19 +3880,19 @@ msgstr ""
 msgid "Error reading from file descriptor: %s"
 msgstr ""
 
-#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:534
+#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:535
 #: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr ""
 
-#: gio/gunixmounts.c:2650 gio/gunixmounts.c:2703
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "Файлдық жүйе түбірі"
 
-#: gio/gunixoutputstream.c:371 gio/gunixoutputstream.c:391
-#: gio/gunixoutputstream.c:478 gio/gunixoutputstream.c:498
-#: gio/gunixoutputstream.c:675
+#: gio/gunixoutputstream.c:372 gio/gunixoutputstream.c:392
+#: gio/gunixoutputstream.c:479 gio/gunixoutputstream.c:499
+#: gio/gunixoutputstream.c:676
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr ""
@@ -3923,148 +3968,153 @@ msgstr ""
 msgid "Wrong args\n"
 msgstr ""
 
-#: glib/gbookmarkfile.c:754
+#: glib/gbookmarkfile.c:756
 #, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:765 glib/gbookmarkfile.c:836 glib/gbookmarkfile.c:846
-#: glib/gbookmarkfile.c:955
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr ""
 
-#: glib/gbookmarkfile.c:1164 glib/gbookmarkfile.c:1229
-#: glib/gbookmarkfile.c:1293 glib/gbookmarkfile.c:1303
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr ""
 
-#: glib/gbookmarkfile.c:1189 glib/gbookmarkfile.c:1203
-#: glib/gbookmarkfile.c:1271 glib/gbookmarkfile.c:1317
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:1813
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr ""
+
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2014
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2060 glib/gbookmarkfile.c:2218
-#: glib/gbookmarkfile.c:2303 glib/gbookmarkfile.c:2383
-#: glib/gbookmarkfile.c:2468 glib/gbookmarkfile.c:2551
-#: glib/gbookmarkfile.c:2629 glib/gbookmarkfile.c:2708
-#: glib/gbookmarkfile.c:2750 glib/gbookmarkfile.c:2847
-#: glib/gbookmarkfile.c:2968 glib/gbookmarkfile.c:3158
-#: glib/gbookmarkfile.c:3234 glib/gbookmarkfile.c:3402
-#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3580
-#: glib/gbookmarkfile.c:3699
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2392
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2477
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2856
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:3255 glib/gbookmarkfile.c:3412
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:3435
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr ""
 
-#: glib/gconvert.c:474
+#: glib/gconvert.c:466
 msgid "Unrepresentable character in conversion input"
 msgstr ""
 
-#: glib/gconvert.c:501 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr ""
 
-#: glib/gconvert.c:770
+#: glib/gconvert.c:762
 #, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr ""
 
-#: glib/gconvert.c:942
+#: glib/gconvert.c:934
 msgid "Embedded NUL byte in conversion input"
 msgstr ""
 
-#: glib/gconvert.c:963
+#: glib/gconvert.c:955
 msgid "Embedded NUL byte in conversion output"
 msgstr ""
 
-#: glib/gconvert.c:1648
+#: glib/gconvert.c:1640
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr ""
 
-#: glib/gconvert.c:1658
+#: glib/gconvert.c:1650
 #, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr ""
 
-#: glib/gconvert.c:1675
+#: glib/gconvert.c:1667
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr "URI \"%s\" қате"
 
-#: glib/gconvert.c:1687
+#: glib/gconvert.c:1679
 #, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr ""
 
-#: glib/gconvert.c:1703
+#: glib/gconvert.c:1695
 #, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr ""
 
-#: glib/gconvert.c:1775
+#: glib/gconvert.c:1767
 #, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr ""
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: glib/gdatetime.c:214
+#: glib/gdatetime.c:220
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%a %d %b %Y %T"
 
 #. Translators: this is the preferred format for expressing the date
-#: glib/gdatetime.c:217
+#: glib/gdatetime.c:223
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%d.%m.%Y"
 
 #. Translators: this is the preferred format for expressing the time
-#: glib/gdatetime.c:220
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%T"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: glib/gdatetime.c:223
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%I:%M:%S %p"
@@ -4085,62 +4135,62 @@ msgstr "%I:%M:%S %p"
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
 #.
-#: glib/gdatetime.c:262
+#: glib/gdatetime.c:268
 msgctxt "full month name"
 msgid "January"
 msgstr "Қаңтар"
 
-#: glib/gdatetime.c:264
+#: glib/gdatetime.c:270
 msgctxt "full month name"
 msgid "February"
 msgstr "Ақпан"
 
-#: glib/gdatetime.c:266
+#: glib/gdatetime.c:272
 msgctxt "full month name"
 msgid "March"
 msgstr "Наурыз"
 
-#: glib/gdatetime.c:268
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "April"
 msgstr "Сәуір"
 
-#: glib/gdatetime.c:270
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "May"
 msgstr "Мамыр"
 
-#: glib/gdatetime.c:272
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "June"
 msgstr "Маусым"
 
-#: glib/gdatetime.c:274
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "July"
 msgstr "Шілде"
 
-#: glib/gdatetime.c:276
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "August"
 msgstr "Тамыз"
 
-#: glib/gdatetime.c:278
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "September"
 msgstr "Қыркүйек"
 
-#: glib/gdatetime.c:280
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "October"
 msgstr "Қазан"
 
-#: glib/gdatetime.c:282
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "November"
 msgstr "Қараша"
 
-#: glib/gdatetime.c:284
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "December"
 msgstr "Желтоқсан"
@@ -4162,132 +4212,132 @@ msgstr "Желтоқсан"
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
 #.
-#: glib/gdatetime.c:316
+#: glib/gdatetime.c:322
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "Қаң"
 
-#: glib/gdatetime.c:318
+#: glib/gdatetime.c:324
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "Ақп"
 
-#: glib/gdatetime.c:320
+#: glib/gdatetime.c:326
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "Нау"
 
-#: glib/gdatetime.c:322
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "Сәу"
 
-#: glib/gdatetime.c:324
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "Мам"
 
-#: glib/gdatetime.c:326
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "Мау"
 
-#: glib/gdatetime.c:328
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "Шіл"
 
-#: glib/gdatetime.c:330
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "Там"
 
-#: glib/gdatetime.c:332
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "Қыр"
 
-#: glib/gdatetime.c:334
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "Қаз"
 
-#: glib/gdatetime.c:336
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "Қар"
 
-#: glib/gdatetime.c:338
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "Жел"
 
-#: glib/gdatetime.c:353
+#: glib/gdatetime.c:359
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "Дүйсенбі"
 
-#: glib/gdatetime.c:355
+#: glib/gdatetime.c:361
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "Сейсенбі"
 
-#: glib/gdatetime.c:357
+#: glib/gdatetime.c:363
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "Сәрсенбі"
 
-#: glib/gdatetime.c:359
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "Бейсенбі"
 
-#: glib/gdatetime.c:361
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "Жұма"
 
-#: glib/gdatetime.c:363
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "Сенбі"
 
-#: glib/gdatetime.c:365
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "Жексенбі"
 
-#: glib/gdatetime.c:380
+#: glib/gdatetime.c:386
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "Дс"
 
-#: glib/gdatetime.c:382
+#: glib/gdatetime.c:388
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "Сс"
 
-#: glib/gdatetime.c:384
+#: glib/gdatetime.c:390
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "Ср"
 
-#: glib/gdatetime.c:386
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "Бс"
 
-#: glib/gdatetime.c:388
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "Жм"
 
-#: glib/gdatetime.c:390
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "Сн"
 
-#: glib/gdatetime.c:392
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "Жк"
@@ -4309,62 +4359,62 @@ msgstr "Жк"
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
 #.
-#: glib/gdatetime.c:456
+#: glib/gdatetime.c:462
 msgctxt "full month name with day"
 msgid "January"
 msgstr "Қаңтар"
 
-#: glib/gdatetime.c:458
+#: glib/gdatetime.c:464
 msgctxt "full month name with day"
 msgid "February"
 msgstr "Ақпан"
 
-#: glib/gdatetime.c:460
+#: glib/gdatetime.c:466
 msgctxt "full month name with day"
 msgid "March"
 msgstr "Наурыз"
 
-#: glib/gdatetime.c:462
+#: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "April"
 msgstr "Сәуір"
 
-#: glib/gdatetime.c:464
+#: glib/gdatetime.c:470
 msgctxt "full month name with day"
 msgid "May"
 msgstr "Мамыр"
 
-#: glib/gdatetime.c:466
+#: glib/gdatetime.c:472
 msgctxt "full month name with day"
 msgid "June"
 msgstr "Маусым"
 
-#: glib/gdatetime.c:468
+#: glib/gdatetime.c:474
 msgctxt "full month name with day"
 msgid "July"
 msgstr "Шілде"
 
-#: glib/gdatetime.c:470
+#: glib/gdatetime.c:476
 msgctxt "full month name with day"
 msgid "August"
 msgstr "Тамыз"
 
-#: glib/gdatetime.c:472
+#: glib/gdatetime.c:478
 msgctxt "full month name with day"
 msgid "September"
 msgstr "Қыркүйек"
 
-#: glib/gdatetime.c:474
+#: glib/gdatetime.c:480
 msgctxt "full month name with day"
 msgid "October"
 msgstr "Қазан"
 
-#: glib/gdatetime.c:476
+#: glib/gdatetime.c:482
 msgctxt "full month name with day"
 msgid "November"
 msgstr "Қараша"
 
-#: glib/gdatetime.c:478
+#: glib/gdatetime.c:484
 msgctxt "full month name with day"
 msgid "December"
 msgstr "Желтоқсан"
@@ -4386,74 +4436,74 @@ msgstr "Желтоқсан"
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
 #.
-#: glib/gdatetime.c:543
+#: glib/gdatetime.c:549
 msgctxt "abbreviated month name with day"
 msgid "Jan"
 msgstr "Қаң"
 
-#: glib/gdatetime.c:545
+#: glib/gdatetime.c:551
 msgctxt "abbreviated month name with day"
 msgid "Feb"
 msgstr "Ақп"
 
-#: glib/gdatetime.c:547
+#: glib/gdatetime.c:553
 msgctxt "abbreviated month name with day"
 msgid "Mar"
 msgstr "Нау"
 
-#: glib/gdatetime.c:549
+#: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Apr"
 msgstr "Сәу"
 
-#: glib/gdatetime.c:551
+#: glib/gdatetime.c:557
 msgctxt "abbreviated month name with day"
 msgid "May"
 msgstr "Мам"
 
-#: glib/gdatetime.c:553
+#: glib/gdatetime.c:559
 msgctxt "abbreviated month name with day"
 msgid "Jun"
 msgstr "Мау"
 
-#: glib/gdatetime.c:555
+#: glib/gdatetime.c:561
 msgctxt "abbreviated month name with day"
 msgid "Jul"
 msgstr "Шіл"
 
-#: glib/gdatetime.c:557
+#: glib/gdatetime.c:563
 msgctxt "abbreviated month name with day"
 msgid "Aug"
 msgstr "Там"
 
-#: glib/gdatetime.c:559
+#: glib/gdatetime.c:565
 msgctxt "abbreviated month name with day"
 msgid "Sep"
 msgstr "Қыр"
 
-#: glib/gdatetime.c:561
+#: glib/gdatetime.c:567
 msgctxt "abbreviated month name with day"
 msgid "Oct"
 msgstr "Қаз"
 
-#: glib/gdatetime.c:563
+#: glib/gdatetime.c:569
 msgctxt "abbreviated month name with day"
 msgid "Nov"
 msgstr "Қар"
 
-#: glib/gdatetime.c:565
+#: glib/gdatetime.c:571
 msgctxt "abbreviated month name with day"
 msgid "Dec"
 msgstr "Жел"
 
 #. Translators: 'before midday' indicator
-#: glib/gdatetime.c:582
+#: glib/gdatetime.c:588
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "AM"
 
 #. Translators: 'after midday' indicator
-#: glib/gdatetime.c:585
+#: glib/gdatetime.c:591
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "PM"
@@ -4463,100 +4513,100 @@ msgstr "PM"
 msgid "Error opening directory “%s”: %s"
 msgstr "\"%s\" бумасын ашу қатесі: %s"
 
-#: glib/gfileutils.c:716 glib/gfileutils.c:808
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] ""
 
-#: glib/gfileutils.c:733
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "\"%s\" файлын оқу қатесі: %s"
 
-#: glib/gfileutils.c:769
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "\"%s\" файлы тым үлкен"
 
-#: glib/gfileutils.c:833
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "\"%s\" файлынан оқу қатесі: %s"
 
-#: glib/gfileutils.c:881 glib/gfileutils.c:953
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "\"%s\" файлын ашу қатесі: %s"
 
-#: glib/gfileutils.c:893
+#: glib/gfileutils.c:910
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:923
+#: glib/gfileutils.c:940
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1022
+#: glib/gfileutils.c:1039
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1057 glib/gfileutils.c:1575
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "\"%s\" файлын жасау сәтсіз: %s"
 
-#: glib/gfileutils.c:1084
+#: glib/gfileutils.c:1101
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "\"%s\" файлын жазу сәтсіз: write() сәтсіз аяқталды: %s"
 
-#: glib/gfileutils.c:1127
+#: glib/gfileutils.c:1144
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "\"%s\" файлын жазу сәтсіз: fsync() сәтсіз аяқталды: %s"
 
-#: glib/gfileutils.c:1262
+#: glib/gfileutils.c:1279
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1541
+#: glib/gfileutils.c:1558
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr ""
 
-#: glib/gfileutils.c:1554
+#: glib/gfileutils.c:1571
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr ""
 
-#: glib/gfileutils.c:2116
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr ""
 
-#: glib/giochannel.c:1389
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr ""
 
-#: glib/giochannel.c:1734
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 
-#: glib/giochannel.c:1781 glib/giochannel.c:2039 glib/giochannel.c:2126
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr ""
 
-#: glib/giochannel.c:1862 glib/giochannel.c:1939
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr ""
 
-#: glib/giochannel.c:1925
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr ""
 
@@ -4594,8 +4644,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr ""
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr ""
@@ -4628,31 +4678,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr ""
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr ""
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr ""
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr ""
@@ -4732,31 +4782,37 @@ msgid ""
 "character without intending to start an entity — escape ampersand as &amp;"
 msgstr ""
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr ""
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 msgstr ""
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
 "“%s”"
 msgstr ""
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+#| msgid "Invalid attribute type “%s”"
+msgid "Too many attributes in element “%s”"
+msgstr ""
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr ""
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -4764,150 +4820,150 @@ msgid ""
 "character in an attribute name"
 msgstr ""
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, 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 ""
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
 msgstr ""
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
 "allowed character is “>”"
 msgstr ""
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr ""
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr ""
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr ""
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 msgstr ""
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
 "the tag <%s/>"
 msgstr ""
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr ""
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr ""
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
 msgstr ""
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr ""
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 
-#: glib/goption.c:861
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[ОПЦИЯ…]"
 
-#: glib/goption.c:977
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Көмек опциялары:"
 
-#: glib/goption.c:978
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Көмек опцияларын көрсету"
 
-#: glib/goption.c:984
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Барлық көмек опцияларын көрсету"
 
-#: glib/goption.c:1047
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Қолданба опциялары:"
 
-#: glib/goption.c:1049
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Опциялар:"
 
-#: glib/goption.c:1113 glib/goption.c:1183
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr ""
 
-#: glib/goption.c:1123 glib/goption.c:1191
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr ""
 
-#: glib/goption.c:1148
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr ""
 
-#: glib/goption.c:1156
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr ""
 
-#: glib/goption.c:1448 glib/goption.c:1527
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr ""
 
-#: glib/goption.c:1558 glib/goption.c:1671
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr ""
 
-#: glib/goption.c:2132
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Белгісіз опция %s"
@@ -5304,77 +5360,77 @@ msgstr "Мәтін бос болды (немесе тек бос аралықт
 msgid "Failed to read data from child process (%s)"
 msgstr ""
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr ""
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr ""
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr ""
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr ""
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr ""
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr ""
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr ""
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr ""
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "\"%s\" бумасына ауысу сәтсіз аяқталды (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr ""
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr ""
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr ""
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr ""
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5424,208 +5480,207 @@ msgid ""
 "process"
 msgstr ""
 
-#: glib/gstrfuncs.c:3286 glib/gstrfuncs.c:3388
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr ""
 
-#: glib/gstrfuncs.c:3310
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "\"%s\" таңбасы бар сан емес"
 
-#: glib/gstrfuncs.c:3320 glib/gstrfuncs.c:3424
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr ""
 
-#: glib/gstrfuncs.c:3414
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "\"%s\" таңбасы жоқ сан емес"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Жадыны бөлу сәтсіз"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr ""
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr ""
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr ""
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2339
+#: glib/gutils.c:2756
 #, c-format
-#| msgid "%.1f kB"
 msgid "%.1f kB"
 msgstr "%.1f КБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2341
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f МБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2343
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ГБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2345
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ТБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2347
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f ПБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2349
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f ЭБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2353
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f КиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2355
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f МиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2357
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f ГиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2359
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f ТиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2361
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f ПиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2363
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f ЭиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2367
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f кб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2369
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Мб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2371
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Гб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2373
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Тб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2375
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Пб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2377
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Эб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2381
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Киб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2383
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Миб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2385
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Гиб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2387
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Тиб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2389
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Пиб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2391
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Эиб"
 
-#: glib/gutils.c:2425 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u байт"
 
-#: glib/gutils.c:2429
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u бит"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2496
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s байт"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2501
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5636,32 +5691,32 @@ msgstr[0] "%s бит"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f КБ"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f МБ"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ГБ"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ТБ"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f ПБ"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f ЭБ"
@@ -5669,9 +5724,6 @@ msgstr "%.1f ЭБ"
 #~ msgid "[ARGS...]"
 #~ msgstr "[АРГУМЕНТТЕР...]"
 
-#~ msgid "No files given"
-#~ msgstr "Файлдар көрсетілмеген"
-
 #~ msgid "Error mounting location: %s\n"
 #~ msgstr "Орналасуды тіркеу қатесі: %s\n"
 
index 8ce4362..c41584d 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -4,7 +4,7 @@
 # Young-Ho Cha <ganadist@chollian.net>, 2002.
 # Eunju Kim <eukim@redhat.com>, 2007.
 # Seong-ho Cho <darkcircle.0426@gmail.com>, 2011-2012.
-# Changwoo Ryu <cwryu@debian.org>, 2002, 2004-2006, 2007-2011, 2013-2019.
+# Changwoo Ryu <cwryu@debian.org>, 2002, 2004-2006, 2007-2011, 2013-2020.
 #
 #
 # 용어:
@@ -16,8 +16,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-26 20:19+0000\n"
-"PO-Revision-Date: 2019-08-29 18:17+0900\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-16 12:48+0900\n"
 "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
 "Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
 "Language: ko\n"
@@ -284,7 +284,7 @@ msgstr "스트림을 이미 닫았습니다"
 msgid "Truncate not supported on base stream"
 msgstr "기반 스트림에서 자르기를 지원하지 않습니다"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -304,22 +304,22 @@ msgstr "대상에 공간이 부족합니다"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "변환 입력에서 잘못된 바이트 순서"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "변환 중 오류: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "취소 가능한 초기화를 지원하지 않습니다"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "문자셋 “%s”에서 “%s”(으)로 변환은 지원되지 않습니다"
@@ -343,19 +343,23 @@ msgstr "알 수 없는 형식"
 msgid "%s filetype"
 msgstr "%s 파일 형식"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials에 잘못된 데이터가 들어 있습니다"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials는 이 OS에서 구현되지 않았습니다"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "이 플랫폼에서는 GCredentials를 지원하지 않습니다"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials는 이 OS에서 프로세스 ID가 없습니다"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "암호 데이터 속이기가 이 OS에서는 불가능합니다"
 
@@ -363,7 +367,7 @@ msgstr "암호 데이터 속이기가 이 OS에서는 불가능합니다"
 msgid "Unexpected early end-of-stream"
 msgstr "예기치 않게 일찍 스트림이 끝났습니다"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "“%s” 키를 주소 항목 “%s”에서 지원하지 않습니다"
@@ -382,54 +386,50 @@ msgstr ""
 "“%s” 주소는 올바르지 않습니다 (정확히 1개의 경로, 폴더, 임시 폴더, 절대 키 "
 "중 하나가 필요합니다)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "“%s” 주소에서 오류 — 포트 속성의 형식이 잘못되었습니다"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "“%s” 주소에서 오류 — 패밀리 속성의 형식이 잘못되었습니다"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "“%s” 주소에서 오류 —  “%s” 속성의 형식이 잘못되었습니다"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
 "주소 “%2$s”에 대한  “%1$s” 트랜스포트는 알려지지 않았거나 지원하지 않습니다."
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "주소 항목 “%s”에 콜론(:)이  없습니다"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "주소 항목 “%s”에서 트랜스포트 이름이 비어 있으면 안 됩니다"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr "키/값 쌍 %d번, “%s”에 (주소 항목 “%s”) 등호 기호가 없습니다"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "키/값 쌍 %d번, “%s”에 (주소 항목 “%s”) 비어 있는 키가 들어 있을 수 없습니다"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 msgstr "키/값 쌍 %d번, “%s”에 (주소 항목 “%s”) 키/값의 이스케이프 제거 오류"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -438,75 +438,75 @@ msgstr ""
 "“%s” 주소에서 오류 — unix 트랜스포트에서는 'path'나 'abstract' 키 중 하나를 "
 "설정해야 합니다."
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "“%s” 주소에서 오류 — host 속성이 없거나 형식이 잘못되었습니다"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "“%s” 주소에서 오류 — port 속성이 없거나 형식이 잘못되었습니다"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "“%s” 주소에서 오류 — noncefile 속성이 없거나 형식이 잘못되었습니다"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "자동 실행 오류: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "“%s” nonce 파일을 여는 중 오류: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "“%s” nonce 파일을 읽는 중 오류: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "“%s” nonce 파일을 읽는 중 오류, 16바이트가 있어야 하지만 %d바이트"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "“%s” nonce 파일의 내용을 스트림에 쓰는 중 오류:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "지정된 주소가 빈 문자열입니다"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "setuid 없이 메시지 버스를 시작할 수 없습니다:"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "machine-id 없이 메시지 버스를 시작할 수 없습니다: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "X11 $DISPLAY 없이 D-Bus 자동 실행할 수 없습니다"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "“%s” 명령을 시작하는데 오류: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "세션 버스 주소를 알아낼 수 없습니다 (이 운영체제에서는 구현되지 않았습니다)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -515,7 +515,7 @@ msgstr ""
 "DBUS_STARTER_BUS_TYPE 환경 변수에서 세션 버스 주소를 알아낼 수 없습니다 — 알 "
 "수 없는 값 “%s”"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -523,57 +523,57 @@ msgstr ""
 "DBUS_STARTER_BUS_TYPE 환경 변수를 설정하지 않았으므로 세션 버스 주소를 알아"
 "낼 수 없습니다"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "알 수 없는 버스 형식 (%d)"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "한 줄을 읽으려고 시도하는 중 예상치 못하게 읽을 내용이 부족합니다."
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "한 줄을(안전하게) 읽으려고 시도하는 중 예상치 못하게 읽을 내용이 부족합니다."
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr "사용 가능한 모든 인증 방법을 시도했습니다 (시도: %s) (사용 가능: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "GDBusAuthObserver::authorize-authenticated-peer를 통해 취소됨"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "디렉터리 “%s”의 정보를 가져오는 중 오류 : %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr "“%s” 디렉터리의 권한이 잘못되었습니다. 0700이어야 하지만 0%o입니다"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "“%s” 디렉터리를 만드는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "“%s” 키 모음을 읽기 용도로 여는 중 오류: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”의 키 모음 %1$d번 줄의 내용 “%3$s”의 형식이 잘못되었습니다."
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -581,7 +581,7 @@ msgstr ""
 "'%2$s'의 키 모음 %1$d번 줄의 첫번째 토큰의 내용  “%3$s”의 형식이 잘못되었습니"
 "다."
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -589,37 +589,37 @@ msgstr ""
 "“%2$s”의 키 모음 %1$d번 줄의 두번째 토큰의 내용 “%3$s”의 형식이 잘못되었습니"
 "다."
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "“%2$s”의 키 모음 아이디 %1$d의 쿠키를 찾을 수 없습니다"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "오래된 “%s” 잠금 파일을 만드는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "“%s” 잠금 파일을 만드는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "(링크가 끊어진) “%s” 잠금 파일을 닫는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "“%s” 잠금 파일을 삭제하는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "“%s” 키 모음을 쓰기 용도로 여는 중 오류: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(추가로 “%s”에 대한 잠금 해제도 실패했습니다: %s)"
@@ -637,105 +637,105 @@ msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "클라이언트 연결을 만드는 중 지원하지 않는 플래그가 있습니다"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "경로 %s의 객체에 “org.freedesktop.DBus.Properties” 인터페이스가 없습니다"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "“%s” 속성이 없습니다"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "“%s” 속성을 읽을 수 없습니다"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "“%s” 속성을 쓸 수 없습니다"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "“%s” 속성 설정 오류: “%s” 형식이어야 하지만 “%s”입니다"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "“%s” 인터페이스가 없습니다"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "경로 “%2$s”의 객체에 “%1$s” 인터페이스가 없습니다"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "“%s” 키가 없습니다"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "메시지 형식이(“%s”) 예상한 “%s” 형식에 맞지 않습니다."
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "%2$s의 %1$s 인터페이스 용도로 객체를 이미 내보냈습니다"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "%s.%s 속성을 가져올 수 없습니다"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "%s.%s 속성을 설정할 수 없습니다"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "“%s” 메소드가 “%s” 형식을 리턴했지만, “%s” 형식이어야 합니다"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "“%3$s” 서명이 있는 “%2$s” 인터페이스의 “%1$s” 메서드가 없습니다"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "하위 트리를 이미 %s 용도로 내보냈습니다"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "형식이 올바르지 않습니다"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL 메시지: PATH 혹은 MEMBER 헤더 필드가 없습니다"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_CALL 메시지: REPLY_SERIAL 헤더 필드가 없습니다"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR 메시지: REPLY_SERIAL 혹은 ERROR_NAME 헤더 필드가 없습니다"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL 메시지: PATH, INTERFACE 혹은 MEMBER 헤더 필드가 없습니다"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -743,7 +743,7 @@ msgstr ""
 "SIGNAL 메시지: PATH 헤더 필드가 /org/freedesktop/DBus/Local 예약 값을 사용하"
 "고 있습니다"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -751,18 +751,18 @@ msgstr ""
 "SIGNAL 메시지: INTERFACE 헤더 필드가 org.freedesktop.DBus.Local 예약 값을 사"
 "용하고 있습니다"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "%lu 바이트를 읽어야 하지만 %lu 바이트만 받았습니다"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "“%s” 문자열 뒤에 NUL 바이트가 와야 하지만 %d바이트가 있습니다"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -771,17 +771,21 @@ msgstr ""
 "올바른 UTF-8 문자열이 와야 하지만 오프셋 %d에(문자열 길이 %d) 잘못된 바이트"
 "가 있습니다. 그 부분까지 올바른 UTF-8 문자열은 “%s”입니다."
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "값이 너무 깊숙히 끼워 넣어져 있습니다"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "해석한 “%s” 값이 올바른 D-Bus 객체 경로가 아닙니다"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "해석한 “%s” 값이 올바른 D-Bus 시그너쳐가 아닙니다"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -790,7 +794,7 @@ msgid_plural ""
 msgstr[0] ""
 "길이가 %u 바이트인 배열이 있습니다. 최대 길이는 2<<26 바이트입니다. (64MiB)"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -799,18 +803,18 @@ msgstr ""
 "타입이 “a%c”인 배열은 길이가 %u 바이트의 배수여야 하지만, 길이가 %u 바이트입"
 "니다."
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "variant에 대해 해석한 값 “%s”은(는) 올바른 D-Bus 시그너쳐가 아닙니다."
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr "“%s” 형식 문자열로 GVariant를 D-Bus 전송 형식에서 재구성하는데 오류"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -819,57 +823,57 @@ msgstr ""
 "엔디안 값이 잘못되었습니다. 0x6c(“l”) 또는 0x42 (“B”)가 와야 하지만 0x%02x 값"
 "이 있습니다"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "메이저 프로토콜 버전이 잘못되었습니다. 1이어야 하지만 %d입니다."
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "시그너쳐 헤더가 있지만 타입 시그너쳐 헤더가 아닙니다"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "시그너쳐 “%s”인 시그너쳐 헤더가 있지만 메시지 본문이 비었습니다"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "해석한 “%s” 값이 (본문에 대해) 올바른 D-Bus 시그너쳐가 아닙니다"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "메시지에 시그너쳐 헤더가 없지만 메시지 본문이 %u 바이트입니다"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "메시지를 재구성할 수 없습니다: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "“%s” 형식 문자열로 GVariant를 D-Bus 전송 형식으로 만드는데 오류"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "메시지의 파일 디스크립터 개수가 (%d) 헤더 필드의 개수와 (%d) 다릅니다"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "메시지를 전송 형식으로 만들 수 없습니다: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "메시지 본문에 “%s” 시그너쳐가 있지만 시그너쳐 헤더가 없습니다"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -877,36 +881,36 @@ msgid ""
 msgstr ""
 "메시지 본문에 “%s” 형식 시그너쳐가 있지만 헤더 필드의 시그너쳐가 “%s”입니다"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "메시지 본문이 비었지만 헤더 필드의 시그너쳐가 “(%s)”입니다"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "오류 리턴, “%s” 형식의 본문"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "오류 리턴, 빈 본문"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(이 창을 닫으려면 아무 글자나 입력하십시오)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "dbus 세션이 실행중이 아니며, 자동실행에 실패했습니다"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "하드웨어 프로파일을 가져올 수 없습니다: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "/var/lib/dbus/machine-id나 /etc/machine-id를 읽어들일 수 없습니다:"
 
@@ -929,25 +933,25 @@ msgstr ""
 "메소드를 호출할 수 없습니다. 프록시는 소유자 없는 알려진 이름이고 (%s) 프록시"
 "가 G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START 플래그를 갖고 만들어졌습니다"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "추상 네임스페이스를 지원하지 않습니다"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "서버를 만들 때 nonce 파일을 지정할 수 없습니다"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "“%s”의 nonce 파일에 쓰는 중 오류: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "“%s” 문자열은 올바른 D-BUS GUID가 아닙니다"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "지원하지 않는 transport “%s”에서 연결을 받아들일 수 없습니다"
@@ -1223,38 +1227,38 @@ msgstr "오류: 인자가 너무 많습니다.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "오류: “%s”은(는) 올바른 알려진 버스 이름이 아닙니다.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "이름없음"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "desktop 파일에 Exec 필드를 지정하지 않았습니다"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "프로그램에 필요한 터미널을 찾을 수 없습니다"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "사용자 프로그램 설정 폴더(%s)를 만들 수 없습니다: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "사용자 MIME 설정 폴더(%s)를 만들 수 없습니다: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "프로그램 정보에 아이디가 없습니다"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "%s 사용자 desktop 파일을 만들 수 없습니다"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s에 대한 사용자 설정 정의"
@@ -1315,12 +1319,12 @@ msgstr "GEmblemedIcon 인코딩에서 토큰 수가(%d개) 잘못되었습니다
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "GEmblemedIcon에 GEmblem이 없습니다"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "동작을 지원하지 않습니다"
@@ -1329,70 +1333,74 @@ msgstr "동작을 지원하지 않습니다"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "들어 있는 마운트가 없습니다"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "디렉터리를 덮어 써서 복사할 수 없습니다"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "디렉터리를 덮어 써서 디렉터리를 복사할 수 없습니다"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "대상 파일이 있습니다"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "디렉터리를 재귀적으로 복사할 수 없습니다"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "잇기를 지원하지 않습니다"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "파일 쪼개기 오류: %s"
 
 # reflink/clone은 btrfs에서 임시 복사하는 걸 말한다
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "다른 마운트 사이에 복사(참조링크/클론)는 지원하지 않습니다"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "복사(참조링크/클론)를 지원하지 않거나 잘못되었습니다"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "복사(참조링크/클론)를 지원하지 않거나 동작하지 않았습니다."
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "특수 파일은 복사할 수 없습니다"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "잘못된 심볼릭 링크 값이 주어졌습니다"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "심볼릭 링크를 지원하지 않습니다"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "휴지통을 지원하지 않습니다"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "파일 이름에 “%c” 문자가 들어갈 수 없습니다"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "볼륨이 mount를 구현하지 않았습니다"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "이 파일을 처리하는 프로그램을 아무 것도 등록하지 않았습니다"
 
@@ -1437,7 +1445,7 @@ msgstr "입력 스트림이 truncate를 허용하지 않습니다"
 msgid "Truncate not supported on stream"
 msgstr "스트림에서 truncate를 지원하지 않습니다"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "잘못된 호스트 이름"
@@ -1554,7 +1562,7 @@ msgstr "파일 옮길 때 유지"
 msgid "“version” takes no arguments"
 msgstr "“version” 옵션은 인수를 받지 않습니다"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "사용법:"
 
@@ -1640,10 +1648,10 @@ msgid "Error writing to stdout"
 msgstr "표준 출력에 쓰는 중 오류"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1663,56 +1671,60 @@ msgstr ""
 "파일 대신 GIO 위치를 사용합니다: 예를 들어 위치로\n"
 "smb://server/resource/file.txt와 같이 쓸 수 있습니다."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "위치를 지정하지 않았습니다"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "대상 디렉터리가 없습니다"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "진행사항 표시"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "덮어 쓰기 전에 물어보기"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "모든 속성 유지"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "기존 대상 파일의 백업을 만듭니다"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "심볼릭 링크를 따라가지 않습니다"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "대상의 권한에 기본값을 사용합니다"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "%2$s 중 %1$s 전송함 (%3$s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "<원본>"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "<대상>"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "하나 또는 여러 파일을 <원본>에서 <대상>으로 복사합니다."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1722,88 +1734,98 @@ msgstr ""
 "대신 GIO 위치를 사용합니다. 예를 들어 위치로\n"
 "smb://server/resource/file.txt와 같이 쓸 수 있습니다."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "대상 %s이(가) 디렉터리가 아닙니다"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: “%s” 파일을 덮어씁니까? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "쓰기 가능 속성 목록"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "파일 시스템 정보 가져오기"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "가져올 속성"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "<속성>"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "심볼릭 링크 따라가지 않기"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "속성:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "표시 이름: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "편집 이름: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "이름: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "종류: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "크기: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "숨김\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "URI: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "로컬 경로: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "유닉스 마운트: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "설정 가능 속성:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "쓰기 가능 속성 네임스페이스:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "위치에 대한 정보를 표시합니다."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1818,23 +1840,27 @@ msgstr ""
 "네임스페이스로 지정할 수도 있고 (예: unix), 모든 속성에 해당하는\n"
 "“*”로 지정할 수도 있습니다."
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "숨김 파일 표시"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "긴 목록 형식 사용하기"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "표시 이름을 표시"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "전체 URI 표시"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "위치의 내용 목록을 표시."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1961,12 +1987,12 @@ msgid "Mount as mountable"
 msgstr "마운트 가능 위치 마운트"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "ë\94\94ë°\94ì\9d´ì\8a¤ í\8c\8cì\9d¼ë¡\9c ë§\88ì\9a´í\8a¸"
+msgid "Mount volume with device file, or other identifier"
+msgstr "볼륨ì\9d\84 ë\94\94ë°\94ì\9d´ì\8a¤ í\8c\8cì\9d¼ ë\98\90ë\8a\94 ë\8b¤ë¥¸ ì\95\84ì\9d´ë\94\94ë¡\9c ë§\88ì\9a´í\8a¸í\95©ë\8b\88ë\8b¤"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "<장치>"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -1980,6 +2006,10 @@ msgstr "빼기"
 msgid "Stop drive with device file"
 msgstr "디바이스 파일로 드라이브 중지"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "<장치>"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "주어진 스킴에 해당하는 모든 마운트를 해제합니다"
@@ -2033,16 +2063,11 @@ msgstr "익명 접근이 거절되었습니다"
 msgid "No drive for device file"
 msgstr "디바이스 파일에 대한 드라이브가 없습니다"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s 위치를 %s에 마운트\n"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "지정한 ID에 대한 볼륨이 없습니다"
 
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "디바이스 파일에 대한 볼륨이 없습니다"
-
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "위치를 마운트하거나 해제합니다."
 
@@ -2853,7 +2878,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "파일 이름을 바꿀 수 없습니다. 파일이 이미 있습니다"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "잘못된 파일 이름"
 
@@ -2928,129 +2953,125 @@ msgstr "파일 시스템이 심볼릭 링크를 지원하지 않습니다"
 msgid "Error making symbolic link %s: %s"
 msgstr "%s 심볼릭 링크를 만드는 중 오류: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "심볼릭 링크를 지원하지 않습니다"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "%s 파일 옮기는 중 오류: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "디렉터리를 덮어 써서 디렉터리를 옮길 수 없습니다"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "백업 파일 만들기가 실패했습니다"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "대상 파일을 제거하는 중 오류: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "다른 마운트 사이에 옮기기는 지원하지 않습니다"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "%s의 디스크 사용량을 알아낼 수 없습니다: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "속성 값은 NULL이 아니어야 합니다"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "잘못된 속성 형식 (문자열 필요)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "잘못된 확장 속성 이름"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "확장 속성 “%s” 설정 중 오류: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (잘못된 인코딩)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "“%s” 파일 정보를 가져오는 중 오류: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "파일 서술자 정보를 가져오는 중 오류: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "잘못된 속성 형식 (uint32 필요)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "잘못된 속성 형식 (uint64 필요)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "잘못된 속성 형식 (바이트 문자열 필요)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "심볼릭 링크에는 권한을 설정할 수 없습니다"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "권한 설정 중 오류: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "소유자 설정 중 오류: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "심볼릭 링크는 NULL이 아니어야 합니다"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "심볼릭 링크 설정 중 오류: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "심볼릭 링크 설정 중 오류: 파일이 심볼릭 링크가 아닙니다"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "수정 시각이나 접근 시각을 설정하는데 오류: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux 컨텍스트는 NULL이 아니어야 합니다"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "SELinux 컨텍스트 설정 중 오류: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "이 시스템은 SELinux를 사용하지 않습니다"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "%s 속성 설정은 지원하지 않습니다"
@@ -3073,7 +3094,7 @@ msgstr "파일을 탐색하는 중 오류: %s"
 msgid "Error closing file: %s"
 msgstr "파일을 닫는 중 오류: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "기본 로컬 파일 감시자 형식을 찾을 수 없습니다"
 
@@ -3216,11 +3237,11 @@ msgstr "마운트가 동기식 컨텐트 타입 판별 기능을 구현하지 
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "“%s” 호스트 이름에 “[” 괄호가 있는데 “]” 괄호가 없습니다"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "도달할 수 없는 네트워크"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "도달할 수 없는 호스트"
 
@@ -3261,18 +3282,18 @@ msgstr "%s에 전달된 벡터의 합이 너무 큽니다"
 msgid "Source stream is already closed"
 msgstr "원본 스트림을 이미 닫았습니다"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "“%s”의 주소를 알아내는 데 오류: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s 기능이 구현되지 않았습니다"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "잘못된 도메인"
 
@@ -3646,172 +3667,173 @@ msgstr "지정한 스키마 이름이 빈 문자열입니다\n"
 msgid "No such key “%s”\n"
 msgstr "“%s” 키가 없습니다\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "올바른 소켓이 아닙니다. 초기화되지 않았습니다"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "올바른 소켓이 아닙니다. 초기화가 다음 이유로 실패했습니다: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "소켓을 이미 닫았습니다"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "소켓 입출력 시간 제한이 넘었습니다"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "파일 서술자에서 GSocket을 만드는 중: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "소켓을 만들 수 없습니다: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "알 수 없는 계열을 지정했습니다"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "알 수 없는 프로토콜을 지정했습니다"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "데이터그램 용도가 아닌 소켓에 데이터그램 동작을 수행할 수 없습니다."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "제한시간을 설정한 소켓에 데이터그램 동작을 수행할 수 없습니다."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "로컬 주소를 알아낼 수 없습니다: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "원격 주소를 알아낼 수 없습니다: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "연결을 받을 수 없습니다: %s"
 
-#: gio/gsocket.c:2158
+# NOTE: bind(2)를 뜻함
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "주소에 연결하는데 오류: %s"
+msgid "Error binding to address %s: %s"
+msgstr "%s 주소에 바인드하는데 오류: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "멀티캐스트 그룹에 참여하는 중 오류: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "멀티캐스트 그룹을 나오는 중 오류: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "소스 지향 멀티캐스트를 지원하지 않습니다"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "소켓 패밀리를 지원하지 않습니다"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "소스 지향 주소가 IPv4 주소가 아닙니다"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "인터페이스 이름이 너무 깁니다"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "인터페이스가 없습니다: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "IPv4 소스 지향 멀티캐스트를 지원하지 않습니다"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "IPv6 소스 지향 멀티캐스트를 지원하지 않습니다"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "연결을 받아들이는데 오류: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "연결이 진행 중입니다"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "밀린 오류를 알아낼 수 없습니다: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "데이터를 받는데 오류: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "데이터를 보내는데 오류: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "소켓을 닫을 수 없습니다: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "소켓을 닫는데 오류: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "소켓 조건을 기다리는 중: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "메시지를 보내는 중 오류: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "윈도우에서는 GSocketControlMessage를 지원하지 않습니다"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "메시지를 받는데 오류: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "소켓 암호 데이터를 읽을 수 없습니다: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials가 이 OS에서 구현되지 않았습니다"
 
@@ -4064,7 +4086,7 @@ msgstr "파일 서술자로부터 읽어오는 중 오류: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "파일 서술자를 닫는 중 오류: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "파일 시스템 루트"
 
@@ -4152,72 +4174,72 @@ msgstr "잘못된 인자\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "예상치 못하게 “%2$s” 요소에 '%1$s' 속성이 있습니다"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "“%2$s” 요소에 “%1$s” 속성이 없습니다"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "예상치 못하게 “%s” 태그가 있습니다. “%s” 태그가 있어야 합니다"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "예상치 못하게 “%2$s” 안에 “%1$s” 태그가 있습니다"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "북마크 파일에서 잘못된 날짜/시각 ‘%s’"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "데이터 디렉터리에 올바른 북마크 파일이 없습니다"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "“%s” URL에 대한 북마크가 이미 있습니다"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "“%s” URL에 대한 북마크가 없습니다"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "“%s” URL에 대한 북마크에 MIME 형식이 없습니다"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "“%s” URL에 대한 북마크에 개인 플래그가 없습니다"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "“%s” URL에 대한 북마크에 그룹이 설정되어 있지 않습니다"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "“%s”에 대해 북마크를 등록한 “%s” 이름을 가진 프로그램이 없습니다"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "URI “%s”을(를) 사용해 “%s” 실행 명령 확장하기에 실패했습니다"
@@ -4226,8 +4248,8 @@ msgstr "URI “%s”을(를) 사용해 “%s” 실행 명령 확장하기에 
 msgid "Unrepresentable character in conversion input"
 msgstr "변환 입력에 표현할 수 없는 글자가 들어 있습니다"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "입력의 끝에서 부분적인 문자 순서"
 
@@ -4768,24 +4790,24 @@ msgstr "“%s” 서식에 XXXXXX가 없습니다"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "심볼릭 링크 “%s” 읽기 실패: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "“%s”에서 “%s”(으)로 변환하는 변환기를 열 수 없음: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "g_io_channel_read_line_string으로 raw 읽기를 할 수 없습니다"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "읽기 버퍼에서 변환되지 않은 데이터를 남겨둠"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "일부 문자에서 채널 끝냄"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "g_io_channel_read_to_endi로 raw 읽기를 할 수 없습니다"
 
@@ -4825,8 +4847,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "키 파일에 지원하지 않는 “%s” 인코딩이 들어 있습니다"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "키 파일에 “%s” 그룹이 없습니다"
@@ -4862,31 +4884,31 @@ msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "%4$s 값이 있어야 할 “%2$s” 그룹의 “%1$s” 키가 “%3$s” 값을 지니고 있습니다"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "키 파일의 줄 끝에 이스케이프 문자가 있습니다"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "키 파일에 잘못된 이스케이프 시퀀스 “%s”이(가) 들어 있습니다"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "값 “%s”을(를) 숫자로 해석할 수 없습니다."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "정수 값 “%s”이(가) 범위를 벗어났습니다"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "값 “%s”을(를) 단정도 실수로 해석할 수 없습니다."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "값 “%s”을(를) 불리언 값으로 해석할 수 없습니다."
@@ -4975,11 +4997,11 @@ msgstr ""
 "고 하지 않은 곳에서 & 기호를 사용한 경우입니다 — 이런 경우 &amp; 라고 쓰십시"
 "오"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "문서는 요소로 시작하여야 합니다 (예 <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -4988,7 +5010,7 @@ msgstr ""
 "“%s”은(는) “<” 문자 다음에 쓸 수 없습니다. 이 문자로는 요소 이름을 시작할 수 "
 "없습니다"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -4996,7 +5018,12 @@ msgid ""
 msgstr ""
 "이상한 문자 “%s”.  빈 요소 “%s” 태그를 끝내는 “>” 문자가 나타나야 합니다"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "“%s” 요소에 속성이 너무 많습니다"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5004,7 +5031,7 @@ msgstr ""
 "이상한 문자 “%1$s”.  요소 “%3$s”의 속성 이름 “%2$s” 다음에 “=”이 나타나야 합"
 "니다"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5014,7 +5041,7 @@ msgstr ""
 "이상한 문자 “%s”.  요소 “%s”의 시작 태그를 끝내는 “>” 혹은 “/”가 나타나거나, "
 "속성이 나와야 합니다. 아마도 속성 이름에 잘못된 문자를 쓴 경우입니다."
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5023,7 +5050,7 @@ msgstr ""
 "이상한 문자 “%1$s”.  요소 “%3$s”의 속성 “%2$s”의 값을 부여할 때 “=” 기호 다음"
 "에 따옴표가 나타나야 합니다"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5032,7 +5059,7 @@ msgstr ""
 "“%s”은(는) “</” 다음에 쓸 수 있는 문자가 아닙니다. “%s”은(는) 요소 이름을 시"
 "작할 수 없습니다"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5041,25 +5068,25 @@ msgstr ""
 "“%s”은(는) 요소 “%s”을(를) 닫은 다음에 쓸 수 있는 문자가 아닙니다. “>” 문자"
 "를 쓸 수 있습니다"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "“%s” 요소는 닫혔고, 현재 아무 요소도 열려 있지 않습니다"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "“%s” 요소는 닫혔고, 현재 열려 있는 요소는 “%s”입니다"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "문서가 비어있거나 공백문자만 들어 있습니다"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "“<” 바로 다음에 문서가 갑작스럽게 끝났습니다"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5068,7 +5095,7 @@ msgstr ""
 "요소가 열려 있는 상태로 문서가 갑작스럽게 끝났습니다 — 마지막에 열려 있던 요"
 "소는 “%s”입니다"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5076,19 +5103,19 @@ msgid ""
 msgstr ""
 "문서가 갑작스럽게 끝났습니다.  <%s/> 태그를 끝내는 > 기호가 나타나야 합니다"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "요소 이름에서 문서가 갑작스럽게 끝났습니다"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "에트리뷰트 이름에서 문서가 갑작스럽게 끝났습니다"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "요소의 열기 태그 안에서 문서가 갑작스럽게 끝났습니다."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5096,80 +5123,80 @@ msgstr ""
 "속성 이름 다음의 = 기호 다음에서 문서가 갑작스럽게 끝났습니다. 속성 값이 없습"
 "니다"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "속성 값 안에서 문서가 갑작스럽게 끝났습니다"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "“%s” 요소의 닫기 태그 안에서 문서가 갑작스럽게 끝났습니다"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr "“%s” 요소의 닫기 태그 안에서 문서가 갑작스럽게 끝났습니다"
 
 # FIXME: processing instruction?
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "주석문 혹은 처리 안내자 태그 안에서 문서가 갑작스럽게 끝났습니다"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[옵션…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "도움말 옵션:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "도움말 옵션을 봅니다"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "모든 도움말 옵션을 봅니다"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "프로그램 옵션:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "옵션:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "%2$s에 대한 정수 값 “%1$s”을(를) 분석할 수 없습니다"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "%2$s에 대한 정수 값 “%1$s”이(가) 범위를 벗어났습니다"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "%2$s에 대한 배정도 실수 값 “%1$s”을(를) 분석할 수 없습니다"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "%2$s에 대한 배정도 실수 값 “%1$s”이(가) 범위를 벗어났습니다"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "옵션 읽는 중에 오류: %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "%s에 대한 인자가 빠졌습니다"
 
-#: glib/goption.c:2182
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "알 수 없는 옵션 %s"
@@ -5574,77 +5601,77 @@ msgstr "텍스트가 비어 있음(또는 공백만 들어 있음)"
 msgid "Failed to read data from child process (%s)"
 msgstr "하위 프로세스에서 데이터를 읽기 실패 (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "하위 프로세스에서 데이터를 읽는 중 select()에서 예상치 못한 오류 (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "하위 프로세스에서 데이터를 읽는 중 예상치 못한 오류 (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "waitpid()에서 예상치 못한 오류 (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "하위 프로세스가 %ld 코드로 끝났습니다"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "하위 프로세스가 %ld 시그널로 죽었습니다"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "하위 프로세스가 %ld 시그널로 멈췄습니다"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "하위 프로세스가 예기치 않게 끝났습니다"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "하위 파이프로 부터 읽기 실패 (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "하위 프로세스 “%s”을(를) 실행하기 실패 (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "포크 실패 (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "디렉터리 “%s”(으)로 바꾸기 실패 (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "하위 프로세스 “%s”을(를) 실행하기 실패 (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "하위 프로세스(%s)의 입력 또는 출력의 리다이렉트 실패"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "하위 프로세스(%s) 생성 실패"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "하위 프로세스 “%s”을(를) 실행하는 중 알 수 없는 오류"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "하위 PID 파이프에서 필요한 데이터를 읽는데 실패했습니다 (%s)"
@@ -5696,207 +5723,207 @@ msgstr ""
 "하위 프로세스에서 데이터를 읽는중 g_io_channel_win32_poll()에서 예기치 못한 "
 "오류"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "빈 문자열은 숫자가 아닙니다"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s”은(는) 부호 있는 숫자가 아닙니다"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "“%s” 숫자가 [%s, %s] 범위를 벗어납니다"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s”은(는) 부호 없는 숫자가 아닙니다"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "메모리를 할당하는데 실패했습니다"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "UTF-8 문자 범위를 벗어났습니다"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "변환 입력 순서가 잘못되었습니다"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "UTF-16 문자 범위를 벗어났습니다"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2326
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2328
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2330
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2332
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2334
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2336
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2340
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2342
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2344
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2346
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2360
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2374
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2412 glib/gutils.c:2529
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u 바이트"
 
-#: glib/gutils.c:2416
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u 비트"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2483
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s 바이트"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2488
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5907,32 +5934,32 @@ msgstr[0] "%s 비트"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2542
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2547
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2552
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2557
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2562
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2567
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 738c434..7116169 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,14 +7,14 @@
 # Gintautas Miliauskas <gintas@akl.lt>, 2007, 2008.
 # Rimas Kudelis <rq@akl.lt>, 2010.
 # Algimantas Margevičius <gymka@mail.ru>, 2011.
-# Aurimas Černius <aurisc4@gmail.com>, 2010-2019.
+# Aurimas Černius <aurisc4@gmail.com>, 2010-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: lt\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-27 13:18+0000\n"
-"PO-Revision-Date: 2019-09-01 22:33+0300\n"
+"POT-Creation-Date: 2020-02-06 23:52+0000\n"
+"PO-Revision-Date: 2020-02-08 14:26+0200\n"
 "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
 "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
 "Language: lt\n"
@@ -23,7 +23,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
 "%100<10 || n%100>=20) ? 1 : 2)\n"
-"X-Generator: Gtranslator 3.32.1\n"
+"X-Generator: Gtranslator 3.34.0\n"
 "X-Project-Style: gnome\n"
 
 #: gio/gapplication.c:500
@@ -280,7 +280,7 @@ msgstr "Srautas jau užvertas"
 msgid "Truncate not supported on base stream"
 msgstr "Trumpinimas sraute nepalaikomas"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -300,22 +300,22 @@ msgstr "Nepakanka paskirties vietos"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Klaidinga baitų seka keitimo įvedime"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Klaida keitimo metu: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Atšaukiamas inicijavimas nepalaikomas"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Keitimas iš koduotės „%s“ į koduotę „%s“ nepalaikomas"
@@ -339,19 +339,23 @@ msgstr "Nežinomas tipas"
 msgid "%s filetype"
 msgstr "%s failo tipos"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials turi nekorektiškus duomenis"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials nerealizuota šioje operacinėje sistemoje"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Jūsų platformoje nėra GCredentials palaikymo"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials neturi proceso ID šioje OS"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Įgaliojimų apgavimas neįmanomas šioje operacinėje sistemoje"
 
@@ -359,7 +363,7 @@ msgstr "Įgaliojimų apgavimas neįmanomas šioje operacinėje sistemoje"
 msgid "Unexpected early end-of-stream"
 msgstr "Netikėta ankstyva srauto pabaiga"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepalaikomas raktas „%s“ adreso įvestyje „%s“"
@@ -378,32 +382,28 @@ msgstr ""
 "Adresas „%s“ nėra tinkamas (reikia įvesti vienintelį path, dir, tmpdir arba "
 "abstract raktą)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Klaida adrese „%s“ - neteisingai suformuotas prievado atributas"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Klaida adrese „%s“ - neteisingai suformuotas šeimos atributas"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Klaida adrese „%s“ — neteisingai suformuotas atributas „%s“"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Nežinomas arba nepalaikomas duomenų perdavimas „%s“ adresui „%s“"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adreso elementas „%s“ neturi dvitaškio (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transporto pavadinimas adreso elemente „%s“ negali būti tuščias"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -411,7 +411,7 @@ msgid ""
 msgstr ""
 "Rakto/reikšmės pora %d, „%s“, adreso elementas „%s“ neturi lygybės ženklo"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -419,7 +419,7 @@ msgstr ""
 "Rakto/reikšmės pora %d, „%s“, adreso elemente „%s“ negali turėti lygybės "
 "ženklo"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -428,7 +428,7 @@ msgstr ""
 "Klaida šalinant kaitą rakte ar reikšmėje rakto/reikšmės poroje %d, „%s“ "
 "adreso elemente „%s“"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -437,82 +437,82 @@ msgstr ""
 "Klaida adrese „%s“ - unix duomenų perdavimas reikalauja nustatyti vienintelį "
 "iš raktų 'path' arba 'abstract'"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Klaida adrese „%s“ - pagrindinio kompiuterio atributas neįvestas arba blogai "
 "suformuotas"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Klaida adrese „%s“ - prievado atributas neįvestas arba blogai suformuotas"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Klaida adrese „%s“ - laikino failo atributas neįvestas arba blogai "
 "suformuotas"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Klaida automatiškai paleidžiant: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Klaida atveriant vienkartinio kodo failą „%s“: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Klaida skaitant iš vienkartinio kodo failo „%s“: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Klaida skaitant iš vienkartinio kodo failo „%s“, tikėtasi 16 baitų, gauta %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Klaida rašant vienkartinio kodo failo turinį „%s“ į srautą:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Pateiktasis adresas yra tuščias"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Negalima paleisti pranešimų magistralės kai vyksta setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Negalima paleisti pranešimų magistralės be mašinos id: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Negalima automatiškai paleisti D-Bus be X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Klaida paleidžiant komandų eilutę „%s“: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nepavyko nustatyti sesijos magistralės adreso (nerealizuota šiai operacinei "
 "sistemai)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -521,7 +521,7 @@ msgstr ""
 "Nepavyko nustatyti magistralės adreso iš DBUS_STARTER_BUS_TYPE aplinkos "
 "kintamojo - nežinoma reikšmė „%s“"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -529,20 +529,20 @@ msgstr ""
 "Nepavyko nustatyti magistralės adreso, kadangi DBUS_STARTER_BUS_TYPE "
 "aplinkos kintamasis nenustatytas"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Nežinomas magistralės tipas %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Netikėtas turinio trūkumas bandant nuskaityti eilutę"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Netikėtas turinio trūkumas bandant (saugiai) nuskaityti eilutę"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -550,16 +550,16 @@ msgstr ""
 "Baigėsi visi turimi tapatybės patvirtinimo mechanizmai (bandyta: %s) "
 "(turimi: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Atšaukta per GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Klaida gaunant informaciją apie katalogą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -567,23 +567,23 @@ msgstr ""
 "Katalogo „%s“ leidimai yra suformuoti neteisingai. Tikėtasi mode 0700, gauta "
 "0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Klaida kuriant katalogą %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Klaida atveriant raktinę „%s“ skaitymui: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "%d eilutė raktinės vietoje „%s“ su turiniu „%s“ yra suformuota neteisingai"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -591,7 +591,7 @@ msgstr ""
 "Pirmoji leksema raktinės %d eilutės vietoje „%s“ su turiniu „%s“ yra "
 "suformuota neteisingai"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -599,37 +599,37 @@ msgstr ""
 "Antroji leksema raktinės %d eilutės vietoje „%s“ su turiniu „%s“ yra "
 "suformuota neteisingai"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nerastas slapukas su id %d raktinės vietoje „%s“"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Klaida trinant nebegaliojantį rakinimo failą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Klaida kuriant rakinimo failą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Klaida užveriant (nesusietą) rakinimo failą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Klaida atsiejant rakinimo failą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Klaida atveriant raktinę „%s“ rašymui: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Papildomai, užrakto atlaisvinimas „%s“ taip pat nepavyko: %s) "
@@ -647,105 +647,105 @@ msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "Nepalaikomi požymiai aptikti konstruojant kliento pusės ryšį"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Nėra sąsajos „org.freedesktop.DBus.Properties“ objektui, kurio kelias %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Nėra savybės „%s“"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Savybė „%s“ yra neskaitoma"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Savybė „%s“ nėra rašoma"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "Klaida nustatant savybę „%s“: tikėtasi tipo „%s“, bet gauta „%s“"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Nėra sąsajos „%s“"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Nėra sąsajos „%s“ objektui, kurio kelias %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Nėra metodo „%s“"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Pranešimo tipas „%s“ neatitinka laukiamo tipo „%s“"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Jau yra eksportuotas objektas sąsajai %s vietoje %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nepavyko gauti savybės: %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nepavyko nustatyti savybės: %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metodas „%s“ grąžino tipą „%s“, bet laukta „%s“"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metodas „%s“ sąsajoje „%s“ su signatūra „%s“ neegzistuoja"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Pomedis %s jau yra eksportuotas"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "tipas yra NETINKAMAS"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL pranešimas: trūksta antraštės lauko PATH arba MEMBER"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN pranešimas: trūksta REPLY_SERIAL antraštės"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR pranešimas: antraštės lauke trūksta REPLY_SERIAL arba ERROR_NAME"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL pranešimas: trūksta antraštės lauko PATH, INTERFACE arba MEMBER"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -753,7 +753,7 @@ msgstr ""
 "SIGNAL pranešimas: antraštės laukas PATH naudoja rezervuotą reikšmę /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -761,7 +761,7 @@ msgstr ""
 "SIGNAL pranešimas: antraštės laukas INTERFACE naudoja rezervuotą reikšmę org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -769,12 +769,12 @@ msgstr[0] "Norėta nuskaityti %lu baitą, bet gauta tik %lu"
 msgstr[1] "Norėta nuskaityti %lu baitus, bet gauta tik %lu"
 msgstr[2] "Norėta nuskaityti %lu baitų, bet gauta tik %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Tikėtasi NUL baito po simbolių eilutės „%s“, bet rastas baitas %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -783,17 +783,21 @@ msgstr ""
 "Tikėtasi teisingos UTF-8 eilutės, bet rasta neteisingų baitų poslinkiu %d "
 "(eilutės ilgis yra %d). Teisinga UTF-8 eilutė iki tos vietos buvo „%s“"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Vertė yra per giliai"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Perskaityta reikšmė „%s“ nėra tinkamas D-Bus objekto kelias"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Perskaityta reikšmė „%s“ nėra tinkama D-Bus signatūra"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -806,7 +810,7 @@ msgstr[1] ""
 msgstr[2] ""
 "Aptiktas %u baitų ilgio masyvas. Maksimalus ilgis yra 2<<26 baitų (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -815,19 +819,19 @@ msgstr ""
 "Aptiktas „a%c“ tipo masyvas, tikėtasi %u kartotinio baitų ilgio, bet rasta "
 "%u baitų ilgyje"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Perskaityta reikšmė „%s“ variantui nėra tinkama D-Bus signatūra"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Klaida atstatant GVariant su tipo eilute „%s“ iš D-Bus telegramos formato"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -836,29 +840,29 @@ msgstr ""
 "Netinkama baitų eiliškumo reikšmė. Tikėtasi 0x6c („l“) arba 0x42 („B“), bet "
 "rasta 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Netinkama pagrindinė protokolo versija. Tikėtasi 1, bet rasta %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Rasta signatūros antraštė, bet ji nėra signatūros tipo"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signatūros antraštė su signatūra „%s“ rasta, bet pranešimo pagrindinė dalis "
 "tuščia"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "Perskaityta reikšmė „%s“ nėra tinkama D-Bus signatūra (pagrindinei daliai)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -872,35 +876,35 @@ msgstr[2] ""
 "Nėra signatūros antraštės pranešime, bet pranešimo pagrindinė dalis yra %u "
 "baitų"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Nepavyko atstatyti pranešimo: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Klaida paverčiant GVariant su tipo eilute „%s“ į D-Bus telegramos formatą"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Failo deskriptorių skaičius žinutėje (%d) skiriasi nuo antraštės lauko (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Nepavyko išsaugoti pranešimo: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Pranešimo pagrindinė dalis turi signatūrą „%s“, bet nėra signatūros antraštės"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -909,38 +913,38 @@ msgstr ""
 "Pranešimo pagrindinė dalis turi tipo signatūrą „%s“, bet signatūra antraštės "
 "lauke yra „%s“"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Pranešimo pagrindinė dalis yra tuščia, bet signatūra antraštės lauke yra "
 "„(%s)“"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Klaidos grąžinimas su pagrindinės dalies tipu „%s“"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Klaidos grąžinimas su tuščia pagrindine dalimi"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Spauskite bet kurį klavišą šiam langui užverti)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Seanso dbus neveikia, automatinis paleidimas nepavyko"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nepavyko gauti aparatūros profilio: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Nepavyko įkelti /var/lib/dbus/machine-id or /etc/machine-id: "
 
@@ -964,25 +968,25 @@ msgstr ""
 "savininko ir proxy buvo sukonstruotas su "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START požymiu"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Abstrakti vardų sritis nepalaikoma"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Negalima nurodyti laikino failo kuriant serverį"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Klaida rašant vienkartinio kodo failą vietoje „%s“: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Eilutė „%s“ nėra tinkamas D-Bus GUID"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Negalima laukti duomenų iš nepalaikomo perdavimo „%s“"
@@ -1261,38 +1265,38 @@ msgstr "Klaida: per daug argumentų.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Klaida: %s nėra tinkamas gerai žinomas magistralės pavadinimas.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Nepavadinta"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Darbalaukio failas nenurodė Exec lauko"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Nerastas terminalas, reikalingas programai"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Nepavyko sukurti naudotojo nustatymų aplanko %s: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nepavyko sukurti naudotojo MIME nustatymų aplanko %s: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Programos informacijai trūksta identifikatoriaus"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nepavyko sukurti naudotojo darbalaukio failo %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Specialus apibrėžimas %s"
@@ -1354,12 +1358,12 @@ msgstr "Netinkamas leksemų skaičius (%d) GEmblemedIcon koduotėje"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Tikėtasi GEmblem skirto GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operacija nepalaikoma"
@@ -1368,69 +1372,73 @@ msgstr "Operacija nepalaikoma"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Tėvinis prijungimo taškas neegzistuoja"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Negalima kopijuoti ant aplanko viršaus"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Negalima kopijuoti aplanko ant aplanko"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Nurodytas failas jau egzistuoja"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Negalima rekursyviai kopijuoti aplanko"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Skaidymas nepalaikomas"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Klaida skaidant failą: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopijavimas (reflink/clone) tarp prijungimo taškų nepalaikomas"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopijavimas (reflink/clone) nepalaikomas arba netinkamas"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopijavimas (reflink/clone) nepalaikomas arba nesuveikė"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Negalima kopijuoti specialaus failo"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Netaisyklinga simbolinės nuorodos reikšmė"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Simbolinės nuorodos nepalaikomos"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Šiukšlės nepalaikomos"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Failų pavadinimuose negali būti '%c'"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "tomas nepalaiko prijungimo"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Nėra programos, priregistruotos kaip skaitančios šį failą"
 
@@ -1475,7 +1483,7 @@ msgstr "Trumpinimas įėjimo srauto nepalaikomas"
 msgid "Truncate not supported on stream"
 msgstr "Trumpinimas srauto nepalaikomas"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Klaidingas kompiuterio vardas"
@@ -1592,7 +1600,7 @@ msgstr "Palikti kartu su failu kai perkeliama"
 msgid "“version” takes no arguments"
 msgstr "„version“ nepriima argumentų"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Naudojimas:"
 
@@ -1678,10 +1686,10 @@ msgid "Error writing to stdout"
 msgstr "Klaida rašant į standartinę išvestį"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1701,56 +1709,60 @@ msgstr ""
 "GIO vietas vietoj vietinių failų: pavyzdžiui, galite kaip vietą naudoti\n"
 "smb://serveris/išteklius/failas.txt."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Nepateikta vietų"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Nėra paskirties katalogo"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Rodyti eigą"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Klausti prieš perrašant"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Išlaikyti visus atributus"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Padaryti esamų paskirties failų atsargines kopijas"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Niekada neleisti simbolinių nuorodų"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Naudoti numatytuosius leidimus paskirties vietai"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Perduota %s iš %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "ŠALTINIS"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "PASKIRTIS"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Kopijuoti vieną ar daugiau failų iš ŠALTINIO į PASKIRTĮ."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1760,88 +1772,98 @@ msgstr ""
 "vietas vietoj vietinių failų: pavyzdžiui galite naudoti kaip vietą\n"
 "smb://serveris/išteklius/failas.txt."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Paskirtis %s nėra katalogas"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: perrašyti „%s“? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Išvardinti keičiamus atributus"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Gauti failų sistemos informaciją"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Kuriuos atributus gauti"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTAI"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Nesekti simbolinėmis nuorodomis"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atributai:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "rodomas pavadinimas: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "keičiamas pavadinimas: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "pavadinimas: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "tipas: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "dydis: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "paslėptas\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "vietinis kelias: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix prijungimas: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Nustatomi atributai:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Rašomų atributų vardų sritys:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Rodyti informaciją apie vietas."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1855,23 +1877,27 @@ msgstr ""
 "nurodyti jų GIO pavadinimais, pvz. standard::icon, arba tiesiog\n"
 "pagal vardų sritį, pvz. unix, arba „*“, kuri atitinka visus atributus"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Rodyti paslėptus failus"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Naudoti ilgą išvardinimo formatą"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Atspausdinti vaizduoklių pavadinimus"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Spausdinti pilnus URI"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Išvardinti vietų turinį."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2001,12 +2027,12 @@ msgid "Mount as mountable"
 msgstr "Prijungti kaip prijungiamą"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Prijungti laikmeną su įrenginio failu"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Prijungti laikmeną su įrenginio failu ar kitu identifikatoriumi"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "ĮRENGINYS"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2020,6 +2046,10 @@ msgstr "Išstumti"
 msgid "Stop drive with device file"
 msgstr "Sustabdyti laikmeną su įrenginio failu"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "ĮRENGINYS"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Atjungti visus prijungimus su pateikta schema"
@@ -2073,16 +2103,11 @@ msgstr "Neleidžiama anoniminė prieiga"
 msgid "No drive for device file"
 msgstr "Nėra laikmenos ar įrenginio failo"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s prijungta kelyje %s\n"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Nėra laikmenos pateiktam ID"
 
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Nėra laikmenos ar įrenginio failo"
-
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Prijungti ar atjungti vietas."
 
@@ -2748,9 +2773,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:1993
 #, c-format
-#| msgid ""
-#| "Cannot provide per-desktop overrides for localised key “%s” in schema "
-#| "“%s” (override file “%s”); ignoring override for this key."
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”); ignoring override for this key."
@@ -2760,9 +2782,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2002
 #, c-format
-#| msgid ""
-#| "Cannot provide per-desktop overrides for localised key “%s” in schema "
-#| "“%s” (override file “%s”) and --strict was specified; exiting."
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”) and --strict was specified; exiting."
@@ -2895,7 +2914,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Nepavyko pervadinti failo, failo vardas jau užimtas"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Netaisyklingas failo vardas"
 
@@ -2969,129 +2988,125 @@ msgstr "Failų sistema nepalaiko simbolinių nuorodų"
 msgid "Error making symbolic link %s: %s"
 msgstr "Klaida kuriant simbolinę nuorodą %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Simbolinės nuorodos nepalaikomos"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Klaida perkeliant failą %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Negalima perkelti aplanko ant aplanko"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Atsarginės kopijos sukūrimas nesėkmingas"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Klaida trinant nurodytą failą: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Perkėlimas tarp prijungimo taškų nepalaikomas"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Nepavyko nustatyti %s disko naudojimo: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Atributo reikšmė turi būti netuščia"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "netaisyklingas atributo tipas (tikimasi simbolių sekos)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "netaisyklingas išplėstinio atributo pavadinimas"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Klaida nustatant išplėstinį atributą „%s“: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (netaisyklinga koduotė)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Klaida gaunant informaciją apie failą „%s“: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Klaida gaunant informaciją failo aprašymui: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Klaidingas atributo tipas (tikimasi uint32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Klaidingas atributo tipas (tikimasi uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Klaidingas atributo tipas (tikimasi baitų sekos)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Simbolinėms nuorodoms teisių nustatyti negalima"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Klaida nustatant teises: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Klaida nustatant savininką: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "simbolinė nuoroda turi būti netuščia"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Klaida nustatant simbolinę nuorodą: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Klaida, nustatant simbolinę nuorodą: failas nėra simbolinė nuoroda"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Klaida nustatant pakeitimo arba prieigos laiką: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux kontekstas būti nelygus NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Klaida nustatant SELinux kontekstą: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux šioje sistemoje neįjungtas"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Atributo %s nustatymas nepalaikomas"
@@ -3114,7 +3129,7 @@ msgstr "Klaida keičiant poziciją faile: %s"
 msgid "Error closing file: %s"
 msgstr "Klaida užveriant failą: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Nepavyko rasti numatytojo vietinių failų stebyklės tipo"
 
@@ -3261,11 +3276,11 @@ msgstr "prijungimo taškas nepalaiko sinchroninio turinio tipo spėjimo"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Mazgo varde „%s“ yra ženklas „[“, bet nėra „]“"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Tinklas nepasiekiamas"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Serveris nepasiekiamas"
 
@@ -3306,18 +3321,18 @@ msgstr "%s perduotų vektorių suma yra per didelė"
 msgid "Source stream is already closed"
 msgstr "Šaltinio srautas jau užvertas"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Klaida surandant „%s“: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s nerealizuota"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Neteisinga sritis"
 
@@ -3692,173 +3707,173 @@ msgstr "Pateiktas tuščias schemos pavadinimas\n"
 msgid "No such key “%s”\n"
 msgstr "Nėra rakto „%s“\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Netinkamas lizdas, nepavyko inicijuoti"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Netinkamas lizdas, nepavyko inicijuoti: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Lizdas jau užvertas"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Lizdo I/O baigėsi laikas"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "iš fd kuriamas GSocket: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nepavyko sukurti lizdo: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Nurodyta nežinoma šeima"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Nurodytas nežinomas protokolas"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Negalima naudoti duomenų paketo operacijų ne duomenų paketo lizdui."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Negalima naudoti duomenų paketo operacijų lizdui su laiko limito rinkiniu."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nepavyko gauto lokalaus adreso: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nepavyko gauti nuotolinio adreso: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "nepavyko klausytis: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Susiejimo su adresu klaida: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Susiejimo su adresu %s klaida: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Klaida prisijungian prie transliavimo grupės: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Klaida paliekant transliavimo grupę: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Nėra resursams specifinio transliavimo palaikymo"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Nepalaikoma lizdo šeima"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "ištekliams specifinis nėra IPv4 adresas"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Per ilgas sąsajos pavadinimas"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Sąsaja nerasta: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Nėra IPv4 ištekliams specifinio transliavimo palaikymo"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Nėra palaikymo, skirto IPv4 ištekliams specifiniam transliavimui"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Klaida priimant ryšį: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Prisijungiama"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Nepavyko gauti laukiančios klaidos: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Klaida priimant duomenis: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Klaida siunčiant duomenis: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nepavyko išjungti lizdo: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Klaida užveriant lizdą: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Laukiama lizdo būsenos: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Klaida siunčiant pranešimą: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "„Windows“ sistemoje „GSocketControlMessage“ nepalaikoma"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Klaida priimant pranešimą: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nepavyko perskaityti lizdo įgaliojimų: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials nerealizuota šiai operacinei sistemai"
 
@@ -4124,7 +4139,7 @@ msgstr "Klaida skaitant failą: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Klaida užveriant failą: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Failų sistemos šaknis"
 
@@ -4211,72 +4226,72 @@ msgstr "Blogi argumentai\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Netikėtas atributas „%s“ elementui „%s“"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Nerastas elemento „%2$s“ atributas „%1$s“"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Netikėta žyma „%s“, tikėtasi žymos „%s“"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Netikėta žyma „%s“ „%s“ viduje"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Netinkama data/laikas „%s“ gairių faile"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Duomenų aplankuose nerasta tinkamo žymelių failo"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "URI „%s“ žymelė jau yra"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Nerasta žymelė URI „%s“"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "URI „%s“ žymelėje neapibrėžtas MIME tipas"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "URI „%s“ žymelėje neapibrėžta privati vėliavėlė"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "URI „%s“ žymelėje nenurodyta jokia grupė"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Nėra programos pavadinimu „%s“ registravusios „%s“ žymelę"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Nepavyko išskleisti vykdomosios eilutės „%s“ su URI „%s“"
@@ -4285,8 +4300,8 @@ msgstr "Nepavyko išskleisti vykdomosios eilutės „%s“ su URI „%s“"
 msgid "Unrepresentable character in conversion input"
 msgstr "Neatvaizduojamas simbolis keitimo įvestyje"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Nepilna simbolio seka įvedimo pabaigoje"
 
@@ -4829,24 +4844,24 @@ msgstr "Šablone „%s“ nėra XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Nepavyko perskaityti simbolinės nuorodos „%s“: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Nepavyko atverti keitiklio iš „%s“ į „%s“: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Negalima vykdyti tiesioginio skaitymo iš g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Nepakeistų duomenų likučiai skaitymo buferyje"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Kanalas pasibaigia nepilnu simboliu"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Negalima vykdyti tiesioginio skaitymo iš g_io_channel_read_to_end"
 
@@ -4886,8 +4901,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Raktų faile yra nepalaikoma koduotė „%s“"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Raktų failas neturi grupės „%s“"
@@ -4922,32 +4937,32 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Raktas „%s“ grupėje „%s“ turi reikšmę „%s“, nors tikimasi %s"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Raktų faile, eilutės pabaigoje yra pabėgimo simbolis"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Raktų faile yra klaidinga kaitos eilutė „%s“"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Reikšmės „%s“ negalima interpretuoti kaip skaičiaus."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Sveikoji reikšmė „%s“ viršija ribas"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 "Reikšmės „%s“ negalima interpretuoti kaip slankiojo kablelio skaičiaus."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Reikšmės „%s“ negalima interpretuoti kaip loginės."
@@ -5036,11 +5051,11 @@ msgstr ""
 "Elementas nepasibaigė kabliataškiu; greičiausiai Jūs panaudojote ampersendo "
 "simbolį nepradėdami elemento įvedimo – pakeiskite ampersendą įvesdami &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokumentas turėtų prasidėti elementu (pvz., <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5048,7 +5063,7 @@ msgid ""
 msgstr ""
 "„%s“ negali būti rašomas po „<“ simbolio; jis nepradeda jokio elemento vardo"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5057,7 +5072,12 @@ msgstr ""
 "Neįprastas simbolis „%s“, tikėtasi sulaukti „>“ simbolio, užbaigiančio "
 "tuščią žymą „%s“"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Per daug atributų elemente „%s“"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5065,7 +5085,7 @@ msgstr ""
 "Neįprastas simbolis „%1$s“, tikėtasi sulaukti „=“ po elemento „%3$s“ "
 "atributo vardo „%2$s“"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5076,7 +5096,7 @@ msgstr ""
 "užbaigiančių elementą „%s“, arba papildomo požymio; gal Jūs panaudojote "
 "netinkama simbolį požymio varde"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5085,7 +5105,7 @@ msgstr ""
 "Neįprastas simbolis „%1$s“, po lygybės tikėtasi sulaukti atidarančio "
 "citavimo simbolio pradedant „%3$s“ elemento „%2$s“ atributo reikšmę."
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5093,7 +5113,7 @@ msgid ""
 msgstr ""
 "„%s“ negali būti rašomas po simbolių „</“; „%s“ negali pradėti elemento vardo"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5102,29 +5122,29 @@ msgstr ""
 "„%s“ negali būti rašomas po uždarančio elemento vardo „%s“; leistinas "
 "simbolis yra „>“"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr ""
 "Elemento „%s“ uždarymo simbolis sutiktas anksčiau už elemento atidarymo "
 "simbolį"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr ""
 "Sutiktas elemento „%s“ uždarymo simbolis, tačiau šiuo metu atidarytas kitas "
 "elementas „%s“"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokumentas tuščias arba susideda tik iš tarpų"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Dokumentas netikėtai pasibaigė tuoj po atidarančių skliaustų „<“"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5133,7 +5153,7 @@ msgstr ""
 "Dokumentas netikėtai pasibaigė neuždarius dalies elementų – „%s“ yra "
 "paskutinis atviras elementas"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5142,19 +5162,19 @@ msgstr ""
 "Dokumentas netikėtai pasibaigė, tikėtasi uždarančių skliaustų simbolio, "
 "užbaigiančio žymą <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokumentas netikėtai pasibaigė elemento varde"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokumentas netikėtai pasibaigė požymio varde"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokumentas netikėtai pasibaigė elemento atvėrimo žyma."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5162,80 +5182,80 @@ msgstr ""
 "Dokumentas netikėtai pasibaigė lygybės simboliu einančio po požymio vardo; "
 "nerasta požymio reikšmė"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokumentas netikėtai pasibaigė požymio verte"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Dokumentas netikėtai pasibaigė žymos „%s“ uždarančiame simbolyje"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr "Dokumentas netikėtai pasibaigė neatidaryto elemento uždarymo žymoje"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Dokumentas netikėtai pasibaigė komentaruose arba apdorojimo instrukcijose"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[PARAMETRAS…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Pagalbos parametrai:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Rodyti pagalbos parametrus"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Rodyti visus pagalbos parametrus"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Programos parametrai:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Parametrai:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Nepavyko perskaityti sveikosios reikšmės „%s“, reikalingos %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Sveikoji reikšmė „%s“, reikalinga %s, viršija ribas"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Nepavyko apdoroti dvigubos reikšmės „%s“, reikalingos %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "Dviguboji reikšmė „%s“, reikalinga %s, viršija ribas"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Klaida apdorojant parametrą %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "%s trūksta argumento"
 
-#: glib/goption.c:2182
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Nežinomas parametras %s"
@@ -5639,79 +5659,77 @@ msgstr "Tekstas buvo tuščias arba turėjo vien tik tarpo simbolius)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Nepavyko gauti duomenis iš antrinio proceso (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Netikėta klaida tarp select() funkcijos duomenų gavimo iš antrinio proceso "
-"(%s) metu"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Netikėta klaida skaitant duomenis žiš antrinio proceso (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Netikėta waitpid() klaida (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Vaikinis procesas išėjo su kodu %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Vaikinis procesas nutrauktas signalu %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Vaikinis procesas sustabdytas signalu %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Vaikinis procesas išėjo nenormaliai"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Nepavyko perskaityti duomenų iš antrinio konvejerio (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Nepavyko paleisti antrinio proceso „%s“ (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Nepavyko atskirti (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Nepavyko pereiti į aplanką „%s“ (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Nepavyko paleisti antrinio proceso „%s“ (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Nepavyko perimti antrinio proceso (%s) išvedimo arba įvedimo"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Nepavyko atskirti antrinio proceso (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Nežinoma klaida vykdant antrinį procesą „%s“"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5766,187 +5784,187 @@ msgstr ""
 "Netikėta klaida tarp g_io_channel_win32_poll() funkcijos duomenų skaitymo iš "
 "antrinio proceso metu"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Tuščia simbolių eilutė nėra skaičius"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s“ nėra skaičius su ženklu"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Skaičius „%s“ yra už [%s, %s] ribų"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s“ nėra skaičius be ženklo"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Nepavyko išskirti atminties"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Simbolis neatitinka UTF-8 simbolių diapazono"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Klaidinga seka keitimo įvestyje"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Simbolis neatitinka UTF-16 simbolių diapazono"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2326
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2328
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2330
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2332
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2334
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2336
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2340
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2342
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2344
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2346
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2360
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2374
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2412 glib/gutils.c:2529
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -5954,7 +5972,7 @@ msgstr[0] "%u baitas"
 msgstr[1] "%u baitai"
 msgstr[2] "%u baitų"
 
-#: glib/gutils.c:2416
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5963,7 +5981,7 @@ msgstr[1] "%u bitai"
 msgstr[2] "%u bitų"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2483
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5972,7 +5990,7 @@ msgstr[1] "%s baitai"
 msgstr[2] "%s baitų"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2488
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5985,36 +6003,42 @@ msgstr[2] "%s bitų"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2542
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2547
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2552
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2557
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2562
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2567
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Klaida adrese „%s“ - neteisingai suformuotas šeimos atributas"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "%s prijungta kelyje %s\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; nepaisoma šio rakto perrašymo.\n"
 
index d69cfb1..0d10858 100644 (file)
--- a/po/ms.po
+++ b/po/ms.po
 msgid ""
 msgstr ""
 "Project-Id-Version: glib HEAD\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
-"product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2011-09-04 23:56-0400\n"
-"PO-Revision-Date: 2004-02-03 02:11+0730\n"
-"Last-Translator: Hasbullah Bin Pit <sebol@my-penguin.org>\n"
-"Language-Team: Projek Gabai <gabai-penyumbang@lists.sourceforge.org>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
+"POT-Creation-Date: 2020-01-10 14:33+0000\n"
+"PO-Revision-Date: 2020-01-27 03:44+0800\n"
+"Last-Translator: abuyop <abuyop@gmail.com>\n"
+"Language-Team: Pasukan Terjemahan GNOME Malaysia\n"
 "Language: ms\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 2.0.6\n"
 
-#: ../glib/gbookmarkfile.c:780
-#, fuzzy, c-format
-msgid "Unexpected attribute '%s' for element '%s'"
-msgstr ""
-"Aksara ganjil  '%s', dijangkakan '=' selepas nama atribut  '%s' unsur  '%s'"
-
-#: ../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 ""
-
-#: ../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 ""
-
-#: ../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 ""
-
-#: ../glib/gbookmarkfile.c:1834
-msgid "No valid bookmark file found in data dirs"
-msgstr ""
-
-#: ../glib/gbookmarkfile.c:2035
-#, c-format
-msgid "A bookmark for URI '%s' already exists"
-msgstr ""
+#: gio/gapplication.c:500
+msgid "GApplication options"
+msgstr "Pilihan GApplication"
 
-#: ../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 ""
-
-#: ../glib/gbookmarkfile.c:2413
-#, c-format
-msgid "No MIME type defined in the bookmark for URI '%s'"
-msgstr ""
-
-#: ../glib/gbookmarkfile.c:2498
-#, c-format
-msgid "No private flag has been defined in bookmark for URI '%s'"
-msgstr ""
+#: gio/gapplication.c:500
+msgid "Show GApplication options"
+msgstr "Tunjuk pilihan GApplication"
 
-#: ../glib/gbookmarkfile.c:2877
-#, c-format
-msgid "No groups set in bookmark for URI '%s'"
+#: gio/gapplication.c:545
+msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
+"Masukkan mod perkhidmatan GApplication (guna dari fail perkhidmatan D-Bus)"
 
-#: ../glib/gbookmarkfile.c:3278 ../glib/gbookmarkfile.c:3435
-#, c-format
-msgid "No application with name '%s' registered a bookmark for '%s'"
-msgstr ""
+#: gio/gapplication.c:557
+msgid "Override the application’s ID"
+msgstr "Batalkan ID aplikasi"
 
-#: ../glib/gbookmarkfile.c:3458
-#, fuzzy, c-format
-msgid "Failed to expand exec line '%s' with URI '%s'"
-msgstr "Gagal membaca pautan simbolik '%s': %s"
+#: gio/gapplication.c:569
+msgid "Replace the running instance"
+msgstr "Ganti tika yang sedang berjalan"
 
-#: ../glib/gconvert.c:567 ../glib/gconvert.c:645 ../glib/giochannel.c:1404
-#: ../gio/gcharsetconverter.c:458
-#, c-format
-msgid "Conversion from character set '%s' to '%s' is not supported"
-msgstr "Penukaran set aksara daripada '%s' ke '%s' tidak disokong"
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
+msgid "Print help"
+msgstr "Cetak bantuan"
 
-#: ../glib/gconvert.c:571 ../glib/gconvert.c:649
-#: ../gio/gcharsetconverter.c:462
-#, fuzzy, c-format
-msgid "Could not open converter from '%s' to '%s'"
-msgstr "tak dapat membuka penukar daripada '%s' kepada '%s': %s"
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
+msgid "[COMMAND]"
+msgstr "[PERINTAH]"
 
-#: ../glib/gconvert.c:768 ../glib/gconvert.c:1162 ../glib/giochannel.c:1576
-#: ../glib/giochannel.c:1618 ../glib/giochannel.c:2461 ../glib/gutf8.c:1012
-#: ../glib/gutf8.c:1463 ../gio/gcharsetconverter.c:345
-#: ../gio/gdatainputstream.c:854 ../gio/gdatainputstream.c:1291
-msgid "Invalid byte sequence in conversion input"
-msgstr "Turutan byte tidak sah pada penukaran iput"
+#: gio/gapplication-tool.c:49 gio/gio-tool.c:228
+msgid "Print version"
+msgstr "Cetak versi"
 
-#: ../glib/gconvert.c:777 ../glib/gconvert.c:1087 ../glib/giochannel.c:1583
-#: ../glib/giochannel.c:2473 ../gio/gcharsetconverter.c:350
-#, c-format
-msgid "Error during conversion: %s"
-msgstr "Ralat semasa penukaran: %s"
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
+msgid "Print version information and exit"
+msgstr "Cetak maklumat versi dan keluar"
 
-#: ../glib/gconvert.c:809 ../glib/gutf8.c:1008 ../glib/gutf8.c:1218
-#: ../glib/gutf8.c:1355 ../glib/gutf8.c:1459
-msgid "Partial character sequence at end of input"
-msgstr "Sebahagian turutan aksara berada di penghujung input"
+#: gio/gapplication-tool.c:52
+msgid "List applications"
+msgstr "Senarai aplikasi"
 
-#: ../glib/gconvert.c:1059
-#, c-format
-msgid "Cannot convert fallback '%s' to codeset '%s'"
-msgstr "Tak dapat tukar unduran '%s' ke set kod '%s'"
+#: gio/gapplication-tool.c:53
+msgid "List the installed D-Bus activatable applications (by .desktop files)"
+msgstr "Senarai aplikasi boleh aktif D-Bus terpasang (mengikut fail .desktop)"
 
-#: ../glib/gconvert.c:1886
-#, fuzzy, c-format
-msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
-msgstr "URI '%s' adalah bukan URI mutlak menggunakan skema fail"
+#: gio/gapplication-tool.c:55
+msgid "Launch an application"
+msgstr "Lancar aplikasi"
 
-#: ../glib/gconvert.c:1896
-#, c-format
-msgid "The local file URI '%s' may not include a '#'"
-msgstr "URI Fail local '%s' mungkin tidak disertakan dengan '#'"
+#: gio/gapplication-tool.c:56
+msgid "Launch the application (with optional files to open)"
+msgstr "Lancarkan aplikasi (dengan fail pilihan untuk dibuka)"
 
-#: ../glib/gconvert.c:1913
-#, c-format
-msgid "The URI '%s' is invalid"
-msgstr "URI '%s' adalah tidak sah"
+#: gio/gapplication-tool.c:57
+msgid "APPID [FILE…]"
+msgstr "APPID [FAIL…]"
 
-#: ../glib/gconvert.c:1925
-#, c-format
-msgid "The hostname of the URI '%s' is invalid"
-msgstr "Namahos URI '%s' tidak sah"
+#: gio/gapplication-tool.c:59
+msgid "Activate an action"
+msgstr "Aktifkan satu tindakan"
 
-#: ../glib/gconvert.c:1941
-#, c-format
-msgid "The URI '%s' contains invalidly escaped characters"
-msgstr "URI '%s' mengandungi aksara escaped yang tidak sah"
+#: gio/gapplication-tool.c:60
+msgid "Invoke an action on the application"
+msgstr "Seru satu tindakan pada aplikasi"
 
-#: ../glib/gconvert.c:2036
-#, c-format
-msgid "The pathname '%s' is not an absolute path"
-msgstr "Nama laluan '%s' adalah bukan laluan mutlak"
+#: gio/gapplication-tool.c:61
+msgid "APPID ACTION [PARAMETER]"
+msgstr "APPID ACTION [PARAMETER]"
 
-#: ../glib/gconvert.c:2046
-msgid "Invalid hostname"
-msgstr "Namahos tidak sah"
+#: gio/gapplication-tool.c:63
+msgid "List available actions"
+msgstr "Senarai tindakan yang tersedia"
 
-#. Translators: 'before midday' indicator
-#: ../glib/gdatetime.c:202
-msgctxt "GDateTime"
-msgid "AM"
-msgstr ""
+#: gio/gapplication-tool.c:64
+msgid "List static actions for an application (from .desktop file)"
+msgstr "Senarai tindakan statik untuk aplikasi (dari fail .desktop)"
 
-#. Translators: 'after midday' indicator
-#: ../glib/gdatetime.c:204
-msgctxt "GDateTime"
-msgid "PM"
-msgstr ""
+#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
+msgid "APPID"
+msgstr "APPID"
 
-#. Translators: this is the preferred format for expressing the date and the time
-#: ../glib/gdatetime.c:207
-msgctxt "GDateTime"
-msgid "%a %b %e %H:%M:%S %Y"
-msgstr "%A %d %b %Y %I:%M:%S %p %Z"
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
+#: gio/gio-tool.c:224
+msgid "COMMAND"
+msgstr "COMMAND"
 
-#. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:210
-msgctxt "GDateTime"
-msgid "%m/%d/%y"
-msgstr "%A %d %b %Y"
+#: gio/gapplication-tool.c:70
+msgid "The command to print detailed help for"
+msgstr "Perintah untuk cetak bantuan terperinci"
 
-#. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:213
-msgctxt "GDateTime"
-msgid "%H:%M:%S"
-msgstr "%I:%M:%S  %Z"
+#: gio/gapplication-tool.c:71
+msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
+msgstr "Pengecam aplikasi dalam format D-Bus (contohnya: org.example.viewer)"
 
-#. Translators: this is the preferred format for expressing 12 hour time
-#: ../glib/gdatetime.c:216
-msgctxt "GDateTime"
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p %Z"
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
+msgid "FILE"
+msgstr "FAIL"
 
-#: ../glib/gdatetime.c:229
-msgctxt "full month name"
-msgid "January"
-msgstr "Januari"
+#: gio/gapplication-tool.c:72
+msgid "Optional relative or absolute filenames, or URIs to open"
+msgstr "Nama fail relatif pilihan atau mutlak, atau URI yang hendak dibuka"
 
-#: ../glib/gdatetime.c:231
-msgctxt "full month name"
-msgid "February"
-msgstr "Februari"
+#: gio/gapplication-tool.c:73
+msgid "ACTION"
+msgstr "ACTION"
 
-#: ../glib/gdatetime.c:233
-msgctxt "full month name"
-msgid "March"
-msgstr "Mac"
+#: gio/gapplication-tool.c:73
+msgid "The action name to invoke"
+msgstr "Nama tindakan yang diseru"
 
-#: ../glib/gdatetime.c:235
-msgctxt "full month name"
-msgid "April"
-msgstr "April"
+#: gio/gapplication-tool.c:74
+msgid "PARAMETER"
+msgstr "PARAMETER"
 
-#: ../glib/gdatetime.c:237
-msgctxt "full month name"
-msgid "May"
-msgstr "Mei"
+#: gio/gapplication-tool.c:74
+msgid "Optional parameter to the action invocation, in GVariant format"
+msgstr "Parameter pilihan ke penyeruan tindakan, dalam format GVariant"
 
-#: ../glib/gdatetime.c:239
-msgctxt "full month name"
-msgid "June"
-msgstr "Jun"
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
+#, c-format
+msgid ""
+"Unknown command %s\n"
+"\n"
+msgstr ""
+"Perintah %s tidak diketahui\n"
+"\n"
 
-#: ../glib/gdatetime.c:241
-msgctxt "full month name"
-msgid "July"
-msgstr "Julai"
+#: gio/gapplication-tool.c:101
+msgid "Usage:\n"
+msgstr "Penggunaan:\n"
 
-#: ../glib/gdatetime.c:243
-msgctxt "full month name"
-msgid "August"
-msgstr ""
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
+msgid "Arguments:\n"
+msgstr "Argumen:\n"
 
-#: ../glib/gdatetime.c:245
-msgctxt "full month name"
-msgid "September"
-msgstr ""
+#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
+msgid "[ARGS…]"
+msgstr "[ARGS…]"
 
-#: ../glib/gdatetime.c:247
-msgctxt "full month name"
-msgid "October"
-msgstr ""
+#: gio/gapplication-tool.c:134
+#, c-format
+msgid "Commands:\n"
+msgstr "Perintah:\n"
 
-#: ../glib/gdatetime.c:249
-msgctxt "full month name"
-msgid "November"
+#. Translators: do not translate 'help', but please translate 'COMMAND'.
+#: gio/gapplication-tool.c:146
+#, c-format
+msgid ""
+"Use “%s help COMMAND” to get detailed help.\n"
+"\n"
 msgstr ""
+"Guna “%s help COMMAND” untuk dapatkan bantuan terperinci.\n"
+"\n"
 
-#: ../glib/gdatetime.c:251
-msgctxt "full month name"
-msgid "December"
+#: gio/gapplication-tool.c:165
+#, c-format
+msgid ""
+"%s command requires an application id to directly follow\n"
+"\n"
 msgstr ""
+"perintah %s memerlukan id aplikasi untuk diikuti secara terus\n"
+"\n"
 
-#: ../glib/gdatetime.c:266
-msgctxt "abbreviated month name"
-msgid "Jan"
-msgstr "Jan"
-
-#: ../glib/gdatetime.c:268
-msgctxt "abbreviated month name"
-msgid "Feb"
-msgstr "Feb"
-
-#: ../glib/gdatetime.c:270
-msgctxt "abbreviated month name"
-msgid "Mar"
-msgstr "Mac"
-
-#: ../glib/gdatetime.c:272
-msgctxt "abbreviated month name"
-msgid "Apr"
-msgstr "Apr"
-
-#: ../glib/gdatetime.c:274
-msgctxt "abbreviated month name"
-msgid "May"
-msgstr "Mei"
-
-#: ../glib/gdatetime.c:276
-msgctxt "abbreviated month name"
-msgid "Jun"
-msgstr "Jun"
-
-#: ../glib/gdatetime.c:278
-msgctxt "abbreviated month name"
-msgid "Jul"
-msgstr "Jul"
+#: gio/gapplication-tool.c:171
+#, c-format
+msgid "invalid application id: “%s”\n"
+msgstr "id aplikasi tidak sah: “%s”\n"
 
-#: ../glib/gdatetime.c:280
-msgctxt "abbreviated month name"
-msgid "Aug"
+#. Translators: %s is replaced with a command name like 'list-actions'
+#: gio/gapplication-tool.c:182
+#, c-format
+msgid ""
+"“%s” takes no arguments\n"
+"\n"
 msgstr ""
+"“%s” tidak mengambil argumen\n"
+"\n"
 
-#: ../glib/gdatetime.c:282
-msgctxt "abbreviated month name"
-msgid "Sep"
-msgstr ""
+#: gio/gapplication-tool.c:266
+#, c-format
+msgid "unable to connect to D-Bus: %s\n"
+msgstr "tidak boleh sambung ke D-Bus: %s\n"
 
-#: ../glib/gdatetime.c:284
-msgctxt "abbreviated month name"
-msgid "Oct"
-msgstr ""
+#: gio/gapplication-tool.c:286
+#, c-format
+msgid "error sending %s message to application: %s\n"
+msgstr "ralat menghantar mesej %s ke aplikasi: %s\n"
 
-#: ../glib/gdatetime.c:286
-msgctxt "abbreviated month name"
-msgid "Nov"
-msgstr ""
+#: gio/gapplication-tool.c:317
+msgid "action name must be given after application id\n"
+msgstr "nama tindakan mesti diberi selepas id aplikasi\n"
 
-#: ../glib/gdatetime.c:288
-msgctxt "abbreviated month name"
-msgid "Dec"
+#: gio/gapplication-tool.c:325
+#, c-format
+msgid ""
+"invalid action name: “%s”\n"
+"action names must consist of only alphanumerics, “-” and “.”\n"
 msgstr ""
+"nama tindakan tidak sah: \"%s\"\n"
+"nama tindakan mesti hanya mengandungi alfanumerik, \"-\" dan \".\"\n"
 
-#: ../glib/gdatetime.c:303
-msgctxt "full weekday name"
-msgid "Monday"
-msgstr "Isnin"
+#: gio/gapplication-tool.c:344
+#, c-format
+msgid "error parsing action parameter: %s\n"
+msgstr "ralat menghurai parameter tindakan: %s\n"
 
-#: ../glib/gdatetime.c:305
-msgctxt "full weekday name"
-msgid "Tuesday"
-msgstr "Selasa"
+#: gio/gapplication-tool.c:356
+msgid "actions accept a maximum of one parameter\n"
+msgstr "tindakan menerima semaksimum satu parameter\n"
 
-#: ../glib/gdatetime.c:307
-msgctxt "full weekday name"
-msgid "Wednesday"
-msgstr "Rabu"
+#: gio/gapplication-tool.c:411
+msgid "list-actions command takes only the application id"
+msgstr "perintah list-actions hanya mengambil id aplikasi"
 
-#: ../glib/gdatetime.c:309
-msgctxt "full weekday name"
-msgid "Thursday"
-msgstr "Khamis"
+#: gio/gapplication-tool.c:421
+#, c-format
+msgid "unable to find desktop file for application %s\n"
+msgstr "tidak boleh cari fail atas meja untuk aplikasi %s\n"
 
-#: ../glib/gdatetime.c:311
-msgctxt "full weekday name"
-msgid "Friday"
-msgstr "Jumaat"
+#: gio/gapplication-tool.c:466
+#, c-format
+msgid ""
+"unrecognised command: %s\n"
+"\n"
+msgstr ""
+"perintah tidak dikenali: %s\n"
+"\n"
 
-#: ../glib/gdatetime.c:313
-msgctxt "full weekday name"
-msgid "Saturday"
-msgstr "Sabtu"
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
+#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
+#, c-format
+msgid "Too large count value passed to %s"
+msgstr "Niai kiraan terlalu besar dilepasi ke %s"
 
-#: ../glib/gdatetime.c:315
-msgctxt "full weekday name"
-msgid "Sunday"
-msgstr "Ahad"
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575
+#: gio/gdataoutputstream.c:562
+msgid "Seek not supported on base stream"
+msgstr "Jangkau tidak disokong pada strim asas"
 
-#: ../glib/gdatetime.c:330
-msgctxt "abbreviated weekday name"
-msgid "Mon"
-msgstr "Isn"
+#: gio/gbufferedinputstream.c:937
+msgid "Cannot truncate GBufferedInputStream"
+msgstr "Tidak dapat pangkas GBufferedInputStream"
 
-#: ../glib/gdatetime.c:332
-msgctxt "abbreviated weekday name"
-msgid "Tue"
-msgstr "Sel"
+#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/goutputstream.c:2198
+msgid "Stream is already closed"
+msgstr "Strim sudah ditutup"
 
-#: ../glib/gdatetime.c:334
-msgctxt "abbreviated weekday name"
-msgid "Wed"
-msgstr "Rab"
+#: gio/gbufferedoutputstream.c:612 gio/gdataoutputstream.c:592
+msgid "Truncate not supported on base stream"
+msgstr "Pangkas tidak disokong dalam strim asas"
 
-#: ../glib/gdatetime.c:336
-msgctxt "abbreviated weekday name"
-msgid "Thu"
-msgstr "Kha"
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
+#: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
+#, c-format
+msgid "Operation was cancelled"
+msgstr "Operasi telah dibatalkan"
 
-#: ../glib/gdatetime.c:338
-msgctxt "abbreviated weekday name"
-msgid "Fri"
-msgstr "Jum"
+#: gio/gcharsetconverter.c:260
+msgid "Invalid object, not initialized"
+msgstr "Objek tidak sah, tidak diawalkan"
 
-#: ../glib/gdatetime.c:340
-msgctxt "abbreviated weekday name"
-msgid "Sat"
-msgstr "Sab"
+#: gio/gcharsetconverter.c:281 gio/gcharsetconverter.c:309
+msgid "Incomplete multibyte sequence in input"
+msgstr "Jujukan bait berbilang tidak lengkap dalam input"
 
-#: ../glib/gdatetime.c:342
-msgctxt "abbreviated weekday name"
-msgid "Sun"
-msgstr "Ahd"
+#: gio/gcharsetconverter.c:315 gio/gcharsetconverter.c:324
+msgid "Not enough space in destination"
+msgstr "Jarak tidak mencukupi dalam destinasi"
 
-#: ../glib/gdir.c:115 ../glib/gdir.c:138
-#, c-format
-msgid "Error opening directory '%s': %s"
-msgstr "Ralat membuka direktori %s': %s"
+#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
+msgid "Invalid byte sequence in conversion input"
+msgstr "Jujukan bait tidak sah dalam input pertukaran"
 
-#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
-msgid "Could not allocate %lu bytes to read file \"%s\""
-msgstr "Tak dapat memperuntukkan  %lu byte untuk membaca fail \"%s\""
+msgid "Error during conversion: %s"
+msgstr "Ralat ketika penukaran: %s"
 
-#: ../glib/gfileutils.c:555
-#, c-format
-msgid "Error reading file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
+msgid "Cancellable initialization not supported"
+msgstr "Pengawalan boleh batal tidak disokong"
 
-#: ../glib/gfileutils.c:569
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
-msgid "File \"%s\" is too large"
-msgstr ""
+#| msgid "Conversion from character set '%s' to '%s' is not supported"
+msgid "Conversion from character set “%s” to “%s” is not supported"
+msgstr "Pertukaran dari set aksara \"%s\" ke \"%s\" tidak disokong"
 
-#: ../glib/gfileutils.c:652
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, c-format
-msgid "Failed to read from file '%s': %s"
-msgstr "Gagal membaca fail  '%s': %s"
+msgid "Could not open converter from “%s” to “%s”"
+msgstr "Tidak dapat membuka penukar dari \"%s\" ke \"%s\""
 
-#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790
+#: gio/gcontenttype.c:452
 #, c-format
-msgid "Failed to open file '%s': %s"
-msgstr "Gagal membuka fail '%s': %s"
+msgid "%s type"
+msgstr "Jenis %s"
 
-#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169
-#, c-format
-msgid "Failed to get attributes of file '%s': fstat() failed: %s"
-msgstr "Gagal mendapatkan atribut fail  '%s': fstat() gagal: %s"
+#: gio/gcontenttype-win32.c:192
+msgid "Unknown type"
+msgstr "Jenis tidak diketahui"
 
-#: ../glib/gfileutils.c:754
+#: gio/gcontenttype-win32.c:194
 #, c-format
-msgid "Failed to open file '%s': fdopen() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+msgid "%s filetype"
+msgstr "Jenis fail %s"
 
-#: ../glib/gfileutils.c:862
-#, fuzzy, c-format
-msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials mengandungi data tidak sah"
 
-#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1449
-#, c-format
-msgid "Failed to create file '%s': %s"
-msgstr "Gagal mencipta fail %s': %s"
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
+msgid "GCredentials is not implemented on this OS"
+msgstr "GCredentials tidak dilaksana pada OS ini"
 
-#: ../glib/gfileutils.c:918
-#, fuzzy, c-format
-msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+#: gio/gcredentials.c:503
+msgid "There is no GCredentials support for your platform"
+msgstr "Tidak terdapat sokongan GCredentials untuk platform anda"
 
-#: ../glib/gfileutils.c:943
-#, fuzzy, c-format
-msgid "Failed to write file '%s': fwrite() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+#: gio/gcredentials.c:552
+msgid "GCredentials does not contain a process ID on this OS"
+msgstr "GCredentials tidak mengandungi ID proses dalam OS ini"
 
-#: ../glib/gfileutils.c:962
-#, fuzzy, c-format
-msgid "Failed to write file '%s': fflush() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+#: gio/gcredentials.c:603
+msgid "Credentials spoofing is not possible on this OS"
+msgstr "Pendayaan kelayakan tidak mungkin pada OS ini"
 
-#: ../glib/gfileutils.c:1006
-#, fuzzy, c-format
-msgid "Failed to write file '%s': fsync() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+#: gio/gdatainputstream.c:304
+msgid "Unexpected early end-of-stream"
+msgstr "Penamatan-strim awal tidak dijangka"
 
-#: ../glib/gfileutils.c:1030
-#, fuzzy, c-format
-msgid "Failed to close file '%s': fclose() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
+#, c-format
+msgid "Unsupported key “%s” in address entry “%s”"
+msgstr "Kunci \"%s\" tidak disokong dalam masukan alamat \"%s\""
 
-#: ../glib/gfileutils.c:1152
+#: gio/gdbusaddress.c:171
 #, c-format
-msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
+msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
+"Gabungan pasangan kunci/nilai tidak bermakna dalam masukan alamat \"%s\""
 
-#: ../glib/gfileutils.c:1412
+#: gio/gdbusaddress.c:180
 #, c-format
-msgid "Template '%s' invalid, should not contain a '%s'"
-msgstr "Templet '%s' tidak sah, sepatutnya tidak mengandungi '%s'"
-
-#: ../glib/gfileutils.c:1425
-#, fuzzy, c-format
-msgid "Template '%s' doesn't contain XXXXXX"
-msgstr "Templet '%s' tidak berakhir dengan XXXXXX"
+msgid ""
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
+msgstr ""
+"Alamat \"%s\" tidak sah (perlu sekurang-kurangnya satu laluan, dir, tmpdir, "
+"atau kunci abstrak)"
 
-#: ../glib/gfileutils.c:2001 ../glib/gfileutils.c:2029
-#: ../glib/gfileutils.c:2134
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Ralat dalam alamat “%s” — atribut “%s” adalah cacat"
 
-#: ../glib/gfileutils.c:2007
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
-msgid "%.1f KiB"
+msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
+"Angkutan \"%s\" tidak diketahui atau tidak disokong untuk alamat \"%s\""
 
-#: ../glib/gfileutils.c:2010
+#: gio/gdbusaddress.c:461
 #, c-format
-msgid "%.1f MiB"
-msgstr ""
+msgid "Address element “%s” does not contain a colon (:)"
+msgstr "Unsur alamat \"%s\" tidak mengandungi tanda titik bertindih (:)"
 
-#: ../glib/gfileutils.c:2013
+#: gio/gdbusaddress.c:470
 #, c-format
-msgid "%.1f GiB"
-msgstr ""
+msgid "Transport name in address element “%s” must not be empty"
+msgstr "Nama angkutan dalam unsur alamat \"%s\" tidak boleh kosong"
 
-#: ../glib/gfileutils.c:2016
+#: gio/gdbusaddress.c:491
 #, c-format
-msgid "%.1f TiB"
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
+"sign"
 msgstr ""
+"Pasangan Kunci/Nilai %d, \"%s\", dalam unsur alamat \"%s\" tidak mengandungi "
+"satu tanda sama dengan"
 
-#: ../glib/gfileutils.c:2019
+#: gio/gdbusaddress.c:502
 #, c-format
-msgid "%.1f PiB"
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
+"Pasangan Kunci/Nilai %d, \"%s\", dalam unsur alamat \"%s\" mesti tidak "
+"mempunyai satu kunci kosong"
 
-#: ../glib/gfileutils.c:2022
+#: gio/gdbusaddress.c:516
 #, c-format
-msgid "%.1f EiB"
+msgid ""
+"Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
+"“%s”"
 msgstr ""
+"Ralat unescape kunci atau nilai dalam pasangan Kunci/Nilai %d, \"%s\", dalam "
+"unsur alamat \"%s\""
 
-#: ../glib/gfileutils.c:2035
+#: gio/gdbusaddress.c:588
 #, c-format
-msgid "%.1f kB"
+msgid ""
+"Error in address “%s” — the unix transport requires exactly one of the keys "
+"“path” or “abstract” to be set"
 msgstr ""
+"Ralat dalam alamat \"%s\"— angkutan unix memerlukan sekurang-kurangnya salah "
+"satu kunci “path” atau “abstract” ditetapkan"
 
-#: ../glib/gfileutils.c:2038 ../glib/gfileutils.c:2147
+#: gio/gdbusaddress.c:624
 #, c-format
-msgid "%.1f MB"
-msgstr ""
+msgid "Error in address “%s” — the host attribute is missing or malformed"
+msgstr "Ralat dalam alamat \"%s\"— atribut hos hilang atau cacat"
 
-#: ../glib/gfileutils.c:2041 ../glib/gfileutils.c:2152
+#: gio/gdbusaddress.c:638
 #, c-format
-msgid "%.1f GB"
-msgstr ""
+msgid "Error in address “%s” — the port attribute is missing or malformed"
+msgstr "Ralat dalam alamat \"%s\"— atribut port hilang atau cacat"
 
-#: ../glib/gfileutils.c:2044 ../glib/gfileutils.c:2157
+#: gio/gdbusaddress.c:652
 #, c-format
-msgid "%.1f TB"
-msgstr ""
+msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
+msgstr "Ralat dalam alamat \"%s\"— atribut noncefile hilang atau cacat"
+
+#: gio/gdbusaddress.c:673
+msgid "Error auto-launching: "
+msgstr "Ralat auto-melancar: "
 
-#: ../glib/gfileutils.c:2047 ../glib/gfileutils.c:2162
+#: gio/gdbusaddress.c:726
 #, c-format
-msgid "%.1f PB"
-msgstr ""
-
-#: ../glib/gfileutils.c:2050 ../glib/gfileutils.c:2167
-#, c-format
-msgid "%.1f EB"
-msgstr ""
+msgid "Error opening nonce file “%s”: %s"
+msgstr "Ralat membuka fail nonce “%s”: %s"
 
-#. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gfileutils.c:2087
+#: gio/gdbusaddress.c:745
 #, c-format
-msgid "%s byte"
-msgid_plural "%s bytes"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Error reading from nonce file “%s”: %s"
+msgstr "Ralat membaca dari fail nonce “%s”: %s"
 
-#: ../glib/gfileutils.c:2142
+#: gio/gdbusaddress.c:754
 #, c-format
-msgid "%.1f KB"
-msgstr ""
+msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
+msgstr "Ralat membaca dari fail nonce \"%s\", dijangka 16 bait, dapat %d"
 
-#: ../glib/gfileutils.c:2210
+#: gio/gdbusaddress.c:772
 #, c-format
-msgid "Failed to read the symbolic link '%s': %s"
-msgstr "Gagal membaca pautan simbolik '%s': %s"
-
-#: ../glib/gfileutils.c:2231
-msgid "Symbolic links not supported"
-msgstr "Pautan simbolik tidak disokong"
-
-#: ../glib/giochannel.c:1408
-#, fuzzy, c-format
-msgid "Could not open converter from '%s' to '%s': %s"
-msgstr "Tak dapat membuka penukar daripada '%s' kepada '%s': %s"
+msgid "Error writing contents of nonce file “%s” to stream:"
+msgstr "Ralat menulis kandungan fail nonce \"%s\" ke strim:"
 
-#: ../glib/giochannel.c:1753
-msgid "Can't do a raw read in g_io_channel_read_line_string"
-msgstr "Tak dapat membuat bacaan rawak pada g_io_channel_read_line_string"
-
-#: ../glib/giochannel.c:1800 ../glib/giochannel.c:2057
-#: ../glib/giochannel.c:2144
-msgid "Leftover unconverted data in read buffer"
-msgstr "Data tak boleh ditukar Leftover pada penimbal bacaan"
-
-#: ../glib/giochannel.c:1881 ../glib/giochannel.c:1958
-msgid "Channel terminates in a partial character"
-msgstr "Saluran terhenti pada sebahagian aksara"
-
-#: ../glib/giochannel.c:1944
-msgid "Can't do a raw read in g_io_channel_read_to_end"
-msgstr "Tak dapat membuat bacaan rawak pada g_io_channel_read_to_end"
-
-#: ../glib/gmappedfile.c:150
-#, fuzzy, c-format
-msgid "Failed to open file '%s': open() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+#: gio/gdbusaddress.c:981
+msgid "The given address is empty"
+msgstr "Alamat diberi adalah kosong"
 
-#: ../glib/gmappedfile.c:229
-#, fuzzy, c-format
-msgid "Failed to map file '%s': mmap() failed: %s"
-msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+#: gio/gdbusaddress.c:1094
+#, c-format
+msgid "Cannot spawn a message bus when setuid"
+msgstr "Tidak dapat mewujudkan bas mesej bila setuid"
 
-#: ../glib/gmarkup.c:355 ../glib/gmarkup.c:396
-#, fuzzy, c-format
-msgid "Error on line %d char %d: "
-msgstr "Ralat pada baris  %d aksara %d: %s"
+#: gio/gdbusaddress.c:1101
+msgid "Cannot spawn a message bus without a machine-id: "
+msgstr "Tidak dapat mewujudkan bas mesej tanpa machine-id: "
 
-#: ../glib/gmarkup.c:418 ../glib/gmarkup.c:501
-#, fuzzy, c-format
-msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
-msgstr "Teks terenkod UTF-8 tidak sah"
+#: gio/gdbusaddress.c:1108
+#, c-format
+msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
+msgstr "Tidak dapat auto-lancar D-Bus tanpa X11 $DISPLAY"
 
-#: ../glib/gmarkup.c:429
+#: gio/gdbusaddress.c:1150
 #, c-format
-msgid "'%s' is not a valid name "
-msgstr ""
+msgid "Error spawning command line “%s”: "
+msgstr "Ralat membiakkan baris perintah \"%s\": "
 
-#: ../glib/gmarkup.c:445
+#: gio/gdbusaddress.c:1219
 #, c-format
-msgid "'%s' is not a valid name: '%c' "
+msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
+"Tidak dapat menentukan alamat bas sesi (tidak dilaksanakan untuk OS ini)"
 
-#: ../glib/gmarkup.c:554
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7180
 #, c-format
-msgid "Error on line %d: %s"
-msgstr "Ralat pada baris %d: %s"
-
-#: ../glib/gmarkup.c:638
-#, fuzzy, 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"
+"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
+"— unknown value “%s”"
 msgstr ""
-"gagal menghantar '%s', yang sepatutnya satu digit didalam satu rujukan "
-"aksara  (&#234; sebagai contoh) - mungkin digit terlalu besar"
+"Tidak dapat menentukan alamat bas dari pembolehubah persekitaran "
+"DBUS_STARTER_BUS_TYPE — nilai \"%s\" tidak diketahui"
 
-#: ../glib/gmarkup.c:650
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7189
 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;"
+"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
+"variable is not set"
 msgstr ""
-"Rujukan aksara tidak berakhir dengan  semicolon; agaknya anda menggunakan "
-"aksara '&' tanpa niat untuk memulakan entiti - escapekan & sebagai &amp;"
+"Tidak dapat menentukan alamat bas kerana pembolehubah persekitaran "
+"DBUS_STARTER_BUS_TYPE tidak ditetapkan"
 
-#: ../glib/gmarkup.c:676
-#, fuzzy, c-format
-msgid "Character reference '%-.*s' does not encode a permitted character"
-msgstr "Rujukan aksara '%s' tidak mengenkodkan aksara yang diizini"
+#: gio/gdbusaddress.c:1376
+#, c-format
+msgid "Unknown bus type %d"
+msgstr "Jenis bus %d tidak diketahui"
 
-#: ../glib/gmarkup.c:714
-msgid ""
-"Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
-msgstr ""
-"Entiti kosong '&;' kelihatan; entiti sah ialah : &amp; &quot; &lt; &gt; "
-"&apos;"
+#: gio/gdbusauth.c:294
+msgid "Unexpected lack of content trying to read a line"
+msgstr "Kekurangan kandungan dijangka cuba membaca satu baris"
 
-#: ../glib/gmarkup.c:722
-#, fuzzy, c-format
-msgid "Entity name '%-.*s' is not known"
-msgstr "Nama entiti '%s' tidak diketahui"
+#: gio/gdbusauth.c:338
+msgid "Unexpected lack of content trying to (safely) read a line"
+msgstr ""
+"Kekurangan dijangka bagi kandungan yang cuba (secara selamat) membaca satu "
+"baris"
 
-#: ../glib/gmarkup.c:727
+#: gio/gdbusauth.c:482
+#, c-format
 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;"
+"Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr ""
-"Entiti tidak berakhir dengan titik bertindih; mungkin anda gunakan aksara "
-"'&' tanpa menyedari untuk memulakan entiti - escape & sebagai  &amp;"
+"Menghabiskan semua mekanisma pengesahihan yang tersedia (dicuba: %s) "
+"(tersedia: %s)"
 
-#: ../glib/gmarkup.c:1078
-msgid "Document must begin with an element (e.g. <book>)"
-msgstr "Dokumen mesti dimulakan dengan unsur  (e.g. <buku>)"
+#: gio/gdbusauth.c:1167
+msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
+msgstr "Dibatalkan melalui GDBusAuthObserver::authorize-authenticated-peer"
 
-#: ../glib/gmarkup.c:1118
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
-msgid ""
-"'%s' is not a valid character following a '<' character; it may not begin an "
-"element name"
-msgstr ""
-"'%s' adalah bukan aksara sah diikuti sengan aksara '<'; ia tidak sepatutnya "
-"bermula dengan nama unsur"
+#| msgid "Error opening directory '%s': %s"
+msgid "Error when getting information for directory “%s”: %s"
+msgstr "Ralat ketika mendapatkan maklumat untuk direktori \"%s\": %s"
 
-#: ../glib/gmarkup.c:1186
-#, fuzzy, c-format
+#: gio/gdbusauthmechanismsha1.c:276
+#, c-format
 msgid ""
-"Odd character '%s', expected a '>' character to end the empty-element tag "
-"'%s'"
+"Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
-"Aksara ganjil  '%s', dijangkakan aksara '>' untuk mengakhiri tag permulaan "
-"unsur '%s'"
+"Keizinan pada direktori \"%s\" adalah cacat. Dijangka mod 0700, dapat 0%o"
 
-#: ../glib/gmarkup.c:1270
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
-msgid ""
-"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
-msgstr ""
-"Aksara ganjil  '%s', dijangkakan '=' selepas nama atribut  '%s' unsur  '%s'"
+msgid "Error creating directory “%s”: %s"
+msgstr "Ralat mencipta direktori “%s”: %s"
 
-#: ../glib/gmarkup.c:1311
+#: gio/gdbusauthmechanismsha1.c:348
 #, 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 ""
-"Aksara ganjil  '%s', menjangka aksara '>' atau '/' untuk mengakhiri tag "
-"permulaan unsur '%s', atau atribut; meungkin anda gunakan aksara tidak sah "
-"pada nama atribut"
+msgid "Error opening keyring “%s” for reading: "
+msgstr "Ralat membuka gelang kunci \"%s\" untuk membaca: "
 
-#: ../glib/gmarkup.c:1355
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
-msgid ""
-"Odd character '%s', expected an open quote mark after the equals sign when "
-"giving value for attribute '%s' of element '%s'"
+msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
-"Aksara ganjil  '%s', menjangka tanda petikan membuka selepas tanda = bila "
-"memberi nilai atribut untuk '%s' unsur '%s' "
+"Baris %d bagi gelang kunci pada \"%s\" dengan kandungan \"%s\" adalah cacat"
 
-#: ../glib/gmarkup.c:1488
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
-"'%s' is not a valid character following the characters '</'; '%s' may not "
-"begin an element name"
+"First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
-"'%s' adalah bukan aksara sah diikuti aksara '</'; '%s' tak boleh memulakan "
-"nama unsur"
+"Token pertama baris %d bagi gelang kunci pada \"%s\" dengan kandungan \"%s\" "
+"adalah cacat"
 
-#: ../glib/gmarkup.c:1524
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
-"'%s' is not a valid character following the close element name '%s'; the "
-"allowed character is '>'"
+"Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
-"'%s' adalah bukan aksara sah diikuti dengan nama unsur penutup  '%s'; aksara "
-"yang diizinkan ialah  '>'"
+"Token kedua baris %d bagi gelang kunci pada \"%s\" dengan kandungan \"%s\" "
+"adalah cacat"
 
-#: ../glib/gmarkup.c:1535
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
-msgid "Element '%s' was closed, no element is currently open"
-msgstr "Unsur '%s' telah ditutup, tiada unsur yang dibuka"
+msgid "Didn’t find cookie with id %d in the keyring at “%s”"
+msgstr "Tidak dapat mencari kuki dengan id %d dalam gelang kunci pada \"%s\""
 
-#: ../glib/gmarkup.c:1544
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
-msgid "Element '%s' was closed, but the currently open element is '%s'"
-msgstr "Unsur '%s' telah ditutup, tetapi unsur yang dibuka adalah '%s'"
+msgid "Error deleting stale lock file “%s”: %s"
+msgstr "Ralat memadam fail kunci basi \"%s\": %s"
 
-#: ../glib/gmarkup.c:1712
-msgid "Document was empty or contained only whitespace"
-msgstr "Dokumen kosong atau hanya menandungi ruangputih"
+#: gio/gdbusauthmechanismsha1.c:537
+#, c-format
+msgid "Error creating lock file “%s”: %s"
+msgstr "Ralat mencipta fail kunci \"%s\": %s"
 
-#: ../glib/gmarkup.c:1726
-msgid "Document ended unexpectedly just after an open angle bracket '<'"
-msgstr "Dokumen berakhir tanpa diduga sebaik selepas membuka '<'"
+#: gio/gdbusauthmechanismsha1.c:568
+#, c-format
+msgid "Error closing (unlinked) lock file “%s”: %s"
+msgstr "Ralat menutup fail kunci (nyahpaut) \"%s\": %s"
 
-#: ../glib/gmarkup.c:1734 ../glib/gmarkup.c:1779
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
-msgid ""
-"Document ended unexpectedly with elements still open - '%s' was the last "
-"element opened"
-msgstr ""
-"Dokumen berakhir tanpa diduga dengan unsur yang masih dibuka - '%s' adalah "
-"unsur dibuka"
+msgid "Error unlinking lock file “%s”: %s"
+msgstr "Ralat menyahpaut fail kunci \"%s\": %s"
 
-#: ../glib/gmarkup.c:1742
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
-msgid ""
-"Document ended unexpectedly, expected to see a close angle bracket ending "
-"the tag <%s/>"
-msgstr "Dokumen berakhir tanpa diduga, menjangkai tag <%s/> pada hujungnya"
+msgid "Error opening keyring “%s” for writing: "
+msgstr "Ralat membuka gelang kunci \"%s\" untuk menulis: "
 
-#: ../glib/gmarkup.c:1748
-msgid "Document ended unexpectedly inside an element name"
-msgstr "Dokumen berakhir tanpa diduga di dalam nama unsur"
+#: gio/gdbusauthmechanismsha1.c:852
+#, c-format
+msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
+msgstr ""
+"(Selain itu, melepaskan kunci untuk \"%s\" juga mengalami kegagalan: %s) "
 
-#: ../glib/gmarkup.c:1754
-msgid "Document ended unexpectedly inside an attribute name"
-msgstr "Dokumen berakhir tanpa diduga di dalam nama atribut"
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2400
+msgid "The connection is closed"
+msgstr "Sambungan telah ditutup"
 
-#: ../glib/gmarkup.c:1759
-msgid "Document ended unexpectedly inside an element-opening tag."
-msgstr "Dokumen berakhir tanpa diduga di dalam tag element-opening"
+#: gio/gdbusconnection.c:1901
+msgid "Timeout was reached"
+msgstr "Had masa tamat telah dicapai"
 
-#: ../glib/gmarkup.c:1765
+#: gio/gdbusconnection.c:2522
 msgid ""
-"Document ended unexpectedly after the equals sign following an attribute "
-"name; no attribute value"
-msgstr ""
-"Dokumen berakhir tanpa diduga selepas tanda '=' diikuti dengan nama atribut; "
-"tiana nilai atribut"
+"Unsupported flags encountered when constructing a client-side connection"
+msgstr "Bendera tidak disokong dihadapi ketika membina sambungan sisi-klien"
 
-#: ../glib/gmarkup.c:1772
-msgid "Document ended unexpectedly while inside an attribute value"
-msgstr "Dokumen  berakhir tanpa diduga semasa di dalam nilai atribut"
+#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#, c-format
+msgid ""
+"No such interface “org.freedesktop.DBus.Properties” on object at path %s"
+msgstr ""
+"Tiada antara muka 'org.freedesktop.DBus.Properties' sebegitu pada objek di "
+"laluan %s"
 
-#: ../glib/gmarkup.c:1788
+#: gio/gdbusconnection.c:4293
 #, c-format
-msgid "Document ended unexpectedly inside the close tag for element '%s'"
-msgstr "Dokumen berakhir tanpa diduga di dalam tag tertutup untuk unsur '%s'"
+msgid "No such property “%s”"
+msgstr "Tiada sifat \"%s\" sebegitu"
 
-#: ../glib/gmarkup.c:1794
-msgid "Document ended unexpectedly inside a comment or processing instruction"
-msgstr "Dokumen berakhir tanpa diduga di dalam komen atau memproses arahan"
+#: gio/gdbusconnection.c:4305
+#, c-format
+msgid "Property “%s” is not readable"
+msgstr "Sifat \"%s\" tidak boleh baca"
 
-#: ../glib/gregex.c:189
-msgid "corrupted object"
-msgstr ""
+#: gio/gdbusconnection.c:4316
+#, c-format
+msgid "Property “%s” is not writable"
+msgstr "Sifat \"%s\" tidak boleh tulis"
 
-#: ../glib/gregex.c:191
-msgid "internal error or corrupted object"
+#: gio/gdbusconnection.c:4336
+#, c-format
+msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
+"Ralat menetapkan sifat \"%s\": Jenis dijangka \"%s\" tetapi dapat \"%s\""
 
-#: ../glib/gregex.c:193
-msgid "out of memory"
-msgstr ""
+#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
+#: gio/gdbusconnection.c:6620
+#, c-format
+msgid "No such interface “%s”"
+msgstr "Tiada antara muka \"%s\" sebegitu"
 
-#: ../glib/gregex.c:198
-msgid "backtracking limit reached"
-msgstr ""
+#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7129
+#, c-format
+msgid "No such interface “%s” on object at path %s"
+msgstr "Tiada antara muka \"%s\" sebegitu pada objek di laluan %s"
 
-#: ../glib/gregex.c:210 ../glib/gregex.c:218
-msgid "the pattern contains items not supported for partial matching"
-msgstr ""
+#: gio/gdbusconnection.c:4965
+#, c-format
+msgid "No such method “%s”"
+msgstr "Tiada kaedah \"%s\" sebegitu"
 
-#: ../glib/gregex.c:212 ../gio/glocalfile.c:2107
-msgid "internal error"
-msgstr ""
+#: gio/gdbusconnection.c:4996
+#, c-format
+msgid "Type of message, “%s”, does not match expected type “%s”"
+msgstr "Jenis mesej, \"%s\", tidak sepadan dengan jenis dijangka \"%s\""
 
-#: ../glib/gregex.c:220
-msgid "back references as conditions are not supported for partial matching"
-msgstr ""
+#: gio/gdbusconnection.c:5194
+#, c-format
+msgid "An object is already exported for the interface %s at %s"
+msgstr "Satu objek sudah dieksport untuk antara muka %s pada %s"
 
-#: ../glib/gregex.c:229
-msgid "recursion limit reached"
-msgstr ""
+#: gio/gdbusconnection.c:5420
+#, c-format
+msgid "Unable to retrieve property %s.%s"
+msgstr "Tidak memperoleh sifat %s.%s"
 
-#: ../glib/gregex.c:231
-msgid "workspace limit for empty substrings reached"
-msgstr ""
+#: gio/gdbusconnection.c:5476
+#, c-format
+msgid "Unable to set property %s.%s"
+msgstr "Tidak boleh menetapkan sifat %s.%s"
 
-#: ../glib/gregex.c:233
-msgid "invalid combination of newline flags"
-msgstr ""
+#: gio/gdbusconnection.c:5654
+#, c-format
+msgid "Method “%s” returned type “%s”, but expected “%s”"
+msgstr "Kaedah \"%s\" jenis '%s' dikembalikan, tetapi dijangka \"%s\""
 
-#: ../glib/gregex.c:235
-msgid "bad offset"
+#: gio/gdbusconnection.c:6731
+#, c-format
+msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
+"Kaedah \"%s\" pada antara muka \"%s\" dengan tanda tangan \"%s\" tidak wujud"
 
-#: ../glib/gregex.c:237
-msgid "short utf8"
-msgstr ""
+#: gio/gdbusconnection.c:6852
+#, c-format
+msgid "A subtree is already exported for %s"
+msgstr "Satu subpepohon sudah dieksport untuk %s"
 
-#: ../glib/gregex.c:241
-msgid "unknown error"
-msgstr ""
+#: gio/gdbusmessage.c:1255
+msgid "type is INVALID"
+msgstr "jenis adalah INVALID"
 
-#: ../glib/gregex.c:261
-msgid "\\ at end of pattern"
-msgstr ""
+#: gio/gdbusmessage.c:1266
+msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
+msgstr "Mesej METHOD_CALL: medan pengepala PATH atau MEMBER telah hilang"
 
-#: ../glib/gregex.c:264
-msgid "\\c at end of pattern"
-msgstr ""
+#: gio/gdbusmessage.c:1277
+msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
+msgstr "Mesej METHOD_RETURN: medan pengepala REPLY_SERIAL telah hilang"
 
-#: ../glib/gregex.c:267
-msgid "unrecognized character follows \\"
-msgstr ""
+#: gio/gdbusmessage.c:1289
+msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
+msgstr "Mesej ERROR: medan pengepala REPLY_SERIAL atau ERROR_NAME telah hilang"
 
-#: ../glib/gregex.c:274
-msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here"
-msgstr ""
+#: gio/gdbusmessage.c:1302
+msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
+msgstr "Mesej SIGNAL: medan pengepala PATH, INTERFACE atau MEMBER telah hilang"
 
-#: ../glib/gregex.c:277
-msgid "numbers out of order in {} quantifier"
+#: gio/gdbusmessage.c:1310
+msgid ""
+"SIGNAL message: The PATH header field is using the reserved value /org/"
+"freedesktop/DBus/Local"
 msgstr ""
+"Mesej SIGNAL: medan pengepala PATH menggunakan nilai simpanan /org/"
+"freedesktop/DBus/Local"
 
-#: ../glib/gregex.c:280
-msgid "number too big in {} quantifier"
+#: gio/gdbusmessage.c:1318
+msgid ""
+"SIGNAL message: The INTERFACE header field is using the reserved value org."
+"freedesktop.DBus.Local"
 msgstr ""
+"Mesej SIGNAL: Medan pengepala INTERFACE menggunakan nilai simpanan org."
+"freedesktop.DBus.Local"
 
-#: ../glib/gregex.c:283
-#, fuzzy
-msgid "missing terminating ] for character class"
-msgstr "Saluran terhenti pada sebahagian aksara"
-
-#: ../glib/gregex.c:286
-#, fuzzy
-msgid "invalid escape sequence in character class"
-msgstr "Turutan byte tidak sah pada penukaran iput"
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
+#, c-format
+msgid "Wanted to read %lu byte but only got %lu"
+msgid_plural "Wanted to read %lu bytes but only got %lu"
+msgstr[0] "Mahu membaca %lu bait tetapi hanya dapat %lu"
+msgstr[1] "Mahu membaca %lu bait tetapi hanya dapat %lu"
 
-#: ../glib/gregex.c:289
-msgid "range out of order in character class"
-msgstr ""
+#: gio/gdbusmessage.c:1380
+#, c-format
+msgid "Expected NUL byte after the string “%s” but found byte %d"
+msgstr "Bait NOL dijangka selepas rentetan \"%s\" tetapi temui bait %d"
 
-#: ../glib/gregex.c:292
-msgid "nothing to repeat"
+#: gio/gdbusmessage.c:1399
+#, 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 ""
+"Rentetan UTF-8 sah dijangka tetapi temui bait tidak sah pada ofset bait %d "
+"(panjang rentetan ialah %d). Rentetan UTF-8 yang sah sehingga titik adalah "
+"\"%s\""
 
-#: ../glib/gregex.c:295
-#, fuzzy
-msgid "unrecognized character after (?"
-msgstr "Rujukan aksara tidak tamat"
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Nilai tersarang terlalu dalam"
 
-#: ../glib/gregex.c:299
-#, fuzzy
-msgid "unrecognized character after (?<"
-msgstr "Rujukan aksara tidak tamat"
+#: gio/gdbusmessage.c:1609
+#, c-format
+msgid "Parsed value “%s” is not a valid D-Bus object path"
+msgstr "Nilai terhurai \"%s\" bukanlah satu laluan objek D-Bus yang sah"
 
-#: ../glib/gregex.c:303
-#, fuzzy
-msgid "unrecognized character after (?P"
-msgstr "Rujukan aksara tidak tamat"
+#: gio/gdbusmessage.c:1631
+#, c-format
+msgid "Parsed value “%s” is not a valid D-Bus signature"
+msgstr "Nilai terhurai \"%s\" bukanlah satu tanda tangan D-Bus yang sah"
 
-#: ../glib/gregex.c:306
-msgid "POSIX named classes are supported only within a class"
-msgstr ""
+#: gio/gdbusmessage.c:1678
+#, c-format
+msgid ""
+"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
+msgid_plural ""
+"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
+msgstr[0] ""
+"Tatasusunan yang panjangnya %u bait dihadapi. Panjang maksimum ialah 2<<26 "
+"bait (64 MiB)."
+msgstr[1] ""
+"Tatasusunan yang panjangnya %u bait dihadapi. Panjang maksimum ialah 2<<26 "
+"bait (64 MiB)."
 
-#: ../glib/gregex.c:309
-msgid "missing terminating )"
+#: gio/gdbusmessage.c:1698
+#, c-format
+msgid ""
+"Encountered array of type “a%c”, expected to have a length a multiple of %u "
+"bytes, but found to be %u bytes in length"
 msgstr ""
+"Hadapi tatasusunan jenis \"a%c\", dijangka mempunyai panjang berbilang %u "
+"bait, tetapi temui %u bait panjangnya"
 
-#: ../glib/gregex.c:313
-msgid ") without opening ("
+#: gio/gdbusmessage.c:1884
+#, c-format
+msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
+"Nilai terhurai \"%s\" bagi varian bukanlah satu tanda tangan D-Bus yang sah"
 
-#. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
-#. * sequences here, '(?-54' would be an example for the second group.
-#.
-#: ../glib/gregex.c:320
-msgid "(?R or (?[+-]digits must be followed by )"
+#: gio/gdbusmessage.c:1925
+#, c-format
+msgid ""
+"Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
+"Ralat menyahsiri GVariant dengan rentetan jenis \"%s\" dari format wayar D-"
+"Bus"
 
-#: ../glib/gregex.c:323
-msgid "reference to non-existent subpattern"
+#: gio/gdbusmessage.c:2110
+#, c-format
+msgid ""
+"Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
+"0x%02x"
 msgstr ""
+"Nilai endian tidak sah. Dijangka 0x6c (“l”) atau 0x42 (“B”) tetapi temui "
+"nilai 0x%02x"
 
-#: ../glib/gregex.c:326
-msgid "missing ) after comment"
-msgstr ""
+#: gio/gdbusmessage.c:2123
+#, c-format
+msgid "Invalid major protocol version. Expected 1 but found %d"
+msgstr "Versi protokol major tidak sah. Dijangka 1 tetapi temui %d"
 
-#: ../glib/gregex.c:329
-msgid "regular expression too large"
-msgstr ""
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
+msgid "Signature header found but is not of type signature"
+msgstr "Pengepala tanda tangan ditemui tetapi bukan jenis tanda tangan"
 
-#: ../glib/gregex.c:332
-msgid "failed to get memory"
+#: gio/gdbusmessage.c:2189
+#, c-format
+msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
+"Pengepala tanda tangan dengan tanda tangan \"%s\" ditemui tetapi badan mesej "
+"adalah kosong"
 
-#: ../glib/gregex.c:335
-msgid "lookbehind assertion is not fixed length"
+#: gio/gdbusmessage.c:2204
+#, c-format
+msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
+"Nilai terhurai \"%s\" bukanlah satu tanda tangan D-Bus yang sah (untuk badan)"
 
-#: ../glib/gregex.c:338
-msgid "malformed number or name after (?("
-msgstr ""
+#: gio/gdbusmessage.c:2236
+#, c-format
+msgid "No signature header in message but the message body is %u byte"
+msgid_plural "No signature header in message but the message body is %u bytes"
+msgstr[0] ""
+"Tiada pengepala tanda tangan dalam mesej tetapi badan mesej ialah %u bait"
+msgstr[1] ""
+"Tiada pengepala tanda tangan dalam mesej tetapi badan mesej ialah %u bait"
 
-#: ../glib/gregex.c:341
-msgid "conditional group contains more than two branches"
-msgstr ""
+#: gio/gdbusmessage.c:2246
+msgid "Cannot deserialize message: "
+msgstr "Tidak dapat nyahsirikan mesej: "
 
-#: ../glib/gregex.c:344
-msgid "assertion expected after (?("
+#: gio/gdbusmessage.c:2590
+#, c-format
+msgid ""
+"Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
+"Ralat menyahsiri GVariant dengan rentetan jenis \"%s\" ke format wayar D-Bus"
 
-#: ../glib/gregex.c:347
-msgid "unknown POSIX class name"
+#: gio/gdbusmessage.c:2727
+#, c-format
+msgid ""
+"Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
+"Bilangan penerang fail dalam mesej (%d) berbeza dari medan pengepala (%d)"
 
-#: ../glib/gregex.c:350
-#, fuzzy
-msgid "POSIX collating elements are not supported"
-msgstr "Pautan simbolik tidak disokong"
+#: gio/gdbusmessage.c:2735
+msgid "Cannot serialize message: "
+msgstr "Tidak dapat sirikan mesej: "
 
-#: ../glib/gregex.c:353
-msgid "character value in \\x{...} sequence is too large"
+#: gio/gdbusmessage.c:2788
+#, c-format
+msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
+"Badan mesej mempunyai tanda tangan \"%s\" tetapi tiada pengepala tanda tangan"
 
-#: ../glib/gregex.c:356
-msgid "invalid condition (?(0)"
+#: gio/gdbusmessage.c:2798
+#, c-format
+msgid ""
+"Message body has type signature “%s” but signature in the header field is "
+"“%s”"
 msgstr ""
+"Badan mesej mempunyai tanda tangan jenis \"%s\" tetapi tanda tangan dalam "
+"medan pengepala ialah \"%s\""
 
-#: ../glib/gregex.c:359
-msgid "\\C not allowed in lookbehind assertion"
+#: gio/gdbusmessage.c:2814
+#, c-format
+msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
+"Badan mesej adalah kosong tetapi tanda tangan dalam medan pengepala ialah "
+"\"(%s)\""
 
-#: ../glib/gregex.c:362
-msgid "recursive call could loop indefinitely"
-msgstr ""
+#: gio/gdbusmessage.c:3367
+#, c-format
+msgid "Error return with body of type “%s”"
+msgstr "Ralat kembali dengan badan jenis \"%s\""
 
-#: ../glib/gregex.c:365
-msgid "missing terminator in subpattern name"
-msgstr ""
+#: gio/gdbusmessage.c:3375
+msgid "Error return with empty body"
+msgstr "Ralat kembali dengan badan kosong"
 
-#: ../glib/gregex.c:368
-msgid "two named subpatterns have the same name"
-msgstr ""
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr "(Taip apa-apa aksara untuk tutup tetingkap ini)\n"
 
-#: ../glib/gregex.c:371
-msgid "malformed \\P or \\p sequence"
-msgstr ""
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr "Dbus sesi tidak dijalankan, dan auto-lancar mengalami kegagalan"
 
-#: ../glib/gregex.c:374
-msgid "unknown property name after \\P or \\p"
-msgstr ""
+#: gio/gdbusprivate.c:2439
+#, c-format
+msgid "Unable to get Hardware profile: %s"
+msgstr "Tidak memperoleh profil Perkakasan: %s"
 
-#: ../glib/gregex.c:377
-msgid "subpattern name is too long (maximum 32 characters)"
-msgstr ""
+#: gio/gdbusprivate.c:2484
+msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
+msgstr "Tidak boleh memuatkan /var/lib/dbus/machine-id atau /etc/machine-id: "
 
-#: ../glib/gregex.c:380
-msgid "too many named subpatterns (maximum 10,000)"
-msgstr ""
+#: gio/gdbusproxy.c:1625
+#, c-format
+msgid "Error calling StartServiceByName for %s: "
+msgstr "Ralat memanggil StartServiceByName untuk %s: "
 
-#: ../glib/gregex.c:383
-msgid "octal value is greater than \\377"
-msgstr ""
+#: gio/gdbusproxy.c:1648
+#, c-format
+msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
+msgstr "Balas tidak dijangka %d dari kaedah StartServiceByName(\"%s\")"
 
-#: ../glib/gregex.c:386
-msgid "DEFINE group contains more than one branch"
+#: gio/gdbusproxy.c:2748 gio/gdbusproxy.c:2883
+#, c-format
+msgid ""
+"Cannot invoke method; proxy is for the well-known name %s without an owner, "
+"and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
+"Tidak dapat menyeru kaedah; proksi ialah nama dikenali %s tanpa pemilik, dan "
+"proksi telah dibina dengan bendera G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: ../glib/gregex.c:389
-msgid "repeating a DEFINE group is not allowed"
-msgstr ""
+#: gio/gdbusserver.c:755
+msgid "Abstract namespace not supported"
+msgstr "Ruang nama abstrak tidak disokong"
 
-#: ../glib/gregex.c:392
-msgid "inconsistent NEWLINE options"
-msgstr ""
-
-#: ../glib/gregex.c:395
-msgid ""
-"\\g is not followed by a braced name or an optionally braced non-zero number"
-msgstr ""
+#: gio/gdbusserver.c:848
+msgid "Cannot specify nonce file when creating a server"
+msgstr "Tidak dapat menyatakan fail nonce bila mencipta satu pelayan"
 
-#: ../glib/gregex.c:400
-msgid "unexpected repeat"
-msgstr ""
+#: gio/gdbusserver.c:930
+#, c-format
+msgid "Error writing nonce file at “%s”: %s"
+msgstr "Ralat menulis fail nonce pada “%s”: %s"
 
-#: ../glib/gregex.c:404
-msgid "code overflow"
-msgstr ""
+#: gio/gdbusserver.c:1103
+#, c-format
+msgid "The string “%s” is not a valid D-Bus GUID"
+msgstr "Rentetan “%s” bukanlah satu GUID D-Bus yang sah"
 
-#: ../glib/gregex.c:408
-msgid "overran compiling workspace"
-msgstr ""
+#: gio/gdbusserver.c:1143
+#, c-format
+msgid "Cannot listen on unsupported transport “%s”"
+msgstr "Tidak dapat dengar pada angkutan \"%s\" yang tidak disokong"
 
-#: ../glib/gregex.c:412
-msgid "previously-checked referenced subpattern not found"
-msgstr ""
+#: gio/gdbus-tool.c:107
+#, c-format
+msgid ""
+"Commands:\n"
+"  help         Shows this information\n"
+"  introspect   Introspect a remote object\n"
+"  monitor      Monitor a remote object\n"
+"  call         Invoke a method on a remote object\n"
+"  emit         Emit a signal\n"
+"  wait         Wait for a bus name to appear\n"
+"\n"
+"Use “%s COMMAND --help” to get help on each command.\n"
+msgstr ""
+"Perintah:\n"
+"  help         Tunjuk maklumat ini\n"
+"  introspect   Periksa satu objek jauh\n"
+"  monitor      Pantau satu objek jauh\n"
+"  call         Seru atau kaedah pada satu objek jauh\n"
+"  emit         Pancarkan satu isyarat\n"
+"  wait         Tunggu satu nama bas muncul\n"
+"\n"
+"Guna “%s COMMAND --help” untuk mendapatkan bantuan berkenaan setiap "
+"perintah.\n"
 
-#: ../glib/gregex.c:630 ../glib/gregex.c:1753
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:846 gio/gdbus-tool.c:1183
+#: gio/gdbus-tool.c:1668
 #, c-format
-msgid "Error while matching regular expression %s: %s"
-msgstr ""
+msgid "Error: %s\n"
+msgstr "Ralat: %s\n"
 
-#: ../glib/gregex.c:1206
-msgid "PCRE library is compiled without UTF8 support"
-msgstr ""
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1684
+#, c-format
+msgid "Error parsing introspection XML: %s\n"
+msgstr "Ralat menghurai XML introspection: %s\n"
 
-#: ../glib/gregex.c:1215
-msgid "PCRE library is compiled without UTF8 properties support"
-msgstr ""
+#: gio/gdbus-tool.c:246
+#, c-format
+msgid "Error: %s is not a valid name\n"
+msgstr "Ralat: %s bukanlah nama yang sah\n"
 
-#: ../glib/gregex.c:1271
-#, fuzzy, c-format
-msgid "Error while compiling regular expression %s at char %d: %s"
-msgstr "Ralat pada baris  %d aksara %d: %s"
+#: gio/gdbus-tool.c:394
+msgid "Connect to the system bus"
+msgstr "Sambung ke bas sistem"
 
-#: ../glib/gregex.c:1307
-#, c-format
-msgid "Error while optimizing regular expression %s: %s"
-msgstr ""
+#: gio/gdbus-tool.c:395
+msgid "Connect to the session bus"
+msgstr "Sambung ke bas sesi"
 
-#: ../glib/gregex.c:2183
-msgid "hexadecimal digit or '}' expected"
-msgstr ""
+#: gio/gdbus-tool.c:396
+msgid "Connect to given D-Bus address"
+msgstr "Sambung ke alamat D-Bus yang diberi"
 
-#: ../glib/gregex.c:2199
-msgid "hexadecimal digit expected"
-msgstr ""
+#: gio/gdbus-tool.c:406
+msgid "Connection Endpoint Options:"
+msgstr "Pilihan Titi Akhir Sambungan:"
 
-#: ../glib/gregex.c:2239
-msgid "missing '<' in symbolic reference"
-msgstr ""
+#: gio/gdbus-tool.c:407
+msgid "Options specifying the connection endpoint"
+msgstr "Pilihan menyatakan titik akhir sambungan"
 
-#: ../glib/gregex.c:2248
-#, fuzzy
-msgid "unfinished symbolic reference"
-msgstr "Rujukan entiti tidak tamat"
+#: gio/gdbus-tool.c:429
+#, c-format
+msgid "No connection endpoint specified"
+msgstr "Tiada titik akhir sambungan dinyatakan"
 
-#: ../glib/gregex.c:2255
-msgid "zero-length symbolic reference"
-msgstr ""
+#: gio/gdbus-tool.c:439
+#, c-format
+msgid "Multiple connection endpoints specified"
+msgstr "Titik akhir sambungan berbilang dinyatakan"
 
-#: ../glib/gregex.c:2266
-msgid "digit expected"
+#: gio/gdbus-tool.c:509
+#, c-format
+msgid ""
+"Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
+"Amaran: Berdasarkan pada data introspection, antara muka \"%s\" tidak wujud\n"
 
-#: ../glib/gregex.c:2284
-msgid "illegal symbolic reference"
+#: gio/gdbus-tool.c:518
+#, c-format
+msgid ""
+"Warning: According to introspection data, method “%s” does not exist on "
+"interface “%s”\n"
 msgstr ""
+"Amaran: Berdasarkan pada data introspection, kaedah \"%s\" tidak wujud pada "
+"antara muka \"%s\"\n"
 
-#: ../glib/gregex.c:2346
-msgid "stray final '\\'"
-msgstr ""
+#: gio/gdbus-tool.c:580
+msgid "Optional destination for signal (unique name)"
+msgstr "Destinasi pilihan untuk isyarat (nama unik)"
 
-#: ../glib/gregex.c:2350
-msgid "unknown escape sequence"
-msgstr ""
+#: gio/gdbus-tool.c:581
+msgid "Object path to emit signal on"
+msgstr "Laluan objek untuk pancarkan isyarat"
 
-#: ../glib/gregex.c:2360
-#, c-format
-msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
-msgstr ""
+#: gio/gdbus-tool.c:582
+msgid "Signal and interface name"
+msgstr "Isyarat dan nama antara muka"
 
-#: ../glib/gshell.c:91
-msgid "Quoted text doesn't begin with a quotation mark"
-msgstr "Teks dipetik tidak bermula dengan tanda petikan"
+#: gio/gdbus-tool.c:615
+msgid "Emit a signal."
+msgstr "Pancarkan satu isyarat."
 
-#: ../glib/gshell.c:181
-msgid "Unmatched quotation mark in command line or other shell-quoted text"
-msgstr ""
-"Tanda petikan tidak sepadan pada arahan baris atau teks shell-quoted lain"
+#: gio/gdbus-tool.c:670 gio/gdbus-tool.c:977 gio/gdbus-tool.c:1771
+#: gio/gdbus-tool.c:2003 gio/gdbus-tool.c:2223
+#, c-format
+msgid "Error connecting: %s\n"
+msgstr "Ralat menyambung: %s\n"
 
-#: ../glib/gshell.c:559
+#: gio/gdbus-tool.c:690
 #, c-format
-msgid "Text ended just after a '\\' character. (The text was '%s')"
-msgstr "Teks berakhir selepas aksara '\\'. (Teks terdahulu ialah '%s')"
+msgid "Error: %s is not a valid unique bus name.\n"
+msgstr "Ralat: %s bukanlah nama bas unik yang sah.\n"
+
+#: gio/gdbus-tool.c:709 gio/gdbus-tool.c:1020 gio/gdbus-tool.c:1814
+msgid "Error: Object path is not specified\n"
+msgstr "Ralat: Laluan objek tidak dinyatakan\n"
 
-#: ../glib/gshell.c:566
+#: gio/gdbus-tool.c:732 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1834
+#: gio/gdbus-tool.c:2074
 #, c-format
-msgid "Text ended before matching quote was found for %c. (The text was '%s')"
-msgstr "Teks berakhir sebelum quot sepadan dijumpai untuk %c (Teks ialah '%s')"
+msgid "Error: %s is not a valid object path\n"
+msgstr "Ralat: %s bukanlah laluan objek yang sah\n"
 
-#: ../glib/gshell.c:578
-msgid "Text was empty (or contained only whitespace)"
-msgstr "Teks telah kosong (atau mengandungi hanya ruangputih)"
+#: gio/gdbus-tool.c:752
+msgid "Error: Signal name is not specified\n"
+msgstr "Ralat: Nama isyarat tidak dinyatakan\n"
 
-#: ../glib/gspawn-win32.c:282
-msgid "Failed to read data from child process"
-msgstr "Gagal membaca data daripada proses anak"
+#: gio/gdbus-tool.c:766
+#, c-format
+msgid "Error: Signal name “%s” is invalid\n"
+msgstr "Ralat: Nama isyarat \"%s\" adalah tidak sah\n"
 
-#: ../glib/gspawn-win32.c:299 ../glib/gspawn.c:1517
+#: gio/gdbus-tool.c:778
 #, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "Gagal mencipta paip untuk berkomunikasi dengan proses anak (%s)"
+msgid "Error: %s is not a valid interface name\n"
+msgstr "Ralat: %s bukanlah nama antara muka yang sah\n"
 
-#: ../glib/gspawn-win32.c:338 ../glib/gspawn-win32.c:346 ../glib/gspawn.c:1170
+#: gio/gdbus-tool.c:784
 #, c-format
-msgid "Failed to read from child pipe (%s)"
-msgstr "Gagal membaca daripada paip anak (%s)"
+msgid "Error: %s is not a valid member name\n"
+msgstr "Ralat: %s bukanlah nama ahli yang sah\n"
 
-#: ../glib/gspawn-win32.c:369 ../glib/gspawn.c:1383
+#. Use the original non-"parse-me-harder" error
+#: gio/gdbus-tool.c:821 gio/gdbus-tool.c:1152
 #, c-format
-msgid "Failed to change to directory '%s' (%s)"
-msgstr "Gagal menukar direktori '%s' (%s)"
+msgid "Error parsing parameter %d: %s\n"
+msgstr "Ralat menghurai parameter %d: %s\n"
 
-#: ../glib/gspawn-win32.c:375 ../glib/gspawn-win32.c:494
+#: gio/gdbus-tool.c:853
 #, c-format
-msgid "Failed to execute child process (%s)"
-msgstr "Gagal melaksanakan proses anak (%s)"
+msgid "Error flushing connection: %s\n"
+msgstr "Ralat mengosongkan sambungan: %s\n"
 
-#: ../glib/gspawn-win32.c:444
-#, fuzzy, c-format
-msgid "Invalid program name: %s"
-msgstr "Namahos tidak sah"
+#: gio/gdbus-tool.c:880
+msgid "Destination name to invoke method on"
+msgstr "Nama destinasi untuk menyeru kaedah"
 
-#: ../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 ""
+#: gio/gdbus-tool.c:881
+msgid "Object path to invoke method on"
+msgstr "Laluan objek untuk menyeru kaedah"
 
-#: ../glib/gspawn-win32.c:465 ../glib/gspawn-win32.c:737
-#: ../glib/gspawn-win32.c:1311
-#, fuzzy, c-format
-msgid "Invalid string in environment: %s"
-msgstr "Turutan tidak sah semasa penukaran input"
+#: gio/gdbus-tool.c:882
+msgid "Method and interface name"
+msgstr "Kaedah dan nama antara muka"
 
-#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1259
-#, fuzzy, c-format
-msgid "Invalid working directory: %s"
-msgstr "Ralat membuka direktori %s': %s"
+#: gio/gdbus-tool.c:883
+msgid "Timeout in seconds"
+msgstr "Had masa tamat dalam saat"
 
-#: ../glib/gspawn-win32.c:783
-#, fuzzy, c-format
-msgid "Failed to execute helper program (%s)"
-msgstr "Gagal melaksanakan program pembantu"
+#: gio/gdbus-tool.c:922
+msgid "Invoke a method on a remote object."
+msgstr "Seru kaedah dalam objek jauh."
 
-#: ../glib/gspawn-win32.c:997
-msgid ""
-"Unexpected error in g_io_channel_win32_poll() reading data from a child "
-"process"
-msgstr ""
-"Ralat tidak diduga bila g_io_channel_win32_poll()membaca data daripada "
-"proses anak"
+#: gio/gdbus-tool.c:994 gio/gdbus-tool.c:1788 gio/gdbus-tool.c:2028
+msgid "Error: Destination is not specified\n"
+msgstr "Ralat: Destinasi tidak dinyatakan\n"
 
-#: ../glib/gspawn.c:207
+#: gio/gdbus-tool.c:1005 gio/gdbus-tool.c:1805 gio/gdbus-tool.c:2039
 #, c-format
-msgid "Failed to read data from child process (%s)"
-msgstr "Gagal membaca data daripada proses anak (%s)"
+msgid "Error: %s is not a valid bus name\n"
+msgstr "Ralat: %s bukanlah nama bas yang sah\n"
 
-#: ../glib/gspawn.c:347
-#, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Ralat tanpa diduga bila select() membaca data daripada proses anak (%s)"
+#: gio/gdbus-tool.c:1055
+msgid "Error: Method name is not specified\n"
+msgstr "Ralat: Nama kaedah tidak dinyatakan\n"
 
-#: ../glib/gspawn.c:432
+#: gio/gdbus-tool.c:1066
 #, c-format
-msgid "Unexpected error in waitpid() (%s)"
-msgstr "Ralat tanpa diduga pada waitpid() (%s)"
+msgid "Error: Method name “%s” is invalid\n"
+msgstr "Ralat: Nama kaedah \"%s\" adalah tidak sah\n"
 
-#: ../glib/gspawn.c:1237
+#: gio/gdbus-tool.c:1144
 #, c-format
-msgid "Failed to fork (%s)"
-msgstr "Gagal untuk sepit (%s)"
+msgid "Error parsing parameter %d of type “%s”: %s\n"
+msgstr "Ralat menghurai parameter %d bagi jenis \"%s\": %s\n"
 
-#: ../glib/gspawn.c:1393
-#, c-format
-msgid "Failed to execute child process \"%s\" (%s)"
-msgstr "Gagal melaksanakan proses anak \"%s\" (%s)"
+#: gio/gdbus-tool.c:1630
+msgid "Destination name to introspect"
+msgstr "Nama destinasi untuk diintrospect"
 
-#: ../glib/gspawn.c:1403
-#, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Gagal melencongkan output atau input proses anak (%s)"
+#: gio/gdbus-tool.c:1631
+msgid "Object path to introspect"
+msgstr "Laluan objek untuk diintrospect"
 
-#: ../glib/gspawn.c:1412
-#, c-format
-msgid "Failed to fork child process (%s)"
-msgstr "Gagal menyepit proses anak (%s)"
+#: gio/gdbus-tool.c:1632
+msgid "Print XML"
+msgstr "Cetak XML"
 
-#: ../glib/gspawn.c:1420
-#, c-format
-msgid "Unknown error executing child process \"%s\""
-msgstr "Ralat misteri ketika melaksanakan proses anak  \"%s\""
+#: gio/gdbus-tool.c:1633
+msgid "Introspect children"
+msgstr "Introspect anak"
 
-#: ../glib/gspawn.c:1444
-#, c-format
-msgid "Failed to read enough data from child pid pipe (%s)"
-msgstr "Gagal membaca data yang cukup daripada paip pid anaki(%s)"
+#: gio/gdbus-tool.c:1634
+msgid "Only print properties"
+msgstr "Hanya cetak sifat"
 
-#: ../glib/gutf8.c:1086
-msgid "Character out of range for UTF-8"
-msgstr "Aksara di luar julat UTF-8"
+#: gio/gdbus-tool.c:1723
+msgid "Introspect a remote object."
+msgstr "Introspect satu objek jauh."
 
-#: ../glib/gutf8.c:1186 ../glib/gutf8.c:1195 ../glib/gutf8.c:1325
-#: ../glib/gutf8.c:1334 ../glib/gutf8.c:1473 ../glib/gutf8.c:1569
-msgid "Invalid sequence in conversion input"
-msgstr "Turutan tidak sah semasa penukaran input"
+#: gio/gdbus-tool.c:1929
+msgid "Destination name to monitor"
+msgstr "Nama destinasi untuk dipantau"
 
-#: ../glib/gutf8.c:1484 ../glib/gutf8.c:1580
-msgid "Character out of range for UTF-16"
-msgstr "Aksara di luar julat UTF-16"
+#: gio/gdbus-tool.c:1930
+msgid "Object path to monitor"
+msgstr "Laluan objek untuk dipantau"
 
-#: ../glib/goption.c:760
-msgid "Usage:"
-msgstr ""
+#: gio/gdbus-tool.c:1955
+msgid "Monitor a remote object."
+msgstr "Pantau satu objek jauh."
 
-#: ../glib/goption.c:760
-msgid "[OPTION...]"
-msgstr ""
+#: gio/gdbus-tool.c:2013
+msgid "Error: can’t monitor a non-message-bus connection\n"
+msgstr "Ralat: tidak dapat memantau satu sambungan bukan-bas-mesej\n"
 
-#: ../glib/goption.c:866
-msgid "Help Options:"
+#: gio/gdbus-tool.c:2137
+msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
+"Perkhidmatan untuk diaktifkan sebelum menunggu yang lain (nama dikenali)"
 
-#: ../glib/goption.c:867
-msgid "Show help options"
+#: gio/gdbus-tool.c:2140
+msgid ""
+"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
+"(default)"
 msgstr ""
+"Had masa tamat untuk menunggu sebelum keluar dengan satu ralat (saat); 0 "
+"untuk tanpa had masa (lalai)"
 
-#: ../glib/goption.c:873
-msgid "Show all help options"
-msgstr ""
+#: gio/gdbus-tool.c:2188
+msgid "[OPTION…] BUS-NAME"
+msgstr "[PILIHAN…] NAMA-BAS"
 
-#: ../glib/goption.c:935
-msgid "Application Options:"
-msgstr ""
+#: gio/gdbus-tool.c:2189
+msgid "Wait for a bus name to appear."
+msgstr "Tunggu satu nama bas muncul."
 
-#: ../glib/goption.c:997 ../glib/goption.c:1067
-#, c-format
-msgid "Cannot parse integer value '%s' for %s"
-msgstr ""
+#: gio/gdbus-tool.c:2265
+msgid "Error: A service to activate for must be specified.\n"
+msgstr "Ralat: Satu perkhidmatan untuk diaktifkan mesti dinyatakan.\n"
 
-#: ../glib/goption.c:1007 ../glib/goption.c:1075
-#, c-format
-msgid "Integer value '%s' for %s out of range"
-msgstr ""
+#: gio/gdbus-tool.c:2270
+msgid "Error: A service to wait for must be specified.\n"
+msgstr "Ralat: Satu perkhidmatan untuk menunggu mesti dinyatakan.\n"
 
-#: ../glib/goption.c:1032
-#, c-format
-msgid "Cannot parse double value '%s' for %s"
-msgstr ""
+#: gio/gdbus-tool.c:2275
+msgid "Error: Too many arguments.\n"
+msgstr "Ralat: Terlalu banyak argumen.\n"
 
-#: ../glib/goption.c:1040
+#: gio/gdbus-tool.c:2283 gio/gdbus-tool.c:2290
 #, c-format
-msgid "Double value '%s' for %s out of range"
-msgstr ""
+msgid "Error: %s is not a valid well-known bus name.\n"
+msgstr "Ralat: %s bukanlah satu nama bas unik yang dikenali.\n"
 
-#: ../glib/goption.c:1303 ../glib/goption.c:1382
-#, fuzzy, c-format
-msgid "Error parsing option %s"
-msgstr "Ralat semasa penukaran: %s"
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
+msgid "Unnamed"
+msgstr "Tiada Nama"
 
-#: ../glib/goption.c:1413 ../glib/goption.c:1526
-#, c-format
-msgid "Missing argument for %s"
-msgstr ""
+#: gio/gdesktopappinfo.c:2482
+msgid "Desktop file didn’t specify Exec field"
+msgstr "Fail atas meja tidak menyatakan medan Exec"
+
+#: gio/gdesktopappinfo.c:2754
+msgid "Unable to find terminal required for application"
+msgstr "Tidak dapat mencari terminal yang diperlukan untuk aplikasi"
 
-#: ../glib/goption.c:1957
+#: gio/gdesktopappinfo.c:3406
 #, c-format
-msgid "Unknown option %s"
-msgstr ""
+msgid "Can’t create user application configuration folder %s: %s"
+msgstr "Tidak dapat mencipta folder konfigurasi aplikasi pengguna %s: %s"
 
-#: ../glib/gkeyfile.c:366
-msgid "Valid key file could not be found in search dirs"
-msgstr ""
+#: gio/gdesktopappinfo.c:3410
+#, c-format
+msgid "Can’t create user MIME configuration folder %s: %s"
+msgstr "Tidak dapat mencipta folder konfigurasi MIME pengguna %s: %s"
 
-#: ../glib/gkeyfile.c:401
-msgid "Not a regular file"
-msgstr ""
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
+msgid "Application information lacks an identifier"
+msgstr "Maklumat aplikasi kekurangan satu pengecam"
 
-#: ../glib/gkeyfile.c:409
-msgid "File is empty"
-msgstr ""
+#: gio/gdesktopappinfo.c:3908
+#, c-format
+msgid "Can’t create user desktop file %s"
+msgstr "Tidak dapat mencipta fail atas meja pengguna %s"
 
-#: ../glib/gkeyfile.c:768
+#: gio/gdesktopappinfo.c:4042
 #, c-format
-msgid ""
-"Key file contains line '%s' which is not a key-value pair, group, or comment"
-msgstr ""
+msgid "Custom definition for %s"
+msgstr "Takrifan suai untuk %s"
 
-#: ../glib/gkeyfile.c:828
-#, fuzzy, c-format
-msgid "Invalid group name: %s"
-msgstr "Namahos tidak sah"
+#: gio/gdrive.c:417
+msgid "drive doesn’t implement eject"
+msgstr "pemacu tidak melaksanakan lenting"
 
-#: ../glib/gkeyfile.c:850
-msgid "Key file does not start with a group"
-msgstr ""
+#. Translators: This is an error
+#. * message for drive objects that
+#. * don't implement any of eject or eject_with_operation.
+#: gio/gdrive.c:495
+msgid "drive doesn’t implement eject or eject_with_operation"
+msgstr "pemacu tidak melaksanakan lenting atau eject_with_operation"
 
-#: ../glib/gkeyfile.c:876
-#, fuzzy, c-format
-msgid "Invalid key name: %s"
-msgstr "Namahos tidak sah"
+#: gio/gdrive.c:571
+msgid "drive doesn’t implement polling for media"
+msgstr "pemacu tidak melaksanakan peninjauan media"
 
-#: ../glib/gkeyfile.c:903
-#, c-format
-msgid "Key file contains unsupported encoding '%s'"
-msgstr ""
+#: gio/gdrive.c:778
+msgid "drive doesn’t implement start"
+msgstr "pemacu tidak melaksanakan mula"
 
-#: ../glib/gkeyfile.c:1149 ../glib/gkeyfile.c:1311 ../glib/gkeyfile.c:2686
-#: ../glib/gkeyfile.c:2752 ../glib/gkeyfile.c:2887 ../glib/gkeyfile.c:3020
-#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3394 ../glib/gkeyfile.c:3463
-#, c-format
-msgid "Key file does not have group '%s'"
-msgstr ""
+#: gio/gdrive.c:880
+msgid "drive doesn’t implement stop"
+msgstr "pemacu tidak melaksanakan henti"
 
-#: ../glib/gkeyfile.c:1323
-#, c-format
-msgid "Key file does not have key '%s'"
-msgstr ""
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
+#: gio/gdummytlsbackend.c:509
+msgid "TLS support is not available"
+msgstr "Sokongan TLS tidak tersedia"
 
-#: ../glib/gkeyfile.c:1430 ../glib/gkeyfile.c:1546
-#, c-format
-msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
-msgstr ""
+#: gio/gdummytlsbackend.c:419
+msgid "DTLS support is not available"
+msgstr "Sokongan DTLS tidak tersedia"
 
-#: ../glib/gkeyfile.c:1450 ../glib/gkeyfile.c:1934
+#: gio/gemblem.c:323
 #, c-format
-msgid "Key file contains key '%s' which has value that cannot be interpreted."
-msgstr ""
+msgid "Can’t handle version %d of GEmblem encoding"
+msgstr "Tidak dapat mengendalikan versi %d bagi pengekodan GEmblem"
 
-#: ../glib/gkeyfile.c:1566
+#: gio/gemblem.c:333
 #, c-format
-msgid ""
-"Key file contains key '%s' which has a value that cannot be interpreted."
-msgstr ""
+msgid "Malformed number of tokens (%d) in GEmblem encoding"
+msgstr "Bilangan token cacat (%d) dalam pengekodan GEmblem"
 
-#: ../glib/gkeyfile.c:2151 ../glib/gkeyfile.c:2515
+#: gio/gemblemedicon.c:362
 #, c-format
-msgid ""
-"Key file contains key '%s' in group '%s' which has value that cannot be "
-"interpreted."
-msgstr ""
+msgid "Can’t handle version %d of GEmblemedIcon encoding"
+msgstr "Tidak dapat mengendalikan versi %d bagi pengekodan GEmblemedIcon"
 
-#: ../glib/gkeyfile.c:2701 ../glib/gkeyfile.c:2902 ../glib/gkeyfile.c:3474
+#: gio/gemblemedicon.c:372
 #, c-format
-msgid "Key file does not have key '%s' in group '%s'"
-msgstr ""
+msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
+msgstr "Bilangan token cacat (%d) dalam pengekodan GEmblemedIcon"
 
-#: ../glib/gkeyfile.c:3708
-msgid "Key file contains escape character at end of line"
-msgstr ""
+#: gio/gemblemedicon.c:395
+msgid "Expected a GEmblem for GEmblemedIcon"
+msgstr "Dijangka GEmblem untuk GEmblemedIcon"
+
+#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
+#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
+#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3758 gio/gfile.c:3813
+#: gio/gfile.c:4091 gio/gfile.c:4559 gio/gfile.c:4970 gio/gfile.c:5055
+#: gio/gfile.c:5145 gio/gfile.c:5242 gio/gfile.c:5329 gio/gfile.c:5430
+#: gio/gfile.c:8134 gio/gfile.c:8224 gio/gfile.c:8308
+#: gio/win32/gwinhttpfile.c:437
+msgid "Operation not supported"
+msgstr "Operasi tidak disokong"
+
+#. Translators: This is an error message when
+#. * trying to find the enclosing (user visible)
+#. * mount of a file, but none exists.
+#.
+#: gio/gfile.c:1575
+msgid "Containing mount does not exist"
+msgstr "Lekap terkandung yang tidak wujud"
 
-#: ../glib/gkeyfile.c:3730
-#, fuzzy, c-format
-msgid "Key file contains invalid escape sequence '%s'"
-msgstr "URI '%s' mengandungi aksara escaped yang tidak sah"
+#: gio/gfile.c:2622 gio/glocalfile.c:2428
+msgid "Can’t copy over directory"
+msgstr "Tidak dapat menyalin ke atas direktori"
 
-#: ../glib/gkeyfile.c:3872
-#, c-format
-msgid "Value '%s' cannot be interpreted as a number."
-msgstr ""
+#: gio/gfile.c:2682
+msgid "Can’t copy directory over directory"
+msgstr "Tidak dapat menyalin direktori ke atas direktori"
 
-#: ../glib/gkeyfile.c:3886
-#, c-format
-msgid "Integer value '%s' out of range"
-msgstr ""
+#: gio/gfile.c:2690
+msgid "Target file exists"
+msgstr "Fail sasaran sudah wujud"
 
-#: ../glib/gkeyfile.c:3919
-#, c-format
-msgid "Value '%s' cannot be interpreted as a float number."
-msgstr ""
+#: gio/gfile.c:2709
+msgid "Can’t recursively copy directory"
+msgstr "Tidak dapat menyalin direktori secara rekursif"
 
-#: ../glib/gkeyfile.c:3943
-#, c-format
-msgid "Value '%s' cannot be interpreted as a boolean."
-msgstr ""
+#: gio/gfile.c:2984
+msgid "Splice not supported"
+msgstr "Splice tidak disokong"
 
-#: ../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:732
+#: gio/gfile.c:2988 gio/gfile.c:3033
 #, c-format
-msgid "Too large count value passed to %s"
-msgstr ""
+msgid "Error splicing file: %s"
+msgstr "Ralat menghiris fail: %s"
 
-#: ../gio/gbufferedinputstream.c:881 ../gio/ginputstream.c:888
-#: ../gio/giostream.c:306 ../gio/goutputstream.c:1206
-msgid "Stream is already closed"
-msgstr ""
+#: gio/gfile.c:3149
+msgid "Copy (reflink/clone) between mounts is not supported"
+msgstr "Salin (reflink/klon) antara lekap tidak disokong"
 
-#: ../gio/gcancellable.c:321 ../gio/gdbusconnection.c:1640
-#: ../gio/gdbusconnection.c:1729 ../gio/gdbusconnection.c:1916
-#: ../gio/glocalfile.c:2100 ../gio/gsimpleasyncresult.c:814
-#: ../gio/gsimpleasyncresult.c:840
-msgid "Operation was cancelled"
-msgstr ""
+#: gio/gfile.c:3153
+msgid "Copy (reflink/clone) is not supported or invalid"
+msgstr "Salin (reflink/klon) tidak disokong atau tidak sah"
 
-#: ../gio/gcharsetconverter.c:263
-msgid "Invalid object, not initialized"
-msgstr ""
+#: gio/gfile.c:3158
+msgid "Copy (reflink/clone) is not supported or didn’t work"
+msgstr "Salin (reflink/klon) tidak disokong atau tidak berfungsi"
 
-#: ../gio/gcharsetconverter.c:284 ../gio/gcharsetconverter.c:312
-#, fuzzy
-msgid "Incomplete multibyte sequence in input"
-msgstr "Turutan byte tidak sah pada penukaran iput"
+#: gio/gfile.c:3222
+msgid "Can’t copy special file"
+msgstr "Tidak dapat menyalin fail khas"
 
-#: ../gio/gcharsetconverter.c:318 ../gio/gcharsetconverter.c:327
-msgid "Not enough space in destination"
-msgstr ""
+#: gio/gfile.c:4039
+msgid "Invalid symlink value given"
+msgstr "Nilai pautan simbolik yang diberi tidak sah"
 
-#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:854
-#, fuzzy
-msgid "Cancellable initialization not supported"
+#: gio/gfile.c:4049 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
 msgstr "Pautan simbolik tidak disokong"
 
-#: ../gio/gcontenttype.c:180
-msgid "Unknown type"
-msgstr ""
+#: gio/gfile.c:4200
+msgid "Trash not supported"
+msgstr "Tong sampah tidak disokong"
 
-#: ../gio/gcontenttype.c:181
+#: gio/gfile.c:4312
 #, c-format
-msgid "%s filetype"
-msgstr ""
+msgid "File names cannot contain “%c”"
+msgstr "Nama fail tidak boleh mengandungi \"%c\""
 
-#: ../gio/gcontenttype.c:680
-#, c-format
-msgid "%s type"
-msgstr ""
+#: gio/gfile.c:6793 gio/gvolume.c:364
+msgid "volume doesn’t implement mount"
+msgstr "volum tidak melaksanakan lenting"
 
-#: ../gio/gcredentials.c:273 ../gio/gcredentials.c:495
-msgid "GCredentials is not implemented on this OS"
-msgstr ""
+#: gio/gfile.c:6904 gio/gfile.c:6950
+msgid "No application is registered as handling this file"
+msgstr "Tiada aplikasi berdaftar sebagai pengendalian fail ini"
 
-#: ../gio/gcredentials.c:447
-msgid "There is no GCredentials support for your platform"
-msgstr ""
+#: gio/gfileenumerator.c:212
+msgid "Enumerator is closed"
+msgstr "Enumerator tidak ditutup"
 
-#: ../gio/gdatainputstream.c:311
-msgid "Unexpected early end-of-stream"
-msgstr ""
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
+#: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
+msgid "File enumerator has outstanding operation"
+msgstr "Enumerator fail mempunyai operasi tidak selesai"
 
-#: ../gio/gdbusaddress.c:142 ../gio/gdbusaddress.c:230
-#: ../gio/gdbusaddress.c:311
-#, c-format
-msgid "Unsupported key '%s' in address entry '%s'"
-msgstr ""
+#: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
+msgid "File enumerator is already closed"
+msgstr "Enumerator fail sudah pun ditutup"
 
-#: ../gio/gdbusaddress.c:169
+#: gio/gfileicon.c:236
 #, c-format
-msgid ""
-"Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
-msgstr ""
+msgid "Can’t handle version %d of GFileIcon encoding"
+msgstr "Tidak dapat mengendalikan versi %d bagi pengekodan GFileIcon"
 
-#: ../gio/gdbusaddress.c:182
-#, c-format
-msgid "Meaningless key/value pair combination in address entry '%s'"
-msgstr ""
+#: gio/gfileicon.c:246
+msgid "Malformed input data for GFileIcon"
+msgstr "Data input cacat untuk GFileIcon"
 
-#: ../gio/gdbusaddress.c:245 ../gio/gdbusaddress.c:326
-#, c-format
-msgid "Error in address '%s' - the port attribute is malformed"
-msgstr ""
+#: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
+#: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
+#: gio/gfileoutputstream.c:497
+msgid "Stream doesn’t support query_info"
+msgstr "Strim tidak menyokong query_info"
+
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379
+#: gio/gfileoutputstream.c:371
+msgid "Seek not supported on stream"
+msgstr "Jangkau tidak disokong pada strim"
+
+#: gio/gfileinputstream.c:369
+msgid "Truncate not allowed on input stream"
+msgstr "Pangkas tidak dibenarkan dalam strim input"
+
+#: gio/gfileiostream.c:455 gio/gfileoutputstream.c:447
+msgid "Truncate not supported on stream"
+msgstr "Pangkas tidak disokong dalam strim"
+
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
+msgid "Invalid hostname"
+msgstr "Nama hos tidak sah"
+
+#: gio/ghttpproxy.c:143
+msgid "Bad HTTP proxy reply"
+msgstr "Balas proksi HTTP teruk"
 
-#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337
+#: gio/ghttpproxy.c:159
+msgid "HTTP proxy connection not allowed"
+msgstr "Sambungan proksi HTTP tidak dibenarkan"
+
+#: gio/ghttpproxy.c:164
+msgid "HTTP proxy authentication failed"
+msgstr "Pengesahihan proksi HTTP gagal"
+
+#: gio/ghttpproxy.c:167
+msgid "HTTP proxy authentication required"
+msgstr "Pengesahihan proksi HTTP diperlukan"
+
+#: gio/ghttpproxy.c:171
 #, c-format
-msgid "Error in address '%s' - the family attribute is malformed"
-msgstr ""
+msgid "HTTP proxy connection failed: %i"
+msgstr "Sambungan proksi HTTP gagal: %i"
 
-#: ../gio/gdbusaddress.c:446
+#: gio/ghttpproxy.c:269
+msgid "HTTP proxy server closed connection unexpectedly."
+msgstr "Sambungan pelayan proksi HTTP ditutup tanpa jangka."
+
+#: gio/gicon.c:298
 #, c-format
-msgid "Address element '%s', does not contain a colon (:)"
-msgstr ""
+msgid "Wrong number of tokens (%d)"
+msgstr "Bilangan token salah (%d)"
 
-#: ../gio/gdbusaddress.c:467
+#: gio/gicon.c:318
 #, c-format
-msgid ""
-"Key/Value pair %d, '%s', in address element '%s', does not contain an equal "
-"sign"
-msgstr ""
+msgid "No type for class name %s"
+msgstr "Tiada jenis bagi nama kelas %s"
 
-#: ../gio/gdbusaddress.c:481
+#: gio/gicon.c:328
 #, c-format
-msgid ""
-"Error unescaping key or value in Key/Value pair %d, '%s', in address element "
-"'%s'"
-msgstr ""
+msgid "Type %s does not implement the GIcon interface"
+msgstr "Jenis %s tidak laksanakan antaramuka GIcon"
 
-#: ../gio/gdbusaddress.c:559
+#: gio/gicon.c:339
 #, c-format
-msgid ""
-"Error in address '%s' - the unix transport requires exactly one of the keys "
-"'path' or 'abstract' to be set"
-msgstr ""
+msgid "Type %s is not classed"
+msgstr "Jenis %s tidak dikelaskan"
 
-#: ../gio/gdbusaddress.c:595
+#: gio/gicon.c:353
 #, c-format
-msgid "Error in address '%s' - the host attribute is missing or malformed"
-msgstr ""
+msgid "Malformed version number: %s"
+msgstr "Nombor versi cacat: %s"
 
-#: ../gio/gdbusaddress.c:609
+#: gio/gicon.c:367
 #, c-format
-msgid "Error in address '%s' - the port attribute is missing or malformed"
-msgstr ""
+msgid "Type %s does not implement from_tokens() on the GIcon interface"
+msgstr "Jenis %s tidak dilaksana from_tokens() pada antaramuka GIcon"
+
+#: gio/gicon.c:469
+msgid "Can’t handle the supplied version of the icon encoding"
+msgstr "Tidak dapat mengendalikan versi dibekal bagi pengekodan icon"
 
-#: ../gio/gdbusaddress.c:623
+#: gio/ginetaddressmask.c:182
+msgid "No address specified"
+msgstr "Tiada alamat dinyatakan"
+
+#: gio/ginetaddressmask.c:190
 #, c-format
-msgid "Error in address '%s' - the noncefile attribute is missing or malformed"
-msgstr ""
+msgid "Length %u is too long for address"
+msgstr "Panjang %u terlalu panjang untuk alamat"
 
-#: ../gio/gdbusaddress.c:644
-#, fuzzy
-msgid "Error auto-launching: "
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/ginetaddressmask.c:223
+msgid "Address has bits set beyond prefix length"
+msgstr "Alamat mempunyai set bit melangkaui panjang awalan"
 
-#: ../gio/gdbusaddress.c:652
+#: gio/ginetaddressmask.c:300
 #, c-format
-msgid "Unknown or unsupported transport '%s' for address '%s'"
-msgstr ""
+msgid "Could not parse “%s” as IP address mask"
+msgstr "Tidak dapat menghurai \"%s\" sebagai topeng alamat IP"
 
-#: ../gio/gdbusaddress.c:688
-#, fuzzy, c-format
-msgid "Error opening nonce file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
+msgid "Not enough space for socket address"
+msgstr "Ruang tidak mencukupi untuk alamat soket"
 
-#: ../gio/gdbusaddress.c:706
-#, fuzzy, c-format
-msgid "Error reading from nonce file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/ginetsocketaddress.c:235
+msgid "Unsupported socket address"
+msgstr "Alamat soket tidak disokong"
 
-#: ../gio/gdbusaddress.c:715
-#, fuzzy, c-format
-msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/ginputstream.c:188
+msgid "Input stream doesn’t implement read"
+msgstr "Strim input tidak melaksanakan baca"
 
-#: ../gio/gdbusaddress.c:733
-#, fuzzy, c-format
-msgid "Error writing contents of nonce file '%s' to stream:"
-msgstr "Ralat membaca fail '%s': %s"
+#. Translators: This is an error you get if there is already an
+#. * operation running against this stream when you try to start
+#. * one
+#. Translators: This is an error you get if there is
+#. * already an operation running against this stream when
+#. * you try to start one
+#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:2208
+msgid "Stream has outstanding operation"
+msgstr "Strim mempunyai operasi tidak selesai"
 
-#: ../gio/gdbusaddress.c:951
-msgid "The given address is empty"
-msgstr ""
+#: gio/gio-tool.c:160
+msgid "Copy with file"
+msgstr "Salin dengan fail"
 
-#: ../gio/gdbusaddress.c:1020
-msgid "Cannot spawn a message bus without a machine-id: "
-msgstr ""
+#: gio/gio-tool.c:164
+msgid "Keep with file when moved"
+msgstr "Kekalkan dengan fail bila dialihkan"
 
-#: ../gio/gdbusaddress.c:1057
-#, fuzzy, c-format
-msgid "Error spawning command line '%s': "
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool.c:205
+msgid "“version” takes no arguments"
+msgstr "\"version\" tidak mengambil argumen"
 
-#: ../gio/gdbusaddress.c:1068
-#, c-format
-msgid "Abnormal program termination spawning command line '%s': %s"
-msgstr ""
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
+msgid "Usage:"
+msgstr "Penggunaan:"
 
-#: ../gio/gdbusaddress.c:1082
-#, c-format
-msgid "Command line '%s' exited with non-zero exit status %d: %s"
-msgstr ""
+#: gio/gio-tool.c:210
+msgid "Print version information and exit."
+msgstr "Tunjuk maklumat versi kemudian keluar."
 
-#: ../gio/gdbusaddress.c:1155
-#, c-format
-msgid "Cannot determine session bus address (not implemented for this OS)"
-msgstr ""
+#: gio/gio-tool.c:226
+msgid "Commands:"
+msgstr "Perintah:"
 
-#: ../gio/gdbusaddress.c:1254 ../gio/gdbusconnection.c:6409
-#, c-format
-msgid ""
-"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"- unknown value '%s'"
-msgstr ""
+#: gio/gio-tool.c:229
+msgid "Concatenate files to standard output"
+msgstr "Pangkas fail dengan output piawai"
 
-#: ../gio/gdbusaddress.c:1263 ../gio/gdbusconnection.c:6418
-msgid ""
-"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
-"variable is not set"
-msgstr ""
+#: gio/gio-tool.c:230
+msgid "Copy one or more files"
+msgstr "Salin  satu atau lebih fail"
 
-#: ../gio/gdbusaddress.c:1273
-#, c-format
-msgid "Unknown bus type %d"
-msgstr ""
+#: gio/gio-tool.c:231
+msgid "Show information about locations"
+msgstr "Tunjuk maklumat berkenaan lokasi"
 
-#: ../gio/gdbusauth.c:288
-msgid "Unexpected lack of content trying to read a line"
-msgstr ""
+#: gio/gio-tool.c:232
+msgid "List the contents of locations"
+msgstr "Senarai kandungan lokasi"
 
-#: ../gio/gdbusauth.c:332
-msgid "Unexpected lack of content trying to (safely) read a line"
-msgstr ""
+#: gio/gio-tool.c:233
+msgid "Get or set the handler for a mimetype"
+msgstr "Dapatkan atau tetapkan pengendali bagi jenis mime"
 
-#: ../gio/gdbusauth.c:503
-#, c-format
-msgid ""
-"Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
-msgstr ""
+#: gio/gio-tool.c:234
+msgid "Create directories"
+msgstr "Cipta direktori"
 
-#: ../gio/gdbusauth.c:1159
-msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
-msgstr ""
+#: gio/gio-tool.c:235
+msgid "Monitor files and directories for changes"
+msgstr "Pantau fail dan direktori jika ada perubahan"
 
-#: ../gio/gdbusauthmechanismsha1.c:266
-#, fuzzy, c-format
-msgid "Error statting directory '%s': %s"
-msgstr "Ralat membuka direktori %s': %s"
+#: gio/gio-tool.c:236
+msgid "Mount or unmount the locations"
+msgstr "Lekap atau nyahlekap lokasi"
 
-#: ../gio/gdbusauthmechanismsha1.c:278
-#, c-format
-msgid ""
-"Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o"
-msgstr ""
+#: gio/gio-tool.c:237
+msgid "Move one or more files"
+msgstr "Alih satu atau lebih fail"
 
-#: ../gio/gdbusauthmechanismsha1.c:299
-#, fuzzy, c-format
-msgid "Error creating directory '%s': %s"
-msgstr "Ralat membuka direktori %s': %s"
+#: gio/gio-tool.c:238
+msgid "Open files with the default application"
+msgstr "Buka fail dengan aplikasi lalai"
 
-#: ../gio/gdbusauthmechanismsha1.c:382
-#, fuzzy, c-format
-msgid "Error opening keyring '%s' for reading: "
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool.c:239
+msgid "Rename a file"
+msgstr "Namakan semula fail"
 
-#: ../gio/gdbusauthmechanismsha1.c:406 ../gio/gdbusauthmechanismsha1.c:718
-#, c-format
-msgid "Line %d of the keyring at '%s' with content '%s' is malformed"
-msgstr ""
+#: gio/gio-tool.c:240
+msgid "Delete one or more files"
+msgstr "Padam satu atau lebih fail"
 
-#: ../gio/gdbusauthmechanismsha1.c:420 ../gio/gdbusauthmechanismsha1.c:732
-#, c-format
-msgid ""
-"First token of line %d of the keyring at '%s' with content '%s' is malformed"
-msgstr ""
+#: gio/gio-tool.c:241
+msgid "Read from standard input and save"
+msgstr "Baca dari input piawai dan simpan"
+
+#: gio/gio-tool.c:242
+msgid "Set a file attribute"
+msgstr "Tetapkan atribut fail"
+
+#: gio/gio-tool.c:243
+msgid "Move files or directories to the trash"
+msgstr "Alih fail atau direktori ke dalam tong sampah"
+
+#: gio/gio-tool.c:244
+msgid "Lists the contents of locations in a tree"
+msgstr "Senarai kandungan lokasi dalam pepohon"
 
-#: ../gio/gdbusauthmechanismsha1.c:435 ../gio/gdbusauthmechanismsha1.c:746
+#: gio/gio-tool.c:246
 #, c-format
+msgid "Use %s to get detailed help.\n"
+msgstr "Guna %s untuk dapatkan bantuan terperinci.\n"
+
+#: gio/gio-tool-cat.c:87
+msgid "Error writing to stdout"
+msgstr "Ralat menulis ke stdout"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:172
+#: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
+msgid "LOCATION"
+msgstr "LOKASI"
+
+#: gio/gio-tool-cat.c:138
+msgid "Concatenate files and print to standard output."
+msgstr "Pangkas fail dan cetak ke output piawai."
+
+#: gio/gio-tool-cat.c:140
 msgid ""
-"Second token of line %d of the keyring at '%s' with content '%s' is malformed"
+"gio cat works just like the traditional cat utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location."
 msgstr ""
+"gio cat berfungsi seperti utiliti cat tradisional, tetapu menggunakan\n"
+"lokasi GIO selain dari fail setempat: sebagai contoh, anda boleh gunakan\n"
+"seperti smb://server/resource/file.txt sebagai lokasi."
 
-#: ../gio/gdbusauthmechanismsha1.c:459
-#, c-format
-msgid "Didn't find cookie with id %d in the keyring at '%s'"
-msgstr ""
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
+#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
+msgid "No locations given"
+msgstr "Tiada lokasi diberikan"
+
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
+msgid "No target directory"
+msgstr "Bukan direktori sasaran"
+
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
+msgid "Show progress"
+msgstr "Tunjuk kemajuan"
 
-#: ../gio/gdbusauthmechanismsha1.c:536
-#, fuzzy, c-format
-msgid "Error deleting stale lock file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
+msgid "Prompt before overwrite"
+msgstr "Maklumat sebelum tulis ganti"
 
-#: ../gio/gdbusauthmechanismsha1.c:568
-#, fuzzy, c-format
-msgid "Error creating lock file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool-copy.c:46
+msgid "Preserve all attributes"
+msgstr "Kekalkan semua atribut"
 
-#: ../gio/gdbusauthmechanismsha1.c:598
-#, fuzzy, c-format
-msgid "Error closing (unlinked) lock file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+msgid "Backup existing destination files"
+msgstr "Sandar fail destinasi sedia ada"
 
-#: ../gio/gdbusauthmechanismsha1.c:608
-#, fuzzy, c-format
-msgid "Error unlinking lock file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool-copy.c:48
+msgid "Never follow symbolic links"
+msgstr "Jangan ikut pautan simbolik"
 
-#: ../gio/gdbusauthmechanismsha1.c:685
-#, fuzzy, c-format
-msgid "Error opening keyring '%s' for writing: "
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Guna keizinan lalai untuk destinasi"
 
-#: ../gio/gdbusauthmechanismsha1.c:882
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
-msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
-msgstr ""
+msgid "Transferred %s out of %s (%s/s)"
+msgstr "Memindahkan %s dari %s (%s/s)"
 
-#: ../gio/gdbusconnection.c:1150 ../gio/gdbusconnection.c:1376
-#: ../gio/gdbusconnection.c:1415 ../gio/gdbusconnection.c:1740
-msgid "The connection is closed"
-msgstr ""
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
+msgid "SOURCE"
+msgstr "SUMBER"
 
-#: ../gio/gdbusconnection.c:1684
-msgid "Timeout was reached"
-msgstr ""
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+msgid "DESTINATION"
+msgstr "DESTINASI"
 
-#: ../gio/gdbusconnection.c:2306
-msgid ""
-"Unsupported flags encountered when constructing a client-side connection"
-msgstr ""
+#: gio/gio-tool-copy.c:105
+msgid "Copy one or more files from SOURCE to DESTINATION."
+msgstr "Salin satu atau lebih fail dari SUMBER ke DESTINASI."
 
-#: ../gio/gdbusconnection.c:3770 ../gio/gdbusconnection.c:4086
-#, c-format
+#: gio/gio-tool-copy.c:107
 msgid ""
-"No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
+"gio copy is similar to the traditional cp utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location."
 msgstr ""
+"gio copy adalah serupa dengan utiliti cp tradisional, tetapi menggunakan\n"
+"lokasi GIO selain dari fail setempat: sebagai contoh, anda boleh gunakan\n"
+"sesuatu seperti smb://server/resource/file.txt sebagai lokasi."
 
-#: ../gio/gdbusconnection.c:3841
+#: gio/gio-tool-copy.c:149
 #, c-format
-msgid "Error setting property '%s': Expected type '%s' but got '%s'"
-msgstr ""
+msgid "Destination %s is not a directory"
+msgstr "Destinasi %s bukanlah satu direktori"
 
-#: ../gio/gdbusconnection.c:3936
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
-msgid "No such property '%s'"
-msgstr ""
+msgid "%s: overwrite “%s”? "
+msgstr "%s: tulis-ganti “%s”? "
 
-#: ../gio/gdbusconnection.c:3948
-#, c-format
-msgid "Property '%s' is not readable"
-msgstr ""
+#: gio/gio-tool-info.c:34
+msgid "List writable attributes"
+msgstr "Senaraikan atribut boleh tulis"
 
-#: ../gio/gdbusconnection.c:3959
-#, c-format
-msgid "Property '%s' is not writable"
-msgstr ""
+#: gio/gio-tool-info.c:35
+msgid "Get file system info"
+msgstr "Dapatkan maklumat sistem fail"
 
-#: ../gio/gdbusconnection.c:4029 ../gio/gdbusconnection.c:5853
-#, c-format
-msgid "No such interface '%s'"
-msgstr ""
+#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:36
+msgid "The attributes to get"
+msgstr "Atribut untuk diperolehi"
 
-#: ../gio/gdbusconnection.c:4213
-msgid "No such interface"
-msgstr ""
+#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:36
+msgid "ATTRIBUTES"
+msgstr "ATRIBUT"
 
-#: ../gio/gdbusconnection.c:4432 ../gio/gdbusconnection.c:6359
-#, c-format
-msgid "No such interface '%s' on object at path %s"
-msgstr ""
+#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
+msgid "Don’t follow symbolic links"
+msgstr "Jangan ikuti pautan simbolik"
 
-#: ../gio/gdbusconnection.c:4484
-#, c-format
-msgid "No such method '%s'"
-msgstr ""
+#: gio/gio-tool-info.c:75
+msgid "attributes:\n"
+msgstr "atribut:\n"
 
-#: ../gio/gdbusconnection.c:4515
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:127
 #, c-format
-msgid "Type of message, '%s', does not match expected type '%s'"
-msgstr ""
+msgid "display name: %s\n"
+msgstr "nama paparan: %s\n"
 
-#: ../gio/gdbusconnection.c:4734
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:132
 #, c-format
-msgid "An object is already exported for the interface %s at %s"
-msgstr ""
+msgid "edit name: %s\n"
+msgstr "nama sunting: %s\n"
 
-#: ../gio/gdbusconnection.c:4932
+#: gio/gio-tool-info.c:138
 #, c-format
-msgid "Method '%s' returned type '%s', but expected '%s'"
-msgstr ""
+msgid "name: %s\n"
+msgstr "nama: %s\n"
 
-#: ../gio/gdbusconnection.c:5964
+#: gio/gio-tool-info.c:145
 #, c-format
-msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
-msgstr ""
+msgid "type: %s\n"
+msgstr "jenis: %s\n"
 
-#: ../gio/gdbusconnection.c:6082
-#, c-format
-msgid "A subtree is already exported for %s"
-msgstr ""
+#: gio/gio-tool-info.c:151
+msgid "size: "
+msgstr "saiz: "
 
-#: ../gio/gdbusmessage.c:859
-msgid "type is INVALID"
-msgstr ""
+#: gio/gio-tool-info.c:156
+msgid "hidden\n"
+msgstr "tersembunyi\n"
 
-#: ../gio/gdbusmessage.c:870
-msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
-msgstr ""
+#: gio/gio-tool-info.c:159
+#, c-format
+msgid "uri: %s\n"
+msgstr "uri: %s\n"
 
-#: ../gio/gdbusmessage.c:881
-msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
-msgstr ""
+#: gio/gio-tool-info.c:228
+msgid "Settable attributes:\n"
+msgstr "Atribut boleh tetap:\n"
 
-#: ../gio/gdbusmessage.c:893
-msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
-msgstr ""
+#: gio/gio-tool-info.c:252
+msgid "Writable attribute namespaces:\n"
+msgstr "Ruang nama atribut boleh tulis:\n"
 
-#: ../gio/gdbusmessage.c:906
-msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
-msgstr ""
+#: gio/gio-tool-info.c:287
+msgid "Show information about locations."
+msgstr "Tunjuk maklumat berkenaan lokasi."
 
-#: ../gio/gdbusmessage.c:914
+#: gio/gio-tool-info.c:289
 msgid ""
-"SIGNAL message: The PATH header field is using the reserved value /org/"
-"freedesktop/DBus/Local"
-msgstr ""
-
-#: ../gio/gdbusmessage.c:922
+"gio info is similar to the traditional ls utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location. File attributes can\n"
+"be specified with their GIO name, e.g. standard::icon, or just by\n"
+"namespace, e.g. unix, or by “*”, which matches all attributes"
+msgstr ""
+"gio info adalah serupa dengan utiliti ls tradisional, tetapi menggunakan\n"
+"lokasi GIO selain dari fail setempat: contohnya, anda boleh guna sesuatu\n"
+"seperti smb://server/resource/file.txt sebagai lokasi. Atribut fail boleh\n"
+"dinyatakan dengan nama GIO mereka, spt. standard::icon, atau hanya\n"
+"ruang nama, spt. unix, atau dengan “*”, yang padankan semua atribut"
+
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
+msgid "Show hidden files"
+msgstr "Tunjuk fail tersembunyi"
+
+#: gio/gio-tool-list.c:38
+msgid "Use a long listing format"
+msgstr "Guna format penyenaraian panjang"
+
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Cetak nama paparan"
+
+#: gio/gio-tool-list.c:41
+msgid "Print full URIs"
+msgstr "Cetak URI lengkap"
+
+#: gio/gio-tool-list.c:177
+msgid "List the contents of the locations."
+msgstr "Senaraikan kandungan lokasi."
+
+#: gio/gio-tool-list.c:179
 msgid ""
-"SIGNAL message: The INTERFACE header field is using the reserved value org."
-"freedesktop.DBus.Local"
+"gio list is similar to the traditional ls utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location. File attributes can\n"
+"be specified with their GIO name, e.g. standard::icon"
+msgstr ""
+"gio list adalah serupa dengan utiliti ls tradisional, tetapi menggunakan\n"
+"lokasi GIO selain dari fail setempat: sebagai contoh, anda boleh guna\n"
+"sesuatu seperti smb://server/resource/file.txt sebagai lokasi. Atribut\n"
+"fail boleh dinyatakan dengan nama GIO mereka iaitu standard::icon"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-mime.c:71
+msgid "MIMETYPE"
+msgstr "JENISMIME"
+
+#: gio/gio-tool-mime.c:71
+msgid "HANDLER"
+msgstr "PENGENDALI"
+
+#: gio/gio-tool-mime.c:76
+msgid "Get or set the handler for a mimetype."
+msgstr "Dapat atau tetapkan pengendali bagi jenis mime."
+
+#: gio/gio-tool-mime.c:78
+msgid ""
+"If no handler is given, lists registered and recommended applications\n"
+"for the mimetype. If a handler is given, it is set as the default\n"
+"handler for the mimetype."
 msgstr ""
+"Jika tiada pengendali diberi, senarai berdaftar dan aplikasi disaran\n"
+"untuk jenis mime. Jika pengendali diberi, maka ia ditetapkan sebagai\n"
+"pengendali lalai untuk jenis mime."
 
-#: ../gio/gdbusmessage.c:998
-#, c-format
-msgid "Wanted to read %lu byte but got EOF"
-msgid_plural "Wanted to read %lu bytes but got EOF"
-msgstr[0] ""
-msgstr[1] ""
+#: gio/gio-tool-mime.c:100
+msgid "Must specify a single mimetype, and maybe a handler"
+msgstr "Mesti nyatakan satu jenis mime, dan mungkin satu pengendali"
 
-#: ../gio/gdbusmessage.c:1025
+#: gio/gio-tool-mime.c:116
 #, 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 ""
+msgid "No default applications for “%s”\n"
+msgstr "Tiada aplikasi lalai untuk \"%s\"\n"
 
-#: ../gio/gdbusmessage.c:1038
+#: gio/gio-tool-mime.c:122
 #, c-format
-msgid "Expected NUL byte after the string '%s' but found byte %d"
-msgstr ""
+msgid "Default application for “%s”: %s\n"
+msgstr "Aplikasi lalai untuk “%s”: %s\n"
 
-#: ../gio/gdbusmessage.c:1242
-#, c-format
-msgid "Parsed value '%s' is not a valid D-Bus object path"
-msgstr ""
+#: gio/gio-tool-mime.c:127
+msgid "Registered applications:\n"
+msgstr "Aplikasi berdaftar:\n"
 
-#: ../gio/gdbusmessage.c:1268
-#, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature"
-msgstr ""
+#: gio/gio-tool-mime.c:129
+msgid "No registered applications\n"
+msgstr "Tiada aplikasi berdaftar\n"
 
-#: ../gio/gdbusmessage.c:1324
-#, c-format
-msgid ""
-"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
-msgid_plural ""
-"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
-msgstr[0] ""
-msgstr[1] ""
+#: gio/gio-tool-mime.c:140
+msgid "Recommended applications:\n"
+msgstr "Aplikasi saranan:\n"
 
-#: ../gio/gdbusmessage.c:1490
-#, c-format
-msgid "Parsed value '%s' for variant is not a valid D-Bus signature"
-msgstr ""
+#: gio/gio-tool-mime.c:142
+msgid "No recommended applications\n"
+msgstr "Tiada aplikasi saranan\n"
 
-#: ../gio/gdbusmessage.c:1517
+#: gio/gio-tool-mime.c:162
 #, c-format
-msgid ""
-"Error deserializing GVariant with type string '%s' from the D-Bus wire format"
-msgstr ""
+#| msgid "Failed to read from file '%s': %s"
+msgid "Failed to load info for handler “%s”"
+msgstr "Gagal memuatkan maklumat untuk pengendali \"%s\""
 
-#: ../gio/gdbusmessage.c:1705
+#: gio/gio-tool-mime.c:168
 #, c-format
+msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
+msgstr "Gagal menetapkan “%s” sebagai pengendali lalai untuk “%s”: %s\n"
+
+#: gio/gio-tool-mkdir.c:31
+msgid "Create parent directories"
+msgstr "Cipta direktori induk"
+
+#: gio/gio-tool-mkdir.c:52
+msgid "Create directories."
+msgstr "Cipta direktori."
+
+#: gio/gio-tool-mkdir.c:54
 msgid ""
-"Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value "
-"0x%02x"
+"gio mkdir is similar to the traditional mkdir utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/mydir as location."
 msgstr ""
+"gio mkdir adalah serupa dengan utiliti mkdir tradisional, tetapi "
+"menggunakan\n"
+"lokasi GIO selain dari fail setempat: sebagai contoh, anda boleh gunakan\n"
+"sesuatu seperti smb://server/resource/mydir sebgai lokasi."
 
-#: ../gio/gdbusmessage.c:1719
-#, c-format
-msgid "Invalid major protocol version. Expected 1 but found %d"
-msgstr ""
+#: gio/gio-tool-monitor.c:37
+msgid "Monitor a directory (default: depends on type)"
+msgstr "Pantau satu direktori (lalai: bergantung pada jenis)"
 
-#: ../gio/gdbusmessage.c:1776
-#, c-format
-msgid "Signature header with signature '%s' found but message body is empty"
-msgstr ""
+#: gio/gio-tool-monitor.c:39
+msgid "Monitor a file (default: depends on type)"
+msgstr "Pantau satu fail (lalai: bergantung pada jenis)"
 
-#: ../gio/gdbusmessage.c:1790
-#, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature (for body)"
-msgstr ""
+#: gio/gio-tool-monitor.c:41
+msgid "Monitor a file directly (notices changes made via hardlinks)"
+msgstr "Pantau satu fail secara terus (perubahan berlaku melalui pautan keras)"
 
-#: ../gio/gdbusmessage.c:1821
-#, c-format
-msgid "No signature header in message but the message body is %u byte"
-msgid_plural "No signature header in message but the message body is %u bytes"
-msgstr[0] ""
-msgstr[1] ""
+#: gio/gio-tool-monitor.c:43
+msgid "Monitors a file directly, but doesn’t report changes"
+msgstr "Pantau satu fail secara terus (tidak melaporkan apa-apa perubahan)"
 
-#: ../gio/gdbusmessage.c:1831
-msgid "Cannot deserialize message: "
+#: gio/gio-tool-monitor.c:45
+msgid "Report moves and renames as simple deleted/created events"
 msgstr ""
+"Laporkan pergerakan dan namakan semula sebagai peristiwa dipadam/dicipta "
+"ringkas"
 
-#: ../gio/gdbusmessage.c:2163
-#, c-format
-msgid ""
-"Error serializing GVariant with type string '%s' to the D-Bus wire format"
-msgstr ""
+#: gio/gio-tool-monitor.c:47
+msgid "Watch for mount events"
+msgstr "Pantau peristiwa lekap"
 
-#: ../gio/gdbusmessage.c:2303
-#, c-format
-msgid ""
-"Message has %d file descriptors but the header field indicates %d file "
-"descriptors"
-msgstr ""
+#: gio/gio-tool-monitor.c:208
+msgid "Monitor files or directories for changes."
+msgstr "Pantau fail atau direktori jika ada perubahan."
 
-#: ../gio/gdbusmessage.c:2311
-msgid "Cannot serialize message: "
-msgstr ""
+#: gio/gio-tool-mount.c:63
+msgid "Mount as mountable"
+msgstr "Lekap sebagai boleh lekap"
 
-#: ../gio/gdbusmessage.c:2355
-#, c-format
-msgid "Message body has signature '%s' but there is no signature header"
-msgstr ""
+#: gio/gio-tool-mount.c:64
+msgid "Mount volume with device file, or other identifier"
+msgstr "Lekap volum dengan fail peranti, atau pengecam lain"
 
-#: ../gio/gdbusmessage.c:2365
-#, c-format
-msgid ""
-"Message body has type signature '%s' but signature in the header field is '"
-"%s'"
-msgstr ""
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
-#: ../gio/gdbusmessage.c:2381
-#, c-format
-msgid "Message body is empty but signature in the header field is '(%s)'"
-msgstr ""
+#: gio/gio-tool-mount.c:65
+msgid "Unmount"
+msgstr "Nyahlekap"
 
-#: ../gio/gdbusmessage.c:2938
-#, fuzzy, c-format
-msgid "Error return with body of type '%s'"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool-mount.c:66
+msgid "Eject"
+msgstr "Lenting"
 
-#: ../gio/gdbusmessage.c:2946
-msgid "Error return with empty body"
-msgstr ""
+#: gio/gio-tool-mount.c:67
+msgid "Stop drive with device file"
+msgstr "Henti pemacu dengan fail peranti"
 
-#: ../gio/gdbusprivate.c:1736
-msgid "Unable to load /var/lib/dbus/machine-id: "
-msgstr ""
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "PERANTI"
 
-#: ../gio/gdbusproxy.c:1489
-#, c-format
-msgid "Error calling StartServiceByName for %s: "
-msgstr ""
+#: gio/gio-tool-mount.c:68
+msgid "Unmount all mounts with the given scheme"
+msgstr "Nyahlekap semua lekap berdasarkan skema diberi"
 
-#: ../gio/gdbusproxy.c:1510
-#, c-format
-msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
-msgstr ""
+#: gio/gio-tool-mount.c:68
+msgid "SCHEME"
+msgstr "SKEMA"
 
-#: ../gio/gdbusproxy.c:2600 ../gio/gdbusproxy.c:2734
-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 ""
+#: gio/gio-tool-mount.c:69
+msgid "Ignore outstanding file operations when unmounting or ejecting"
+msgstr "Abai operasi fail belum selesai ketika menyahlekap atau melenting"
 
-#: ../gio/gdbusserver.c:711
-#, fuzzy
-msgid "Abstract name space not supported"
-msgstr "Pautan simbolik tidak disokong"
+#: gio/gio-tool-mount.c:70
+msgid "Use an anonymous user when authenticating"
+msgstr "Guna seorang pengguna awanama ketika mengesahihkan"
 
-#: ../gio/gdbusserver.c:798
-msgid "Cannot specify nonce file when creating a server"
-msgstr ""
+#. Translator: List here is a verb as in 'List all mounts'
+#: gio/gio-tool-mount.c:72
+msgid "List"
+msgstr "Senarai"
 
-#: ../gio/gdbusserver.c:875
-#, fuzzy, c-format
-msgid "Error writing nonce file at '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool-mount.c:73
+msgid "Monitor events"
+msgstr "Pantau peristiwa"
 
-#: ../gio/gdbusserver.c:1042
-#, c-format
-msgid "The string '%s' is not a valid D-Bus GUID"
-msgstr ""
+#: gio/gio-tool-mount.c:74
+msgid "Show extra information"
+msgstr "Tunjuk maklumat tambahan"
 
-#: ../gio/gdbusserver.c:1082
-#, c-format
-msgid "Cannot listen on unsupported transport '%s'"
-msgstr ""
+#: gio/gio-tool-mount.c:75
+msgid "The numeric PIM when unlocking a VeraCrypt volume"
+msgstr "PIM berangka ketika menyahkunci satu volum VeraCrypt"
 
-#: ../gio/gdbus-tool.c:88
-msgid "COMMAND"
-msgstr ""
+#: gio/gio-tool-mount.c:75
+msgid "PIM"
+msgstr "PIM"
 
-#: ../gio/gdbus-tool.c:93
-#, c-format
-msgid ""
-"Commands:\n"
-"  help         Shows this information\n"
-"  introspect   Introspect a remote object\n"
-"  monitor      Monitor a remote object\n"
-"  call         Invoke a method on a remote object\n"
-"  emit         Emit a signal\n"
-"\n"
-"Use \"%s COMMAND --help\" to get help on each command.\n"
-msgstr ""
+#: gio/gio-tool-mount.c:76
+msgid "Mount a TCRYPT hidden volume"
+msgstr "Lekap satu volum tersembunyi TCRYPT"
 
-#: ../gio/gdbus-tool.c:162 ../gio/gdbus-tool.c:218 ../gio/gdbus-tool.c:290
-#: ../gio/gdbus-tool.c:314 ../gio/gdbus-tool.c:691 ../gio/gdbus-tool.c:1010
-#: ../gio/gdbus-tool.c:1443
-#, fuzzy, c-format
-msgid "Error: %s\n"
-msgstr "Ralat pada baris %d: %s"
+#: gio/gio-tool-mount.c:77
+msgid "Mount a TCRYPT system volume"
+msgstr "Lekap satu volum sistem TCRYPT"
 
-#: ../gio/gdbus-tool.c:173 ../gio/gdbus-tool.c:231 ../gio/gdbus-tool.c:1459
-#, fuzzy, c-format
-msgid "Error parsing introspection XML: %s\n"
-msgstr "Ralat semasa penukaran: %s"
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
+msgid "Anonymous access denied"
+msgstr "Capaian awanama dinafikan"
 
-#: ../gio/gdbus-tool.c:348
-msgid "Connect to the system bus"
-msgstr ""
+#: gio/gio-tool-mount.c:522
+msgid "No drive for device file"
+msgstr "Tiada pemacu untuk fail pemacu"
 
-#: ../gio/gdbus-tool.c:349
-msgid "Connect to the session bus"
-msgstr ""
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Tiada volum untuk ID diberi"
 
-#: ../gio/gdbus-tool.c:350
-msgid "Connect to given D-Bus address"
-msgstr ""
+#: gio/gio-tool-mount.c:1203
+msgid "Mount or unmount the locations."
+msgstr "Lekap atau nyahlekap lokasi."
 
-#: ../gio/gdbus-tool.c:360
-msgid "Connection Endpoint Options:"
-msgstr ""
+#: gio/gio-tool-move.c:42
+msgid "Don’t use copy and delete fallback"
+msgstr "Jangan salin atau padam jatuh-balik"
 
-#: ../gio/gdbus-tool.c:361
-msgid "Options specifying the connection endpoint"
-msgstr ""
+#: gio/gio-tool-move.c:99
+msgid "Move one or more files from SOURCE to DEST."
+msgstr "Alih satu atau lebih fail dari SUMBER ke DEST."
 
-#: ../gio/gdbus-tool.c:383
-#, c-format
-msgid "No connection endpoint specified"
+#: gio/gio-tool-move.c:101
+msgid ""
+"gio move is similar to the traditional mv utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location"
 msgstr ""
+"gio move adalah serupa dengan utiliti mv tradisional, tetapi melalui GIO\n"
+"lokasi GIO selain dari fail setempat: sebagai contoh, anda boleh gunakan\n"
+"sesuatu seperti smb://server/resource/file.txt sebagai lokasi"
 
-#: ../gio/gdbus-tool.c:393
+#: gio/gio-tool-move.c:143
 #, c-format
-msgid "Multiple connection endpoints specified"
-msgstr ""
+msgid "Target %s is not a directory"
+msgstr "Sasaran %s bukanlah satu direktori"
 
-#: ../gio/gdbus-tool.c:463
-#, c-format
+#: gio/gio-tool-open.c:75
 msgid ""
-"Warning: According to introspection data, interface '%s' does not exist\n"
+"Open files with the default application that\n"
+"is registered to handle files of this type."
 msgstr ""
+"Buka fail dengan aplikasi lalai yang terdaftar\n"
+"untuk kendalikan fail jenis ini."
 
-#: ../gio/gdbus-tool.c:472
-#, c-format
-msgid ""
-"Warning: According to introspection data, method '%s' does not exist on "
-"interface '%s'\n"
-msgstr ""
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:31
+msgid "Ignore nonexistent files, never prompt"
+msgstr "Abai fail tidak wujud, jangan maklumkan"
 
-#: ../gio/gdbus-tool.c:534
-msgid "Optional destination for signal (unique name)"
-msgstr ""
+#: gio/gio-tool-remove.c:52
+msgid "Delete the given files."
+msgstr "Padam fail yang diberi."
 
-#: ../gio/gdbus-tool.c:535
-msgid "Object path to emit signal on"
-msgstr ""
+#: gio/gio-tool-rename.c:45
+msgid "NAME"
+msgstr "NAMA"
 
-#: ../gio/gdbus-tool.c:536
-msgid "Signal and interface name"
-msgstr ""
+#: gio/gio-tool-rename.c:50
+msgid "Rename a file."
+msgstr "Namakan semula satu fail."
 
-#: ../gio/gdbus-tool.c:568
-msgid "Emit a signal."
-msgstr ""
+#: gio/gio-tool-rename.c:70
+msgid "Missing argument"
+msgstr "Argumen hilang"
 
-#: ../gio/gdbus-tool.c:602 ../gio/gdbus-tool.c:822 ../gio/gdbus-tool.c:1549
-#: ../gio/gdbus-tool.c:1781
-#, fuzzy, c-format
-msgid "Error connecting: %s\n"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
+msgid "Too many arguments"
+msgstr "Terlalu banyak argumen"
 
-#: ../gio/gdbus-tool.c:614
+#: gio/gio-tool-rename.c:95
 #, c-format
-msgid "Error: object path not specified.\n"
-msgstr ""
+msgid "Rename successful. New uri: %s\n"
+msgstr "Namakan semula berjaya. Uri baharu: %s\n"
 
-#: ../gio/gdbus-tool.c:619 ../gio/gdbus-tool.c:883 ../gio/gdbus-tool.c:1607
-#: ../gio/gdbus-tool.c:1840
-#, c-format
-msgid "Error: %s is not a valid object path\n"
-msgstr ""
+#: gio/gio-tool-save.c:50
+msgid "Only create if not existing"
+msgstr "Hanya cipta jika tidak wujud"
 
-#: ../gio/gdbus-tool.c:625
-#, c-format
-msgid "Error: signal not specified.\n"
-msgstr ""
+#: gio/gio-tool-save.c:51
+msgid "Append to end of file"
+msgstr "Tambah ke penghujung fail"
 
-#: ../gio/gdbus-tool.c:634
-#, fuzzy, c-format
-msgid "Error: %s is not a valid interface name\n"
-msgstr "Aksara '%s' adalah tidak sah di dalam nama entiti"
+#: gio/gio-tool-save.c:52
+msgid "When creating, restrict access to the current user"
+msgstr "Bila mencipta, hadkan capaian ke pengguna semasa"
 
-#: ../gio/gdbus-tool.c:640
-#, fuzzy, c-format
-msgid "Error: %s is not a valid member name\n"
-msgstr "Aksara '%s' adalah tidak sah di dalam nama entiti"
+#: gio/gio-tool-save.c:53
+msgid "When replacing, replace as if the destination did not exist"
+msgstr "Bila digantikan, gantikan seolah-olah destinasi tidak wujud"
 
-#: ../gio/gdbus-tool.c:646
-#, fuzzy, c-format
-msgid "Error: %s is not a valid unique bus name.\n"
-msgstr "Aksara '%s' adalah tidak sah di dalam nama entiti"
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:55
+msgid "Print new etag at end"
+msgstr "Cetak etag baharu dipenghujung"
 
-#: ../gio/gdbus-tool.c:669 ../gio/gdbus-tool.c:982
-#, fuzzy, c-format
-msgid "Error parsing parameter %d: %s\n"
-msgstr "Ralat semasa penukaran: %s"
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:57
+msgid "The etag of the file being overwritten"
+msgstr "etag fail telah ditulis-ganti"
 
-#: ../gio/gdbus-tool.c:698
-#, fuzzy, c-format
-msgid "Error flushing connection: %s\n"
-msgstr "Ralat semasa penukaran: %s"
+#: gio/gio-tool-save.c:57
+msgid "ETAG"
+msgstr "ETAG"
 
-#: ../gio/gdbus-tool.c:725
-msgid "Destination name to invoke method on"
-msgstr ""
+#: gio/gio-tool-save.c:113
+msgid "Error reading from standard input"
+msgstr "Ralat membaca dari input piawai"
 
-#: ../gio/gdbus-tool.c:726
-msgid "Object path to invoke method on"
-msgstr ""
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:139
+msgid "Etag not available\n"
+msgstr "Etag tidak tersedia\n"
 
-#: ../gio/gdbus-tool.c:727
-msgid "Method and interface name"
-msgstr ""
+#: gio/gio-tool-save.c:163
+msgid "Read from standard input and save to DEST."
+msgstr "Baca dari input piawai dan simpan ke DEST."
 
-#: ../gio/gdbus-tool.c:728
-msgid "Timeout in seconds"
-msgstr ""
+#: gio/gio-tool-save.c:183
+msgid "No destination given"
+msgstr "Tiada destinasi diberikan"
 
-#: ../gio/gdbus-tool.c:767
-msgid "Invoke a method on a remote object."
-msgstr ""
+#: gio/gio-tool-set.c:33
+msgid "Type of the attribute"
+msgstr "Jenis atribut"
 
-#: ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1568 ../gio/gdbus-tool.c:1800
-#, c-format
-msgid "Error: Destination is not specified\n"
-msgstr ""
+#: gio/gio-tool-set.c:33
+msgid "TYPE"
+msgstr "JENIS"
 
-#: ../gio/gdbus-tool.c:863 ../gio/gdbus-tool.c:1587
-#, c-format
-msgid "Error: Object path is not specified\n"
-msgstr ""
+#: gio/gio-tool-set.c:89
+msgid "ATTRIBUTE"
+msgstr "ATRIBUT"
 
-#: ../gio/gdbus-tool.c:898
-#, c-format
-msgid "Error: Method name is not specified\n"
-msgstr ""
+#: gio/gio-tool-set.c:89
+msgid "VALUE"
+msgstr "NILAI"
 
-#: ../gio/gdbus-tool.c:909
-#, c-format
-msgid "Error: Method name '%s' is invalid\n"
-msgstr ""
+#: gio/gio-tool-set.c:93
+msgid "Set a file attribute of LOCATION."
+msgstr "Tetapkan atribut fail LOKASI."
 
-#: ../gio/gdbus-tool.c:974
-#, fuzzy, c-format
-msgid "Error parsing parameter %d of type '%s': %s\n"
-msgstr "Ralat membuka direktori %s': %s"
+#: gio/gio-tool-set.c:113
+msgid "Location not specified"
+msgstr "Lokasi tidak dinyatakan"
 
-#: ../gio/gdbus-tool.c:1406
-msgid "Destination name to introspect"
-msgstr ""
+#: gio/gio-tool-set.c:120
+msgid "Attribute not specified"
+msgstr "Atribut tidak dinyatakan"
 
-#: ../gio/gdbus-tool.c:1407
-msgid "Object path to introspect"
-msgstr ""
+#: gio/gio-tool-set.c:130
+msgid "Value not specified"
+msgstr "Nilai tidak dinyatakan"
 
-#: ../gio/gdbus-tool.c:1408
-msgid "Print XML"
-msgstr ""
+#: gio/gio-tool-set.c:180
+#, c-format
+msgid "Invalid attribute type “%s”"
+msgstr "Jenis atribut \"%s\" tidak sah"
 
-#: ../gio/gdbus-tool.c:1409
-msgid "Introspect children"
-msgstr ""
+#: gio/gio-tool-trash.c:32
+msgid "Empty the trash"
+msgstr "Kosongkan tong sampah"
 
-#: ../gio/gdbus-tool.c:1410
-msgid "Only print properties"
-msgstr ""
+#: gio/gio-tool-trash.c:86
+msgid "Move files or directories to the trash."
+msgstr "Alih fail atau direktori ke dalam tong sampah."
 
-#: ../gio/gdbus-tool.c:1501
-msgid "Introspect a remote object."
-msgstr ""
+#: gio/gio-tool-tree.c:33
+msgid "Follow symbolic links, mounts and shortcuts"
+msgstr "Ikuti pautan simbolik, lekap dan pintasan"
 
-#: ../gio/gdbus-tool.c:1699
-msgid "Destination name to monitor"
-msgstr ""
+#: gio/gio-tool-tree.c:244
+msgid "List contents of directories in a tree-like format."
+msgstr "Senaraikan kandungan direktori dalam format seakan-pepohon."
 
-#: ../gio/gdbus-tool.c:1700
-msgid "Object path to monitor"
-msgstr ""
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
+#, c-format
+msgid "Element <%s> not allowed inside <%s>"
+msgstr "Unsur <%s> tidak dibenarkan dalam <%s>"
 
-#: ../gio/gdbus-tool.c:1733
-msgid "Monitor a remote object."
-msgstr ""
+#: gio/glib-compile-resources.c:144
+#, c-format
+msgid "Element <%s> not allowed at toplevel"
+msgstr "Unsur <%s> tidak dibenarkan pada aras tertinggi"
 
-#: ../gio/gdesktopappinfo.c:572 ../gio/gwin32appinfo.c:221
-msgid "Unnamed"
-msgstr ""
+#: gio/glib-compile-resources.c:234
+#, c-format
+msgid "File %s appears multiple times in the resource"
+msgstr "Fail %s muncul berbilang kali dalam sumber"
 
-#: ../gio/gdesktopappinfo.c:969
-msgid "Desktop file didn't specify Exec field"
-msgstr ""
+#: gio/glib-compile-resources.c:245
+#, c-format
+msgid "Failed to locate “%s” in any source directory"
+msgstr "Gagal mencari \"%s\" dalam mana-mana direktori sumber"
 
-#: ../gio/gdesktopappinfo.c:1250
-msgid "Unable to find terminal required for application"
-msgstr ""
+#: gio/glib-compile-resources.c:256
+#, c-format
+msgid "Failed to locate “%s” in current directory"
+msgstr "Gagal mencari \"%s\" dalam direktori semasa"
 
-#: ../gio/gdesktopappinfo.c:1515
+#: gio/glib-compile-resources.c:290
 #, c-format
-msgid "Can't create user application configuration folder %s: %s"
-msgstr ""
+msgid "Unknown processing option “%s”"
+msgstr "Pilihan pemprosesan \"%s\" tidak diketahui"
 
-#: ../gio/gdesktopappinfo.c:1519
+#. Translators: the first %s is a gresource XML attribute,
+#. * the second %s is an environment variable, and the third
+#. * %s is a command line tool
+#.
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
 #, c-format
-msgid "Can't create user MIME configuration folder %s: %s"
+msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
 msgstr ""
+"Pra-pemprosesan %s dipinta, tetapi %s tidak ditetapkan, dan %s tidak berada "
+"dalam PATH"
 
-#: ../gio/gdesktopappinfo.c:1785 ../gio/gdesktopappinfo.c:1809
-msgid "Application information lacks an identifier"
-msgstr ""
+#: gio/glib-compile-resources.c:457
+#, c-format
+#| msgid "Error reading file '%s': %s"
+msgid "Error reading file %s: %s"
+msgstr "Ralat membaca fail %s: %s"
 
-#: ../gio/gdesktopappinfo.c:2033
+#: gio/glib-compile-resources.c:477
 #, c-format
-msgid "Can't create user desktop file %s"
-msgstr ""
+msgid "Error compressing file %s"
+msgstr "Ralat memampatkan fail %s"
 
-#: ../gio/gdesktopappinfo.c:2149
+#: gio/glib-compile-resources.c:541
 #, c-format
-msgid "Custom definition for %s"
-msgstr ""
+msgid "text may not appear inside <%s>"
+msgstr "teks mungkin tidak muncul dalam <%s>"
 
-#: ../gio/gdrive.c:363
-msgid "drive doesn't implement eject"
-msgstr ""
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+msgid "Show program version and exit"
+msgstr "Tunjuk versi program kemudian keluar"
 
-#. Translators: This is an error
-#. * message for drive objects that
-#. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:444
-msgid "drive doesn't implement eject or eject_with_operation"
-msgstr ""
+#: gio/glib-compile-resources.c:738
+msgid "Name of the output file"
+msgstr "Nama bagi fail output"
 
-#: ../gio/gdrive.c:521
-msgid "drive doesn't implement polling for media"
+#: gio/glib-compile-resources.c:739
+msgid ""
+"The directories to load files referenced in FILE from (default: current "
+"directory)"
 msgstr ""
+"Direktori untuk memuatkan fail dirujuk sari dalam FAIL (lala: direktori "
+"semasa)"
 
-#: ../gio/gdrive.c:728
-msgid "drive doesn't implement start"
-msgstr ""
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
+msgid "DIRECTORY"
+msgstr "DIREKTORI"
 
-#: ../gio/gdrive.c:831
-msgid "drive doesn't implement stop"
+#: gio/glib-compile-resources.c:740
+msgid ""
+"Generate output in the format selected for by the target filename extension"
 msgstr ""
+"Jana output dalam format terpilih berdasarkan sambungan nama fail sasaran"
 
-#: ../gio/gdummytlsbackend.c:168 ../gio/gdummytlsbackend.c:288
-#: ../gio/gdummytlsbackend.c:378
-msgid "TLS support is not available"
-msgstr ""
+#: gio/glib-compile-resources.c:741
+msgid "Generate source header"
+msgstr "Jana pengepala sumber"
 
-#: ../gio/gemblem.c:324
-#, c-format
-msgid "Can't handle version %d of GEmblem encoding"
+#: gio/glib-compile-resources.c:742
+msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
+"Jana kod sumber yang digunakan untuk dipautkan dalam fail sumber ke dalam "
+"kod anda"
 
-#: ../gio/gemblem.c:334
-#, c-format
-msgid "Malformed number of tokens (%d) in GEmblem encoding"
-msgstr ""
+#: gio/glib-compile-resources.c:743
+msgid "Generate dependency list"
+msgstr "Jana senarai dependensi"
 
-#: ../gio/gemblemedicon.c:368
-#, c-format
-msgid "Can't handle version %d of GEmblemedIcon encoding"
-msgstr ""
+#: gio/glib-compile-resources.c:744
+msgid "Name of the dependency file to generate"
+msgstr "Nama bagi fail dependensi yang dijanakan"
 
-#: ../gio/gemblemedicon.c:378
-#, c-format
-msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
-msgstr ""
+#: gio/glib-compile-resources.c:745
+msgid "Include phony targets in the generated dependency file"
+msgstr "Sertakan sasaran foni dalam fail dependensi terjana"
 
-#: ../gio/gemblemedicon.c:401
-msgid "Expected a GEmblem for GEmblemedIcon"
-msgstr ""
+#: gio/glib-compile-resources.c:746
+msgid "Don’t automatically create and register resource"
+msgstr "Jangan cipta dan daftar sumber secara automatik"
 
-#: ../gio/gfile.c:871 ../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:3864
-#: ../gio/gfile.c:4266 ../gio/gfile.c:4352 ../gio/gfile.c:4441
-#: ../gio/gfile.c:4539 ../gio/gfile.c:4626 ../gio/gfile.c:4720
-#: ../gio/gfile.c:5041 ../gio/gfile.c:5308 ../gio/gfile.c:5373
-#: ../gio/gfile.c:6947 ../gio/gfile.c:7037 ../gio/gfile.c:7123
-#: ../gio/win32/gwinhttpfile.c:439
-#, fuzzy
-msgid "Operation not supported"
-msgstr "Pautan simbolik tidak disokong"
+#: gio/glib-compile-resources.c:747
+msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
+msgstr "Jangan eksport fungsi; isytihar mereka sebagai G_GNUC_INTERNAL"
 
-#. Translators: This is an error message when trying to find the
-#. * enclosing (user visible) mount of a file, but none exists.
-#. Translators: This is an error message when trying to
-#. * find the enclosing (user visible) mount of a file, but
-#. * none exists.
-#. 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:1051 ../gio/glocalfile.c:1062
-#: ../gio/glocalfile.c:1075
-msgid "Containing mount does not exist"
+#: gio/glib-compile-resources.c:748
+msgid ""
+"Don’t embed resource data in the C file; assume it's linked externally "
+"instead"
 msgstr ""
+"Jangan benamkan data sumber dalam fail C; anggap ia terpaut secara luar"
 
-#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2256
-msgid "Can't copy over directory"
-msgstr ""
+#: gio/glib-compile-resources.c:749
+msgid "C identifier name used for the generated source code"
+msgstr "Nama pengecam C digunakan untuk kod sumber terjana"
 
-#: ../gio/gfile.c:2472
-msgid "Can't copy directory over directory"
+#: gio/glib-compile-resources.c:775
+msgid ""
+"Compile a resource specification into a resource file.\n"
+"Resource specification files have the extension .gresource.xml,\n"
+"and the resource file have the extension called .gresource."
 msgstr ""
+"Kompil satu spesifikasi sumber ke dalam fail sumber.\n"
+"Fail spesifikasi sumber mempunyai sambungan .gresourse.xml,\n"
+"dan fail sumber mempunyai sambungan dikenali sebagai .gresource."
 
-#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2265
-msgid "Target file exists"
-msgstr ""
+#: gio/glib-compile-resources.c:797
+msgid "You should give exactly one file name\n"
+msgstr "Anda seharusnya berikan setepatnya satu nama fail\n"
 
-#: ../gio/gfile.c:2498
-msgid "Can't recursively copy directory"
-msgstr ""
+#: gio/glib-compile-schemas.c:92
+#, c-format
+msgid "nick must be a minimum of 2 characters"
+msgstr "gelaran mesti minimum 2 aksara"
 
-#: ../gio/gfile.c:2758
-#, fuzzy
-msgid "Splice not supported"
-msgstr "Pautan simbolik tidak disokong"
+#: gio/glib-compile-schemas.c:103
+#, c-format
+msgid "Invalid numeric value"
+msgstr "Nilai angka tidak sah"
 
-#: ../gio/gfile.c:2762
-#, fuzzy, c-format
-msgid "Error splicing file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glib-compile-schemas.c:111
+#, c-format
+msgid "<value nick='%s'/> already specified"
+msgstr "<value nick='%s'> sudah dinyatakan"
 
-#: ../gio/gfile.c:2909
-msgid "Can't copy special file"
-msgstr ""
+#: gio/glib-compile-schemas.c:119
+#, c-format
+msgid "value='%s' already specified"
+msgstr "value='%s' sudah dinyatakan"
 
-#: ../gio/gfile.c:3483
-msgid "Invalid symlink value given"
-msgstr ""
+#: gio/glib-compile-schemas.c:133
+#, c-format
+msgid "flags values must have at most 1 bit set"
+msgstr "nilai bendera mesti mempunyai paling banyak 1 bit set"
 
-#: ../gio/gfile.c:3577
-#, fuzzy
-msgid "Trash not supported"
-msgstr "Pautan simbolik tidak disokong"
+#: gio/glib-compile-schemas.c:158
+#, c-format
+msgid "<%s> must contain at least one <value>"
+msgstr "<%s> mesti mengandungi sekurang-kurangnya satu <value>"
 
-#: ../gio/gfile.c:3626
+#: gio/glib-compile-schemas.c:314
 #, c-format
-msgid "File names cannot contain '%c'"
-msgstr ""
+msgid "<%s> is not contained in the specified range"
+msgstr "<%s> tidak terkandung dalam julat yang dinyatakan"
 
-#: ../gio/gfile.c:6006 ../gio/gvolume.c:332
-msgid "volume doesn't implement mount"
-msgstr ""
+#: gio/glib-compile-schemas.c:326
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr "<%s> bukanlah satu ahli jenis terenumerasi dinyatakan yang sah"
 
-#: ../gio/gfile.c:6117
-msgid "No application is registered as handling this file"
+#: gio/glib-compile-schemas.c:332
+#, c-format
+msgid "<%s> contains string not in the specified flags type"
 msgstr ""
+"<%s> mengandungi rentetan yang tidak berada dalam jenis bendera yang "
+"dinyatakan"
 
-#: ../gio/gfileenumerator.c:205
-msgid "Enumerator is closed"
-msgstr ""
+#: gio/glib-compile-schemas.c:338
+#, c-format
+msgid "<%s> contains a string not in <choices>"
+msgstr "<%s> mengandungi satu rentetan dalam <choices>"
 
-#: ../gio/gfileenumerator.c:212 ../gio/gfileenumerator.c:271
-#: ../gio/gfileenumerator.c:371 ../gio/gfileenumerator.c:480
-msgid "File enumerator has outstanding operation"
-msgstr ""
+#: gio/glib-compile-schemas.c:372
+msgid "<range/> already specified for this key"
+msgstr "<range/> sudah dinyatakan untuk kunci ini"
 
-#: ../gio/gfileenumerator.c:361 ../gio/gfileenumerator.c:470
-msgid "File enumerator is already closed"
-msgstr ""
+#: gio/glib-compile-schemas.c:390
+#, c-format
+msgid "<range> not allowed for keys of type “%s”"
+msgstr "<range> tidak dibenarkan untuk kunci jenis “%s”"
 
-#: ../gio/gfileicon.c:236
+#: gio/glib-compile-schemas.c:407
 #, c-format
-msgid "Can't handle version %d of GFileIcon encoding"
-msgstr ""
+msgid "<range> specified minimum is greater than maximum"
+msgstr "<range> dinyatakan minimum yang lebih besar dari maksimum"
 
-#: ../gio/gfileicon.c:246
-msgid "Malformed input data for GFileIcon"
-msgstr ""
+#: gio/glib-compile-schemas.c:432
+#, c-format
+msgid "unsupported l10n category: %s"
+msgstr "kategori l10n tidak disokong: %s"
 
-#: ../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 ""
+#: gio/glib-compile-schemas.c:440
+msgid "l10n requested, but no gettext domain given"
+msgstr "l10n dipinta, tetapi tiada domain gettext diberikan"
 
-#: ../gio/gfileinputstream.c:335 ../gio/gfileiostream.c:387
-#: ../gio/gfileoutputstream.c:381
-msgid "Seek not supported on stream"
-msgstr ""
+#: gio/glib-compile-schemas.c:452
+msgid "translation context given for value without l10n enabled"
+msgstr "konteks terjemahan diberikan untuk nilai tanpa l10n dibenarkan"
 
-#: ../gio/gfileinputstream.c:379
-msgid "Truncate not allowed on input stream"
-msgstr ""
+#: gio/glib-compile-schemas.c:474
+#, c-format
+msgid "Failed to parse <default> value of type “%s”: "
+msgstr "Gagal menghurai nilai <default> bagi jenis “%s”: "
 
-#: ../gio/gfileiostream.c:463 ../gio/gfileoutputstream.c:457
-msgid "Truncate not supported on stream"
+#: gio/glib-compile-schemas.c:491
+msgid ""
+"<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr ""
+"<choices> tidak dapat dinyatakan untuk kunci-kunci bertag sebagai mempunyai "
+"jenis terenumerasi"
 
-#: ../gio/gicon.c:284
-#, c-format
-msgid "Wrong number of tokens (%d)"
-msgstr ""
+#: gio/glib-compile-schemas.c:500
+msgid "<choices> already specified for this key"
+msgstr "<choices> sudah dinyatakan untuk kunci ini"
 
-#: ../gio/gicon.c:304
+#: gio/glib-compile-schemas.c:512
 #, c-format
-msgid "No type for class name %s"
-msgstr ""
+msgid "<choices> not allowed for keys of type “%s”"
+msgstr "<choices> tidak dibenarkan utnuk kunci jenis “%s”"
 
-#: ../gio/gicon.c:314
+#: gio/glib-compile-schemas.c:528
 #, c-format
-msgid "Type %s does not implement the GIcon interface"
-msgstr ""
+msgid "<choice value='%s'/> already given"
+msgstr "<choice value='%s'/> sudah diberikan"
 
-#: ../gio/gicon.c:325
+#: gio/glib-compile-schemas.c:543
 #, c-format
-msgid "Type %s is not classed"
-msgstr ""
+msgid "<choices> must contain at least one <choice>"
+msgstr "<choices> mesti mengandungi sekurang-kurangnya satu <choice>"
 
-#: ../gio/gicon.c:339
-#, c-format
-msgid "Malformed version number: %s"
+#: gio/glib-compile-schemas.c:557
+msgid "<aliases> already specified for this key"
+msgstr "<aliases> sudah dinyatakan untuk kunci ini"
+
+#: gio/glib-compile-schemas.c:561
+msgid ""
+"<aliases> can only be specified for keys with enumerated or flags types or "
+"after <choices>"
 msgstr ""
+"<aliases> hanya boleh dinyatakan untuk kunci berenumerasi atau jenis bendera "
+"atau selepas <choices>"
 
-#: ../gio/gicon.c:353
+#: gio/glib-compile-schemas.c:580
 #, c-format
-msgid "Type %s does not implement from_tokens() on the GIcon interface"
+msgid ""
+"<alias value='%s'/> given when “%s” is already a member of the enumerated "
+"type"
 msgstr ""
+"<alias value='%s'/> diberikan ketika “%s” sudah menjadi ahli bagi jenis "
+"terenumerasi"
 
-#: ../gio/gicon.c:430
-msgid "Can't handle the supplied version the icon encoding"
+#: gio/glib-compile-schemas.c:586
+#, c-format
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
 msgstr ""
+"<alias value='%s'/> diberikan ketika <choice value='%s'/> sudah pun diberikan"
 
-#: ../gio/ginputstream.c:194
-msgid "Input stream doesn't implement read"
-msgstr ""
+#: gio/glib-compile-schemas.c:594
+#, c-format
+msgid "<alias value='%s'/> already specified"
+msgstr "<alias value='%s'> sudah dinyatakan"
 
-#. Translators: This is an error you get if there is already an
-#. * operation running against this stream when you try to start
-#. * one
-#. 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:898 ../gio/giostream.c:316
-#: ../gio/goutputstream.c:1216
-msgid "Stream has outstanding operation"
-msgstr ""
+#: gio/glib-compile-schemas.c:604
+#, c-format
+msgid "alias target “%s” is not in enumerated type"
+msgstr "sasaran alias \"%s\" bukan jenis terenumerasi"
 
-#: ../gio/ginetsocketaddress.c:181 ../gio/ginetsocketaddress.c:198
-#: ../gio/gunixsocketaddress.c:221
-msgid "Not enough space for socket address"
-msgstr ""
+#: gio/glib-compile-schemas.c:605
+#, c-format
+msgid "alias target “%s” is not in <choices>"
+msgstr "Sasaran alias \"%s\" tidak berada di dalam <choices>"
 
-#: ../gio/ginetsocketaddress.c:211
-msgid "Unsupported socket address"
-msgstr ""
+#: gio/glib-compile-schemas.c:620
+#, c-format
+msgid "<aliases> must contain at least one <alias>"
+msgstr "<aliases> mesti mengandungi sekurang-kurangnya satu <alias>"
 
-#: ../gio/glib-compile-schemas.c:741
-#, fuzzy
-msgid "empty names are not permitted"
-msgstr "Pautan simbolik tidak disokong"
+#: gio/glib-compile-schemas.c:797
+msgid "Empty names are not permitted"
+msgstr "Nama kosong tidak dibenarkan"
 
-#: ../gio/glib-compile-schemas.c:751
+#: gio/glib-compile-schemas.c:807
 #, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
+msgid "Invalid name “%s”: names must begin with a lowercase letter"
 msgstr ""
+"Nama \"%s\" tidak sah: nama mesti bermula dengan satu abjad berhuruf kecil"
 
-#: ../gio/glib-compile-schemas.c:763
+#: gio/glib-compile-schemas.c:819
 #, c-format
 msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and dash ('-') are permitted."
+"Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
+"and hyphen (“-”) are permitted"
 msgstr ""
+"Nama \"%s\" tidak sah: aksara \"%c\" tidak sah; hanya abjad berhuruf kecil, "
+"angka dan tanda sengkang (\"-\") dibenarkan"
 
-#: ../gio/glib-compile-schemas.c:772
+#: gio/glib-compile-schemas.c:828
 #, c-format
-msgid "invalid name '%s': two successive dashes ('--') are not permitted."
+msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr ""
+"Nama \"%s\" tidak sah: ada dua tanda sengkang (\"--\") tidak dibenarkan"
 
-#: ../gio/glib-compile-schemas.c:781
+#: gio/glib-compile-schemas.c:837
 #, c-format
-msgid "invalid name '%s': the last character may not be a dash ('-')."
+msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 msgstr ""
+"Nama \"%s\" tidak sah: aksara terakhir tidak boleh dengan tanda sengkang (\"-"
+"\")"
 
-#: ../gio/glib-compile-schemas.c:789
+#: gio/glib-compile-schemas.c:845
 #, c-format
-msgid "invalid name '%s': maximum length is 1024"
-msgstr ""
+msgid "Invalid name “%s”: maximum length is 1024"
+msgstr "Nama \"%s\" tidak sah: panjang maksimum ialah 1024"
 
-#: ../gio/glib-compile-schemas.c:858
+#: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
-msgstr ""
+msgstr "<child name='%s'> sudah dinyatakan"
 
-#: ../gio/glib-compile-schemas.c:884
-msgid "can not add keys to a 'list-of' schema"
-msgstr ""
+#: gio/glib-compile-schemas.c:943
+msgid "Cannot add keys to a “list-of” schema"
+msgstr "Tidak dapat tambah kunci pada satu skema \"list-of\""
 
-#: ../gio/glib-compile-schemas.c:895
+#: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
-msgstr ""
+msgstr "<key name='%s'> sudah dinyatakan"
 
-#: ../gio/glib-compile-schemas.c:913
+#: gio/glib-compile-schemas.c:972
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
 "to modify value"
 msgstr ""
+"<key name='%s'> bayang <key name='%s'> dalam <schema id='%s'>; guna "
+"<override> untuk mengubah suai nilai"
 
-#: ../gio/glib-compile-schemas.c:924
+#: gio/glib-compile-schemas.c:983
 #, c-format
 msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
+"Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
 msgstr ""
+"Sepatutnya salah satu dari “type”, “enum” atau “flags” mesti dinyatakan "
+"sebagai satu atribut pada <key>"
 
-#: ../gio/glib-compile-schemas.c:943
+#: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
-msgstr ""
+msgstr "<%s id='%s'> tidak (belum) ditakrif."
 
-#: ../gio/glib-compile-schemas.c:958
+#: gio/glib-compile-schemas.c:1017
 #, c-format
-msgid "invalid GVariant type string '%s'"
-msgstr ""
+msgid "Invalid GVariant type string “%s”"
+msgstr "Rentetan jenis GVariant \"%s\" tidak sah"
 
-#: ../gio/glib-compile-schemas.c:988
-msgid "<override> given but schema isn't extending anything"
-msgstr ""
+#: gio/glib-compile-schemas.c:1047
+msgid "<override> given but schema isnt extending anything"
+msgstr "<override> diberi tetapi skema tidak melanjutkan apa-apa"
 
-#: ../gio/glib-compile-schemas.c:1001
+#: gio/glib-compile-schemas.c:1060
 #, c-format
-msgid "no <key name='%s'> to override"
-msgstr ""
+msgid "No <key name='%s'> to override"
+msgstr "Tiada <key name='%s'> untuk dibatalkan"
 
-#: ../gio/glib-compile-schemas.c:1009
+#: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
-msgstr ""
+msgstr "<override name='%s'> sudah dinyatakan"
 
-#: ../gio/glib-compile-schemas.c:1080
+#: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
-msgstr ""
+msgstr "<schema id='%s'> sudah dinyatakan"
 
-#: ../gio/glib-compile-schemas.c:1092
+#: gio/glib-compile-schemas.c:1153
 #, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
-msgstr ""
+msgid "<schema id='%s'> extends not yet existing schema “%s”"
+msgstr "<schema id='%s'> lanjut tidak mengeluarkan skema “%s” sedia ada"
 
-#: ../gio/glib-compile-schemas.c:1108
+#: gio/glib-compile-schemas.c:1169
 #, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
-msgstr ""
+msgid "<schema id='%s'> is list of not yet existing schema “%s”"
+msgstr "<schema id='%s'> ialah satu senarai, yang mana bukan skema \"%s\""
 
-#: ../gio/glib-compile-schemas.c:1116
+#: gio/glib-compile-schemas.c:1177
 #, c-format
-msgid "Can not be a list of a schema with a path"
-msgstr ""
+msgid "Cannot be a list of a schema with a path"
+msgstr "Tidak dapat jadi satu senarai skema dengan satu laluan"
 
-#: ../gio/glib-compile-schemas.c:1126
+#: gio/glib-compile-schemas.c:1187
 #, c-format
-msgid "Can not extend a schema with a path"
-msgstr ""
+msgid "Cannot extend a schema with a path"
+msgstr "Tidak dapat lanjutkan satu skema dengan satu laluan"
 
-#: ../gio/glib-compile-schemas.c:1136
+#: gio/glib-compile-schemas.c:1197
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr ""
+"<schema id='%s'> ialah satu senarai, melanjutkan <schema id='%s'> yang mana "
+"bukan satu senarai"
 
-#: ../gio/glib-compile-schemas.c:1146
+#: gio/glib-compile-schemas.c:1207
 #, c-format
 msgid ""
-"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
-"does not extend '%s'"
+"<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'> lanjutkan <schema id='%s' list-of='%s'> tetapi "
+"“%s” tidak dilanjutkan “%s”"
 
-#: ../gio/glib-compile-schemas.c:1163
+#: gio/glib-compile-schemas.c:1224
 #, c-format
-msgid "a path, if given, must begin and end with a slash"
+msgid "A path, if given, must begin and end with a slash"
 msgstr ""
+"Satu laluan, jika diberi, mesti bermula dan berakhir dengan satu tanda miring"
+
+#: gio/glib-compile-schemas.c:1231
+#, c-format
+msgid "The path of a list must end with “:/”"
+msgstr "Laluan bagi satu senarai mesti berakhir dengan tanda \":/\""
 
-#: ../gio/glib-compile-schemas.c:1170
+#: gio/glib-compile-schemas.c:1240
 #, c-format
-msgid "the path of a list must end with ':/'"
+msgid ""
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
+"desktop/” or “/system/” are deprecated."
 msgstr ""
+"Amaran: Skema “%s” mempunyai laluan “%s”.  Laluan bermula dengan “/apps/”, “/"
+"desktop/” atau “/system/” telah lapuk."
 
-#: ../gio/glib-compile-schemas.c:1196
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
-msgstr ""
+msgstr "<%s id='%s'> sudah dinyatakan"
 
-#: ../gio/glib-compile-schemas.c:1416
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
 #, c-format
-msgid "Element <%s> not allowed inside <%s>"
-msgstr ""
+msgid "Only one <%s> element allowed inside <%s>"
+msgstr "Hanya satu unsur <%s> dibenarkan dalam <%s>"
 
-#: ../gio/glib-compile-schemas.c:1420
+#: gio/glib-compile-schemas.c:1518
 #, c-format
-msgid "Element <%s> not allowed at toplevel"
-msgstr ""
+msgid "Element <%s> not allowed at the top level"
+msgstr "Unsur <%s> tidak dibenarkan pada aras tertinggi"
+
+#: gio/glib-compile-schemas.c:1536
+msgid "Element <default> is required in <key>"
+msgstr "Unsur <default> diperlukan dalam <key>"
 
-#: ../gio/glib-compile-schemas.c:1511
+#: gio/glib-compile-schemas.c:1626
 #, c-format
-msgid "text may not appear inside <%s>"
-msgstr ""
+msgid "Text may not appear inside <%s>"
+msgstr "Teks mungkin tidak muncul dalam <%s>"
 
-#. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1696 ../gio/glib-compile-schemas.c:1767
-#: ../gio/glib-compile-schemas.c:1843
+#: gio/glib-compile-schemas.c:1694
 #, c-format
-msgid "--strict was specified; exiting.\n"
-msgstr ""
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr "Amaran: rujukan tidak ditakrif pada <schema id='%s'/>"
+
+#. Translators: Do not translate "--strict".
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+msgid "--strict was specified; exiting."
+msgstr "--strict telah dinyatakan; keluar."
 
-#: ../gio/glib-compile-schemas.c:1704
+#: gio/glib-compile-schemas.c:1845
+msgid "This entire file has been ignored."
+msgstr "Keseluruhan fail ini telah diabaikan."
+
+#: gio/glib-compile-schemas.c:1908
+msgid "Ignoring this file."
+msgstr "Mengabaikan fail ini."
+
+#: gio/glib-compile-schemas.c:1963
 #, c-format
-msgid "This entire file has been ignored.\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
 msgstr ""
+"Tiada kunci \"%s\" sebegitu dalam skema \"%s\" seperti dinyatakan dalam fail "
+"pembatal \"%s\"; mengabaikan pembatal untuk kunci ini."
 
-#: ../gio/glib-compile-schemas.c:1763
+#: gio/glib-compile-schemas.c:1971
 #, c-format
-msgid "Ignoring this file.\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
 msgstr ""
+"Tiada kunci \"%s\" sebegitu dalam skema \"%s\" seperti dinyatakan dalam fail "
+"pembatal \"%s\" dan --strict telah dinyatakan; keluar."
 
-#: ../gio/glib-compile-schemas.c:1803
+#: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
 msgstr ""
+"Tidak dapat sediakan pembatal per-atas-meja untuk kunci tersetempat \"%s\" "
+"dalam skema \"%s\" (batalkan fail \"%s\"); mengabaikan pembatal untuk kunci "
+"ini."
 
-#: ../gio/glib-compile-schemas.c:1809 ../gio/glib-compile-schemas.c:1867
-#: ../gio/glib-compile-schemas.c:1895
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "; ignoring override for this key.\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
 msgstr ""
+"Tidak dapat sediakan pembatal per-atas-meja untuk kunci tersetempat \"%s\" "
+"dalam skema \"%s\" (batalkan fail \"%s\"); dan --strict telah dinyatakan; "
+"keluar."
 
-#: ../gio/glib-compile-schemas.c:1813 ../gio/glib-compile-schemas.c:1871
-#: ../gio/glib-compile-schemas.c:1899
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid " and --strict was specified; exiting.\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
 msgstr ""
+"Ralat menghurai kunci \"%s\" dalam skema \"%s\" sebagai dinyatakan dalam "
+"fail pembatal \"%s\": %s. Mengabaikan pembatal untuk kunci ini."
 
-#: ../gio/glib-compile-schemas.c:1829
+#: gio/glib-compile-schemas.c:2038
 #, 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. --strict was specified; exiting."
 msgstr ""
+"Ralat menghurai kunci \"%s\" dalam skema \"%s\" sebagai dinyatakan dalam "
+"fail pembatal \"%s\": %s. --strict telah dinyatakan; keluar."
 
-#: ../gio/glib-compile-schemas.c:1839
+#: gio/glib-compile-schemas.c:2065
 #, c-format
-msgid "Ignoring override for this key.\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 msgstr ""
+"Pembatal bagi kunci \"%s\" dalam skema \"%s\" dalam fail pembatal \"%s\" "
+"berada di luar julat yang diberi dalam skema; mengabaikan pembatal untuk "
+"kunci ini."
 
-#: ../gio/glib-compile-schemas.c:1857
+#: gio/glib-compile-schemas.c:2075
 #, c-format
 msgid ""
-"override for key '%s' in schema '%s' in override file '%s' is out of the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
 msgstr ""
+"Pembatal bagi kunci \"%s\" dalam skema \"%s\" dalam fail pembatal \"%s\" "
+"berada di luar julat yang diberi dalam skema dan --strict telah dinyatakan; "
+"keluar."
 
-#: ../gio/glib-compile-schemas.c:1885
+#: gio/glib-compile-schemas.c:2101
 #, c-format
 msgid ""
-"override for key '%s' in schema '%s' in override file '%s' is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
 msgstr ""
+"Pembatal bagi kunci \"%s\" dalam skema \"%s\" dalam fail pembatal \"%s\" "
+"berada dalam senarai pilihan sah; mengabaikan pembatal untuk kunci ini."
 
-#: ../gio/glib-compile-schemas.c:1939
-msgid "where to store the gschemas.compiled file"
+#: gio/glib-compile-schemas.c:2111
+#, c-format
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 msgstr ""
+"Pembatal bagi kunci \"%s\" dalam skema \"%s\" dalam fail pembatal \"%s\" "
+"berada dalam senarai pilihan sah dan --strict telah dinyatakan; keluar."
 
-#: ../gio/glib-compile-schemas.c:1939 ../gio/glib-compile-schemas.c:1970
-msgid "DIRECTORY"
-msgstr ""
+#: gio/glib-compile-schemas.c:2173
+msgid "Where to store the gschemas.compiled file"
+msgstr "Lokasi untuk menyimpan fail gschemas.compiled"
 
-#: ../gio/glib-compile-schemas.c:1940
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
-msgstr ""
+msgstr "Henti paksa pada mana-mana ralat dalam skema"
 
-#: ../gio/glib-compile-schemas.c:1941
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1942
-msgid "This option will be removed soon."
-msgstr ""
+msgstr "Jangan tulis fail gschema.compiled"
 
-#: ../gio/glib-compile-schemas.c:1943
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
-msgstr ""
+msgstr "Jangan paksa sekatan nama kunci"
 
-#: ../gio/glib-compile-schemas.c:1973
+#: gio/glib-compile-schemas.c:2205
 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 ""
+"Kompil semua fail skema GSettings menjadi cache skema.\n"
+"Fail skema diperlukan untuk menghasilkan sambungan .gschema.xml,\n"
+"dan fail cache dikenali sebagai gschemas.compiled."
 
-#: ../gio/glib-compile-schemas.c:1989
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr ""
+#: gio/glib-compile-schemas.c:2226
+msgid "You should give exactly one directory name"
+msgstr "Anda seharusnya berikan satu nama direktori"
+
+#: gio/glib-compile-schemas.c:2269
+msgid "No schema files found: doing nothing."
+msgstr "Tiada fail skema ditemui: jangan buat apa-apa."
 
-#: ../gio/glib-compile-schemas.c:2028
+#: gio/glib-compile-schemas.c:2271
+msgid "No schema files found: removed existing output file."
+msgstr "Tiada fail skema ditemui:  buang fail output sedia ada."
+
+#: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
-msgid "No schema files found: "
-msgstr ""
+msgid "Invalid filename %s"
+msgstr "Nama fail %s tidak sah"
 
-#: ../gio/glib-compile-schemas.c:2031
+#: gio/glocalfile.c:1013
 #, c-format
-msgid "doing nothing.\n"
-msgstr ""
+msgid "Error getting filesystem info for %s: %s"
+msgstr "Ralat mendapatkan maklumat sistem fail bagi %s: %s"
 
-#: ../gio/glib-compile-schemas.c:2034
+#. Translators: This is an error message when trying to find
+#. * the enclosing (user visible) mount of a file, but none
+#. * exists.
+#.
+#: gio/glocalfile.c:1152
 #, c-format
-msgid "removed existing output file.\n"
-msgstr ""
+msgid "Containing mount for file %s not found"
+msgstr "Lekap terkandung untuk fail %s tidak ditemui"
 
-#: ../gio/glocaldirectorymonitor.c:287
-msgid "Unable to find default local directory monitor type"
-msgstr ""
+#: gio/glocalfile.c:1175
+msgid "Can’t rename root directory"
+msgstr "Tidak dapat menamakan semula direktori root"
 
-#: ../gio/glocalfile.c:571 ../gio/win32/gwinhttpfile.c:422
-#, fuzzy, c-format
-msgid "Invalid filename %s"
-msgstr "Namahos tidak sah"
+#: gio/glocalfile.c:1193 gio/glocalfile.c:1216
+#, c-format
+msgid "Error renaming file %s: %s"
+msgstr "Ralat menamakan semula fail %s: %s"
 
-#: ../gio/glocalfile.c:948
-#, fuzzy, c-format
-msgid "Error getting filesystem info: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfile.c:1200
+msgid "Can’t rename file, filename already exists"
+msgstr "Tidak dapat menamakan semula fail, nama fail sudah wujud"
 
-#: ../gio/glocalfile.c:1097
-msgid "Can't rename root directory"
-msgstr ""
-
-#: ../gio/glocalfile.c:1117 ../gio/glocalfile.c:1143
-#, fuzzy, c-format
-msgid "Error renaming file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
+msgid "Invalid filename"
+msgstr "Nama fail tidak sah"
 
-#: ../gio/glocalfile.c:1126
-msgid "Can't rename file, filename already exists"
-msgstr ""
+#: gio/glocalfile.c:1381 gio/glocalfile.c:1396
+#, c-format
+msgid "Error opening file %s: %s"
+msgstr "Ralat membuka fail %s: %s"
 
-#: ../gio/glocalfile.c:1139 ../gio/glocalfile.c:2129 ../gio/glocalfile.c:2158
-#: ../gio/glocalfile.c:2318 ../gio/glocalfileoutputstream.c:571
-#: ../gio/glocalfileoutputstream.c:624 ../gio/glocalfileoutputstream.c:669
-#: ../gio/glocalfileoutputstream.c:1157
-#, fuzzy
-msgid "Invalid filename"
-msgstr "Namahos tidak sah"
+#: gio/glocalfile.c:1521
+#, c-format
+msgid "Error removing file %s: %s"
+msgstr "Ralat membuang fail %s: %s"
 
-#: ../gio/glocalfile.c:1300
-#, fuzzy, c-format
-msgid "Error opening file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfile.c:1963
+#, c-format
+msgid "Error trashing file %s: %s"
+msgstr "Ralat membuang fail %s ke dalam tong sampah: %s"
 
-#: ../gio/glocalfile.c:1316
-msgid "Can't open directory"
-msgstr ""
+#: gio/glocalfile.c:2004
+#, c-format
+msgid "Unable to create trash dir %s: %s"
+msgstr "Tidak boleh mencipta dir tong sampah %s: %s"
 
-#: ../gio/glocalfile.c:1441
-#, fuzzy, c-format
-msgid "Error removing file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfile.c:2025
+#, c-format
+#| msgid "Failed to change to directory '%s' (%s)"
+msgid "Unable to find toplevel directory to trash %s"
+msgstr "Tidak boleh mencari direktori aras teratas ke dalam tong sampah %s"
 
-#: ../gio/glocalfile.c:1808
-#, fuzzy, c-format
-msgid "Error trashing file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfile.c:2034
+#, c-format
+msgid "Trashing on system internal mounts is not supported"
+msgstr "Fungsi tong sampah pada lekap luar sistem tidak disokong"
 
-#: ../gio/glocalfile.c:1831
-#, fuzzy, c-format
-msgid "Unable to create trash dir %s: %s"
-msgstr "Gagal mencipta fail %s': %s"
+#: gio/glocalfile.c:2118 gio/glocalfile.c:2138
+#, c-format
+msgid "Unable to find or create trash directory for %s"
+msgstr "Tidak boleh mencari atau mencipta direktori tong sampah untuk %s"
 
-#: ../gio/glocalfile.c:1852
-msgid "Unable to find toplevel directory for trash"
-msgstr ""
+#: gio/glocalfile.c:2173
+#, c-format
+msgid "Unable to create trashing info file for %s: %s"
+msgstr "Tidak boleh mencipta fail maklumat sampah untuk %s: %s"
 
-#: ../gio/glocalfile.c:1931 ../gio/glocalfile.c:1951
-msgid "Unable to find or create trash directory"
-msgstr ""
+#: gio/glocalfile.c:2233
+#, c-format
+msgid "Unable to trash file %s across filesystem boundaries"
+msgstr "Tidak boleh sampahkan fail %s yang merentasi sempadan sistem fail"
 
-#: ../gio/glocalfile.c:1985
-#, fuzzy, c-format
-msgid "Unable to create trashing info file: %s"
-msgstr "Gagal mencipta fail %s': %s"
+#: gio/glocalfile.c:2237 gio/glocalfile.c:2293
+#, c-format
+msgid "Unable to trash file %s: %s"
+msgstr "Tidak boleh sampahkan fail %s: %s"
 
-#: ../gio/glocalfile.c:2014 ../gio/glocalfile.c:2019 ../gio/glocalfile.c:2099
-#: ../gio/glocalfile.c:2106
-#, fuzzy, c-format
-msgid "Unable to trash file: %s"
-msgstr "Gagal mencipta fail %s': %s"
+#: gio/glocalfile.c:2299
+#, c-format
+msgid "Unable to trash file %s"
+msgstr "Tidak boleh sampahkan fail %s"
 
-#: ../gio/glocalfile.c:2133
-#, fuzzy, c-format
-msgid "Error creating directory: %s"
-msgstr "Ralat membuka direktori %s': %s"
+#: gio/glocalfile.c:2325
+#, c-format
+msgid "Error creating directory %s: %s"
+msgstr "Ralat mencipta direktori %s: %s"
 
-#: ../gio/glocalfile.c:2162
-#, fuzzy, c-format
+#: gio/glocalfile.c:2354
+#, c-format
 msgid "Filesystem does not support symbolic links"
-msgstr "Gagal membaca pautan simbolik '%s': %s"
+msgstr "Sistem fail tidak menyokong pautan simbolik"
 
-#: ../gio/glocalfile.c:2166
-#, fuzzy, c-format
-msgid "Error making symbolic link: %s"
-msgstr "Ralat semasa penukaran: %s"
+#: gio/glocalfile.c:2357
+#, c-format
+msgid "Error making symbolic link %s: %s"
+msgstr "Ralat membuat pautan simbolik %s: %s"
 
-#: ../gio/glocalfile.c:2228 ../gio/glocalfile.c:2322
-#, fuzzy, c-format
-msgid "Error moving file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
+#, c-format
+msgid "Error moving file %s: %s"
+msgstr "Ralat mengalih fail %s: %s"
 
-#: ../gio/glocalfile.c:2251
-msgid "Can't move directory over directory"
-msgstr ""
+#: gio/glocalfile.c:2423
+msgid "Cant move directory over directory"
+msgstr "Tidak dapat mengalih direktori ke atas direktori"
 
-#: ../gio/glocalfile.c:2278 ../gio/glocalfileoutputstream.c:955
-#: ../gio/glocalfileoutputstream.c:969 ../gio/glocalfileoutputstream.c:984
-#: ../gio/glocalfileoutputstream.c:1000 ../gio/glocalfileoutputstream.c:1014
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
-msgstr ""
+msgstr "Penciptaan fail sementara gagal"
 
-#: ../gio/glocalfile.c:2297
-#, fuzzy, c-format
+#: gio/glocalfile.c:2468
+#, c-format
 msgid "Error removing target file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat membuang fail sasaran: %s"
 
-#: ../gio/glocalfile.c:2311
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
-msgstr ""
+msgstr "Alih diantara lekap tidak disokong"
+
+#: gio/glocalfile.c:2673
+#, c-format
+msgid "Could not determine the disk usage of %s: %s"
+msgstr "Tidak dapat tentukan penggunaan cakera bagi %s: %s"
 
-#: ../gio/glocalfileinfo.c:719
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
-msgstr ""
+msgstr "Nilai atribut mestilah bukan-NOL"
 
-#: ../gio/glocalfileinfo.c:726
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
-msgstr ""
+msgstr "Jenis atribut tidak sah (rentetan dijangka)"
 
-#: ../gio/glocalfileinfo.c:733
-#, fuzzy
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
-msgstr "Dokumen berakhir tanpa diduga di dalam nama atribut"
-
-#: ../gio/glocalfileinfo.c:773
-#, fuzzy, c-format
-msgid "Error setting extended attribute '%s': %s"
-msgstr "Ralat membuka direktori %s': %s"
+msgstr "Nama atribut lanjutan tidak sah"
 
-#: ../gio/glocalfileinfo.c:1482 ../gio/glocalfileoutputstream.c:833
-#, fuzzy, c-format
-msgid "Error stating file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfileinfo.c:809
+#, c-format
+msgid "Error setting extended attribute “%s”: %s"
+msgstr "Ralat menetapkan atribut terlanjut \"%s\": %s"
 
-#: ../gio/glocalfileinfo.c:1566
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
-msgstr ""
+msgstr " (pengekodan tidak sah)"
+
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
+#, c-format
+msgid "Error when getting information for file “%s”: %s"
+msgstr "Ralat mendapatkan maklumat untuk fail \"%s\": %s"
 
-#: ../gio/glocalfileinfo.c:1768
-#, fuzzy, c-format
-msgid "Error stating file descriptor: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfileinfo.c:2071
+#, c-format
+msgid "Error when getting information for file descriptor: %s"
+msgstr "Ralat mendapatkan maklumat untuk penerang fail: %s"
 
-#: ../gio/glocalfileinfo.c:1813
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
-msgstr ""
+msgstr "Jenis atribut tidak sah (uint32 dijangka)"
 
-#: ../gio/glocalfileinfo.c:1831
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
-msgstr ""
+msgstr "Jenis atribut tidak sah (dijangka uint64)"
 
-#: ../gio/glocalfileinfo.c:1850 ../gio/glocalfileinfo.c:1869
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
-msgstr ""
+msgstr "Jenis atribut tidak sah (rentetan bait dijangka)"
 
-#: ../gio/glocalfileinfo.c:1904
-#, fuzzy
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
-msgstr "Ralat semasa penukaran: %s"
+msgstr "Tidak dapat tetapkan keizinan pada pautan simbolik"
 
-#: ../gio/glocalfileinfo.c:1920
-#, fuzzy, c-format
+#: gio/glocalfileinfo.c:2235
+#, c-format
 msgid "Error setting permissions: %s"
-msgstr "Ralat semasa penukaran: %s"
+msgstr "Ralat menetapkan keizinan: %s"
 
-#: ../gio/glocalfileinfo.c:1971
-#, fuzzy, c-format
+#: gio/glocalfileinfo.c:2286
+#, c-format
 msgid "Error setting owner: %s"
-msgstr "Ralat semasa penukaran: %s"
+msgstr "Ralat menetapkan pemilik: %s"
 
-#: ../gio/glocalfileinfo.c:1994
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
-msgstr ""
+msgstr "pautan simbolik mestilah bukan-NOL"
 
-#: ../gio/glocalfileinfo.c:2004 ../gio/glocalfileinfo.c:2023
-#: ../gio/glocalfileinfo.c:2034
-#, fuzzy, c-format
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
+#, c-format
 msgid "Error setting symlink: %s"
-msgstr "Ralat pada baris %d: %s"
+msgstr "Ralat menetapkan pautan simbolik: %s"
 
-#: ../gio/glocalfileinfo.c:2013
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
-msgstr ""
+msgstr "Ralat menetapkan pautan simbolik: fail bukan pautan simbolik"
 
-#: ../gio/glocalfileinfo.c:2139
-#, fuzzy, c-format
+#: gio/glocalfileinfo.c:2454
+#, c-format
 msgid "Error setting modification or access time: %s"
-msgstr "Ralat semasa penukaran: %s"
+msgstr "Ralat menetapkan pengubahsuaian atau masa capaian: %s"
 
-#: ../gio/glocalfileinfo.c:2162
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
-msgstr ""
+msgstr "Konteks SELinux mestilah bukan-NOL"
 
-#: ../gio/glocalfileinfo.c:2177
-#, fuzzy, c-format
+#: gio/glocalfileinfo.c:2492
+#, c-format
 msgid "Error setting SELinux context: %s"
-msgstr "Ralat semasa penukaran: %s"
+msgstr "Ralat menetapkan konteks SELinux: %s"
 
-#: ../gio/glocalfileinfo.c:2184
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
-msgstr ""
+msgstr "SELinux tidak dibenarkan dalam sistem ini"
 
-#: ../gio/glocalfileinfo.c:2276
-#, fuzzy, c-format
+#: gio/glocalfileinfo.c:2591
+#, c-format
 msgid "Setting attribute %s not supported"
-msgstr "Pautan simbolik tidak disokong"
+msgstr "Penetapan atribut %s tidak disokong"
 
-#: ../gio/glocalfileinputstream.c:185 ../gio/glocalfileoutputstream.c:722
-#, fuzzy, c-format
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
+#, c-format
 msgid "Error reading from file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat membaca dari fail: %s"
 
-#: ../gio/glocalfileinputstream.c:216 ../gio/glocalfileinputstream.c:228
-#: ../gio/glocalfileinputstream.c:340 ../gio/glocalfileoutputstream.c:470
-#: ../gio/glocalfileoutputstream.c:1032
-#, fuzzy, c-format
+#: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
+#: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
+#, c-format
 msgid "Error seeking in file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menjangkau dalam fail: %s"
 
-#: ../gio/glocalfileinputstream.c:261 ../gio/glocalfileoutputstream.c:256
-#: ../gio/glocalfileoutputstream.c:351
-#, fuzzy, c-format
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
+#, c-format
 msgid "Error closing file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menutup fail: %s"
 
-#: ../gio/glocalfilemonitor.c:212
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
-msgstr ""
+msgstr "Tidak boleh mencari jenis pemantau fail setempat lalai"
 
-#: ../gio/glocalfileoutputstream.c:202 ../gio/glocalfileoutputstream.c:235
-#: ../gio/glocalfileoutputstream.c:743
-#, fuzzy, c-format
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
+#, c-format
 msgid "Error writing to file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menulis ke fail: %s"
 
-#: ../gio/glocalfileoutputstream.c:283
-#, fuzzy, c-format
+#: gio/glocalfileoutputstream.c:371
+#, c-format
 msgid "Error removing old backup link: %s"
-msgstr "Ralat semasa penukaran: %s"
+msgstr "Ralat membuang pautan sandar lama: %s"
 
-#: ../gio/glocalfileoutputstream.c:297 ../gio/glocalfileoutputstream.c:310
-#, fuzzy, c-format
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
+#, c-format
 msgid "Error creating backup copy: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat mencipta salinan sandar: %s"
 
-#: ../gio/glocalfileoutputstream.c:328
-#, fuzzy, c-format
+#: gio/glocalfileoutputstream.c:416
+#, c-format
 msgid "Error renaming temporary file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menamakan semula fail sementara: %s"
 
-#: ../gio/glocalfileoutputstream.c:516 ../gio/glocalfileoutputstream.c:1083
-#, fuzzy, c-format
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
+#, c-format
 msgid "Error truncating file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat memangkas fail: %s"
 
-#: ../gio/glocalfileoutputstream.c:577 ../gio/glocalfileoutputstream.c:630
-#: ../gio/glocalfileoutputstream.c:675 ../gio/glocalfileoutputstream.c:815
-#: ../gio/glocalfileoutputstream.c:1064 ../gio/glocalfileoutputstream.c:1163
-#, fuzzy, c-format
-msgid "Error opening file '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
+#, c-format
+msgid "Error opening file “%s”: %s"
+msgstr "Ralat membuka fail \"%s\": %s"
 
-#: ../gio/glocalfileoutputstream.c:846
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
-msgstr ""
+msgstr "Fail sasaran adalah direktori"
 
-#: ../gio/glocalfileoutputstream.c:851
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
-msgstr ""
+msgstr "Fail sasaran bukan satu fail nalar"
 
-#: ../gio/glocalfileoutputstream.c:863
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
-msgstr ""
+msgstr "Fail telah diubah suai secara dalaman"
 
-#: ../gio/glocalfileoutputstream.c:1048
-#, fuzzy, c-format
+#: gio/glocalfileoutputstream.c:1125
+#, c-format
 msgid "Error removing old file: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat membuang fail lama: %s"
 
-#: ../gio/gmemoryinputstream.c:486 ../gio/gmemoryoutputstream.c:746
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
 msgid "Invalid GSeekType supplied"
-msgstr ""
+msgstr "GSeekType dibekalkan tidak sah"
 
-#: ../gio/gmemoryinputstream.c:496
-#, fuzzy
+#: gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
-msgstr "Namahos tidak sah"
+msgstr "Permintaan jangkau tidak sah"
 
-#: ../gio/gmemoryinputstream.c:520
+#: gio/gmemoryinputstream.c:508
 msgid "Cannot truncate GMemoryInputStream"
-msgstr ""
+msgstr "Tidak dapat pangkas GMemoryInputStream"
 
-#: ../gio/gmemoryoutputstream.c:496
+#: gio/gmemoryoutputstream.c:567
 msgid "Memory output stream not resizable"
-msgstr ""
+msgstr "Strim output ingatan tidak boleh disaizkan semula"
 
-#: ../gio/gmemoryoutputstream.c:512
+#: gio/gmemoryoutputstream.c:583
 msgid "Failed to resize memory output stream"
-msgstr ""
+msgstr "Gagal saizkan semula strim output ingatan"
 
-#: ../gio/gmemoryoutputstream.c:600
+#: gio/gmemoryoutputstream.c:673
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 msgstr ""
+"Amaun ingatan diperlukan untuk memproses tulis lebih besar dari ruang alamat "
+"yang tersedia"
 
-#: ../gio/gmemoryoutputstream.c:756
+#: gio/gmemoryoutputstream.c:782
 msgid "Requested seek before the beginning of the stream"
-msgstr ""
+msgstr "Jangkau dipinta sebelum permulaan strim"
 
-#: ../gio/gmemoryoutputstream.c:765
+#: gio/gmemoryoutputstream.c:797
 msgid "Requested seek beyond the end of the stream"
-msgstr ""
+msgstr "Jangkau dipinta melangkaui penghujung strim"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
-#: ../gio/gmount.c:363
-msgid "mount doesn't implement \"unmount\""
-msgstr ""
+#: gio/gmount.c:399
+msgid "mount doesn’t implement “unmount”"
+msgstr "lekap tidak melaksanakan \"unmount\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
-#: ../gio/gmount.c:442
-msgid "mount doesn't implement \"eject\""
-msgstr ""
+#: gio/gmount.c:475
+msgid "mount doesn’t implement “eject”"
+msgstr "lekap tidak melaksanakan \"eject\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:523
-msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
-msgstr ""
+#: gio/gmount.c:553
+msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
+msgstr "lekap tidak melaksanakan “unmount” atau “unmount_with_operation”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gmount.c:611
-msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
-msgstr ""
+#: gio/gmount.c:638
+msgid "mount doesn’t implement “eject” or “eject_with_operation”"
+msgstr "lekap tidak melaksanakan “eject” atau “eject_with_operation”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: ../gio/gmount.c:701
-msgid "mount doesn't implement \"remount\""
-msgstr ""
+#: gio/gmount.c:726
+msgid "mount doesn’t implement “remount”"
+msgstr "lekap tidak melaksanakan \"remount\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:785
-msgid "mount doesn't implement content type guessing"
-msgstr ""
+#: gio/gmount.c:808
+msgid "mount doesnt implement content type guessing"
+msgstr "lekap tidak melaksanakan tekaan jenis kandungan"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:874
-msgid "mount doesn't implement synchronous content type guessing"
-msgstr ""
+#: gio/gmount.c:895
+msgid "mount doesnt implement synchronous content type guessing"
+msgstr "lekap tidak melaksanakan tekaan jenis kandungan segerak"
 
-#: ../gio/gnetworkaddress.c:322
+#: gio/gnetworkaddress.c:415
 #, c-format
-msgid "Hostname '%s' contains '[' but not ']'"
-msgstr ""
+msgid "Hostname “%s” contains “[” but not “]”"
+msgstr "Nama hos \"%s\" mengandungi “[” tetapi bukan “]”"
 
-#: ../gio/goutputstream.c:207 ../gio/goutputstream.c:411
-msgid "Output stream doesn't implement write"
-msgstr ""
+#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+msgid "Network unreachable"
+msgstr "Rangkaian tidak boleh capai"
 
-#: ../gio/goutputstream.c:372 ../gio/goutputstream.c:855
-msgid "Source stream is already closed"
-msgstr ""
+#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+msgid "Host unreachable"
+msgstr "Hos tidak boleh capai"
+
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111
+#: gio/gnetworkmonitornetlink.c:130
+#, c-format
+msgid "Could not create network monitor: %s"
+msgstr "Tidak dapat mencipta pemantau rangkaian: %s"
 
-#: ../gio/gresolver.c:779
-#, fuzzy, c-format
-msgid "Error resolving '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gnetworkmonitornetlink.c:120
+msgid "Could not create network monitor: "
+msgstr "Tidak dapat mencipta pemantau rangkaian: "
 
-#: ../gio/gresolver.c:829
-#, fuzzy, c-format
-msgid "Error reverse-resolving '%s': %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gnetworkmonitornetlink.c:183
+msgid "Could not get network status: "
+msgstr "Tidak memperoleh status rangkaian: "
 
-#: ../gio/gresolver.c:864 ../gio/gresolver.c:943
+#: gio/gnetworkmonitornm.c:348
 #, c-format
-msgid "No service record for '%s'"
-msgstr ""
+msgid "NetworkManager not running"
+msgstr "Pengurus Rangkaian tidak dijalankan"
 
-#: ../gio/gresolver.c:869 ../gio/gresolver.c:948
+#: gio/gnetworkmonitornm.c:359
 #, c-format
-msgid "Temporarily unable to resolve '%s'"
-msgstr ""
+msgid "NetworkManager version too old"
+msgstr "Versi Pengurus Rangkaian terlalu tua"
 
-#: ../gio/gresolver.c:874 ../gio/gresolver.c:953
-#, fuzzy, c-format
-msgid "Error resolving '%s'"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/goutputstream.c:232 gio/goutputstream.c:775
+msgid "Output stream doesn’t implement write"
+msgstr "Strim output tidak melaksanakan tulis"
 
-#: ../gio/gsettings-tool.c:60
+#: gio/goutputstream.c:472 gio/goutputstream.c:1533
 #, c-format
-msgid "Schema '%s' is not relocatable (path must not be specified)\n"
-msgstr ""
+msgid "Sum of vectors passed to %s too large"
+msgstr "Hasil tambah vektor yang terlepas ke %s terlalu besar"
+
+#: gio/goutputstream.c:736 gio/goutputstream.c:1761
+msgid "Source stream is already closed"
+msgstr "Strim sumber sudah ditutup"
 
-#: ../gio/gsettings-tool.c:65 ../gio/gsettings-tool.c:82
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
-msgid "No such schema '%s'\n"
-msgstr ""
+msgid "Error resolving “%s”: %s"
+msgstr "Ralat meleraikan \"%s\": %s"
 
-#: ../gio/gsettings-tool.c:77
+#. Translators: The placeholder is for a function name.
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
-msgid "Schema '%s' is relocatable (path must be specified)\n"
-msgstr ""
+msgid "%s not implemented"
+msgstr "%s tidak dilaksanakan"
 
-#: ../gio/gsettings-tool.c:92
+#: gio/gresolver.c:981 gio/gresolver.c:1033
+#| msgid "Invalid hostname"
+msgid "Invalid domain"
+msgstr "Domain tidak sah"
+
+#: gio/gresource.c:665 gio/gresource.c:924 gio/gresource.c:963
+#: gio/gresource.c:1087 gio/gresource.c:1159 gio/gresource.c:1232
+#: gio/gresource.c:1313 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresourcefile.c:736
 #, c-format
-msgid "Empty path given.\n"
-msgstr ""
+msgid "The resource at “%s” does not exist"
+msgstr "Sumber pada \"%s\" tidak wujud"
 
-#: ../gio/gsettings-tool.c:98
+#: gio/gresource.c:830
 #, c-format
-msgid "Path must begin with a slash (/)\n"
-msgstr ""
+msgid "The resource at “%s” failed to decompress"
+msgstr "Sumber pada \"%s\" gagal dinyahmampatkan"
 
-#: ../gio/gsettings-tool.c:104
+#: gio/gresourcefile.c:732
 #, c-format
-msgid "Path must end with a slash (/)\n"
+msgid "The resource at “%s” is not a directory"
+msgstr "Sumber pada \"%s\" bukan satu direktori"
+
+#: gio/gresourcefile.c:940
+msgid "Input stream doesn’t implement seek"
+msgstr "Strim input tidak melaksanakan jangkau"
+
+#: gio/gresource-tool.c:499
+msgid "List sections containing resources in an elf FILE"
+msgstr "Seksyen senarai mengandungi sumber dalam FILE elf"
+
+#: gio/gresource-tool.c:505
+msgid ""
+"List resources\n"
+"If SECTION is given, only list resources in this section\n"
+"If PATH is given, only list matching resources"
 msgstr ""
+"Senaraikan sumber\n"
+"Jika SECTION diberi, hanya senaraikan sumber dalam seksyen ini\n"
+"Jika PATH diberi, hanya senaraikan sumber yang sepadan"
 
-#: ../gio/gsettings-tool.c:110
-#, c-format
-msgid "Path must not contain two adjacent slashes (//)\n"
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
+msgid "FILE [PATH]"
+msgstr "FAIL [LALUAN]"
+
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
+msgid "SECTION"
+msgstr "SEKSYEN"
+
+#: gio/gresource-tool.c:514
+msgid ""
+"List resources with details\n"
+"If SECTION is given, only list resources in this section\n"
+"If PATH is given, only list matching resources\n"
+"Details include the section, size and compression"
 msgstr ""
+"Senaraikan sumber dengan perincian\n"
+"Jika SECTION diberi, hanya senaraikan sumber dalam seksyen ini\n"
+"Jika PATH diberi, hanya senaraikan sumber yang sepadan\n"
+"Perincian termasuklah seksyen, saiz dan pemampatan"
 
-#: ../gio/gsettings-tool.c:131
-#, c-format
-msgid "No such key '%s'\n"
+#: gio/gresource-tool.c:524
+msgid "Extract a resource file to stdout"
+msgstr "Ekstrak fail sumber ke stdout"
+
+#: gio/gresource-tool.c:525
+msgid "FILE PATH"
+msgstr "FAIL LALUAN"
+
+#: gio/gresource-tool.c:539
+msgid ""
+"Usage:\n"
+"  gresource [--section SECTION] COMMAND [ARGS…]\n"
+"\n"
+"Commands:\n"
+"  help                      Show this information\n"
+"  sections                  List resource sections\n"
+"  list                      List resources\n"
+"  details                   List resources with details\n"
+"  extract                   Extract a resource\n"
+"\n"
+"Use “gresource help COMMAND” to get detailed help.\n"
+"\n"
 msgstr ""
+"Penggunaan:\n"
+"  gresource [--section SEKSYAN] PERINTAH [ARG…]\n"
+"\n"
+"Perintah:\n"
+"  help                      Tunjuk maklumat ini\n"
+"  sections                  Senaraikan seksyen sumber\n"
+"  list                      Senaraikan sumber\n"
+"  details                   Senaraikan sumber secara terperinci\n"
+"  extract                   Ekstrak satu sumber\n"
+"\n"
+"Guna “gresource help PERINTAH” untuk bantuan lanjut.\n"
+"\n"
 
-#: ../gio/gsettings-tool.c:504
+#: gio/gresource-tool.c:553
 #, c-format
-msgid "The provided value is outside of the valid range\n"
+msgid ""
+"Usage:\n"
+"  gresource %s%s%s %s\n"
+"\n"
+"%s\n"
+"\n"
 msgstr ""
+"Penggunaan:\n"
+"  gresource %s%s%s %s\n"
+"\n"
+"%s\n"
+"\n"
 
-#: ../gio/gsettings-tool.c:533
-msgid "Print help"
+#: gio/gresource-tool.c:560
+msgid "  SECTION   An (optional) elf section name\n"
+msgstr "  SECTION   Satu nama seksyen elf (pilihan)\n"
+
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
+msgid "  COMMAND   The (optional) command to explain\n"
+msgstr "  COMMAND   Perintah (pilihan) yang dijelaskan\n"
+
+#: gio/gresource-tool.c:570
+msgid "  FILE      An elf file (a binary or a shared library)\n"
+msgstr "  FILE      Satu fail elf (pustaka binari atau dikongsi)\n"
+
+#: gio/gresource-tool.c:573
+msgid ""
+"  FILE      An elf file (a binary or a shared library)\n"
+"            or a compiled resource file\n"
 msgstr ""
+"  FILE      Satu fail elf (pustaka binari atau dikongsi)\n"
+"            atau fail sumber dikompil\n"
+
+#: gio/gresource-tool.c:577
+msgid "[PATH]"
+msgstr "[PATH]"
+
+#: gio/gresource-tool.c:579
+msgid "  PATH      An (optional) resource path (may be partial)\n"
+msgstr "  PATH      Satu laluan sumber (pilihan) (boleh jadi separa)\n"
+
+#: gio/gresource-tool.c:580
+msgid "PATH"
+msgstr "PATH"
+
+#: gio/gresource-tool.c:582
+msgid "  PATH      A resource path\n"
+msgstr "  PATH      Satu laluan sumber\n"
+
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
+#, c-format
+msgid "No such schema “%s”\n"
+msgstr "Tiada skema \"%s\" sebegitu\n"
+
+#: gio/gsettings-tool.c:55
+#, c-format
+msgid "Schema “%s” is not relocatable (path must not be specified)\n"
+msgstr "Skema \"%s\" tidak boleh alih (laluan tidak boleh dinyatakan)\n"
+
+#: gio/gsettings-tool.c:76
+#, c-format
+msgid "Schema “%s” is relocatable (path must be specified)\n"
+msgstr "Skema \"%s\" tidak boleh alih (laluan mesti dinyatakan)\n"
+
+#: gio/gsettings-tool.c:90
+msgid "Empty path given.\n"
+msgstr "Laluan kosong diberi.\n"
+
+#: gio/gsettings-tool.c:96
+msgid "Path must begin with a slash (/)\n"
+msgstr "Laluan mesti bermula dengan tanda miring (/)\n"
+
+#: gio/gsettings-tool.c:102
+msgid "Path must end with a slash (/)\n"
+msgstr "Laluan mesti berakhir dengan tanda miring (/)\n"
+
+#: gio/gsettings-tool.c:108
+msgid "Path must not contain two adjacent slashes (//)\n"
+msgstr "Laluan mesti tidak mengandungi dua tanda miring berturutan (//)\n"
+
+#: gio/gsettings-tool.c:536
+msgid "The provided value is outside of the valid range\n"
+msgstr "Nilai disediakan berada luar julat yang sah\n"
+
+#: gio/gsettings-tool.c:543
+msgid "The key is not writable\n"
+msgstr "Kunci tidak boleh ditulis-semula\n"
 
-#: ../gio/gsettings-tool.c:539
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
-msgstr ""
+msgstr "Senarai skema (tidak-boleh-diletak-semula) terpasang"
 
-#: ../gio/gsettings-tool.c:545
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
-msgstr ""
+msgstr "Senarai skema boleh letak semula terpasang"
 
-#: ../gio/gsettings-tool.c:551
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
-msgstr ""
+msgstr "Senarai kunci dalam SCHEMA"
 
-#: ../gio/gsettings-tool.c:552 ../gio/gsettings-tool.c:558
-#: ../gio/gsettings-tool.c:595
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
-msgstr ""
+msgstr "SCHEMA[:PATH]"
 
-#: ../gio/gsettings-tool.c:557
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
-msgstr ""
+msgstr "Senarai anak SCHEMA"
 
-#: ../gio/gsettings-tool.c:563
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr ""
+"Senarai kunci dan nilai, secara rekursif\n"
+"Jika tiada SCHEMA diberi, senaraikan semua kunci\n"
 
-#: ../gio/gsettings-tool.c:565
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
-msgstr ""
+msgstr "[SCHEMA[:PATH]]"
 
-#: ../gio/gsettings-tool.c:570
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
-msgstr ""
+msgstr "Dapatkan nilai KEY"
 
-#: ../gio/gsettings-tool.c:571 ../gio/gsettings-tool.c:577
-#: ../gio/gsettings-tool.c:589 ../gio/gsettings-tool.c:601
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
-msgstr ""
+msgstr "SCHEMA[:PATH] KEY"
 
-#: ../gio/gsettings-tool.c:576
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
-msgstr ""
+msgstr "Tanya julat nilai sah untuk KEY"
+
+#: gio/gsettings-tool.c:622
+msgid "Query the description for KEY"
+msgstr "Menanya keterangan bagi KEY"
 
-#: ../gio/gsettings-tool.c:582
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
-msgstr ""
+msgstr "Tetapkan nilai KEY ke VALUE"
 
-#: ../gio/gsettings-tool.c:583
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
-msgstr ""
+msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: ../gio/gsettings-tool.c:588
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
-msgstr ""
+msgstr "Tetap semula KEY ke nilai lalainya"
 
-#: ../gio/gsettings-tool.c:594
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
-msgstr ""
+msgstr "Tetap semula semua kunci dalam SCHEMA ke lalai mereka"
 
-#: ../gio/gsettings-tool.c:600
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
-msgstr ""
+msgstr "Periksa jika KEY boleh ditulis"
 
-#: ../gio/gsettings-tool.c:606
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
+"Pantau KEY jika ada perubahan.\n"
+"Jika tiada KEY dinyatakan, pantau semua kunci di dalam SCHEMA.\n"
+"Guna ^C untuk hentikan pemantauan.\n"
 
-#: ../gio/gsettings-tool.c:609
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
-msgstr ""
-
-#: ../gio/gsettings-tool.c:613
-#, c-format
-msgid ""
-"Unknown command %s\n"
-"\n"
-msgstr ""
+msgstr "SCHEMA[:PATH] [KEY]"
 
-#: ../gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:667
 msgid ""
 "Usage:\n"
-"  gsettings COMMAND [ARGS...]\n"
+"  gsettings --version\n"
+"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS…]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -3293,6 +3613,7 @@ msgid ""
 "  list-children             List children of a schema\n"
 "  list-recursively          List keys and values, recursively\n"
 "  range                     Queries the range of a key\n"
+"  describe                  Queries the description 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"
@@ -3300,461 +3621,2551 @@ msgid ""
 "  writable                  Check if a key is writable\n"
 "  monitor                   Watch for changes\n"
 "\n"
-"Use 'gsettings help COMMAND' to get detailed help.\n"
+"Use “gsettings help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
+"Penggunaan:\n"
+"  gsettings --version\n"
+"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS…]\n"
+"\n"
+"Perintah:\n"
+"  help                      Tunjuk maklumat ini\n"
+"  list-schemas              Senarai skema terpasang\n"
+"  list-relocatable-schemas  Senarai skema boleh alih\n"
+"  list-keys                 Senarai kunci dalam satu skema\n"
+"  list-children             Senarai anak satu skema\n"
+"  list-recursively          Senarai kunci dan nilai, secara rekursif\n"
+"  range                     Tanya julat satu kunci\n"
+"  describe                  Tanya keterangan satu kunci\n"
+"  get                       Dapatkan nilai satu kunci\n"
+"  set                       Tetapkan nilai satu kunci\n"
+"  reset                     Tetap semula nilai satu kunci\n"
+"  reset-recursively         Tetap semula semua nilai dalam skema yang "
+"diberi\n"
+"  writable                  Periksa jika satu kunci boleh tulis\n"
+"  monitor                   Pantau jika ada perubahan\n"
+"\n"
+"Guna “gsettings help COMMAND” untuk perincian bantuan.\n"
+"\n"
 
-#: ../gio/gsettings-tool.c:643
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
-"  gsettings %s %s\n"
+"  gsettings [--schemadir SCHEMADIR] %s %s\n"
 "\n"
 "%s\n"
 "\n"
 msgstr ""
+"Usage:\n"
+"  gsettings [--schemadir SCHEMADIR] %s %s\n"
+"\n"
+"%s\n"
+"\n"
 
-#: ../gio/gsettings-tool.c:648
-msgid "Arguments:\n"
-msgstr ""
-
-#: ../gio/gsettings-tool.c:652
-msgid "  COMMAND   The (optional) command to explain\n"
-msgstr ""
+#: gio/gsettings-tool.c:697
+msgid "  SCHEMADIR A directory to search for additional schemas\n"
+msgstr "  SCHEMADIR Satu direktori untuk gelintar skema tambahan\n"
 
-#: ../gio/gsettings-tool.c:656
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
+"  SCHEMA    Nama bagi skema\n"
+"  PATH      Lalaun, untuk skema boleh-diletak-semula\n"
 
-#: ../gio/gsettings-tool.c:661
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
-msgstr ""
+msgstr "  KEY       Kunci (pilihan) dengan skema\n"
 
-#: ../gio/gsettings-tool.c:665
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
-msgstr ""
+msgstr "  KEY       Kunci dengan skema\n"
 
-#: ../gio/gsettings-tool.c:669
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
-msgstr ""
+msgstr "  VALUE     Nilai yang ditetapkan\n"
 
-#: ../gio/gsettings-tool.c:766
+#: gio/gsettings-tool.c:773
 #, c-format
+msgid "Could not load schemas from %s: %s\n"
+msgstr "Tidak dapat muat skema dari %s: %s\n"
+
+#: gio/gsettings-tool.c:785
+msgid "No schemas installed\n"
+msgstr "Tiada skema terpasang\n"
+
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
-msgstr ""
+msgstr "Nama skema kosong diberikan\n"
+
+#: gio/gsettings-tool.c:919
+#, c-format
+msgid "No such key “%s”\n"
+msgstr "Tiada kunci \"%s\" sebegitu\n"
 
-#: ../gio/gsocket.c:275
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
-msgstr ""
+msgstr "Soket tidak sah, tidak diawalkan"
 
-#: ../gio/gsocket.c:282
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
-msgstr ""
+msgstr "Soket tidak sah, pengawalan gagal kerana: %s"
 
-#: ../gio/gsocket.c:290
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
-msgstr ""
+msgstr "Soket sudah ditutup"
 
-#: ../gio/gsocket.c:298 ../gio/gsocket.c:2798 ../gio/gsocket.c:2842
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
-msgstr ""
+msgstr "I/O soket telah tamat masa"
 
-#: ../gio/gsocket.c:464
-#, fuzzy, c-format
+#: gio/gsocket.c:583
+#, c-format
 msgid "creating GSocket from fd: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "mencipta GSocket dari fd: %s"
 
-#: ../gio/gsocket.c:498 ../gio/gsocket.c:514
-#, fuzzy, c-format
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
+#, c-format
 msgid "Unable to create socket: %s"
-msgstr "Gagal mencipta fail %s': %s"
+msgstr "Tidak boleh cipta soket: %s"
 
-#: ../gio/gsocket.c:498
+#: gio/gsocket.c:666
+msgid "Unknown family was specified"
+msgstr "Keluarga tidak diketahui telah dinyatakan"
+
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
+msgstr "Protokol tidak diketahui telah dinyatakan"
+
+#: gio/gsocket.c:1164
+#, c-format
+msgid "Cannot use datagram operations on a non-datagram socket."
+msgstr "Tidak dapat guna operasi datagram pada soket bukan-datagram."
+
+#: gio/gsocket.c:1181
+#, c-format
+msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
+"Tidak dapat guna operasi datagram pada soket dengan had masa tamat "
+"ditetapkan."
 
-#: ../gio/gsocket.c:1268
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
-msgstr ""
+msgstr "tidak memperoleh alamat setempat: %s"
 
-#: ../gio/gsocket.c:1311
-#, fuzzy, c-format
+#: gio/gsocket.c:2034
+#, c-format
 msgid "could not get remote address: %s"
-msgstr "Tak dapat memperuntukkan  %lu byte untuk membaca fail \"%s\""
+msgstr "tidak dapat alamat jauh: %s"
 
-#: ../gio/gsocket.c:1372
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
-msgstr ""
+msgstr "tidak dapat dengar: %s"
 
-#: ../gio/gsocket.c:1446
-#, fuzzy, c-format
-msgid "Error binding to address: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gsocket.c:2204
+#, c-format
+msgid "Error binding to address %s: %s"
+msgstr "Ralat mengikat ke alamat %s: %s"
 
-#: ../gio/gsocket.c:1566
-#, fuzzy, c-format
-msgid "Error accepting connection: %s"
-msgstr "Ralat semasa penukaran: %s"
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
+#, c-format
+msgid "Error joining multicast group: %s"
+msgstr "Ralat menyertai kumpulan multisiar: %s"
 
-#: ../gio/gsocket.c:1683
-#, fuzzy
-msgid "Error connecting: "
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
+#, c-format
+msgid "Error leaving multicast group: %s"
+msgstr "Ralat meninggalkan kumpulan multisiar: %s"
 
-#: ../gio/gsocket.c:1688
-msgid "Connection in progress"
-msgstr ""
+#: gio/gsocket.c:2382
+msgid "No support for source-specific multicast"
+msgstr "Tiada sokongan untuk multisiar spesifik-sumber"
+
+#: gio/gsocket.c:2529
+msgid "Unsupported socket family"
+msgstr "Keluarga soket tidak disokong"
+
+#: gio/gsocket.c:2554
+msgid "source-specific not an IPv4 address"
+msgstr "source-specific bukanlah satu alamat IPv4"
+
+#: gio/gsocket.c:2578
+#, c-format
+msgid "Interface name too long"
+msgstr "Nama antara muka terlalu panjang"
+
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Antara muka tidak ditemui: %s"
+
+#: gio/gsocket.c:2617
+msgid "No support for IPv4 source-specific multicast"
+msgstr "Tiada sokongan untuk multisiar spesifik-sumber IPv4"
 
-#: ../gio/gsocket.c:1695
-#, fuzzy, c-format
-msgid "Error connecting: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gsocket.c:2675
+msgid "No support for IPv6 source-specific multicast"
+msgstr "Tiada sokongan untuk multisiar spesifik-sumber IPv6"
 
-#: ../gio/gsocket.c:1738 ../gio/gsocket.c:3579
-#, fuzzy, c-format
-msgid "Unable to get pending error: %s"
-msgstr "Gagal mencipta fail %s': %s"
+#: gio/gsocket.c:2884
+#, c-format
+msgid "Error accepting connection: %s"
+msgstr "Ralat menerima sambungan: %s"
+
+#: gio/gsocket.c:3010
+msgid "Connection in progress"
+msgstr "Sambungan masih berlangsung"
 
-#: ../gio/gsocket.c:1875
-#, fuzzy, c-format
+#: gio/gsocket.c:3061
+msgid "Unable to get pending error: "
+msgstr "Tidak memperoleh ralat tertangguh: "
+
+#: gio/gsocket.c:3247
+#, c-format
 msgid "Error receiving data: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menerima data: %s"
 
-#: ../gio/gsocket.c:2050
-#, fuzzy, c-format
+#: gio/gsocket.c:3444
+#, c-format
 msgid "Error sending data: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menghantar data: %s"
 
-#: ../gio/gsocket.c:2163
-#, fuzzy, c-format
+#: gio/gsocket.c:3631
+#, c-format
 msgid "Unable to shutdown socket: %s"
-msgstr "Gagal mencipta fail %s': %s"
+msgstr "Tidak boleh mematikan soket: %s"
 
-#: ../gio/gsocket.c:2242
-#, fuzzy, c-format
+#: gio/gsocket.c:3712
+#, c-format
 msgid "Error closing socket: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menutup soket: %s"
 
-#: ../gio/gsocket.c:2791
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
-msgstr ""
+msgstr "Menunggu keadaan soket: %s"
 
-#: ../gio/gsocket.c:3056 ../gio/gsocket.c:3137
-#, fuzzy, c-format
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
+#, c-format
 msgid "Error sending message: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menghantar mesej: %s"
 
-#: ../gio/gsocket.c:3081
-msgid "GSocketControlMessage not supported on windows"
-msgstr ""
+#: gio/gsocket.c:4946
+msgid "GSocketControlMessage not supported on Windows"
+msgstr "GSocketControlMessage tidak disokong dalam Windows"
 
-#: ../gio/gsocket.c:3358 ../gio/gsocket.c:3494
-#, fuzzy, c-format
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
+#, c-format
 msgid "Error receiving message: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menerima mesej: %s"
+
+#: gio/gsocket.c:5995
+#, c-format
+msgid "Unable to read socket credentials: %s"
+msgstr "Tidak boleh membaca kelayakan soket: %s"
 
-#: ../gio/gsocket.c:3598
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
-msgstr ""
+msgstr "g_socket_get_credentials tidak dilaksana untuk OS ini"
 
-#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368
-msgid "Unknown error on connect"
-msgstr ""
+#: gio/gsocketclient.c:182
+#, c-format
+msgid "Could not connect to proxy server %s: "
+msgstr "Tidak dapat sambung ke pelayan proksi %s: "
 
-#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252
-msgid "Trying to proxy over non-TCP connection is not supported."
-msgstr ""
+#: gio/gsocketclient.c:196
+#, c-format
+msgid "Could not connect to %s: "
+msgstr "Tidak dapat bersambung ke %s: "
 
-#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277
-#, fuzzy, c-format
-msgid "Proxy protocol '%s' is not supported."
-msgstr "Pautan simbolik tidak disokong"
+#: gio/gsocketclient.c:198
+msgid "Could not connect: "
+msgstr "Tidak dapat sambung: "
 
-#: ../gio/gsocketlistener.c:191
-msgid "Listener is already closed"
-msgstr ""
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1764
+msgid "Unknown error on connect"
+msgstr "Ralat tidak diketahui ketika bersambung"
 
-#: ../gio/gsocketlistener.c:232
-msgid "Added socket is closed"
-msgstr ""
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1672
+msgid "Proxying over a non-TCP connection is not supported."
+msgstr "Proksi terhadap sambungan bukan-TCP tidak disokong."
 
-#: ../gio/gsocks4aproxy.c:121
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
 #, c-format
-msgid "SOCKSv4 does not support IPv6 address '%s'"
-msgstr ""
+msgid "Proxy protocol “%s” is not supported."
+msgstr "Protokol proksi \"%s\" tidak disokong."
+
+#: gio/gsocketlistener.c:230
+msgid "Listener is already closed"
+msgstr "Pendengar sudah ditutup"
+
+#: gio/gsocketlistener.c:276
+msgid "Added socket is closed"
+msgstr "Soket ditambah telah tertutup"
 
-#: ../gio/gsocks4aproxy.c:139
+#: gio/gsocks4aproxy.c:118
 #, c-format
-msgid "SOCKSv4 implementation limits username to %i characters"
-msgstr ""
+msgid "SOCKSv4 does not support IPv6 address “%s”"
+msgstr "SOCKSv4 tidak menyokong alamat IPv6 “%s”"
+
+#: gio/gsocks4aproxy.c:136
+msgid "Username is too long for SOCKSv4 protocol"
+msgstr "Nama pengguna terlalu panjang untuk protokol SOCKSv4"
 
-#: ../gio/gsocks4aproxy.c:157
+#: gio/gsocks4aproxy.c:153
 #, c-format
-msgid "SOCKSv4a implementation limits hostname to %i characters"
-msgstr ""
+msgid "Hostname “%s” is too long for SOCKSv4 protocol"
+msgstr "Nama hos \"%s\" terlalu panjang untuk protokol SOCKSv4"
 
-#: ../gio/gsocks4aproxy.c:183
+#: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
-msgstr ""
+msgstr "Pelayan bukanlah pelayan proksi SOCKSv4."
 
-#: ../gio/gsocks4aproxy.c:190
+#: gio/gsocks4aproxy.c:186
 msgid "Connection through SOCKSv4 server was rejected"
-msgstr ""
+msgstr "Sambungan melalui pelayan SOCKSv4 telah ditolak"
 
-#: ../gio/gsocks5proxy.c:155 ../gio/gsocks5proxy.c:328
-#: ../gio/gsocks5proxy.c:338
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
 msgid "The server is not a SOCKSv5 proxy server."
-msgstr ""
+msgstr "Pelayan bukanlah pelayan proksi SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:169
+#: gio/gsocks5proxy.c:167
 msgid "The SOCKSv5 proxy requires authentication."
-msgstr ""
+msgstr "Proksi SOCKSv5 memerlukan pengesahihan."
 
-#: ../gio/gsocks5proxy.c:179
+#: gio/gsocks5proxy.c:177
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
 msgstr ""
+"Proksi SOCKSv5 memerlukan kaedah pengesahihan yang tidak disokong oleh GLib."
 
-#: ../gio/gsocks5proxy.c:208
-#, c-format
-msgid "Username or password is too long for SOCKSv5 protocol (max. is %i)."
-msgstr ""
+#: gio/gsocks5proxy.c:206
+msgid "Username or password is too long for SOCKSv5 protocol."
+msgstr "Nama pengguna atau kata laluan terlalu panjang untuk protokol SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:239
+#: gio/gsocks5proxy.c:236
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
+"Pengesahihan SOCKSv5 gagal kerana nama pengguna dan kata laluan adalah salah."
 
-#: ../gio/gsocks5proxy.c:289
+#: gio/gsocks5proxy.c:286
 #, c-format
-msgid "Hostname '%s' too long for SOCKSv5 protocol (maximum is %i bytes)"
-msgstr ""
+msgid "Hostname “%s” is too long for SOCKSv5 protocol"
+msgstr "Nama hos \"%s\" terlalu panjang untuk protokol SOCKSv5"
 
-#: ../gio/gsocks5proxy.c:352
+#: gio/gsocks5proxy.c:348
 msgid "The SOCKSv5 proxy server uses unknown address type."
-msgstr ""
+msgstr "Pelayan proksi SOCKSv5 menggunakan jenis alamat tidak diketahui."
 
-#: ../gio/gsocks5proxy.c:359
+#: gio/gsocks5proxy.c:355
 msgid "Internal SOCKSv5 proxy server error."
-msgstr ""
+msgstr "Ralat pelayan proksi SOCKSv5 dalaman."
 
-#: ../gio/gsocks5proxy.c:365
+#: gio/gsocks5proxy.c:361
 msgid "SOCKSv5 connection not allowed by ruleset."
-msgstr ""
+msgstr "Sambungan SOCKSv5 tidak dibenarkan oleh set peraturan."
 
-#: ../gio/gsocks5proxy.c:372
+#: gio/gsocks5proxy.c:368
 msgid "Host unreachable through SOCKSv5 server."
-msgstr ""
+msgstr "Hos tidak boleh dicapai melalui pelayan SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:378
+#: gio/gsocks5proxy.c:374
 msgid "Network unreachable through SOCKSv5 proxy."
-msgstr ""
+msgstr "Rangkaian tidak boleh dicapai melalui proksi SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:384
+#: gio/gsocks5proxy.c:380
 msgid "Connection refused through SOCKSv5 proxy."
-msgstr ""
+msgstr "Sambungan dinafi melalui proksi SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:390
-msgid "SOCKSv5 proxy does not support 'connect' command."
-msgstr ""
+#: gio/gsocks5proxy.c:386
+msgid "SOCKSv5 proxy does not support “connect” command."
+msgstr "Proksi SOCKSv5 tidak menyokong perintah \"connect\"."
 
-#: ../gio/gsocks5proxy.c:396
+#: gio/gsocks5proxy.c:392
 msgid "SOCKSv5 proxy does not support provided address type."
-msgstr ""
+msgstr "Proksi SOCKSv5 tidak menyokong jenis alamat yang disediakan."
 
-#: ../gio/gsocks5proxy.c:402
+#: gio/gsocks5proxy.c:398
 msgid "Unknown SOCKSv5 proxy error."
-msgstr ""
+msgstr "Ralat proksi SOCKSv5 tidak diketahui."
 
-#: ../gio/gthemedicon.c:498
+#: gio/gthemedicon.c:595
 #, c-format
-msgid "Can't handle version %d of GThemedIcon encoding"
-msgstr ""
+msgid "Can’t handle version %d of GThemedIcon encoding"
+msgstr "Tidak dapat mengendalikan versi %d bagi pengekodan GThemedIcon"
+
+#: gio/gthreadedresolver.c:152
+msgid "No valid addresses were found"
+msgstr "Tiada alamat yang sah ditemui"
+
+#: gio/gthreadedresolver.c:334
+#, c-format
+msgid "Error reverse-resolving “%s”: %s"
+msgstr "Ralat melerai-songsang \"%s\": %s"
+
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
+#, c-format
+msgid "No DNS record of the requested type for “%s”"
+msgstr "Tiada rekod DNS bagi jenis dipinta untuk \"%s\""
+
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
+#, c-format
+msgid "Temporarily unable to resolve “%s”"
+msgstr "Tidak boleh lerai \"%s\" buat sementara"
+
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
+#, c-format
+msgid "Error resolving “%s”"
+msgstr "Ralat meleraikan \"%s\""
 
-#: ../gio/gtlscertificate.c:226
+#: gio/gtlscertificate.c:298
 msgid "No PEM-encoded private key found"
-msgstr ""
+msgstr "Tiada kunci persendirian terenkod-PEM ditemui"
 
-#: ../gio/gtlscertificate.c:235
+#: gio/gtlscertificate.c:308
+msgid "Cannot decrypt PEM-encoded private key"
+msgstr "Tidak dapat menyahsulitkan kunci persendirian terenkod-PEM"
+
+#: gio/gtlscertificate.c:319
 msgid "Could not parse PEM-encoded private key"
-msgstr ""
+msgstr "Tidak dapat menghuraikan kunci persendirian terenkod-PEM"
 
-#: ../gio/gtlscertificate.c:260
+#: gio/gtlscertificate.c:346
 msgid "No PEM-encoded certificate found"
-msgstr ""
+msgstr "Tiada sijil terenkod-PEM ditemui"
 
-#: ../gio/gtlscertificate.c:269
+#: gio/gtlscertificate.c:355
 msgid "Could not parse PEM-encoded certificate"
-msgstr ""
+msgstr "Tidak dapat menghurai sijil terenkod-PEM"
 
-#: ../gio/gtlspassword.c:114
+#: gio/gtlscertificate.c:710
+msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+msgstr "GTlsBackend ini tidak menyokong penciptaa sijil PKCS #11"
+
+#: gio/gtlspassword.c:111
 msgid ""
 "This is the last chance to enter the password correctly before your access "
 "is locked out."
 msgstr ""
+"Ini adalah peluang terakhir menginput kata laluan dengan betul sebelum "
+"capaian anda terkunci."
 
-#: ../gio/gtlspassword.c:116
+#. Translators: This is not the 'This is the last chance' string. It is
+#. * displayed when more than one attempt is allowed.
+#: gio/gtlspassword.c:115
 msgid ""
-"Several password entered have been incorrect, and your access will be locked "
-"out after further failures."
+"Several passwords entered have been incorrect, and your access will be "
+"locked out after further failures."
 msgstr ""
+"Beberapa kata laluan dimasukkan adalah salah, dan capaian anda akan terkunci "
+"selepas gagal beberapa kali."
 
-#: ../gio/gtlspassword.c:118
+#: gio/gtlspassword.c:117
 msgid "The password entered is incorrect."
-msgstr ""
+msgstr "Kata laluan yang dimasukkan adalah salah."
 
-#: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:521
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
 #, c-format
 msgid "Expecting 1 control message, got %d"
-msgstr ""
+msgid_plural "Expecting 1 control message, got %d"
+msgstr[0] "Menjangkakan 1 mesej kawalan, dapat %d"
+msgstr[1] "Menjangkakan 1 mesej kawalan, dapat %d"
 
-#: ../gio/gunixconnection.c:177 ../gio/gunixconnection.c:531
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
-msgstr ""
+msgstr "Jenis data sampingan tidak dijangka"
 
-#: ../gio/gunixconnection.c:195
+#: gio/gunixconnection.c:200
 #, c-format
 msgid "Expecting one fd, but got %d\n"
-msgstr ""
+msgid_plural "Expecting one fd, but got %d\n"
+msgstr[0] "Menjangkakan satu fd, dapat %d\n"
+msgstr[1] "Menjangkakan satu fd, dapat %d\n"
 
-#: ../gio/gunixconnection.c:211
+#: gio/gunixconnection.c:219
 msgid "Received invalid fd"
-msgstr ""
+msgstr "Terima fd tidak sah"
 
-#: ../gio/gunixconnection.c:371
-#, fuzzy
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menghantar kelayakan: "
 
-#: ../gio/gunixconnection.c:452
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
-msgstr ""
+msgstr "Ralat memeriksa jika SO_PASSCRED dibenarkan untuk soket: %s"
 
-#: ../gio/gunixconnection.c:461
+#: gio/gunixconnection.c:536
 #, c-format
-msgid ""
-"Unexpected option length while checking if SO_PASSCRED is enabled for "
-"socket. Expected %d bytes, got %d"
-msgstr ""
-
-#: ../gio/gunixconnection.c:478
-#, fuzzy, c-format
 msgid "Error enabling SO_PASSCRED: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat membenarkan SO_PASSCRED: %s"
 
-#: ../gio/gunixconnection.c:509
+#: gio/gunixconnection.c:565
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
+"Menjangkakan baca satu bait untuk kelayakan penerimaan tetapi baca sifar bait"
 
-#: ../gio/gunixconnection.c:545
+#: gio/gunixconnection.c:605
 #, c-format
 msgid "Not expecting control message, but got %d"
-msgstr ""
+msgstr "Tidak menjangkakan mesej kawalan, tetapi dapat %d"
 
-#: ../gio/gunixconnection.c:571
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
-msgstr ""
+msgstr "Ralat ketika melumpuhkan SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:368 ../gio/gunixinputstream.c:388
-#: ../gio/gunixinputstream.c:466
-#, fuzzy, c-format
-msgid "Error reading from unix: %s"
-msgstr "Ralat membaca fail '%s': %s"
+#: gio/gunixinputstream.c:372 gio/gunixinputstream.c:393
+#, c-format
+msgid "Error reading from file descriptor: %s"
+msgstr "Ralat membaca dari penerang fail: %s"
 
-#: ../gio/gunixinputstream.c:421 ../gio/gunixinputstream.c:601
-#: ../gio/gunixoutputstream.c:407 ../gio/gunixoutputstream.c:556
-#, fuzzy, c-format
-msgid "Error closing unix: %s"
-msgstr "Ralat pada baris %d: %s"
+#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:535
+#: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
+#, c-format
+msgid "Error closing file descriptor: %s"
+msgstr "Ralat menutup penerang fail: %s"
 
-#: ../gio/gunixmounts.c:1900 ../gio/gunixmounts.c:1937
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
-msgstr ""
+msgstr "Root sistem fail"
 
-#: ../gio/gunixoutputstream.c:353 ../gio/gunixoutputstream.c:374
-#: ../gio/gunixoutputstream.c:452
-#, fuzzy, c-format
-msgid "Error writing to unix: %s"
-msgstr "Ralat semasa penukaran: %s"
+#: gio/gunixoutputstream.c:372 gio/gunixoutputstream.c:392
+#: gio/gunixoutputstream.c:479 gio/gunixoutputstream.c:499
+#: gio/gunixoutputstream.c:676
+#, c-format
+msgid "Error writing to file descriptor: %s"
+msgstr "Ralat menulis ke penerang fail: %s"
 
-#: ../gio/gunixsocketaddress.c:244
-msgid "Abstract unix domain socket addresses not supported on this system"
-msgstr ""
+#: gio/gunixsocketaddress.c:243
+msgid "Abstract UNIX domain socket addresses not supported on this system"
+msgstr "Alamat soket domain UNIX abstrak tidak disokong pada sistem ini"
 
-#: ../gio/gvolume.c:408
-msgid "volume doesn't implement eject"
-msgstr ""
+#: gio/gvolume.c:438
+msgid "volume doesnt implement eject"
+msgstr "volum tidak melaksanakan eject"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gvolume.c:488
-msgid "volume doesn't implement eject or eject_with_operation"
-msgstr ""
-
-#: ../gio/gwin32appinfo.c:276
-msgid "Can't find application"
-msgstr ""
-
-#: ../gio/gwin32appinfo.c:299
-#, fuzzy, c-format
-msgid "Error launching application: %s"
-msgstr "Ralat semasa penukaran: %s"
-
-#: ../gio/gwin32appinfo.c:335
-#, fuzzy
-msgid "URIs not supported"
-msgstr "Pautan simbolik tidak disokong"
-
-#: ../gio/gwin32appinfo.c:357
-msgid "association changes not supported on win32"
-msgstr ""
-
-#: ../gio/gwin32appinfo.c:369
-msgid "Association creation not supported on win32"
-msgstr ""
+#: gio/gvolume.c:515
+msgid "volume doesn’t implement eject or eject_with_operation"
+msgstr "volum tidak melaksanakan eject atau eject_with_operation"
 
-#: ../gio/gwin32inputstream.c:318
-#, fuzzy, c-format
+#: gio/gwin32inputstream.c:185
+#, c-format
 msgid "Error reading from handle: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat membaca dari pemegang: %s"
 
-#: ../gio/gwin32inputstream.c:348 ../gio/gwin32outputstream.c:348
-#, fuzzy, c-format
+#: gio/gwin32inputstream.c:232 gio/gwin32outputstream.c:219
+#, c-format
 msgid "Error closing handle: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menutup pemegang: %s"
 
-#: ../gio/gwin32outputstream.c:318
-#, fuzzy, c-format
+#: gio/gwin32outputstream.c:172
+#, c-format
 msgid "Error writing to handle: %s"
-msgstr "Ralat membaca fail '%s': %s"
+msgstr "Ralat menulis ke pemegang: %s"
 
-#: ../gio/gzlibcompressor.c:396 ../gio/gzlibdecompressor.c:349
+#: gio/gzlibcompressor.c:394 gio/gzlibdecompressor.c:347
 msgid "Not enough memory"
-msgstr ""
+msgstr "Ingatan tidak mencukupi"
 
-#: ../gio/gzlibcompressor.c:403 ../gio/gzlibdecompressor.c:356
+#: gio/gzlibcompressor.c:401 gio/gzlibdecompressor.c:354
 #, c-format
 msgid "Internal error: %s"
-msgstr ""
+msgstr "Ralat dalaman: %s"
 
-#: ../gio/gzlibcompressor.c:416 ../gio/gzlibdecompressor.c:370
+#: gio/gzlibcompressor.c:414 gio/gzlibdecompressor.c:368
 msgid "Need more input"
-msgstr ""
+msgstr "Perlu lagi input"
 
-#: ../gio/gzlibdecompressor.c:342
-#, fuzzy
+#: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
-msgstr "Namahos tidak sah"
+msgstr "Data termampat tidak sah"
+
+#: gio/tests/gdbus-daemon.c:18
+msgid "Address to listen on"
+msgstr "Alamat didengarkan"
+
+#: gio/tests/gdbus-daemon.c:19
+msgid "Ignored, for compat with GTestDbus"
+msgstr "Diabaikan, untuk keserasian dengan GTestDbus"
+
+#: gio/tests/gdbus-daemon.c:20
+msgid "Print address"
+msgstr "Alamat cetak"
+
+#: gio/tests/gdbus-daemon.c:21
+msgid "Print address in shell mode"
+msgstr "Cetak alamat dalam mod shell"
+
+#: gio/tests/gdbus-daemon.c:28
+msgid "Run a dbus service"
+msgstr "Jalankan satu perkhidmatan dbus"
+
+#: gio/tests/gdbus-daemon.c:42
+msgid "Wrong args\n"
+msgstr "Arg salah\n"
+
+#: glib/gbookmarkfile.c:756
+#, c-format
+msgid "Unexpected attribute “%s” for element “%s”"
+msgstr "Atribut tidak jangka \"%s\" untuk unsur \"%s\""
+
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
+#, c-format
+msgid "Attribute “%s” of element “%s” not found"
+msgstr "Atribut \"%s\" bagi unsur \"%s\" tidak ditemui"
+
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
+#, c-format
+msgid "Unexpected tag “%s”, tag “%s” expected"
+msgstr "Tag \"%s\" tidak jangka, tag \"%s\" dijangka"
+
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
+#, c-format
+msgid "Unexpected tag “%s” inside “%s”"
+msgstr "Tag \"%s\" tidak jangka di dalam \"%s\""
+
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr "Tarikh/waktu '%s' tidak sah dalam fail tanda buku"
+
+#: glib/gbookmarkfile.c:1831
+msgid "No valid bookmark file found in data dirs"
+msgstr "Tiada fail tanda buku yang sah ditemui dalam dir data"
+
+#: glib/gbookmarkfile.c:2032
+#, c-format
+msgid "A bookmark for URI “%s” already exists"
+msgstr "Satu tanda buku untuk URI \"%s\" sudah wujud"
+
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
+#, c-format
+msgid "No bookmark found for URI “%s”"
+msgstr "Tiada tanda buku ditemui untuk URI \"%s\""
+
+#: glib/gbookmarkfile.c:2410
+#, c-format
+msgid "No MIME type defined in the bookmark for URI “%s”"
+msgstr "Tiada jenis MIME ditakrif dalam tanda buku bagi URI \"%s\""
+
+#: glib/gbookmarkfile.c:2495
+#, c-format
+msgid "No private flag has been defined in bookmark for URI “%s”"
+msgstr ""
+"Tiada bendera persendirian telah ditakrif dalam tanda buku untuk URI \"%s\""
+
+#: glib/gbookmarkfile.c:2874
+#, c-format
+msgid "No groups set in bookmark for URI “%s”"
+msgstr "Tiada kumpulan ditetapkan dalam tanda buku untuk URI \"%s\""
+
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
+#, c-format
+msgid "No application with name “%s” registered a bookmark for “%s”"
+msgstr ""
+"Tiada aplikasi dengan nama \"%s\" daftarkan satu tanda buku untuk \"%s\""
+
+#: glib/gbookmarkfile.c:3453
+#, c-format
+msgid "Failed to expand exec line “%s” with URI “%s”"
+msgstr "Gagal kembangkan baris exec \"%s\" dengan URI \"%s\""
+
+#: glib/gconvert.c:466
+#| msgid "Invalid sequence in conversion input"
+msgid "Unrepresentable character in conversion input"
+msgstr "Aksara tiada wakil dalam input pertukaran"
+
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
+msgid "Partial character sequence at end of input"
+msgstr "Sebahagian turutan aksara berada di penghujung input"
+
+#: glib/gconvert.c:762
+#, c-format
+#| msgid "Cannot convert fallback '%s' to codeset '%s'"
+msgid "Cannot convert fallback “%s” to codeset “%s”"
+msgstr "Tidak dapat tukar jatuh-balik \"%s\" ke set kod \"%s\""
+
+#: glib/gconvert.c:934
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion input"
+msgstr "Bait NOL terbenam dalam input pertukaran"
+
+#: glib/gconvert.c:955
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion output"
+msgstr "Bait NOL terbenam dalam output pertukaran"
+
+#: glib/gconvert.c:1640
+#, c-format
+msgid "The URI “%s” is not an absolute URI using the “file” scheme"
+msgstr "URI '%s' adalah bukan URI mutlak menggunakan skema \"fail\""
+
+#: glib/gconvert.c:1650
+#, c-format
+#| msgid "The local file URI '%s' may not include a '#'"
+msgid "The local file URI “%s” may not include a “#”"
+msgstr "URI Fail setempat \"%s\" mungkin tidak disertakan dengan \"#\""
+
+#: glib/gconvert.c:1667
+#, c-format
+#| msgid "The URI '%s' is invalid"
+msgid "The URI “%s” is invalid"
+msgstr "URI \"%s\" adalah tidak sah"
+
+#: glib/gconvert.c:1679
+#, c-format
+#| msgid "The hostname of the URI '%s' is invalid"
+msgid "The hostname of the URI “%s” is invalid"
+msgstr "Nama hos bagi URI \"%s\" adalah tidak sah"
+
+#: glib/gconvert.c:1695
+#, c-format
+#| msgid "The URI '%s' contains invalidly escaped characters"
+msgid "The URI “%s” contains invalidly escaped characters"
+msgstr "URI \"%s\" mengandungi aksara escape yang tidak sah"
+
+#: glib/gconvert.c:1767
+#, c-format
+#| msgid "The pathname '%s' is not an absolute path"
+msgid "The pathname “%s” is not an absolute path"
+msgstr "Nama laluan \"%s\" bukanlah laluan yang mutlak"
+
+#. Translators: this is the preferred format for expressing the date and the time
+#: glib/gdatetime.c:220
+msgctxt "GDateTime"
+msgid "%a %b %e %H:%M:%S %Y"
+msgstr "%a %b %e %H:%M:%S %Y"
+
+#. Translators: this is the preferred format for expressing the date
+#: glib/gdatetime.c:223
+msgctxt "GDateTime"
+msgid "%m/%d/%y"
+msgstr "%m/%d/%y"
+
+#. Translators: this is the preferred format for expressing the time
+#: glib/gdatetime.c:226
+msgctxt "GDateTime"
+msgid "%H:%M:%S"
+msgstr "%H:%M:%S"
+
+#. Translators: this is the preferred format for expressing 12 hour time
+#: glib/gdatetime.c:229
+msgctxt "GDateTime"
+msgid "%I:%M:%S %p"
+msgstr "%I:%M:%S %p"
+
+#. Translators: Some languages (Baltic, Slavic, Greek, and some more)
+#. * need different grammatical forms of month names depending on whether
+#. * they are standalone or in a complete date context, with the day
+#. * number.  Some other languages may prefer starting with uppercase when
+#. * they are standalone and with lowercase when they are in a complete
+#. * date context.  Here are full month names in a form appropriate when
+#. * they are used standalone.  If your system is Linux with the glibc
+#. * version 2.27 (released Feb 1, 2018) or newer or if it is from the BSD
+#. * family (which includes OS X) then you can refer to the date command
+#. * line utility and see what the command `date +%OB' produces.  Also in
+#. * the latest Linux the command `locale alt_mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  Note that in most of the languages (western European,
+#. * non-European) there is no difference between the standalone and
+#. * complete date form.
+#.
+#: glib/gdatetime.c:268
+msgctxt "full month name"
+msgid "January"
+msgstr "Januari"
+
+#: glib/gdatetime.c:270
+msgctxt "full month name"
+msgid "February"
+msgstr "Februari"
+
+#: glib/gdatetime.c:272
+msgctxt "full month name"
+msgid "March"
+msgstr "Mac"
+
+#: glib/gdatetime.c:274
+msgctxt "full month name"
+msgid "April"
+msgstr "April"
+
+#: glib/gdatetime.c:276
+msgctxt "full month name"
+msgid "May"
+msgstr "Mei"
+
+#: glib/gdatetime.c:278
+msgctxt "full month name"
+msgid "June"
+msgstr "Jun"
+
+#: glib/gdatetime.c:280
+msgctxt "full month name"
+msgid "July"
+msgstr "Julai"
+
+#: glib/gdatetime.c:282
+msgctxt "full month name"
+msgid "August"
+msgstr "Ogos"
+
+#: glib/gdatetime.c:284
+msgctxt "full month name"
+msgid "September"
+msgstr "September"
+
+#: glib/gdatetime.c:286
+msgctxt "full month name"
+msgid "October"
+msgstr "Oktober"
+
+#: glib/gdatetime.c:288
+msgctxt "full month name"
+msgid "November"
+msgstr "November"
+
+#: glib/gdatetime.c:290
+msgctxt "full month name"
+msgid "December"
+msgstr "Disember"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a complete
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  However, as these names are abbreviated
+#. * the grammatical difference is visible probably only in Belarusian
+#. * and Russian.  In other languages there is no difference between
+#. * the standalone and complete date form when they are abbreviated.
+#. * If your system is Linux with the glibc version 2.27 (released
+#. * Feb 1, 2018) or newer then you can refer to the date command line
+#. * utility and see what the command `date +%Ob' produces.  Also in
+#. * the latest Linux the command `locale ab_alt_mon' in your native
+#. * locale produces a complete list of month names almost ready to copy
+#. * and paste here.  Note that this feature is not yet supported by any
+#. * other platform.  Here are abbreviated month names in a form
+#. * appropriate when they are used standalone.
+#.
+#: glib/gdatetime.c:322
+msgctxt "abbreviated month name"
+msgid "Jan"
+msgstr "Jan"
+
+#: glib/gdatetime.c:324
+msgctxt "abbreviated month name"
+msgid "Feb"
+msgstr "Feb"
+
+#: glib/gdatetime.c:326
+msgctxt "abbreviated month name"
+msgid "Mar"
+msgstr "Mac"
+
+#: glib/gdatetime.c:328
+msgctxt "abbreviated month name"
+msgid "Apr"
+msgstr "Apr"
+
+#: glib/gdatetime.c:330
+msgctxt "abbreviated month name"
+msgid "May"
+msgstr "Mei"
+
+#: glib/gdatetime.c:332
+msgctxt "abbreviated month name"
+msgid "Jun"
+msgstr "Jun"
+
+#: glib/gdatetime.c:334
+msgctxt "abbreviated month name"
+msgid "Jul"
+msgstr "Jul"
+
+#: glib/gdatetime.c:336
+msgctxt "abbreviated month name"
+msgid "Aug"
+msgstr "Ogo"
+
+#: glib/gdatetime.c:338
+msgctxt "abbreviated month name"
+msgid "Sep"
+msgstr "Sep"
+
+#: glib/gdatetime.c:340
+msgctxt "abbreviated month name"
+msgid "Oct"
+msgstr "Okt"
+
+#: glib/gdatetime.c:342
+msgctxt "abbreviated month name"
+msgid "Nov"
+msgstr "Nov"
+
+#: glib/gdatetime.c:344
+msgctxt "abbreviated month name"
+msgid "Dec"
+msgstr "Dis"
+
+#: glib/gdatetime.c:359
+msgctxt "full weekday name"
+msgid "Monday"
+msgstr "Isnin"
+
+#: glib/gdatetime.c:361
+msgctxt "full weekday name"
+msgid "Tuesday"
+msgstr "Selasa"
+
+#: glib/gdatetime.c:363
+msgctxt "full weekday name"
+msgid "Wednesday"
+msgstr "Rabu"
+
+#: glib/gdatetime.c:365
+msgctxt "full weekday name"
+msgid "Thursday"
+msgstr "Khamis"
+
+#: glib/gdatetime.c:367
+msgctxt "full weekday name"
+msgid "Friday"
+msgstr "Jumaat"
+
+#: glib/gdatetime.c:369
+msgctxt "full weekday name"
+msgid "Saturday"
+msgstr "Sabtu"
+
+#: glib/gdatetime.c:371
+msgctxt "full weekday name"
+msgid "Sunday"
+msgstr "Ahad"
+
+#: glib/gdatetime.c:386
+msgctxt "abbreviated weekday name"
+msgid "Mon"
+msgstr "Isn"
+
+#: glib/gdatetime.c:388
+msgctxt "abbreviated weekday name"
+msgid "Tue"
+msgstr "Sel"
+
+#: glib/gdatetime.c:390
+msgctxt "abbreviated weekday name"
+msgid "Wed"
+msgstr "Rab"
+
+#: glib/gdatetime.c:392
+msgctxt "abbreviated weekday name"
+msgid "Thu"
+msgstr "Kha"
+
+#: glib/gdatetime.c:394
+msgctxt "abbreviated weekday name"
+msgid "Fri"
+msgstr "Jum"
+
+#: glib/gdatetime.c:396
+msgctxt "abbreviated weekday name"
+msgid "Sat"
+msgstr "Sab"
+
+#: glib/gdatetime.c:398
+msgctxt "abbreviated weekday name"
+msgid "Sun"
+msgstr "Ahd"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are full month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  If your system is Linux with the glibc version 2.27
+#. * (released Feb 1, 2018) or newer or if it is from the BSD family
+#. * (which includes OS X) then you can refer to the date command line
+#. * utility and see what the command `date +%B' produces.  Also in
+#. * the latest Linux the command `locale mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  In older Linux systems due to a bug the result is
+#. * incorrect in some languages.  Note that in most of the languages
+#. * (western European, non-European) there is no difference between the
+#. * standalone and complete date form.
+#.
+#: glib/gdatetime.c:462
+#| msgctxt "full month name"
+#| msgid "January"
+msgctxt "full month name with day"
+msgid "January"
+msgstr "Januari"
+
+#: glib/gdatetime.c:464
+#| msgctxt "full month name"
+#| msgid "February"
+msgctxt "full month name with day"
+msgid "February"
+msgstr "Februari"
+
+#: glib/gdatetime.c:466
+#| msgctxt "full month name"
+#| msgid "March"
+msgctxt "full month name with day"
+msgid "March"
+msgstr "Mac"
+
+#: glib/gdatetime.c:468
+#| msgctxt "full month name"
+#| msgid "April"
+msgctxt "full month name with day"
+msgid "April"
+msgstr "April"
+
+#: glib/gdatetime.c:470
+#| msgctxt "full month name"
+#| msgid "May"
+msgctxt "full month name with day"
+msgid "May"
+msgstr "Mei"
+
+#: glib/gdatetime.c:472
+#| msgctxt "full month name"
+#| msgid "June"
+msgctxt "full month name with day"
+msgid "June"
+msgstr "Jun"
+
+#: glib/gdatetime.c:474
+#| msgctxt "full month name"
+#| msgid "July"
+msgctxt "full month name with day"
+msgid "July"
+msgstr "Julai"
+
+#: glib/gdatetime.c:476
+msgctxt "full month name with day"
+msgid "August"
+msgstr "Ogos"
+
+#: glib/gdatetime.c:478
+msgctxt "full month name with day"
+msgid "September"
+msgstr "September"
+
+#: glib/gdatetime.c:480
+msgctxt "full month name with day"
+msgid "October"
+msgstr "Oktober"
+
+#: glib/gdatetime.c:482
+msgctxt "full month name with day"
+msgid "November"
+msgstr "November"
+
+#: glib/gdatetime.c:484
+msgctxt "full month name with day"
+msgid "December"
+msgstr "Disember"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are abbreviated month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  However, as these names are abbreviated the grammatical
+#. * difference is visible probably only in Belarusian and Russian.
+#. * In other languages there is no difference between the standalone
+#. * and complete date form when they are abbreviated.  If your system
+#. * is Linux with the glibc version 2.27 (released Feb 1, 2018) or newer
+#. * then you can refer to the date command line utility and see what the
+#. * command `date +%b' produces.  Also in the latest Linux the command
+#. * `locale abmon' in your native locale produces a complete list of
+#. * month names almost ready to copy and paste here.  In other systems
+#. * due to a bug the result is incorrect in some languages.
+#.
+#: glib/gdatetime.c:549
+#| msgctxt "abbreviated month name"
+#| msgid "Jan"
+msgctxt "abbreviated month name with day"
+msgid "Jan"
+msgstr "Jan"
+
+#: glib/gdatetime.c:551
+#| msgctxt "abbreviated month name"
+#| msgid "Feb"
+msgctxt "abbreviated month name with day"
+msgid "Feb"
+msgstr "Feb"
+
+#: glib/gdatetime.c:553
+#| msgctxt "abbreviated month name"
+#| msgid "Mar"
+msgctxt "abbreviated month name with day"
+msgid "Mar"
+msgstr "Mac"
+
+#: glib/gdatetime.c:555
+#| msgctxt "abbreviated month name"
+#| msgid "Apr"
+msgctxt "abbreviated month name with day"
+msgid "Apr"
+msgstr "Apr"
+
+#: glib/gdatetime.c:557
+#| msgctxt "full month name"
+#| msgid "May"
+msgctxt "abbreviated month name with day"
+msgid "May"
+msgstr "Mei"
+
+#: glib/gdatetime.c:559
+#| msgctxt "abbreviated month name"
+#| msgid "Jun"
+msgctxt "abbreviated month name with day"
+msgid "Jun"
+msgstr "Jun"
+
+#: glib/gdatetime.c:561
+#| msgctxt "abbreviated month name"
+#| msgid "Jul"
+msgctxt "abbreviated month name with day"
+msgid "Jul"
+msgstr "Jul"
+
+#: glib/gdatetime.c:563
+msgctxt "abbreviated month name with day"
+msgid "Aug"
+msgstr "Ogo"
+
+#: glib/gdatetime.c:565
+msgctxt "abbreviated month name with day"
+msgid "Sep"
+msgstr "Sep"
+
+#: glib/gdatetime.c:567
+msgctxt "abbreviated month name with day"
+msgid "Oct"
+msgstr "Okt"
+
+#: glib/gdatetime.c:569
+msgctxt "abbreviated month name with day"
+msgid "Nov"
+msgstr "Nov"
+
+#: glib/gdatetime.c:571
+msgctxt "abbreviated month name with day"
+msgid "Dec"
+msgstr "Dis"
+
+#. Translators: 'before midday' indicator
+#: glib/gdatetime.c:588
+msgctxt "GDateTime"
+msgid "AM"
+msgstr "AM"
+
+#. Translators: 'after midday' indicator
+#: glib/gdatetime.c:591
+msgctxt "GDateTime"
+msgid "PM"
+msgstr "PM"
+
+#: glib/gdir.c:154
+#, c-format
+#| msgid "Error opening directory '%s': %s"
+msgid "Error opening directory “%s”: %s"
+msgstr "Ralat membuka direktori “%s”: %s"
+
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
+#, c-format
+#| msgid "Could not allocate %lu bytes to read file \"%s\""
+msgid "Could not allocate %lu byte to read file “%s”"
+msgid_plural "Could not allocate %lu bytes to read file “%s”"
+msgstr[0] "Tidak dapat memperuntuk %lu bait untuk membaca fail \"%s\""
+msgstr[1] "Tidak dapat memperuntuk %lu bait untuk membaca fail \"%s\""
+
+#: glib/gfileutils.c:750
+#, c-format
+#| msgid "Error reading file '%s': %s"
+msgid "Error reading file “%s”: %s"
+msgstr "Ralat membaca fail \"%s\": %s"
+
+#: glib/gfileutils.c:786
+#, c-format
+msgid "File “%s” is too large"
+msgstr "Fail \"%s\" terlalu besar"
+
+#: glib/gfileutils.c:850
+#, c-format
+#| msgid "Failed to read from file '%s': %s"
+msgid "Failed to read from file “%s”: %s"
+msgstr "Gagal membaca daripada fail \"%s\": %s"
+
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
+#, c-format
+#| msgid "Failed to open file '%s': %s"
+msgid "Failed to open file “%s”: %s"
+msgstr "Gagal membuka fail \"%s\": %s"
+
+#: glib/gfileutils.c:910
+#, c-format
+#| msgid "Failed to get attributes of file '%s': fstat() failed: %s"
+msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
+msgstr "Gagal mendapatkan atribut fail \"%s\": fstat() gagal: %s"
+
+#: glib/gfileutils.c:940
+#, c-format
+#| msgid "Failed to open file '%s': fdopen() failed: %s"
+msgid "Failed to open file “%s”: fdopen() failed: %s"
+msgstr "Gagal membuka fail \"%s\": fdopen() gagal: %s"
+
+#: glib/gfileutils.c:1039
+#, c-format
+msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
+msgstr "Gagal menamakan semula fail \"%s\" ke \"%s\": g_rename() gagal: %s"
+
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
+#, c-format
+#| msgid "Failed to create file '%s': %s"
+msgid "Failed to create file “%s”: %s"
+msgstr "Gagal mencipta fail \"%s\": %s"
+
+#: glib/gfileutils.c:1101
+#, c-format
+msgid "Failed to write file “%s”: write() failed: %s"
+msgstr "Gagal menulis fail \"%s\": write() gagal: %s"
+
+#: glib/gfileutils.c:1144
+#, c-format
+msgid "Failed to write file “%s”: fsync() failed: %s"
+msgstr "Gagal menulis fail \"%s\": fsync() gagal: %s"
+
+#: glib/gfileutils.c:1279
+#, c-format
+msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
+msgstr "Fail sedia ada \"%s\" tidak dapat dibuang: g_unlink() gagal: %s"
+
+#: glib/gfileutils.c:1558
+#, c-format
+#| msgid "Template '%s' invalid, should not contain a '%s'"
+msgid "Template “%s” invalid, should not contain a “%s”"
+msgstr "Templat \"%s\" tidak sah, sepatutnya tidak mengandungi \"%s\""
+
+#: glib/gfileutils.c:1571
+#, c-format
+msgid "Template “%s” doesn’t contain XXXXXX"
+msgstr "Templat \"%s\" tidak mengandungi XXXXXX"
+
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
+#, c-format
+#| msgid "Failed to read the symbolic link '%s': %s"
+msgid "Failed to read the symbolic link “%s”: %s"
+msgstr "Gagal membaca pautan simbolik \"%s\": %s"
+
+#: glib/giochannel.c:1396
+#, c-format
+msgid "Could not open converter from “%s” to “%s”: %s"
+msgstr "Tidak dapat membuka penukar dari \"%s\" ke \"%s\": %s"
+
+#: glib/giochannel.c:1741
+#| msgid "Can't do a raw read in g_io_channel_read_line_string"
+msgid "Can’t do a raw read in g_io_channel_read_line_string"
+msgstr "Tidak dapat membaca rawak dalam g_io_channel_read_line_string"
+
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
+msgid "Leftover unconverted data in read buffer"
+msgstr "Data tidak boleh ditukar Leftover dalam penimbal baca"
+
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
+msgid "Channel terminates in a partial character"
+msgstr "Saluran ditamatkan dalam satu aksara separa"
+
+#: glib/giochannel.c:1932
+#| msgid "Can't do a raw read in g_io_channel_read_to_end"
+msgid "Can’t do a raw read in g_io_channel_read_to_end"
+msgstr "Tidak dapat membuat bacaan rawak dalam g_io_channel_read_to_end"
+
+#: glib/gkeyfile.c:789
+msgid "Valid key file could not be found in search dirs"
+msgstr "Fail kunci yang sah tidak ditemui dalam dir gelintar"
+
+#: glib/gkeyfile.c:826
+msgid "Not a regular file"
+msgstr "Bukan satu fail nalar"
+
+#: glib/gkeyfile.c:1275
+#, c-format
+msgid ""
+"Key file contains line “%s” which is not a key-value pair, group, or comment"
+msgstr ""
+"Fail kunci mengandungi baris \"%s\" yang bukan pasangan kunci-nilai, "
+"kumpulan, atau ulasan"
+
+#: glib/gkeyfile.c:1332
+#, c-format
+msgid "Invalid group name: %s"
+msgstr "Nama kumpulan tidak sah: %s"
+
+#: glib/gkeyfile.c:1354
+msgid "Key file does not start with a group"
+msgstr "Fail kunci tidak bermula dengan satu kumpulan"
+
+#: glib/gkeyfile.c:1380
+#, c-format
+msgid "Invalid key name: %s"
+msgstr "Nama kunci tidak sah: %s"
+
+#: glib/gkeyfile.c:1407
+#, c-format
+msgid "Key file contains unsupported encoding “%s”"
+msgstr "Fail kunci mengandungi pengekodan \"%s\" yang tidak disokong"
+
+#: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
+#, c-format
+msgid "Key file does not have group “%s”"
+msgstr "Fail kunci tidak mempunyai kumpulan \"%s\""
+
+#: glib/gkeyfile.c:1778
+#, c-format
+msgid "Key file does not have key “%s” in group “%s”"
+msgstr "Fail kunci tidak mempunyai kunci \"%s\" dalam kumpulan \"%s\""
+
+#: glib/gkeyfile.c:1940 glib/gkeyfile.c:2056
+#, c-format
+msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
+msgstr ""
+"Fail kunci mengandungi kunci \"%s\" dengan nilai \"%s\" yang bukan UTF-8"
+
+#: glib/gkeyfile.c:1960 glib/gkeyfile.c:2076 glib/gkeyfile.c:2518
+#, c-format
+msgid ""
+"Key file contains key “%s” which has a value that cannot be interpreted."
+msgstr ""
+"Fail kunci mengandungi kunci \"%s\" yang mempunyai satu nilai yang tidak "
+"dapat ditafsirkan."
+
+#: glib/gkeyfile.c:2736 glib/gkeyfile.c:3105
+#, c-format
+msgid ""
+"Key file contains key “%s” in group “%s” which has a value that cannot be "
+"interpreted."
+msgstr ""
+"Fail kunci mengandungi kunci \"%s\" dalam kumpulan \"%s\" yang mempunyai "
+"satu nilai yang tidak dapat ditafsirkan."
+
+#: glib/gkeyfile.c:2814 glib/gkeyfile.c:2891
+#, c-format
+msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
+msgstr ""
+"Kunci \"%s\" dalam kumpulan \"%s\" mempunyai nilai \"%s\" yang mana %s telah "
+"dijangka"
+
+#: glib/gkeyfile.c:4284
+msgid "Key file contains escape character at end of line"
+msgstr "Fail kunci mengandungi aksara escape dipenghujung baris"
+
+#: glib/gkeyfile.c:4306
+#, c-format
+msgid "Key file contains invalid escape sequence “%s”"
+msgstr "Fail kunci mengandungi jujukan escaped \"%s\" yang tidak sah"
+
+#: glib/gkeyfile.c:4450
+#, c-format
+msgid "Value “%s” cannot be interpreted as a number."
+msgstr "Nilai \"%s\" tidak dapat ditafsir sebagai satu nombor."
+
+#: glib/gkeyfile.c:4464
+#, c-format
+msgid "Integer value “%s” out of range"
+msgstr "Nilai integer \"%s\" di luar julat"
+
+#: glib/gkeyfile.c:4497
+#, c-format
+msgid "Value “%s” cannot be interpreted as a float number."
+msgstr "Nilai \"%s\" tidak dapat ditafsir sebagai satu angka apung."
+
+#: glib/gkeyfile.c:4536
+#, c-format
+msgid "Value “%s” cannot be interpreted as a boolean."
+msgstr "Nilai \"%s\" tidak dapat ditafsir sebagai satu boolean."
+
+#: glib/gmappedfile.c:129
+#, c-format
+#| msgid "Failed to get attributes of file '%s': fstat() failed: %s"
+msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
+msgstr "Gagal mendapatkan atribut fail “%s%s%s%s”: fstat() gagal: %s"
+
+#: glib/gmappedfile.c:195
+#, c-format
+msgid "Failed to map %s%s%s%s: mmap() failed: %s"
+msgstr "Gagal memetakan %s%s%s%s: mmap() gagal: %s"
+
+#: glib/gmappedfile.c:262
+#, c-format
+msgid "Failed to open file “%s”: open() failed: %s"
+msgstr "Gagal membuka fail \"%s\": open() gagal: %s"
+
+#: glib/gmarkup.c:398 glib/gmarkup.c:440
+#, c-format
+msgid "Error on line %d char %d: "
+msgstr "Ralat pada baris %d aksara %d: "
+
+#: glib/gmarkup.c:462 glib/gmarkup.c:545
+#, c-format
+msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
+msgstr "Teks terenkod UTF-8 tidak dalam nama — \"%s\" tidak sah"
+
+#: glib/gmarkup.c:473
+#, c-format
+msgid "“%s” is not a valid name"
+msgstr "\"%s\" bukanlah satu nama yang sah"
+
+#: glib/gmarkup.c:489
+#, c-format
+msgid "“%s” is not a valid name: “%c”"
+msgstr "\"%s\" bukanlah satu nama yang sah: \"%c\""
+
+#: glib/gmarkup.c:613
+#, c-format
+msgid "Error on line %d: %s"
+msgstr "Ralat pada baris %d: %s"
+
+#: glib/gmarkup.c:690
+#, 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 menghurai \"%-.*s\", yang sepatutnya satu digit di dalam rujukan "
+"aksara (&#234; sebagai contoh) — mungkin digit terlalu besar"
+
+#: glib/gmarkup.c:702
+#| 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;"
+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 ""
+"Rujukan aksara tidak berakhir dengan satu titik bertindih; agaknya anda "
+"menggunakan aksara ampersand tanpa niat untuk memulakan satu entiti - "
+"escapekan ampersand sebagai &amp;"
+
+#: glib/gmarkup.c:728
+#, c-format
+msgid "Character reference “%-.*s” does not encode a permitted character"
+msgstr "Rujukan aksara \"%-*s\" tidak mengekodkan satu aksara yang diizinkan"
+
+#: glib/gmarkup.c:766
+#| 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 ""
+"Entiti kosong \"&;\" kelihatan; entiti sah ialah : &amp; &quot; &lt; &gt; "
+"&apos;"
+
+#: glib/gmarkup.c:774
+#, c-format
+msgid "Entity name “%-.*s” is not known"
+msgstr "Nama entiti \"%-.*s\" tidak diketahui"
+
+#: glib/gmarkup.c:779
+#| 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;"
+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 ""
+"Entiti tidak berakhir dengan titik bertindih; mungkin anda gunakan aksara "
+"ampersand tanpa menyedari untuk memulakan satu entiti - escape kan ampersand "
+"sebagai &amp;"
+
+#: glib/gmarkup.c:1193
+msgid "Document must begin with an element (e.g. <book>)"
+msgstr "Dokumen mesti dimulakan dengan unsur (iaitu <buku>)"
+
+#: glib/gmarkup.c:1233
+#, c-format
+#| msgid ""
+#| "'%s' is not a valid character following a '<' character; it may not begin "
+#| "an element name"
+msgid ""
+"“%s” is not a valid character following a “<” character; it may not begin an "
+"element name"
+msgstr ""
+"\"%s\" bukanlah satu aksara sah yang diikuti dengan aksara \"<\"; ia tidak "
+"sepatutnya bermula dengan satu nama unsur"
+
+#: glib/gmarkup.c:1276
+#, c-format
+msgid ""
+"Odd character “%s”, expected a “>” character to end the empty-element tag "
+"“%s”"
+msgstr ""
+"Aksara ganjil \"%s\", dijangka satu aksara \">\" dipenghujung tag unsur-"
+"kosong \"%s\""
+
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Terlalu banyak atribut dalam unsur \"%s\""
+
+#: glib/gmarkup.c:1366
+#, c-format
+#| msgid ""
+#| "Odd character '%s', expected a '=' after attribute name '%s' of element "
+#| "'%s'"
+msgid ""
+"Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
+msgstr ""
+"Aksara ganjil \"%s\", jangkakan satu '=' selepas nama atribut \"%s\" bagi "
+"unsur \"%s\""
+
+#: glib/gmarkup.c:1408
+#, 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"
+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 ""
+"Aksara ganjil \"%s\", jangkakan satu aksara \">\" atau \"/\" di penghujung "
+"tag permulaan unsur \"%s\", atau satu atribut secara pilihan; mungkin anda "
+"telah menggunakan satu aksara tidak sah pada nama atribut"
+
+#: glib/gmarkup.c:1453
+#, c-format
+#| msgid ""
+#| "Odd character '%s', expected an open quote mark after the equals sign "
+#| "when giving value for attribute '%s' of element '%s'"
+msgid ""
+"Odd character “%s”, expected an open quote mark after the equals sign when "
+"giving value for attribute “%s” of element “%s”"
+msgstr ""
+"Aksara ganjil \"%s\", jangkakan satu tanda petikan membuka selepas tanda "
+"sama dengan ketika memberi nilai atribut untuk \"%s\" bagi unsur \"%s\""
+
+#: glib/gmarkup.c:1587
+#, c-format
+#| msgid ""
+#| "'%s' is not a valid character following the characters '</'; '%s' may not "
+#| "begin an element name"
+msgid ""
+"“%s” is not a valid character following the characters “</”; “%s” may not "
+"begin an element name"
+msgstr ""
+"'%s' adalah bukan satu aksara yang sah diikuti aksara \"</\"; \"%s\" tidak "
+"boleh memulakan satu nama unsur"
+
+#: glib/gmarkup.c:1625
+#, c-format
+#| msgid ""
+#| "'%s' is not a valid character following the close element name '%s'; the "
+#| "allowed character is '>'"
+msgid ""
+"“%s” is not a valid character following the close element name “%s”; the "
+"allowed character is “>”"
+msgstr ""
+"'%s' adalah bukan satu aksara yang sah diikuti dengan nama unsur penutup \"%s"
+"\"; aksara yang diizinkan ialah \">\""
+
+#: glib/gmarkup.c:1637
+#, c-format
+#| msgid "Element '%s' was closed, no element is currently open"
+msgid "Element “%s” was closed, no element is currently open"
+msgstr "Unsur \"%s\" telah ditutup, tiada unsur terbuka buat masa ini"
+
+#: glib/gmarkup.c:1646
+#, c-format
+#| msgid "Element '%s' was closed, but the currently open element is '%s'"
+msgid "Element “%s” was closed, but the currently open element is “%s”"
+msgstr ""
+"Unsur \"%s\" telah tertutup, tetapi unsur terbuka buat masa ini adalah \"%s\""
+
+#: glib/gmarkup.c:1799
+msgid "Document was empty or contained only whitespace"
+msgstr "Dokumen kosong atau hanya menandungi ruang putih"
+
+#: glib/gmarkup.c:1813
+#| msgid "Document ended unexpectedly just after an open angle bracket '<'"
+msgid "Document ended unexpectedly just after an open angle bracket “<”"
+msgstr "Dokumen berakhir tanpa jangka sebaik selepas membuka kurungan \"<\""
+
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
+#, c-format
+#| msgid ""
+#| "Document ended unexpectedly with elements still open - '%s' was the last "
+#| "element opened"
+msgid ""
+"Document ended unexpectedly with elements still open — “%s” was the last "
+"element opened"
+msgstr ""
+"Dokumen berakhir tanpa jangka dengan unsur masih terbuka — “%s” adalah unsur "
+"terbuka yang terakhir"
+
+#: glib/gmarkup.c:1829
+#, c-format
+msgid ""
+"Document ended unexpectedly, expected to see a close angle bracket ending "
+"the tag <%s/>"
+msgstr ""
+"Dokumen berakhir tanpa jangka, jangkakan dapat melihat satu kurungan "
+"berakhir tag <%s/>"
+
+#: glib/gmarkup.c:1835
+msgid "Document ended unexpectedly inside an element name"
+msgstr "Dokumen berakhir tanpa jangka dalam satu nama unsur"
+
+#: glib/gmarkup.c:1841
+msgid "Document ended unexpectedly inside an attribute name"
+msgstr "Dokumen berakhir tanpa jangka dalam satu nama atribut"
+
+#: glib/gmarkup.c:1846
+msgid "Document ended unexpectedly inside an element-opening tag."
+msgstr "Dokumen berakhir tanpa jangka dalam tag element-opening."
+
+#: glib/gmarkup.c:1852
+msgid ""
+"Document ended unexpectedly after the equals sign following an attribute "
+"name; no attribute value"
+msgstr ""
+"Dokumen berakhir tanpa jangka selepas tanda sama dengan diikuti dengan satu "
+"nama atribut; tiada nilai atribut"
+
+#: glib/gmarkup.c:1859
+msgid "Document ended unexpectedly while inside an attribute value"
+msgstr "Dokumen  berakhir tanpa jangka ketika berada dalam satu nilai atribut"
+
+#: glib/gmarkup.c:1876
+#, c-format
+#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid "Document ended unexpectedly inside the close tag for element “%s”"
+msgstr "Dokumen berakhir tanpa jangka dalam tag tertutup untuk unsur \"%s\""
+
+#: glib/gmarkup.c:1880
+#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid ""
+"Document ended unexpectedly inside the close tag for an unopened element"
+msgstr ""
+"Dokumen berakhir tanpa jangka dalam tag tertutup untuk unsur tidak terbuka"
+
+#: glib/gmarkup.c:1886
+msgid "Document ended unexpectedly inside a comment or processing instruction"
+msgstr "Dokumen berakhir tanpa jangka dalam satu ulasan atau memproses arahan"
+
+#: glib/goption.c:868
+msgid "[OPTION…]"
+msgstr "[PILIHAN...]"
+
+#: glib/goption.c:984
+msgid "Help Options:"
+msgstr "Pilihan Bantuan:"
+
+#: glib/goption.c:985
+msgid "Show help options"
+msgstr "Tunjuk pilihan bantuan"
+
+#: glib/goption.c:991
+msgid "Show all help options"
+msgstr "Tunjuk semua pilihan bantuan"
+
+#: glib/goption.c:1054
+msgid "Application Options:"
+msgstr "Pilihan Aplikasi:"
+
+#: glib/goption.c:1056
+msgid "Options:"
+msgstr "Pilihan:"
+
+#: glib/goption.c:1120 glib/goption.c:1190
+#, c-format
+msgid "Cannot parse integer value “%s” for %s"
+msgstr "Tidak dapat menghurai nilai integer \"%s\" untuk %s"
+
+#: glib/goption.c:1130 glib/goption.c:1198
+#, c-format
+msgid "Integer value “%s” for %s out of range"
+msgstr "Nilai interger \"%s\" untuk %s di luar julat"
+
+#: glib/goption.c:1155
+#, c-format
+msgid "Cannot parse double value “%s” for %s"
+msgstr "Tidak dapat menghurai nilai ganda dua \"%s\" untuk %s"
+
+#: glib/goption.c:1163
+#, c-format
+msgid "Double value “%s” for %s out of range"
+msgstr "Nilai ganda dua \"%s\" untuk %s di luar julat"
+
+#: glib/goption.c:1455 glib/goption.c:1534
+#, c-format
+msgid "Error parsing option %s"
+msgstr "Ralat menghurai pilihan %s"
+
+#: glib/goption.c:1565 glib/goption.c:1678
+#, c-format
+msgid "Missing argument for %s"
+msgstr "Argumen hilang bagi %s"
+
+#: glib/goption.c:2189
+#, c-format
+msgid "Unknown option %s"
+msgstr "Pilihan %s tidak diketahui"
+
+#: glib/gregex.c:257
+msgid "corrupted object"
+msgstr "objek rosak"
+
+#: glib/gregex.c:259
+msgid "internal error or corrupted object"
+msgstr "ralat dalaman atau objek rosak"
+
+#: glib/gregex.c:261
+msgid "out of memory"
+msgstr "kehabisan ingatan"
+
+#: glib/gregex.c:266
+msgid "backtracking limit reached"
+msgstr "had patah balik telah dicapai"
+
+#: glib/gregex.c:278 glib/gregex.c:286
+msgid "the pattern contains items not supported for partial matching"
+msgstr "pola mengandungi item yang tidak disokong untuk pemadanan separa"
+
+#: glib/gregex.c:280
+msgid "internal error"
+msgstr "ralat dalaman"
+
+#: glib/gregex.c:288
+msgid "back references as conditions are not supported for partial matching"
+msgstr "rujukan balik sebagai syarat tidak disokong untuk pemadanan separa"
+
+#: glib/gregex.c:297
+msgid "recursion limit reached"
+msgstr "had rekursi telah dicapai"
+
+#: glib/gregex.c:299
+msgid "invalid combination of newline flags"
+msgstr "gabungan tidak sah bagi bendera baris baharu"
+
+#: glib/gregex.c:301
+msgid "bad offset"
+msgstr "ofset teruk"
+
+#: glib/gregex.c:303
+msgid "short utf8"
+msgstr "utf8 pendek"
+
+#: glib/gregex.c:305
+msgid "recursion loop"
+msgstr "gelung rekursi"
+
+#: glib/gregex.c:309
+msgid "unknown error"
+msgstr "ralat tidak diketahui"
+
+#: glib/gregex.c:329
+msgid "\\ at end of pattern"
+msgstr "\\ dipenghujung pola"
+
+#: glib/gregex.c:332
+msgid "\\c at end of pattern"
+msgstr "\\c dipenghujung pola"
+
+#: glib/gregex.c:335
+msgid "unrecognized character following \\"
+msgstr "aksara tidak dikenali diikuti dengan \\"
+
+#: glib/gregex.c:338
+msgid "numbers out of order in {} quantifier"
+msgstr "nombor diluar tertib dalam pembilang {}"
+
+#: glib/gregex.c:341
+msgid "number too big in {} quantifier"
+msgstr "nombor terlalu besar dalam pembilang {}"
+
+#: glib/gregex.c:344
+msgid "missing terminating ] for character class"
+msgstr "] penamat hilang bagi kelas aksara"
+
+#: glib/gregex.c:347
+msgid "invalid escape sequence in character class"
+msgstr "jujukan escape tidak sah dalam kelas aksara"
+
+#: glib/gregex.c:350
+msgid "range out of order in character class"
+msgstr "julat di luar tertib dalam kelas aksara"
+
+#: glib/gregex.c:353
+msgid "nothing to repeat"
+msgstr "tiada apa hendak diulang"
+
+#: glib/gregex.c:357
+msgid "unexpected repeat"
+msgstr "ulang tidak dijangka"
+
+#: glib/gregex.c:360
+msgid "unrecognized character after (? or (?-"
+msgstr "aksara tidak dikenali selepas (? atau (?-"
+
+#: glib/gregex.c:363
+msgid "POSIX named classes are supported only within a class"
+msgstr "Kelas bernama POSIX disokong hanya dalam satu kelas"
+
+#: glib/gregex.c:366
+msgid "missing terminating )"
+msgstr ") penamat hilang"
+
+#: glib/gregex.c:369
+msgid "reference to non-existent subpattern"
+msgstr "rujukan ke subpola tidak-wujud"
+
+#: glib/gregex.c:372
+msgid "missing ) after comment"
+msgstr ") hilang selepas ulasan"
+
+#: glib/gregex.c:375
+msgid "regular expression is too large"
+msgstr "ungkapan nalar terlalu besar"
+
+#: glib/gregex.c:378
+msgid "failed to get memory"
+msgstr "gagal mendapatkan ingatan"
+
+#: glib/gregex.c:382
+msgid ") without opening ("
+msgstr ") tanpa membuka ("
+
+#: glib/gregex.c:386
+msgid "code overflow"
+msgstr "kod melimpah"
+
+#: glib/gregex.c:390
+msgid "unrecognized character after (?<"
+msgstr "aksara tidak dikenali selepas (?<"
+
+#: glib/gregex.c:393
+msgid "lookbehind assertion is not fixed length"
+msgstr "penegasan lookbehind bukan panjang yang tetap"
+
+#: glib/gregex.c:396
+msgid "malformed number or name after (?("
+msgstr "nombor atau nama cacat selepas (?("
+
+#: glib/gregex.c:399
+msgid "conditional group contains more than two branches"
+msgstr "kumpulan bersyarat mengandungi lebih dari dua cabang"
+
+#: glib/gregex.c:402
+msgid "assertion expected after (?("
+msgstr "penegasan dijangka selepas (?("
+
+#. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
+#. * sequences here, '(?-54' would be an example for the second group.
+#.
+#: glib/gregex.c:409
+msgid "(?R or (?[+-]digits must be followed by )"
+msgstr "(?R atau (?[+-]digit mesti diikuti dengan )"
+
+#: glib/gregex.c:412
+msgid "unknown POSIX class name"
+msgstr "nama kelas POSIX tidak diketahui"
+
+#: glib/gregex.c:415
+msgid "POSIX collating elements are not supported"
+msgstr "Unsur pengumpulan-semak POSIX tidak disokong"
+
+#: glib/gregex.c:418
+msgid "character value in \\x{...} sequence is too large"
+msgstr "nilai aksara dalam jujukan \\x{...} terlalu besar"
+
+#: glib/gregex.c:421
+msgid "invalid condition (?(0)"
+msgstr "syarat (?(0) tidak sah"
+
+#: glib/gregex.c:424
+msgid "\\C not allowed in lookbehind assertion"
+msgstr "\\C tidak dibenarkan dalam penegasan lookbehind"
+
+#: glib/gregex.c:431
+msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
+msgstr "escapes \\L, \\l, \\N{name}, \\U, dan \\u tidak disokong"
+
+#: glib/gregex.c:434
+msgid "recursive call could loop indefinitely"
+msgstr "panggilan rekursif patut gelung secara tidak terbatas"
+
+#: glib/gregex.c:438
+msgid "unrecognized character after (?P"
+msgstr "aksara tidak dikenali selepas (?P"
+
+#: glib/gregex.c:441
+msgid "missing terminator in subpattern name"
+msgstr "penamat hilang dalam nama sub-pola"
+
+#: glib/gregex.c:444
+msgid "two named subpatterns have the same name"
+msgstr "dua sub-pola bernama mempunyai nama yang serupa"
+
+#: glib/gregex.c:447
+msgid "malformed \\P or \\p sequence"
+msgstr "jujukan \\P atau \\p cacat"
+
+#: glib/gregex.c:450
+msgid "unknown property name after \\P or \\p"
+msgstr "nama sifat tidak diketahui selepas \\P atau \\p"
+
+#: glib/gregex.c:453
+msgid "subpattern name is too long (maximum 32 characters)"
+msgstr "nama sub-pola terlalu panjang (maksimum 32 aksara)"
+
+#: glib/gregex.c:456
+msgid "too many named subpatterns (maximum 10,000)"
+msgstr "terlalu banyak sub-pola bernama (maksimum 10,000)"
+
+#: glib/gregex.c:459
+msgid "octal value is greater than \\377"
+msgstr "nilai perlapanan lebih besar dari \\377"
+
+#: glib/gregex.c:463
+msgid "overran compiling workspace"
+msgstr "lewati pengkompilan ruang kerja"
+
+#: glib/gregex.c:467
+msgid "previously-checked referenced subpattern not found"
+msgstr "sub-pola dirujuk disemak-sebelum ini tidak ditemui"
+
+#: glib/gregex.c:470
+msgid "DEFINE group contains more than one branch"
+msgstr "Kumpulan DEFINE mengandungi lebih dari satu cabang"
+
+#: glib/gregex.c:473
+msgid "inconsistent NEWLINE options"
+msgstr "pilihan NEWLINE tidak konsisten"
+
+#: glib/gregex.c:476
+msgid ""
+"\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
+"or by a plain number"
+msgstr ""
+"\\g tidak diikuti dengan kurungan, kurungan-bersudut, atau nama atau nombor "
+"petikan, atau dengan nombor biasa"
+
+#: glib/gregex.c:480
+msgid "a numbered reference must not be zero"
+msgstr "rujukan bernombor mestilah bukan sifar"
+
+#: glib/gregex.c:483
+msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
+msgstr "satu argumen tidak dibenarkan untuk (*ACCEPT), (*FAIL), atau (*COMMIT)"
+
+#: glib/gregex.c:486
+msgid "(*VERB) not recognized"
+msgstr "(*VERB) tidak dikenali"
+
+#: glib/gregex.c:489
+msgid "number is too big"
+msgstr "nombor terlalu besar"
+
+#: glib/gregex.c:492
+msgid "missing subpattern name after (?&"
+msgstr "nama sub-pola hilang selepas (?&"
+
+#: glib/gregex.c:495
+msgid "digit expected after (?+"
+msgstr "digit dijangka selepas (?+"
+
+#: glib/gregex.c:498
+msgid "] is an invalid data character in JavaScript compatibility mode"
+msgstr "] adalah aksara data tidak sah dalam mod keserasian Skrip Java"
+
+#: glib/gregex.c:501
+msgid "different names for subpatterns of the same number are not allowed"
+msgstr "nama berbeza untuk sub-pola bagi nombor yang sama tidak dibenarkan"
+
+#: glib/gregex.c:504
+msgid "(*MARK) must have an argument"
+msgstr "(*MARK) mesti mempunyai argumen"
+
+#: glib/gregex.c:507
+msgid "\\c must be followed by an ASCII character"
+msgstr "\\c mesti diikuti dengan aksara ASCII"
+
+#: glib/gregex.c:510
+msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
+msgstr ""
+"\\k tidak diikuti dengan kurungan, kurungan bersudut, atau nama petikan"
+
+#: glib/gregex.c:513
+msgid "\\N is not supported in a class"
+msgstr "\\N tidak disokong dlaam kelas"
+
+#: glib/gregex.c:516
+msgid "too many forward references"
+msgstr "terlalu banyak rujukan maju"
+
+#: glib/gregex.c:519
+msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
+msgstr "nama terlalu panjang dalam (*MARK), (*PRUNE), (*SKIP), atau (*THEN)"
+
+#: glib/gregex.c:522
+msgid "character value in \\u.... sequence is too large"
+msgstr "nilai aksara dalam jujukan \\u.... terlalu besar"
+
+#: glib/gregex.c:745 glib/gregex.c:1983
+#, c-format
+msgid "Error while matching regular expression %s: %s"
+msgstr "Ralat ketika memadankan ungkapan nalar %s: %s"
+
+#: glib/gregex.c:1316
+msgid "PCRE library is compiled without UTF8 support"
+msgstr "Pustaka PCRE dikompil tanpa sokongan UTF8"
+
+#: glib/gregex.c:1320
+msgid "PCRE library is compiled without UTF8 properties support"
+msgstr "Pustaka PCRE dikompil tanpa sokongan sifat UTF8"
+
+#: glib/gregex.c:1328
+msgid "PCRE library is compiled with incompatible options"
+msgstr "Pustaka PCRE dikompil dengan pilihan tidak serasi"
+
+#: glib/gregex.c:1357
+#, c-format
+msgid "Error while optimizing regular expression %s: %s"
+msgstr "Ralat ketika mengoptimumkan ungkapan nalar %s: %s"
+
+#: glib/gregex.c:1437
+#, c-format
+msgid "Error while compiling regular expression %s at char %d: %s"
+msgstr "Ralat ketika mengkompil ungkapan nalar %s pada aksarar %d: %s"
+
+#: glib/gregex.c:2419
+msgid "hexadecimal digit or “}” expected"
+msgstr "digit heksadesimal atau \"}\" dijangka"
+
+#: glib/gregex.c:2435
+msgid "hexadecimal digit expected"
+msgstr "digit heksadesimal dijangka"
+
+#: glib/gregex.c:2475
+msgid "missing “<” in symbolic reference"
+msgstr "\"<\" hilang dalam rujukan simbolik"
+
+#: glib/gregex.c:2484
+msgid "unfinished symbolic reference"
+msgstr "rujukan simbolik tidak selesai"
+
+#: glib/gregex.c:2491
+msgid "zero-length symbolic reference"
+msgstr "rujukan simbolik panjang-sifar"
+
+#: glib/gregex.c:2502
+msgid "digit expected"
+msgstr "digit dijangka"
+
+#: glib/gregex.c:2520
+msgid "illegal symbolic reference"
+msgstr "rujukan simbolik tidak dibenarkan"
+
+#: glib/gregex.c:2583
+msgid "stray final “\\”"
+msgstr "muktamad \"/\" terbiar"
+
+#: glib/gregex.c:2587
+msgid "unknown escape sequence"
+msgstr "jujukan escape tidak diketahui"
+
+#: glib/gregex.c:2597
+#, c-format
+msgid "Error while parsing replacement text “%s” at char %lu: %s"
+msgstr "Ralat ketika menghurai teks pengganti \"%s\" pada aksara %lu: %s"
+
+#: glib/gshell.c:94
+#| msgid "Quoted text doesn't begin with a quotation mark"
+msgid "Quoted text doesn’t begin with a quotation mark"
+msgstr "Teks dipetik tidak bermula dengan satu tanda baca"
+
+#: glib/gshell.c:184
+msgid "Unmatched quotation mark in command line or other shell-quoted text"
+msgstr ""
+"Tanda petikan tidak sepadan pada arahan baris atau teks shell-quoted lain"
+
+#: glib/gshell.c:580
+#, c-format
+#| msgid "Text ended just after a '\\' character. (The text was '%s')"
+msgid "Text ended just after a “\\” character. (The text was “%s”)"
+msgstr "Teks berakhir selepas satu aksara \"\\\". (Teks ialah \"%s\")"
+
+#: glib/gshell.c:587
+#, c-format
+#| msgid ""
+#| "Text ended before matching quote was found for %c. (The text was '%s')"
+msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
+msgstr ""
+"Teks berakhir sebelum petikan sepadan ditemui untuk %c (Teks ialah \"%s\")"
+
+#: glib/gshell.c:599
+msgid "Text was empty (or contained only whitespace)"
+msgstr "Teks telah kosong (atau mengandungi hanya ruang putih)"
+
+#: glib/gspawn.c:315
+#, c-format
+msgid "Failed to read data from child process (%s)"
+msgstr "Gagal membaca data daripada proses anak (%s)"
+
+#: glib/gspawn.c:460
+#, c-format
+#| msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Ralat tidak jangka ketika membaca data daripada satu proses anak (%s)"
+
+#: glib/gspawn.c:545
+#, c-format
+msgid "Unexpected error in waitpid() (%s)"
+msgstr "Ralat tanpa jangka dalam waitpid() (%s)"
+
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
+#, c-format
+msgid "Child process exited with code %ld"
+msgstr "Proses anak keluar dengan kod %ld"
+
+#: glib/gspawn.c:1061
+#, c-format
+msgid "Child process killed by signal %ld"
+msgstr "Proses anak dimatikan dengan isyarat %ld"
+
+#: glib/gspawn.c:1068
+#, c-format
+msgid "Child process stopped by signal %ld"
+msgstr "Proses anak dihentikan dengan isyarat %ld"
+
+#: glib/gspawn.c:1075
+#, c-format
+msgid "Child process exited abnormally"
+msgstr "Proses anak keluar secara pelik"
+
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#, c-format
+msgid "Failed to read from child pipe (%s)"
+msgstr "Gagal membaca daripada paip anak (%s)"
+
+#: glib/gspawn.c:1723
+#, c-format
+#| msgid "Failed to fork child process (%s)"
+msgid "Failed to spawn child process “%s” (%s)"
+msgstr "Gagal membiakkan proses anak \"%s\" (%s)"
+
+#: glib/gspawn.c:1762
+#, c-format
+msgid "Failed to fork (%s)"
+msgstr "Gagal mencabang (%s)"
+
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
+#, c-format
+#| msgid "Failed to change to directory '%s' (%s)"
+msgid "Failed to change to directory “%s” (%s)"
+msgstr "Gagal mengubah ke direktori \"%s\": (%s)"
+
+#: glib/gspawn.c:1921
+#, c-format
+#| msgid "Failed to execute child process \"%s\" (%s)"
+msgid "Failed to execute child process “%s” (%s)"
+msgstr "Gagal melakukan proses anak \"%s\" (%s)"
+
+#: glib/gspawn.c:1931
+#, c-format
+msgid "Failed to redirect output or input of child process (%s)"
+msgstr "Gagal menghala semula output atau input proses anak (%s)"
+
+#: glib/gspawn.c:1940
+#, c-format
+msgid "Failed to fork child process (%s)"
+msgstr "Gagal mencabangkan proses anak (%s)"
+
+#: glib/gspawn.c:1948
+#, c-format
+#| msgid "Unknown error executing child process \"%s\""
+msgid "Unknown error executing child process “%s”"
+msgstr "Ralat tidak diketahui ketika melakukan proses anak \"%s\""
+
+#: glib/gspawn.c:1972
+#, c-format
+msgid "Failed to read enough data from child pid pipe (%s)"
+msgstr "Gagal membaca data yang cukup daripada paip pid anak (%s)"
+
+#: glib/gspawn-win32.c:294
+msgid "Failed to read data from child process"
+msgstr "Gagal membaca data daripada proses anak"
+
+#: glib/gspawn-win32.c:311
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "Gagal mencipta paip untuk berkomunikasi dengan proses anak (%s)"
+
+#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#, c-format
+msgid "Failed to execute child process (%s)"
+msgstr "Gagal melakukan proses anak (%s)"
+
+#: glib/gspawn-win32.c:461
+#, c-format
+msgid "Invalid program name: %s"
+msgstr "Nama program tidak sah: %s"
+
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
+#, c-format
+msgid "Invalid string in argument vector at %d: %s"
+msgstr "Rentetan tidak sah dalam vektor argumen pada %d: %s"
+
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
+#, c-format
+msgid "Invalid string in environment: %s"
+msgstr "Rentetan tidak sah dalam persekitaran: %s"
+
+#: glib/gspawn-win32.c:721
+#, c-format
+msgid "Invalid working directory: %s"
+msgstr "Direktori kerja tidak sah: %s"
+
+#: glib/gspawn-win32.c:783
+#, c-format
+msgid "Failed to execute helper program (%s)"
+msgstr "Gagal melakukan program pembantu (%s)"
+
+#: glib/gspawn-win32.c:1056
+msgid ""
+"Unexpected error in g_io_channel_win32_poll() reading data from a child "
+"process"
+msgstr ""
+"Ralat tidak jangka dalam g_io_channel_win32_poll() membaca data daripada "
+"satu proses anak"
+
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
+msgid "Empty string is not a number"
+msgstr "Rentetan kosong bukanlah satu nombor"
+
+#: glib/gstrfuncs.c:3333
+#, c-format
+msgid "“%s” is not a signed number"
+msgstr "\"%s\" bukanlah satu nombor bertanda tangan"
+
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
+#, c-format
+msgid "Number “%s” is out of bounds [%s, %s]"
+msgstr "Nombor \"%s\" di luar batas [%s, %s]"
+
+#: glib/gstrfuncs.c:3437
+#, c-format
+msgid "“%s” is not an unsigned number"
+msgstr "\"%s\" bukanlah satu nombor tanpa tanda tangan"
+
+#: glib/gutf8.c:817
+msgid "Failed to allocate memory"
+msgstr "Gagal memperuntukan ingatan"
+
+#: glib/gutf8.c:950
+msgid "Character out of range for UTF-8"
+msgstr "Aksara di luar julat UTF-8"
+
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
+msgid "Invalid sequence in conversion input"
+msgstr "Jujukan tidak sah dalan input pertukaran"
+
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
+msgid "Character out of range for UTF-16"
+msgstr "Aksara di luar julat UTF-16"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2756
+#, c-format
+msgid "%.1f kB"
+msgstr "%.1f kB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2758
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2760
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2762
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2764
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2766
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2770
+#, c-format
+msgid "%.1f KiB"
+msgstr "%.1f KiB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2772
+#, c-format
+msgid "%.1f MiB"
+msgstr "%.1f MiB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2774
+#, c-format
+msgid "%.1f GiB"
+msgstr "%.1f GiB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2776
+#, c-format
+msgid "%.1f TiB"
+msgstr "%.1f TiB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2778
+#, c-format
+msgid "%.1f PiB"
+msgstr "%.1f PiB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2780
+#, c-format
+msgid "%.1f EiB"
+msgstr "%.1f EiB"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2784
+#, c-format
+msgid "%.1f kb"
+msgstr "%.1f kb"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2786
+#, c-format
+msgid "%.1f Mb"
+msgstr "%.1f Mb"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2788
+#, c-format
+msgid "%.1f Gb"
+msgstr "%.1f Gb"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2790
+#, c-format
+msgid "%.1f Tb"
+msgstr "%.1f Tb"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2792
+#, c-format
+msgid "%.1f Pb"
+msgstr "%.1f Pb"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2794
+#, c-format
+msgid "%.1f Eb"
+msgstr "%.1f Eb"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2798
+#, c-format
+msgid "%.1f Kib"
+msgstr "%.1f Kib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2800
+#, c-format
+msgid "%.1f Mib"
+msgstr "%.1f Mib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2802
+#, c-format
+msgid "%.1f Gib"
+msgstr "%.1f Gib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2804
+#, c-format
+msgid "%.1f Tib"
+msgstr "%.1f Tib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2806
+#, c-format
+msgid "%.1f Pib"
+msgstr "%.1f Pib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2808
+#, c-format
+msgid "%.1f Eib"
+msgstr "%.1f Eib"
+
+#: glib/gutils.c:2842 glib/gutils.c:2959
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u bait"
+msgstr[1] "%u bait"
+
+#: glib/gutils.c:2846
+#, c-format
+msgid "%u bit"
+msgid_plural "%u bits"
+msgstr[0] "%u bit"
+msgstr[1] "%u bit"
+
+#. Translators: the %s in "%s bytes" will always be replaced by a number.
+#: glib/gutils.c:2913
+#, c-format
+msgid "%s byte"
+msgid_plural "%s bytes"
+msgstr[0] "%s bait"
+msgstr[1] "%s bait"
+
+#. Translators: the %s in "%s bits" will always be replaced by a number.
+#: glib/gutils.c:2918
+#, c-format
+msgid "%s bit"
+msgid_plural "%s bits"
+msgstr[0] "%s bit"
+msgstr[1] "%s bit"
+
+#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
+#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
+#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
+#. * Please translate as literally as possible.
+#.
+#: glib/gutils.c:2972
+#, c-format
+msgid "%.1f KB"
+msgstr "%.1f KB"
+
+#: glib/gutils.c:2977
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: glib/gutils.c:2982
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: glib/gutils.c:2987
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
+
+#: glib/gutils.c:2992
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
+
+#: glib/gutils.c:2997
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
+
+#, fuzzy
+#~ msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
+#~ msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+
+#, fuzzy
+#~ msgid "Failed to write file '%s': fflush() failed: %s"
+#~ msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+
+#, fuzzy
+#~ msgid "Failed to close file '%s': fclose() failed: %s"
+#~ msgstr "Gagal membuka fail '%s': fdopen() gagal: %s"
+
+#, fuzzy
+#~ msgid "Error statting directory '%s': %s"
+#~ msgstr "Ralat membuka direktori %s': %s"
+
+#, fuzzy
+#~ msgid "Error opening file: %s"
+#~ msgstr "Ralat membaca fail '%s': %s"
+
+#, fuzzy
+#~ msgid "Error stating file '%s': %s"
+#~ msgstr "Ralat membaca fail '%s': %s"
+
+#, fuzzy
+#~ msgid "Error connecting: "
+#~ msgstr "Ralat membaca fail '%s': %s"
+
+#, fuzzy
+#~ msgid "Error connecting: %s"
+#~ msgstr "Ralat membaca fail '%s': %s"
+
+#, fuzzy
+#~ msgid "Error reading from unix: %s"
+#~ msgstr "Ralat membaca fail '%s': %s"
+
+#, fuzzy
+#~ msgid "Error closing unix: %s"
+#~ msgstr "Ralat pada baris %d: %s"
+
+#, fuzzy
+#~ msgid "Error writing to unix: %s"
+#~ msgstr "Ralat semasa penukaran: %s"
 
 #, fuzzy
 #~ msgid "Invalid UTF-8 sequence in input"
index c969abe..e73d986 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,14 +5,14 @@
 # Wouter Bolsterlee <wbolster@gnome.org>, 2008–2013
 # Rachid <rachidbm@ubuntu.com>, 2012.
 # Justin van Steijn <jvs@fsfe.org>, 2018.
-# Nathan Follens <nthn@unseen.is>, 2019.
+# Nathan Follens <nthn@unseen.is>, 2019-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-01-24 14:43+0000\n"
-"PO-Revision-Date: 2019-02-26 14:51+0100\n"
+"POT-Creation-Date: 2020-03-06 12:58+0000\n"
+"PO-Revision-Date: 2020-02-27 20:48+0100\n"
 "Last-Translator: Nathan Follens <nthn@unseen.is>\n"
 "Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
 "Language: nl\n"
@@ -20,34 +20,35 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.2.1\n"
+"X-Generator: Poedit 2.3\n"
 
-#: gio/gapplication.c:499
+#: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication-opties"
 
-#: gio/gapplication.c:499
+#: gio/gapplication.c:500
 msgid "Show GApplication options"
 msgstr "GApplication-opties tonen"
 
-#: gio/gapplication.c:544
+#: gio/gapplication.c:545
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
+"Voer de GApplication-dienstmodus in (gebruik uit D-Bus-dienstbestanden)"
 
-#: gio/gapplication.c:556
+#: gio/gapplication.c:557
 msgid "Override the application’s ID"
 msgstr "Toepassings-ID overschrijven"
 
-#: gio/gapplication.c:568
+#: gio/gapplication.c:569
 msgid "Replace the running instance"
 msgstr "Vervang de actieve instantie"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:495 gio/gsettings-tool.c:569
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
 msgid "Print help"
 msgstr "Hulp tonen"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:496 gio/gresource-tool.c:564
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
 msgid "[COMMAND]"
 msgstr "[OPDRACHT]"
 
@@ -55,7 +56,7 @@ msgstr "[OPDRACHT]"
 msgid "Print version"
 msgstr "Versie tonen"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:575
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
 msgid "Print version information and exit"
 msgstr "Versie-informatie tonen en afsluiten"
 
@@ -103,7 +104,7 @@ msgstr ""
 msgid "APPID"
 msgstr "APPID"
 
-#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:90
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
 #: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "OPDRACHT"
@@ -118,7 +119,7 @@ msgstr ""
 
 #: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
 #: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
-#: gio/gresource-tool.c:502 gio/gresource-tool.c:568
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "BESTAND"
 
@@ -143,7 +144,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr ""
 
-#: gio/gapplication-tool.c:96 gio/gresource-tool.c:533 gio/gsettings-tool.c:661
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -156,8 +157,8 @@ msgstr ""
 msgid "Usage:\n"
 msgstr "Gebruik:\n"
 
-#: gio/gapplication-tool.c:114 gio/gresource-tool.c:558
-#: gio/gsettings-tool.c:696
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
 msgid "Arguments:\n"
 msgstr "Argumenten:\n"
 
@@ -279,7 +280,7 @@ msgstr "De stroom is al gesloten"
 msgid "Truncate not supported on base stream"
 msgstr "Afkappen wordt niet ondersteund op een datastroom"
 
-#: gio/gcancellable.c:317 gio/gdbusconnection.c:1867 gio/gdbusprivate.c:1402
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -298,25 +299,25 @@ msgid "Not enough space in destination"
 msgstr "Niet genoeg ruimte op bestemming"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1261 glib/gconvert.c:455 glib/gconvert.c:885
-#: glib/giochannel.c:1557 glib/giochannel.c:1599 glib/giochannel.c:2443
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Ongeldige bytereeks in conversie-invoer"
 
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:463 glib/gconvert.c:799
-#: glib/giochannel.c:1564 glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Fout tijdens omzetten: %s"
 
 # niet ondersteund/niet mogelijk
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1093
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Annuleerbare initialisatie wordt niet ondersteund"
 
 # is niet mogelijk/wordt niet ondersteund
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:328 glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, fuzzy, c-format
 #| msgid "Conversion from character set '%s' to '%s' is not supported"
 msgid "Conversion from character set “%s” to “%s” is not supported"
@@ -327,7 +328,7 @@ msgstr "Het omzetten van tekenset ‘%s’ naar ‘%s’ is niet mogelijk"
 # Openen van converteerder van '%s' naar '%s' mislukt
 # Openen van het programma voor het omzetten van s naar s is mislukt
 # (tekenreeks komt verderop nog een keer voor)
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:332
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, fuzzy, c-format
 #| msgid "Could not open converter from '%s' to '%s'"
 msgid "Could not open converter from “%s” to “%s”"
@@ -339,30 +340,34 @@ msgstr ""
 msgid "%s type"
 msgstr "type %s"
 
-#: gio/gcontenttype-win32.c:177
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "Onbekend type"
 
 # bestandssoort/bestandstype
-#: gio/gcontenttype-win32.c:179
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
 msgstr "bestandstype %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials bevat ongeldige gegevens"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials is niet geïmplementeerd op dit besturingssysteem"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "GCredentials wordt niet ondersteund op uw platform"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 #, fuzzy
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials is niet geïmplementeerd op dit besturingssysteem"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 #, fuzzy
 #| msgid "GCredentials is not implemented on this OS"
 msgid "Credentials spoofing is not possible on this OS"
@@ -372,51 +377,52 @@ msgstr "GCredentials is niet geïmplementeerd op dit besturingssysteem"
 msgid "Unexpected early end-of-stream"
 msgstr "Voortijdig einde aan gegevensstroom"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:246 gio/gdbusaddress.c:327
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, fuzzy, c-format
 #| msgid "Unsupported key '%s' in address entry '%s'"
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Niet ondersteunde sleutel ‘%s’ in adres ‘%s’"
 
-#: gio/gdbusaddress.c:185
+#: gio/gdbusaddress.c:171
+#, fuzzy, c-format
+#| msgid "Meaningless key/value pair combination in address entry '%s'"
+msgid "Meaningless key/value pair combination in address entry “%s”"
+msgstr "Onzinnige sleutel- en waardecombinatie in adres ‘%s’"
+
+#: gio/gdbusaddress.c:180
 #, fuzzy, 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)"
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
 msgstr "Adres ‘%s’ is ongeldig (pad, tmpdir of abstracte sleutel nodig)"
 
-#: gio/gdbusaddress.c:198
-#, fuzzy, c-format
-#| msgid "Meaningless key/value pair combination in address entry '%s'"
-msgid "Meaningless key/value pair combination in address entry “%s”"
-msgstr "Onzinnige sleutel- en waardecombinatie in adres ‘%s’"
-
-#: gio/gdbusaddress.c:261 gio/gdbusaddress.c:342
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, fuzzy, c-format
 #| msgid "Error in address '%s' - the port attribute is malformed"
-msgid "Error in address “%s” — the port attribute is malformed"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Fout in adres ‘%s’ - het poort-attribuut is onjuist gevormd"
 
-#: gio/gdbusaddress.c:272 gio/gdbusaddress.c:353
-#, fuzzy, c-format
-#| msgid "Error in address '%s' - the family attribute is malformed"
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Fout in adres ‘%s’ - het family-attribuut is onjuist gevormd"
-
-#: gio/gdbusaddress.c:423 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, fuzzy, c-format
 #| msgid "Unknown or unsupported transport '%s' for address '%s'"
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Onbekend of niet ondersteund transport ‘%s’ voor adres ‘%s’"
 
-#: gio/gdbusaddress.c:467
+#: gio/gdbusaddress.c:461
 #, fuzzy, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adreselement ‘%s’ bevat geen dubbele punt (:)"
 
-#: gio/gdbusaddress.c:488
+#: gio/gdbusaddress.c:470
+#, c-format
+msgid "Transport name in address element “%s” must not be empty"
+msgstr ""
+
+#: gio/gdbusaddress.c:491
 #, fuzzy, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -426,6 +432,13 @@ msgstr ""
 
 #: gio/gdbusaddress.c:502
 #, fuzzy, c-format
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr ""
+"Sleutel/waarde-paar %d, ‘%s’ in adreselement ‘%s’ bevat geen is-gelijk-teken."
+
+#: gio/gdbusaddress.c:516
+#, fuzzy, c-format
 #| msgid ""
 #| "Error unescaping key or value in Key/Value pair %d, '%s', in address "
 #| "element '%s'"
@@ -436,7 +449,7 @@ msgstr ""
 "Fout bij het ‘unescapen’ van sleutel of waarde in sleutel/waarde-paar %d, "
 "‘%s’, in adreselement ‘%s’"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, fuzzy, c-format
 #| msgid ""
 #| "Error in address '%s' - the unix transport requires exactly one of the "
@@ -448,21 +461,21 @@ msgstr ""
 "Fout in adres ‘%s’ — Unix-transport heeft ofwel de sleutel ‘path’ ofwel de "
 "sleutel ‘abstract’ nodig"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, fuzzy, c-format
 #| msgid "Error in address '%s' - the host attribute is missing or malformed"
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Fout in adres ‘%s’ — het host-attribuut ontbreekt of is onjuist gevormd"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, fuzzy, c-format
 #| msgid "Error in address '%s' - the port attribute is missing or malformed"
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Fout in adres ‘%s’ — het port-attribuut ontbreekt of is onjuist gevormd"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, fuzzy, c-format
 #| msgid ""
 #| "Error in address '%s' - the noncefile attribute is missing or malformed"
@@ -470,24 +483,24 @@ msgid "Error in address “%s” — the noncefile attribute is missing or malfo
 msgstr ""
 "Fout in adres ‘%s’ — het noncefile-attribuut ontbreekt of is onjuist gevormd"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Fout bij automatisch opstarten: "
 
 # lezen/openen
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, fuzzy, c-format
 #| msgid "Error opening nonce file '%s': %s"
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Fout bij het openen van nonce-bestand ‘%s’: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, fuzzy, c-format
 #| msgid "Error reading from nonce file '%s': %s"
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Fout bij het lezen van nonce-bestand ‘%s’: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, fuzzy, c-format
 #| msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
@@ -495,7 +508,7 @@ msgstr ""
 "Fout bij het lezen van nonce-bestand ‘%s’, 16 bytes werden verwacht, maar %d "
 "bytes ontvangen"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, fuzzy, c-format
 #| msgid "Error writing contents of nonce file '%s' to stream:"
 msgid "Error writing contents of nonce file “%s” to stream:"
@@ -503,48 +516,38 @@ msgstr ""
 "Fout tijdens het schrijven van de inhoud van nonce-bestand ‘%s’ naar "
 "gegevensstroom:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Het opgegeven adres is leeg"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, fuzzy, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Kan geen message-bus starten zonder machine-ID: "
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Kan geen message-bus starten zonder machine-ID: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr ""
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, fuzzy, c-format
 #| msgid "Error spawning command line '%s': "
 msgid "Error spawning command line “%s”: "
 msgstr "Fout bij starten van de opdrachtregel ‘%s’: "
 
-#: gio/gdbusaddress.c:1359
-#, c-format
-msgid "(Type any character to close this window)\n"
-msgstr "(Typ een willekeurige letter om dit venster te sluiten)\n"
-
-#: gio/gdbusaddress.c:1513
-#, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr "Sessie-dbus is niet actief, en autolauch is mislukt"
-
-#: gio/gdbusaddress.c:1524
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Kan adres van sessiebus niet bepalen (niet geïmplementeerd voor dit "
 "besturingssysteem)"
 
-#: gio/gdbusaddress.c:1662 gio/gdbusconnection.c:7174
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, fuzzy, c-format
 #| msgid ""
 #| "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment "
@@ -556,7 +559,7 @@ msgstr ""
 "Kan adres van bus niet bepalen van DBUS_STARTER_BUS_TYPE omgevingsvariabele "
 "- onbekende waarde ‘%s’"
 
-#: gio/gdbusaddress.c:1671 gio/gdbusconnection.c:7183
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -564,61 +567,61 @@ msgstr ""
 "Kan adres van bus niet bepalen omdat de omgevingsvariabele "
 "DBUS_STARTER_BUS_TYPE niet is ingesteld"
 
-#: gio/gdbusaddress.c:1681
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Onbekend bustype %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr ""
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr ""
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, fuzzy, c-format
 #| msgid "Error when getting information for directory '%s': %s"
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Fout bij ophalen van informatie voor de map ‘%s’: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, fuzzy, c-format
 #| msgid "Error creating directory '%s': %s"
 msgid "Error creating directory “%s”: %s"
 msgstr "Fout bij het aanmaken van map ‘%s’: %s"
 
 # lezen/openen
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, fuzzy, c-format
 #| msgid "Error opening keyring '%s' for reading: "
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Fout bij het openen van sleutelbos ‘%s’: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, fuzzy, c-format
 #| msgid "Line %d of the keyring at '%s' with content '%s' is malformed"
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Regel %d van de sleutelbos in ‘%s’ met inhoud ‘%s’ is onjuist gevormd"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, fuzzy, c-format
 #| msgid ""
 #| "First token of line %d of the keyring at '%s' with content '%s' is "
@@ -629,7 +632,7 @@ msgstr ""
 "Eerste token op regel %d van de sleutelbos in ‘%s’ met inhoud ‘%s’ is "
 "onjuist gevormd"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, fuzzy, c-format
 #| msgid ""
 #| "First token of line %d of the keyring at '%s' with content '%s' is "
@@ -640,174 +643,157 @@ msgstr ""
 "Eerste token op regel %d van de sleutelbos in ‘%s’ met inhoud ‘%s’ is "
 "onjuist gevormd"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:503
-#, fuzzy, c-format
+#: gio/gdbusauthmechanismsha1.c:505
+#, c-format
 msgid "Error deleting stale lock file “%s”: %s"
-msgstr "Fout bij lezen van bestand ‘%s’: %s"
+msgstr "Fout bij lezen van verouderd vergrendelingsbestand ‘%s’: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
-#, fuzzy, c-format
-#| msgid "Error creating lock file '%s': %s"
+#: gio/gdbusauthmechanismsha1.c:537
+#, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Fout bij aanmaken vergrendelingsbestand ‘%s’: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
-#, fuzzy, c-format
-#| msgid "Error closing (unlinked) lock file '%s': %s"
+#: gio/gdbusauthmechanismsha1.c:568
+#, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Fout bij het sluiten van (ontkoppeld) vergrendelingsbestand ‘%s’: %s"
 
 # lezen/openen
-#: gio/gdbusauthmechanismsha1.c:577
-#, fuzzy, c-format
-#| msgid "Error unlinking lock file '%s': %s"
+#: gio/gdbusauthmechanismsha1.c:579
+#, c-format
 msgid "Error unlinking lock file “%s”: %s"
-msgstr "Fout bij het ontkoppelen van bestand ‘%s’: %s"
+msgstr "Fout bij het ontkoppelen van vergrendelingsbestand ‘%s’: %s"
 
 # lezen/openen
-#: gio/gdbusauthmechanismsha1.c:654
-#, fuzzy, c-format
-#| msgid "Error opening keyring '%s' for writing: "
+#: gio/gdbusauthmechanismsha1.c:656
+#, c-format
 msgid "Error opening keyring “%s” for writing: "
-msgstr "Fout bij het openen van sleutelbos ‘%s’ voor schrijven:"
+msgstr "Fout bij het openen van sleutelbos ‘%s’ voor schrijven: "
 
-#: gio/gdbusauthmechanismsha1.c:850
-#, fuzzy, c-format
-#| msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
+#: gio/gdbusauthmechanismsha1.c:852
+#, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
-msgstr "(vrijgeven van vergrendeling voor '%s' ook mislukt: %s) "
+msgstr "(Vrijgeven van vergrendeling voor ‘%s’ is ook mislukt: %s) "
 
 # opsomming/teller
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2396
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "De verbinding is gesloten"
 
-#: gio/gdbusconnection.c:1897
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "Tijd is verlopen"
 
-#: gio/gdbusconnection.c:2518
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 
-#: gio/gdbusconnection.c:4147 gio/gdbusconnection.c:4494
-#, fuzzy, c-format
-#| msgid ""
-#| "No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
+#, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr "Geen interface ‘org.freedesktop.DBus.Properties’ op object met pad %s"
 
-#: gio/gdbusconnection.c:4289
+#: gio/gdbusconnection.c:4303
 #, c-format
 msgid "No such property “%s”"
 msgstr "Geen eigenschap ‘%s’"
 
-#: gio/gdbusconnection.c:4301
-#, fuzzy, c-format
-#| msgid "Property '%s' is not readable"
+#: gio/gdbusconnection.c:4315
+#, c-format
 msgid "Property “%s” is not readable"
 msgstr "Eigenschap ‘%s’ is niet leesbaar"
 
-#: gio/gdbusconnection.c:4312
-#, fuzzy, c-format
-#| msgid "Property '%s' is not writable"
+#: gio/gdbusconnection.c:4326
+#, c-format
 msgid "Property “%s” is not writable"
 msgstr "Eigenschap ‘%s’ is niet schrijfbaar"
 
-#: gio/gdbusconnection.c:4332
-#, fuzzy, c-format
-#| msgid "Error setting property '%s': Expected type '%s' but got '%s'"
+#: gio/gdbusconnection.c:4346
+#, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Fout bij het instellen van eigenschap ‘%s’: verwachte type ‘%s’, maar ‘%s’ "
 "ontvangen"
 
-#: gio/gdbusconnection.c:4437 gio/gdbusconnection.c:4645
-#: gio/gdbusconnection.c:6614
-#, fuzzy, c-format
-#| msgid "No such interface '%s'"
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
+#, c-format
 msgid "No such interface “%s”"
 msgstr "Interface ‘%s’ bestaat niet"
 
-#: gio/gdbusconnection.c:4863 gio/gdbusconnection.c:7123
-#, fuzzy, c-format
-#| msgid "No such interface '%s' on object at path %s"
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
+#, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Interface ‘%s’ op object met pad %s bestaat niet"
 
-#: gio/gdbusconnection.c:4961
+#: gio/gdbusconnection.c:4975
 #, c-format
 msgid "No such method “%s”"
 msgstr "Geen methode ‘%s’"
 
-#: gio/gdbusconnection.c:4992
-#, fuzzy, c-format
-#| msgid "Type of message, '%s', does not match expected type '%s'"
+#: gio/gdbusconnection.c:5006
+#, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Berichttype ‘%s’ komt niet overeen met verwachte type ‘%s’"
 
-#: gio/gdbusconnection.c:5190
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Er is al een object geëxporteerd voor de interface %s op %s"
 
-#: gio/gdbusconnection.c:5416
-#, fuzzy, c-format
-#| msgid "Unable to create socket: %s"
+#: gio/gdbusconnection.c:5430
+#, c-format
 msgid "Unable to retrieve property %s.%s"
-msgstr "Kan socket niet aanmaken: %s"
+msgstr "Kan eigenschap %s.%s niet ophalen"
 
-#: gio/gdbusconnection.c:5472
-#, fuzzy, c-format
-#| msgid "Unable to create socket: %s"
+#: gio/gdbusconnection.c:5486
+#, c-format
 msgid "Unable to set property %s.%s"
-msgstr "Kan socket niet aanmaken: %s"
+msgstr "Kan eigenschap %s.%s niet instellen"
 
-#: gio/gdbusconnection.c:5650
-#, fuzzy, c-format
-#| msgid "Method '%s' returned type '%s', but expected '%s'"
+#: gio/gdbusconnection.c:5664
+#, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Methode ‘%s’ gaf type ‘%s’ terug, maar ‘%s’ werd verwacht"
 
-#: gio/gdbusconnection.c:6725
-#, fuzzy, c-format
-#| msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
+#: gio/gdbusconnection.c:6741
+#, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
-msgstr "Methode ‘%s’ op interface ‘%s’ met signature ‘%s’ bestaat niet"
+msgstr "Methode ‘%s’ op interface ‘%s’ met ondertekening ‘%s’ bestaat niet"
 
-#: gio/gdbusconnection.c:6846
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Er is reeds een sub-boom geëxporteerd voor %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "type is INVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL-bericht: veld PATH of MEMBER ontbreekt in koptekst"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN-bericht: veld REPLY_SERIAL ontbreekt in koptekst"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR-bericht: veld REPLY_SERIAL of ERROR_NAME ontbreekt in koptekst"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL message: veld PATH, INTERFACE of MEMBER ontbreekt in koptekst"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -815,7 +801,7 @@ msgstr ""
 "SIGNAL-bericht: veld PATH in koptekst gebruikt de gereserveerde waarde /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -823,36 +809,40 @@ msgstr ""
 "SIGNAL-bericht: veld PATH in koptekst gebruikt de gereserveerde waarde org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] ""
 msgstr[1] ""
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, 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 ""
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr ""
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -861,123 +851,140 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
 "bytes, but found to be %u bytes in length"
 msgstr ""
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr ""
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2724
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
-msgstr ""
+msgstr "Ondertekeningshoofding gevonden, maar niet van type ondertekening"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
+"Ondertekeningshoofding met ondertekening ‘%s’ gevonden, maar berichtinhoud "
+"is leeg"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
+"Verwerkte waarde ‘%s’ is geen geldige D-Bus-ondertekening (voor inhoud)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Geen berichthoofding in bericht, maar berichtinhoud is %u byte"
+msgstr[1] "Geen berichthoofding in bericht, maar berichtinhoud is %u bytes"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
-msgstr ""
+msgstr "Kan bericht niet deserialiseren: "
 
-#: gio/gdbusmessage.c:2541
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 
-#: gio/gdbusmessage.c:2678
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 
-#: gio/gdbusmessage.c:2686
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
-msgstr ""
+msgstr "Kan bericht niet serialiseren: "
 
-#: gio/gdbusmessage.c:2740
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
+"Berichtinhoud heeft ondertekening ‘%s’, maar er is geen "
+"ondertekeningshoofding"
 
-#: gio/gdbusmessage.c:2750
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr ""
+"Berichtinhoud heeft type ondertekening ‘%s’, maar ondertekening in het "
+"hoofdingsvak is ‘%s’"
 
-#: gio/gdbusmessage.c:2766
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
-msgstr ""
+msgstr "Berichtinhoud is leeg, maar ondertekening in hoofdingsvak is ‘(%s)’"
 
-#: gio/gdbusmessage.c:3319
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr ""
 
-#: gio/gdbusmessage.c:3327
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr ""
 
-#: gio/gdbusprivate.c:2066
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr "(Typ een willekeurige letter om dit venster te sluiten)\n"
+
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr "Sessie-dbus is niet actief, en autolauch is mislukt"
+
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Kan hardware-profiel niet verkrijgen: %s"
 
-#: gio/gdbusprivate.c:2111
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
-msgstr ""
+msgstr "Kan /var/lib/dbus/machine-id of /etc/machine-id niet laden: "
 
-#: gio/gdbusproxy.c:1611
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
-msgstr ""
+msgstr "Fout bij aanroepen van StartServiceByName voor %s: "
 
-#: gio/gdbusproxy.c:1634
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr ""
 
-#: gio/gdbusproxy.c:2734 gio/gdbusproxy.c:2869
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -986,33 +993,30 @@ msgstr ""
 
 # wordt hier niet ondersteund
 # (dus bijv. op een aangekoppelde externe opslag?)
-#: gio/gdbusserver.c:708
-msgid "Abstract name space not supported"
-msgstr ""
+#: gio/gdbusserver.c:755
+msgid "Abstract namespace not supported"
+msgstr "Abstracte namespace wordt niet ondersteund"
 
-#: gio/gdbusserver.c:795
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 
-#: gio/gdbusserver.c:876
-#, fuzzy, c-format
-#| msgid "Error writing nonce file at '%s': %s"
+#: gio/gdbusserver.c:930
+#, c-format
 msgid "Error writing nonce file at “%s”: %s"
-msgstr "Fout bij schrijven van nonce-bestand naar '%s': %s"
+msgstr "Fout bij schrijven van nonce-bestand naar ‘%s’: %s"
 
-#: gio/gdbusserver.c:1047
-#, fuzzy, c-format
-#| msgid "The string '%s' is not a valid D-Bus GUID"
+#: gio/gdbusserver.c:1103
+#, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "De tekenreeks ‘%s’ is geen geldige GUID voor D-Bus"
 
-#: gio/gdbusserver.c:1087
-#, fuzzy, c-format
-#| msgid "Cannot listen on unsupported transport '%s'"
+#: gio/gdbusserver.c:1143
+#, c-format
 msgid "Cannot listen on unsupported transport “%s”"
-msgstr "Kan niet luisteren op niet ondersteund transport ‘%s’"
+msgstr "Kan niet luisteren op niet-ondersteund transport ‘%s’"
 
-#: gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:107
 #, c-format
 msgid ""
 "Commands:\n"
@@ -1026,310 +1030,300 @@ msgid ""
 "Use “%s COMMAND --help” to get help on each command.\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:185 gio/gdbus-tool.c:252 gio/gdbus-tool.c:324
-#: gio/gdbus-tool.c:348 gio/gdbus-tool.c:834 gio/gdbus-tool.c:1171
-#: gio/gdbus-tool.c:1613
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Fout: %s\n"
 
-#: gio/gdbus-tool.c:196 gio/gdbus-tool.c:265 gio/gdbus-tool.c:1629
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Fout bij verwerken van introspectie-XML %s\n"
 
-#: gio/gdbus-tool.c:234
+#: gio/gdbus-tool.c:246
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Fout: %s is geen geldige naam\n"
 
-#: gio/gdbus-tool.c:382
+#: gio/gdbus-tool.c:394
 msgid "Connect to the system bus"
 msgstr "Verbinden met systeembus"
 
-#: gio/gdbus-tool.c:383
+#: gio/gdbus-tool.c:395
 msgid "Connect to the session bus"
 msgstr "Verbinden met sessiebus"
 
-#: gio/gdbus-tool.c:384
+#: gio/gdbus-tool.c:396
 msgid "Connect to given D-Bus address"
 msgstr "Verbinden met opgegeven D-Bus-adres"
 
-#: gio/gdbus-tool.c:394
+#: gio/gdbus-tool.c:406
 msgid "Connection Endpoint Options:"
-msgstr ""
+msgstr "Verbindingseindpuntopties:"
 
-#: gio/gdbus-tool.c:395
+#: gio/gdbus-tool.c:407
 msgid "Options specifying the connection endpoint"
-msgstr ""
+msgstr "Opties voor het verbindingseindpunt"
 
-#: gio/gdbus-tool.c:417
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
-msgstr ""
+msgstr "Geen eindpunt voor verbinding opgegeven"
 
-#: gio/gdbus-tool.c:427
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
-msgstr ""
+msgstr "Meerdere eindpunten voor verbinding opgegeven"
 
-#: gio/gdbus-tool.c:497
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
+"Let op: volgens de introspectiegegevens bestaat de interface ‘%s’ niet\n"
 
-#: gio/gdbus-tool.c:506
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
 msgstr ""
+"Let op: volgens de introspectiegegevens bestaat de methode ‘%s’ op de "
+"interface ‘%s’ niet\n"
 
-#: gio/gdbus-tool.c:568
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
-msgstr ""
+msgstr "Optionele bestemming van signaal (unieke naam)"
 
-#: gio/gdbus-tool.c:569
-#, fuzzy
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
-msgstr "Te monitoren object-pad"
+msgstr "Objectpad waarop het signaal uitgestuurd moet worden"
 
-#: gio/gdbus-tool.c:570
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
-msgstr ""
+msgstr "Signaal- en interfacenaam"
 
-#: gio/gdbus-tool.c:603
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
-msgstr ""
+msgstr "Stuur een signaal uit."
 
 # openen/lezen
-#: gio/gdbus-tool.c:658 gio/gdbus-tool.c:965 gio/gdbus-tool.c:1715
-#: gio/gdbus-tool.c:1944 gio/gdbus-tool.c:2164
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Fout bij verbinden: %s\n"
 
-#: gio/gdbus-tool.c:678
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Fout: %s is geen geldige unieke busnaam.\n"
 
-#: gio/gdbus-tool.c:697 gio/gdbus-tool.c:1008 gio/gdbus-tool.c:1758
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
-msgstr ""
+msgstr "Fout: geen objectpad opgegeven\n"
 
-#: gio/gdbus-tool.c:720 gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1778
-#: gio/gdbus-tool.c:2015
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Fout: %s is geen geldig objectpad\n"
 
-#: gio/gdbus-tool.c:740
-#, fuzzy
-#| msgid "Error: Method name is not specified\n"
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
-msgstr "Fout: methodenaam is niet opgegeven\n"
+msgstr "Fout: signaalnaam is niet opgegeven\n"
 
-#: gio/gdbus-tool.c:754
-#, fuzzy, c-format
-#| msgid "Error: Method name '%s' is invalid\n"
+#: gio/gdbus-tool.c:770
+#, c-format
 msgid "Error: Signal name “%s” is invalid\n"
-msgstr "Fout: methodenaam ‘%s’ is ongeldig\n"
+msgstr "Fout: signaalnaam ‘%s’ is ongeldig\n"
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Fout: ‘%s’ is geen geldige interface-naam\n"
 
-#: gio/gdbus-tool.c:772
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Fout: ‘%s’ is geen geldige member-naam\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:809 gio/gdbus-tool.c:1140
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Fout bij ontleden van parameter %d: %s\n"
 
-#: gio/gdbus-tool.c:841
-#, fuzzy, c-format
+#: gio/gdbus-tool.c:857
+#, c-format
 msgid "Error flushing connection: %s\n"
-msgstr "Fout bij accepteren van verbinding: %s"
+msgstr "Fout bij flushen van verbinding: %s\n"
 
-#: gio/gdbus-tool.c:868
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
-msgstr ""
+msgstr "Bestemmingsnaam om methode voor aan te roepen"
 
-#: gio/gdbus-tool.c:869
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
-msgstr ""
+msgstr "Objectpad om methode op aan te roepen"
 
-#: gio/gdbus-tool.c:870
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "Methode en interfacenaam"
 
-#: gio/gdbus-tool.c:871
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "Tijdslimiet in seconden"
 
-#: gio/gdbus-tool.c:910
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr "Methode aanroepen op een object op afstand."
 
-#: gio/gdbus-tool.c:982 gio/gdbus-tool.c:1732 gio/gdbus-tool.c:1969
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr "Fout: bestemming is niet opgegeven\n"
 
-#: gio/gdbus-tool.c:993 gio/gdbus-tool.c:1749 gio/gdbus-tool.c:1980
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Fout: %s is geen geldige busnaam\n"
 
-#: gio/gdbus-tool.c:1043
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr "Fout: methodenaam is niet opgegeven\n"
 
-#: gio/gdbus-tool.c:1054
-#, fuzzy, c-format
-#| msgid "Error: Method name '%s' is invalid\n"
+#: gio/gdbus-tool.c:1070
+#, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Fout: methodenaam ‘%s’ is ongeldig\n"
 
-#: gio/gdbus-tool.c:1132
-#, fuzzy, c-format
-#| msgid "Error parsing parameter %d: %s\n"
+#: gio/gdbus-tool.c:1148
+#, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
-msgstr "Fout bij ontleden van parameter %d: %s\n"
+msgstr "Fout bij ontleden van parameter %d van type ‘%s’: %s\n"
 
-#: gio/gdbus-tool.c:1576
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
-msgstr ""
+msgstr "Bestemmingsnaam voor introspectie"
 
-#: gio/gdbus-tool.c:1577
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
-msgstr ""
+msgstr "Objectpad voor introspectie"
 
-#: gio/gdbus-tool.c:1578
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "XML tonen"
 
-#: gio/gdbus-tool.c:1579
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr ""
 
-#: gio/gdbus-tool.c:1580
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Alleen eigenschappen tonen"
 
 # Ugh, anglicisme :(  (Wouter Bolsterlee)
-#: gio/gdbus-tool.c:1667
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr "Een object op afstand introspecteren."
 
-#: gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
-msgstr ""
+msgstr "Bestemmingsnaam om te controleren"
 
-#: gio/gdbus-tool.c:1871
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr "Te monitoren object-pad"
 
-#: gio/gdbus-tool.c:1896
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr "Een object op afstand monitoren."
 
-#: gio/gdbus-tool.c:1954
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
+"Fout: kan geen verbindingen controleren anders dan berichtenbusverbindingen\n"
 
-#: gio/gdbus-tool.c:2078
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2081
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2129
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTIE…] BUS-NAAM"
 
-#: gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
-msgstr ""
+msgstr "Wacht tot er een busnaam verschijnt."
 
-#: gio/gdbus-tool.c:2206
+#: gio/gdbus-tool.c:2269
 #, fuzzy
 #| msgid "Error: Destination is not specified\n"
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Fout: bestemming is niet opgegeven\n"
 
-#: gio/gdbus-tool.c:2211
+#: gio/gdbus-tool.c:2274
 #, fuzzy
 #| msgid "Error: Destination is not specified\n"
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Fout: bestemming is niet opgegeven\n"
 
-#: gio/gdbus-tool.c:2216
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
 msgstr "Fout: te veel argumenten.\n"
 
-#: gio/gdbus-tool.c:2224 gio/gdbus-tool.c:2231
-#, fuzzy, c-format
-#| msgid "Error: %s is not a valid unique bus name.\n"
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
+#, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
-msgstr "Fout: %s is geen geldige unieke busnaam.\n"
+msgstr "Fout: %s is geen geldige bekende busnaam.\n"
 
 # naamloos/zonder naam/onbenoemd
-#: gio/gdesktopappinfo.c:2041 gio/gdesktopappinfo.c:4680
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Zonder naam"
 
 # bureaubladbestand/desktopbestand
-#: gio/gdesktopappinfo.c:2451
-#, fuzzy
-#| msgid "Desktop file didn't specify Exec field"
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
-msgstr "Desktopbestand bevat geen Exec-veld"
+msgstr "Bureaubladbestand bevat geen Exec-veld"
 
-#: gio/gdesktopappinfo.c:2710
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "Kan geen terminalvenster vinden voor het uitvoeren van het programma"
 
-#: gio/gdesktopappinfo.c:3222
-#, fuzzy, c-format
-#| msgid "Can't create user application configuration folder %s: %s"
+#: gio/gdesktopappinfo.c:3413
+#, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Kan persoonlijke programmaconfiguratiemap %s niet aanmaken: %s"
 
-#: gio/gdesktopappinfo.c:3226
-#, fuzzy, c-format
-#| msgid "Can't create user MIME configuration folder %s: %s"
+#: gio/gdesktopappinfo.c:3417
+#, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Kan persoonlijke MIME-configuratiemap %s niet aanmaken: %s"
 
-#: gio/gdesktopappinfo.c:3466 gio/gdesktopappinfo.c:3490
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
-msgstr ""
+msgstr "Toepassingsinformatie bevat geen identificatie"
 
-#: gio/gdesktopappinfo.c:3724
-#, fuzzy, c-format
-#| msgid "Can't create user desktop file %s"
+#: gio/gdesktopappinfo.c:3915
+#, c-format
 msgid "Can’t create user desktop file %s"
-msgstr "Kan desktopbestand %s niet aanmaken"
+msgstr "Kan bureaubladbestand %s niet aanmaken"
 
-#: gio/gdesktopappinfo.c:3858
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Zelfgemaakte definitie voor %s"
 
 #: gio/gdrive.c:417
-#, fuzzy
-#| msgid "drive doesn't implement eject"
 msgid "drive doesn’t implement eject"
 msgstr "dit station begrijpt de opdracht ‘uitwerpen’ niet"
 
@@ -1337,27 +1331,19 @@ msgstr "dit station begrijpt de opdracht ‘uitwerpen’ niet"
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
 #: gio/gdrive.c:495
-#, fuzzy
-#| msgid "drive doesn't implement eject or eject_with_operation"
 msgid "drive doesn’t implement eject or eject_with_operation"
 msgstr ""
 "dit station begrijpt de opdracht ‘uitwerpen’ of ‘eject_with_operation’ niet"
 
 #: gio/gdrive.c:571
-#, fuzzy
-#| msgid "drive doesn't implement polling for media"
 msgid "drive doesn’t implement polling for media"
 msgstr "dit station kan niet onderzocht worden op de aanwezigheid van media"
 
 #: gio/gdrive.c:778
-#, fuzzy
-#| msgid "drive doesn't implement start"
 msgid "drive doesn’t implement start"
 msgstr "dit station begrijpt de opdracht ‘start’ niet"
 
 #: gio/gdrive.c:880
-#, fuzzy
-#| msgid "drive doesn't implement stop"
 msgid "drive doesn’t implement stop"
 msgstr "dit station begrijpt de opdracht ‘stop’ niet"
 
@@ -1367,14 +1353,11 @@ msgid "TLS support is not available"
 msgstr "TLS-ondersteuning niet beschikbaar"
 
 #: gio/gdummytlsbackend.c:419
-#, fuzzy
-#| msgid "TLS support is not available"
 msgid "DTLS support is not available"
-msgstr "TLS-ondersteuning niet beschikbaar"
+msgstr "DTLS-ondersteuning niet beschikbaar"
 
 #: gio/gemblem.c:323
-#, fuzzy, c-format
-#| msgid "Can't handle version %d of GEmblem encoding"
+#, c-format
 msgid "Can’t handle version %d of GEmblem encoding"
 msgstr "Kan versie %d van GEmblem-codering niet verwerken"
 
@@ -1384,8 +1367,7 @@ msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Onjuist aantal tokens (%d) in GEmblem-codering"
 
 #: gio/gemblemedicon.c:362
-#, fuzzy, c-format
-#| msgid "Can't handle version %d of GEmblemedIcon encoding"
+#, c-format
 msgid "Can’t handle version %d of GEmblemedIcon encoding"
 msgstr "Kan versie %d van GEmblemedIcon-codering niet verwerken"
 
@@ -1399,12 +1381,12 @@ msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "GEmblem voor GEmblemedIcon verwacht"
 
 # niet ondersteund/niet mogelijk
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3738 gio/gfile.c:3793
-#: gio/gfile.c:4029 gio/gfile.c:4071 gio/gfile.c:4539 gio/gfile.c:4950
-#: gio/gfile.c:5035 gio/gfile.c:5125 gio/gfile.c:5222 gio/gfile.c:5309
-#: gio/gfile.c:5410 gio/gfile.c:7988 gio/gfile.c:8078 gio/gfile.c:8162
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "De bewerking is niet mogelijk"
@@ -1414,88 +1396,85 @@ msgstr "De bewerking is niet mogelijk"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Het koppelpunt hiervan bestaat niet"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2441
-#, fuzzy
-#| msgid "Can't copy over directory"
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Kan niet over map kopiëren"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Kan map niet over map heen kopiëren"
 
 # er is al een bestand met die naam?
 # Het doelbestand bestaat (al)
 # er was ook een msgid: Target file already exists
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Doelbestand bestaat al"
 
 # map/de map
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Kan map niet recursief kopiëren"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Splice wordt niet ondersteund"
 
 # openen/lezen
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fout bij splicen van bestand: %s"
 
 # (nog) niet mogelijk/niet ondersteund
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 #, fuzzy
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Verplaatsen tussen aankoppelpunten is niet mogelijk"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
-msgstr ""
+msgstr "Kopiëren (reflink/klonen) wordt niet ondersteund of is ongeldig"
 
 # (nog) niet mogelijk/niet ondersteund
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 #, fuzzy
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Verplaatsen tussen aankoppelpunten is niet mogelijk"
 
-#: gio/gfile.c:3221
-#, fuzzy
-#| msgid "Can't copy special file"
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Kan speciaal bestand niet kopiëren"
 
-#: gio/gfile.c:4019
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Ongeldige symbolische verwijzing gegeven"
 
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Symbolische verwijzingen zijn niet mogelijk"
+
 # wordt hier niet ondersteund
 # (dus bijv. op een aangekoppelde externe opslag?)
-#: gio/gfile.c:4180
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Prullenbak wordt ondersteund"
 
 # Een bestandsnaam mag het teken / niet bevatten
-#: gio/gfile.c:4292
-#, fuzzy, c-format
-#| msgid "File names cannot contain '%c'"
+#: gio/gfile.c:4276
+#, c-format
 msgid "File names cannot contain “%c”"
-msgstr "Het teken ‘%c’ mag niet in een bestandsnaam voorkomen"
+msgstr "Bestandsnamen kunnen geen ‘%c’ bevatten"
 
-#: gio/gfile.c:6773 gio/gvolume.c:364
-#, fuzzy
-#| msgid "volume doesn't implement mount"
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
-msgstr "volumen begrijpt de opdracht ‘aankoppelen’ niet"
+msgstr "volume begrijpt de opdracht ‘aankoppelen’ niet"
 
-#: gio/gfile.c:6882
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Er is geen programma toegewezen om dit bestand te openen"
 
@@ -1515,8 +1494,7 @@ msgid "File enumerator is already closed"
 msgstr "Bestandsteller is al gesloten"
 
 #: gio/gfileicon.c:236
-#, fuzzy, c-format
-#| msgid "Can't handle version %d of GFileIcon encoding"
+#, c-format
 msgid "Can’t handle version %d of GFileIcon encoding"
 msgstr "Kan versie %d van GFileIcon-codering niet verwerken"
 
@@ -1527,8 +1505,6 @@ msgstr "Ongeldige invoergegevens voor GFileIcon"
 #: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
 #: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
 #: gio/gfileoutputstream.c:497
-#, fuzzy
-#| msgid "Stream doesn't support query_info"
 msgid "Stream doesn’t support query_info"
 msgstr "Gegevensstroom ondersteunt query_info niet"
 
@@ -1545,40 +1521,37 @@ msgstr "Afkappen is niet toegestaan op een invoerdatastroom"
 msgid "Truncate not supported on stream"
 msgstr "Afkappen wordt niet ondersteund op een gegevensstroom"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:377 gio/gresolver.c:529
-#: glib/gconvert.c:1785
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Ongeldige hostnaam"
 
 #: gio/ghttpproxy.c:143
 msgid "Bad HTTP proxy reply"
-msgstr ""
+msgstr "Verkeerd HTTP-proxyantwoord"
 
 # opsomming/teller
 #: gio/ghttpproxy.c:159
-#, fuzzy
-#| msgid "The connection is closed"
 msgid "HTTP proxy connection not allowed"
-msgstr "De verbinding is gesloten"
+msgstr "HTTP-proxyverbinding niet toegestaan"
 
 #: gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
-msgstr ""
+msgstr "HTTP-proxyaanmeldingscontrole mislukt"
 
 #: gio/ghttpproxy.c:167
 msgid "HTTP proxy authentication required"
-msgstr ""
+msgstr "HTTP-proxyaanmeldingscontrole vereist"
 
 # opsomming/teller
 #: gio/ghttpproxy.c:171
-#, fuzzy, c-format
-#| msgid "The connection is closed"
+#, c-format
 msgid "HTTP proxy connection failed: %i"
-msgstr "De verbinding is gesloten"
+msgstr "HTTP-proxyverbinding mislukt: %i"
 
 #: gio/ghttpproxy.c:269
 msgid "HTTP proxy server closed connection unexpectedly."
-msgstr ""
+msgstr "De HTTP-proxyserver heeft de verbinding onverwacht beëindigd."
 
 #: gio/gicon.c:298
 #, c-format
@@ -1630,10 +1603,9 @@ msgid "Address has bits set beyond prefix length"
 msgstr ""
 
 #: gio/ginetaddressmask.c:300
-#, fuzzy, c-format
-#| msgid "Could not parse '%s' as IP address mask"
+#, c-format
 msgid "Could not parse “%s” as IP address mask"
-msgstr "Kon ‘%s’ niet ontleden als IP-adres"
+msgstr "Kon ‘%s’ niet ontleden als IP-adresmasker"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
 #: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
@@ -1646,8 +1618,6 @@ msgstr "Niet ondersteund socket-adres"
 
 # huh?
 #: gio/ginputstream.c:188
-#, fuzzy
-#| msgid "Input stream doesn't implement read"
 msgid "Input stream doesn’t implement read"
 msgstr "Invoerdatastroom begrijpt de opdracht ‘lezen’ niet"
 
@@ -1672,9 +1642,9 @@ msgstr "Bestanden meenemen bij verplaatsen"
 
 #: gio/gio-tool.c:205
 msgid "“version” takes no arguments"
-msgstr ""
+msgstr "‘version’ verwacht geen argumenten"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:857
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Gebruik:"
 
@@ -1760,10 +1730,10 @@ msgid "Error writing to stdout"
 msgstr "Fout bij schrijven naar stdout"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:113
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1780,144 +1750,158 @@ msgid ""
 "like smb://server/resource/file.txt as location."
 msgstr ""
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:139
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Geen locaties opgegeven"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Geen doelmap"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Voortgang tonen"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Vragen voor overschrijven"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Alle attributen behouden"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Reservekopie maken van bestaande bestemmingsbestanden"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Symbolische verwijzingen nooit volgen"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr ""
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr ""
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "BRON"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DOEL"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Kopieer één of meerdere bestanden van BRON naar DOEL."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 msgstr ""
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Doel %s is geen map"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: ‘%s’ overschrijven? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Beschrijfbare attributen tonen"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Bestandssysteeminformatie verkrijgen"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "De attributen om te verkrijgen"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTEN"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Symbolische verwijzingen niet volgen"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "attributen:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "weergavenaam: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "bewerkersnaam: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "naam: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "type: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "grootte: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "verborgen\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "lokaal pad: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr ""
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Instelbare attributen:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Schrijfbare attribuutnaamruimten:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Informatie tonen over locaties."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1926,23 +1910,27 @@ msgid ""
 "namespace, e.g. unix, or by “*”, which matches all attributes"
 msgstr ""
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Verborgen bestanden tonen"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr ""
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Weergavenamen weergeven"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Volledige URI’s tonen"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr ""
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2061,12 +2049,12 @@ msgid "Mount as mountable"
 msgstr "Aankoppelen als aankoppelbaar"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Volume aankoppelen met apparaatsbestand"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Volume aankoppelen met apparaatsbestand, of een andere identifier"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "APPARAAT"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2080,6 +2068,10 @@ msgstr "Uitwerpen"
 msgid "Stop drive with device file"
 msgstr "Schijf stoppen met apparaatsbestand"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "APPARAAT"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr ""
@@ -2106,18 +2098,14 @@ msgid "Monitor events"
 msgstr "Gebeurtenissen observeren"
 
 #: gio/gio-tool-mount.c:74
-#, fuzzy
-#| msgid "Show help options"
 msgid "Show extra information"
-msgstr "Deze hulptekst tonen"
+msgstr "Extra informatie tonen"
 
 #: gio/gio-tool-mount.c:75
 msgid "The numeric PIM when unlocking a VeraCrypt volume"
 msgstr ""
 
 #: gio/gio-tool-mount.c:75
-#| msgctxt "GDateTime"
-#| msgid "PM"
 msgid "PIM"
 msgstr "PIM"
 
@@ -2137,16 +2125,11 @@ msgstr "Anonieme toegang geweigerd"
 msgid "No drive for device file"
 msgstr "Geen schijf voor apparaatsbestand"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s aangekoppeld op %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Geen volume voor apparaatsbestand"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Geen volume voor gegeven ID"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Koppel de locaties aan of los."
 
@@ -2166,12 +2149,11 @@ msgid ""
 msgstr ""
 
 #: gio/gio-tool-move.c:143
-#, fuzzy, c-format
-#| msgid "Target file is a directory"
+#, c-format
 msgid "Target %s is not a directory"
-msgstr "Doelbestand is geen map"
+msgstr "Doel %s is geen map"
 
-#: gio/gio-tool-open.c:118
+#: gio/gio-tool-open.c:75
 msgid ""
 "Open files with the default application that\n"
 "is registered to handle files of this type."
@@ -2237,10 +2219,8 @@ msgid "ETAG"
 msgstr "ETAG"
 
 #: gio/gio-tool-save.c:113
-#, fuzzy
-#| msgid "Error reading from handle: %s"
 msgid "Error reading from standard input"
-msgstr "Fout bij het lezen van handle: %s"
+msgstr "Fout bij het lezen van standaardinvoer"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
 #: gio/gio-tool-save.c:139
@@ -2284,16 +2264,13 @@ msgid "Attribute not specified"
 msgstr "Attribuut niet opgegeven"
 
 #: gio/gio-tool-set.c:130
-#, fuzzy
-#| msgid "No address specified"
 msgid "Value not specified"
-msgstr "Geen adres opgegeven"
+msgstr "Waarde niet opgegeven"
 
 #: gio/gio-tool-set.c:180
-#, fuzzy, c-format
-#| msgid "Invalid attribute type (string expected)"
+#, c-format
 msgid "Invalid attribute type “%s”"
-msgstr "Ongeldig attribuuttype (hoort een tekenreeks te zijn)"
+msgstr "Ongeldig attribuuttype ‘%s’"
 
 #: gio/gio-tool-trash.c:32
 msgid "Empty the trash"
@@ -2311,36 +2288,33 @@ msgstr "Symbolische verwijzingen en (snel)koppelingen volgen"
 msgid "List contents of directories in a tree-like format."
 msgstr ""
 
-#: gio/glib-compile-resources.c:143 gio/glib-compile-schemas.c:1515
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Element <%s> is niet toegestaan binnen <%s>"
 
-#: gio/glib-compile-resources.c:147
+#: gio/glib-compile-resources.c:144
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Element <%s> is niet toegestaan op het hoogste niveau"
 
-#: gio/glib-compile-resources.c:237
+#: gio/glib-compile-resources.c:234
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "Bestand %s komt meerdere keren voor in de bron"
 
-#: gio/glib-compile-resources.c:248
-#, fuzzy, c-format
-#| msgid "Failed to locate '%s' in any source directory"
+#: gio/glib-compile-resources.c:245
+#, c-format
 msgid "Failed to locate “%s” in any source directory"
 msgstr "‘%s’ kon niet gevonden worden in de bronmap"
 
-#: gio/glib-compile-resources.c:259
-#, fuzzy, c-format
-#| msgid "Failed to locate '%s' in current directory"
+#: gio/glib-compile-resources.c:256
+#, c-format
 msgid "Failed to locate “%s” in current directory"
 msgstr "‘%s’ kon niet gevonden worden in de huidige map"
 
-#: gio/glib-compile-resources.c:293
-#, fuzzy, c-format
-#| msgid "Unknown processing option \"%s\""
+#: gio/glib-compile-resources.c:290
+#, c-format
 msgid "Unknown processing option “%s”"
 msgstr "Onbekende verwerkingsoptie ‘%s’"
 
@@ -2348,19 +2322,19 @@ msgstr "Onbekende verwerkingsoptie ‘%s’"
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
 #.
-#: gio/glib-compile-resources.c:313 gio/glib-compile-resources.c:370
-#: gio/glib-compile-resources.c:427
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
 #, c-format
 msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
 msgstr ""
 
-#: gio/glib-compile-resources.c:460
+#: gio/glib-compile-resources.c:457
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "Fout bij lezen van bestand %s: %s"
 
 # openen/lezen
-#: gio/glib-compile-resources.c:480
+#: gio/glib-compile-resources.c:477
 #, c-format
 msgid "Error compressing file %s"
 msgstr "Fout bij comprimeren van bestand: %s"
@@ -2370,7 +2344,7 @@ msgstr "Fout bij comprimeren van bestand: %s"
 msgid "text may not appear inside <%s>"
 msgstr "er mag geen tekst staan binnen <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2139
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Programmaversie tonen en afsluiten"
 
@@ -2384,8 +2358,8 @@ msgid ""
 "directory)"
 msgstr ""
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2140
-#: gio/glib-compile-schemas.c:2169
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "MAP"
 
@@ -2443,769 +2417,796 @@ msgstr ""
 msgid "You should give exactly one file name\n"
 msgstr "U dient exact één bestandsnaam op te geven\n"
 
-#: gio/glib-compile-schemas.c:95
+#: gio/glib-compile-schemas.c:92
 #, c-format
 msgid "nick must be a minimum of 2 characters"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:106
+#: gio/glib-compile-schemas.c:103
 #, c-format
 msgid "Invalid numeric value"
 msgstr "Ongeldige numerieke waarde"
 
-#: gio/glib-compile-schemas.c:114
+#: gio/glib-compile-schemas.c:111
 #, c-format
 msgid "<value nick='%s'/> already specified"
 msgstr "<value nick='%s'/> reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:122
+#: gio/glib-compile-schemas.c:119
 #, c-format
 msgid "value='%s' already specified"
 msgstr "value='%s' reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:136
+#: gio/glib-compile-schemas.c:133
 #, c-format
 msgid "flags values must have at most 1 bit set"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:161
+#: gio/glib-compile-schemas.c:158
 #, c-format
 msgid "<%s> must contain at least one <value>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:317
+#: gio/glib-compile-schemas.c:314
 #, c-format
 msgid "<%s> is not contained in the specified range"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:329
+#: gio/glib-compile-schemas.c:326
 #, c-format
 msgid "<%s> is not a valid member of the specified enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:335
+#: gio/glib-compile-schemas.c:332
 #, c-format
 msgid "<%s> contains string not in the specified flags type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:341
+#: gio/glib-compile-schemas.c:338
 #, c-format
 msgid "<%s> contains a string not in <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:375
+#: gio/glib-compile-schemas.c:372
 msgid "<range/> already specified for this key"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:393
+#: gio/glib-compile-schemas.c:390
 #, c-format
 msgid "<range> not allowed for keys of type “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:410
+#: gio/glib-compile-schemas.c:407
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:435
+#: gio/glib-compile-schemas.c:432
 #, c-format
 msgid "unsupported l10n category: %s"
 msgstr "l10n-category niet ondersteund: %s"
 
-#: gio/glib-compile-schemas.c:443
+#: gio/glib-compile-schemas.c:440
 msgid "l10n requested, but no gettext domain given"
 msgstr "l10n gevraagd, maar geen gettext-domein gegeven"
 
-#: gio/glib-compile-schemas.c:455
+#: gio/glib-compile-schemas.c:452
 msgid "translation context given for value without l10n enabled"
 msgstr "vertaalcontext gegeven voor waarde zonder ingeschakelde l10n"
 
-#: gio/glib-compile-schemas.c:477
+#: gio/glib-compile-schemas.c:474
 #, c-format
 msgid "Failed to parse <default> value of type “%s”: "
 msgstr "Ontleden van <default>-waarde van type ‘%s’ mislukt: "
 
-#: gio/glib-compile-schemas.c:494
+#: gio/glib-compile-schemas.c:491
 msgid ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:503
+#: gio/glib-compile-schemas.c:500
 msgid "<choices> already specified for this key"
 msgstr "<choices> reeds opgegeven voor deze sleutel"
 
-#: gio/glib-compile-schemas.c:515
+#: gio/glib-compile-schemas.c:512
 #, c-format
 msgid "<choices> not allowed for keys of type “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:531
+#: gio/glib-compile-schemas.c:528
 #, c-format
 msgid "<choice value='%s'/> already given"
 msgstr "<choice value='%s'/> reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:546
+#: gio/glib-compile-schemas.c:543
 #, c-format
 msgid "<choices> must contain at least one <choice>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:560
+#: gio/glib-compile-schemas.c:557
 msgid "<aliases> already specified for this key"
 msgstr "<aliases> reeds opgegeven voor deze sleutel"
 
-#: gio/glib-compile-schemas.c:564
+#: gio/glib-compile-schemas.c:561
 msgid ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:583
+#: gio/glib-compile-schemas.c:580
 #, c-format
 msgid ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
 "type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:589
+#: gio/glib-compile-schemas.c:586
 #, c-format
 msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
 msgstr ""
 "<alias value='%s'/> gegeven maar <choice value='%s'/> was reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:597
+#: gio/glib-compile-schemas.c:594
 #, c-format
 msgid "<alias value='%s'/> already specified"
 msgstr "<alias value='%s'/> reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:607
+#: gio/glib-compile-schemas.c:604
 #, c-format
 msgid "alias target “%s” is not in enumerated type"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:608
+#: gio/glib-compile-schemas.c:605
 #, c-format
 msgid "alias target “%s” is not in <choices>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:623
+#: gio/glib-compile-schemas.c:620
 #, c-format
 msgid "<aliases> must contain at least one <alias>"
-msgstr ""
+msgstr "<aliases> moet minstens één <alias> bevatten"
 
-#: gio/glib-compile-schemas.c:798
+#: gio/glib-compile-schemas.c:797
 msgid "Empty names are not permitted"
 msgstr "Lege namen zijn niet toegestaan"
 
-#: gio/glib-compile-schemas.c:808
+#: gio/glib-compile-schemas.c:807
 #, c-format
 msgid "Invalid name “%s”: names must begin with a lowercase letter"
 msgstr "Ongeldige naam ‘%s’: namen moet met een kleine letter beginnen"
 
-#: gio/glib-compile-schemas.c:820
+#: gio/glib-compile-schemas.c:819
 #, c-format
 msgid ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
 "and hyphen (“-”) are permitted"
 msgstr ""
+"Ongeldige naam ‘%s’: ongeldig teken ‘%c’; enkel kleine letters, cijfers en "
+"streepjes (‘-’) zijn toegestaan"
 
-#: gio/glib-compile-schemas.c:829
+#: gio/glib-compile-schemas.c:828
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr ""
+"Ongeldige naam ‘%s’: twee opeenvolgende streepjes (‘--’) zijn niet toegestaan"
 
-#: gio/glib-compile-schemas.c:838
+#: gio/glib-compile-schemas.c:837
 #, c-format
 msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
-msgstr ""
+msgstr "Ongeldige naam ‘%s’: het laatste teken mag geen streepje zijn (‘-’)"
 
-#: gio/glib-compile-schemas.c:846
+#: gio/glib-compile-schemas.c:845
 #, c-format
 msgid "Invalid name “%s”: maximum length is 1024"
 msgstr "Ongeldige naam ‘%s’: maximale lengte is 1024"
 
-#: gio/glib-compile-schemas.c:918
+#: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr "<child name='%s'> reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:944
+#: gio/glib-compile-schemas.c:943
 msgid "Cannot add keys to a “list-of” schema"
-msgstr ""
+msgstr "Kan geen sleutels aan een ‘list-of’-schema toevoegen"
 
-#: gio/glib-compile-schemas.c:955
+#: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr "<key name='%s'> reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:973
+#: gio/glib-compile-schemas.c:972
 #, 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:984
+#: gio/glib-compile-schemas.c:983
 #, c-format
 msgid ""
 "Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1003
+#: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> (nog) niet bepaald."
 
-#: gio/glib-compile-schemas.c:1018
-#, fuzzy, c-format
-#| msgid "Invalid attribute type (string expected)"
+#: gio/glib-compile-schemas.c:1017
+#, c-format
 msgid "Invalid GVariant type string “%s”"
-msgstr "Ongeldig attribuuttype (hoort een tekenreeks te zijn)"
+msgstr "Ongeldige GVariant-tekenreeks ‘%s’"
 
-#: gio/glib-compile-schemas.c:1048
+#: gio/glib-compile-schemas.c:1047
 msgid "<override> given but schema isn’t extending anything"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1061
+#: gio/glib-compile-schemas.c:1060
 #, c-format
 msgid "No <key name='%s'> to override"
 msgstr "Geen <key name='%s'> om te overschrijven"
 
-#: gio/glib-compile-schemas.c:1069
+#: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr "<override name='%s'> reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:1142
+#: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr "<schema id='%s'> reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:1154
+#: gio/glib-compile-schemas.c:1153
 #, c-format
 msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1170
+#: gio/glib-compile-schemas.c:1169
 #, c-format
 msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1178
+#: gio/glib-compile-schemas.c:1177
 #, c-format
 msgid "Cannot be a list of a schema with a path"
 msgstr "Kan geen lijst van een schema met een pad zijn"
 
-#: gio/glib-compile-schemas.c:1188
+#: gio/glib-compile-schemas.c:1187
 #, c-format
 msgid "Cannot extend a schema with a path"
 msgstr "Kan geen schema uitbreiden met een pad"
 
-#: gio/glib-compile-schemas.c:1198
+#: gio/glib-compile-schemas.c:1197
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1208
+#: gio/glib-compile-schemas.c:1207
 #, c-format
 msgid ""
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
 "does not extend “%s”"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1225
+#: gio/glib-compile-schemas.c:1224
 #, c-format
 msgid "A path, if given, must begin and end with a slash"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1232
+#: gio/glib-compile-schemas.c:1231
 #, c-format
 msgid "The path of a list must end with “:/”"
 msgstr "Het pad van een lijst moet eindigen met ‘:/’"
 
-#: gio/glib-compile-schemas.c:1241
+#: gio/glib-compile-schemas.c:1240
 #, c-format
 msgid ""
 "Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
 "desktop/” or “/system/” are deprecated."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1271
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> reeds opgegeven"
 
-#: gio/glib-compile-schemas.c:1421 gio/glib-compile-schemas.c:1437
-#, fuzzy, c-format
-#| msgid "Element <%s> not allowed inside <%s>"
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
+#, c-format
 msgid "Only one <%s> element allowed inside <%s>"
-msgstr "Element <%s> is niet toegestaan binnen <%s>"
+msgstr "Slechts één element <%s> toegestaan binnen <%s>"
 
-#: gio/glib-compile-schemas.c:1519
-#, fuzzy, c-format
+#: gio/glib-compile-schemas.c:1518
+#, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "Element <%s> is niet toegestaan op het hoogste niveau"
 
-#: gio/glib-compile-schemas.c:1537
+#: gio/glib-compile-schemas.c:1536
 msgid "Element <default> is required in <key>"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1627
+#: gio/glib-compile-schemas.c:1626
 #, c-format
 msgid "Text may not appear inside <%s>"
 msgstr "Tekst kan niet in <%s> voorkomen"
 
-#: gio/glib-compile-schemas.c:1695
+#: gio/glib-compile-schemas.c:1694
 #, c-format
 msgid "Warning: undefined reference to <schema id='%s'/>"
 msgstr ""
 
 #. Translators: Do not translate "--strict".
-#: gio/glib-compile-schemas.c:1834 gio/glib-compile-schemas.c:1910
-#: gio/glib-compile-schemas.c:2025
-#, c-format
-msgid "--strict was specified; exiting.\n"
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+msgid "--strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1844
+#: gio/glib-compile-schemas.c:1845
+msgid "This entire file has been ignored."
+msgstr "Dit volledige bestand is genegeerd."
+
+#: gio/glib-compile-schemas.c:1908
+msgid "Ignoring this file."
+msgstr "Dit bestand wordt genegeerd."
+
+#: gio/glib-compile-schemas.c:1963
 #, c-format
-msgid "This entire file has been ignored.\n"
-msgstr "Dit volledige bestand is genegeerd.\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
+msgstr ""
 
-#: gio/glib-compile-schemas.c:1906
+#: gio/glib-compile-schemas.c:1971
 #, c-format
-msgid "Ignoring this file.\n"
-msgstr "Dit bestand wordt genegeerd.\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
+msgstr ""
 
-#: gio/glib-compile-schemas.c:1959
+#: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "No such key “%s” in schema “%s” as specified in override file “%s”"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1965 gio/glib-compile-schemas.c:1990
-#: gio/glib-compile-schemas.c:2050 gio/glib-compile-schemas.c:2079
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "; ignoring override for this key.\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1969 gio/glib-compile-schemas.c:1994
-#: gio/glib-compile-schemas.c:2054 gio/glib-compile-schemas.c:2083
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid " and --strict was specified; exiting.\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:1984
+#: gio/glib-compile-schemas.c:2038
 #, c-format
 msgid ""
-"cannot provide per-desktop overrides for localised key “%s” in schema "
-"“%s” (override file “%s”)"
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2011
+#: gio/glib-compile-schemas.c:2065
 #, c-format
 msgid ""
-"error parsing key “%s” in schema “%s” as specified in override file “%s”: %s."
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2021
+#: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "Ignoring override for this key.\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2040
+#: gio/glib-compile-schemas.c:2101
 #, c-format
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is outside the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2069
+#: gio/glib-compile-schemas.c:2111
 #, c-format
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2140
-msgid "where to store the gschemas.compiled file"
-msgstr "waar het bestand ‘gschemas.compiled’ opgeslagen wordt"
+#: gio/glib-compile-schemas.c:2173
+msgid "Where to store the gschemas.compiled file"
+msgstr "Waar het bestand ‘gschemas.compiled’ opgeslagen wordt"
 
-#: gio/glib-compile-schemas.c:2141
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
 msgstr "Afbreken bij een fout in een schema"
 
-#: gio/glib-compile-schemas.c:2142
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
 msgstr "Het bestand ‘gschema.compiled’ niet schrijven"
 
-#: gio/glib-compile-schemas.c:2143
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
 msgstr ""
 
-#: gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-schemas.c:2205
 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:2193
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr "U dient exact één mapnaam op te geven\n"
-
-#: gio/glib-compile-schemas.c:2235
-#, c-format
-msgid "No schema files found: "
-msgstr "Geen schemabestanden gevonden: "
+#: gio/glib-compile-schemas.c:2226
+msgid "You should give exactly one directory name"
+msgstr "U dient exact één mapnaam op te geven"
 
-#: gio/glib-compile-schemas.c:2238
-#, c-format
-msgid "doing nothing.\n"
-msgstr "niets doen.\n"
+#: gio/glib-compile-schemas.c:2269
+msgid "No schema files found: doing nothing."
+msgstr "Geen schemabestanden gevonden: geen actie uitgevoerd."
 
-#: gio/glib-compile-schemas.c:2241
-#, c-format
-msgid "removed existing output file.\n"
-msgstr ""
+#: gio/glib-compile-schemas.c:2271
+msgid "No schema files found: removed existing output file."
+msgstr "Geen schemabestanden gevonden: bestaand uitvoerbestand verwijderd."
 
-#: gio/glocalfile.c:544 gio/win32/gwinhttpfile.c:420
+#: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
 msgid "Invalid filename %s"
 msgstr "Ongeldige bestandsnaam: %s"
 
-#: gio/glocalfile.c:1011
-#, fuzzy, c-format
-#| msgid "Error getting filesystem info: %s"
+#: gio/glocalfile.c:1013
+#, c-format
 msgid "Error getting filesystem info for %s: %s"
-msgstr "Fout bij het ophalen van informatie over bestandssysteem: %s"
+msgstr "Fout bij het ophalen van informatie over bestandssysteem voor %s: %s"
 
 # de koppeling hiervan bestaat niet/het koppelpunt hiervan bestaat niet
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
 #.
-#: gio/glocalfile.c:1150
-#, fuzzy, c-format
-#| msgid "Containing mount does not exist"
+#: gio/glocalfile.c:1152
+#, c-format
 msgid "Containing mount for file %s not found"
-msgstr "Het koppelpunt hiervan bestaat niet"
+msgstr "Het koppelpunt van bestand %s is niet gevonden"
 
-#: gio/glocalfile.c:1173
-#, fuzzy
-#| msgid "Can't rename root directory"
+#: gio/glocalfile.c:1175
 msgid "Can’t rename root directory"
 msgstr "Kan de root-map niet hernoemen"
 
-#: gio/glocalfile.c:1191 gio/glocalfile.c:1214
-#, fuzzy, c-format
-#| msgid "Error reading file %s: %s"
+#: gio/glocalfile.c:1193 gio/glocalfile.c:1216
+#, c-format
 msgid "Error renaming file %s: %s"
-msgstr "Fout bij lezen van bestand %s: %s"
+msgstr "Fout bij hernoemen van bestand %s: %s"
 
-#: gio/glocalfile.c:1198
+#: gio/glocalfile.c:1200
 msgid "Can’t rename file, filename already exists"
 msgstr "Kan bestand niet hernoemen; bestandsnaam reeds in gebruik"
 
 # ongeldige naam voor bestand/ongeldige bestandsnaam
-#: gio/glocalfile.c:1211 gio/glocalfile.c:2317 gio/glocalfile.c:2345
-#: gio/glocalfile.c:2502 gio/glocalfileoutputstream.c:646
+#: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Ongeldige bestandsnaam"
 
 # lezen/openen
-#: gio/glocalfile.c:1379 gio/glocalfile.c:1394
-#, fuzzy, c-format
-#| msgid "Error opening file '%s': %s"
+#: gio/glocalfile.c:1381 gio/glocalfile.c:1396
+#, c-format
 msgid "Error opening file %s: %s"
-msgstr "Fout bij het openen van bestand ‘%s’: %s"
+msgstr "Fout bij het openen van bestand %s: %s"
 
 # volledig verwijderen/definitief verwijderen/verwijderen
-#: gio/glocalfile.c:1519
-#, fuzzy, c-format
-#| msgid "Error removing file: %s"
+#: gio/glocalfile.c:1521
+#, c-format
 msgid "Error removing file %s: %s"
-msgstr "Fout bij het verwijderen van bestand: %s"
+msgstr "Fout bij het verwijderen van bestand %s: %s"
 
 # naar prullenbak verplaatsen/verwijderen
-#: gio/glocalfile.c:1958
-#, fuzzy, c-format
-#| msgid "Error trashing file: %s"
+#: gio/glocalfile.c:1963
+#, c-format
 msgid "Error trashing file %s: %s"
-msgstr "Fout bij het verplaatsen naar de prullenbak van bestand: %s"
+msgstr "Fout bij het verplaatsen naar de prullenbak van bestand %s: %s"
 
-#: gio/glocalfile.c:1999
+#: gio/glocalfile.c:2004
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "Kan de prullenbakmap %s niet aanmaken: %s"
 
-#: gio/glocalfile.c:2020
-#, fuzzy, c-format
-#| msgid "Unable to find toplevel directory for trash"
+#: gio/glocalfile.c:2025
+#, c-format
 msgid "Unable to find toplevel directory to trash %s"
-msgstr "Kan de bovenliggende map voor de prullenbak niet vinden"
+msgstr "Kan de bovenliggende map voor de prullenbak %s niet vinden"
 
 # (nog) niet mogelijk/niet ondersteund
-#: gio/glocalfile.c:2029
+#: gio/glocalfile.c:2034
 #, fuzzy, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "Verplaatsen tussen aankoppelpunten is niet mogelijk"
 
-#: gio/glocalfile.c:2113 gio/glocalfile.c:2133
-#, fuzzy, c-format
-#| msgid "Unable to find or create trash directory"
+#: gio/glocalfile.c:2118 gio/glocalfile.c:2138
+#, c-format
 msgid "Unable to find or create trash directory for %s"
-msgstr "Kan prullenbakmap niet vinden of aanmaken"
+msgstr "Kan prullenbakmap voor %s niet vinden of aanmaken"
 
-#: gio/glocalfile.c:2168
-#, fuzzy, c-format
-#| msgid "Unable to create trashing info file: %s"
+#: gio/glocalfile.c:2173
+#, c-format
 msgid "Unable to create trashing info file for %s: %s"
-msgstr "Kan prullenbak-informatiebestand ‘%s’ niet aanmaken"
+msgstr "Kan prullenbak-informatiebestand voor %s niet aanmaken: %s"
 
-#: gio/glocalfile.c:2228
+#: gio/glocalfile.c:2233
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr ""
 
-#: gio/glocalfile.c:2232 gio/glocalfile.c:2288
+#: gio/glocalfile.c:2237 gio/glocalfile.c:2293
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Kan het bestand %s niet naar de prullenbak verplaatsen: %s"
 
-#: gio/glocalfile.c:2294
+#: gio/glocalfile.c:2299
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Kan het bestand %s niet naar de prullenbak verplaatsen"
 
-#: gio/glocalfile.c:2320
-#, fuzzy, c-format
-#| msgid "Error creating directory '%s': %s"
+#: gio/glocalfile.c:2325
+#, c-format
 msgid "Error creating directory %s: %s"
-msgstr "Fout bij het aanmaken van map ‘%s’: %s"
+msgstr "Fout bij het aanmaken van map %s: %s"
 
-#: gio/glocalfile.c:2349
+#: gio/glocalfile.c:2354
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Bestandssysteem ondersteunt geen symbolische verwijzingen"
 
-#: gio/glocalfile.c:2352
-#, fuzzy, c-format
-#| msgid "Error making symbolic link: %s"
+#: gio/glocalfile.c:2357
+#, c-format
 msgid "Error making symbolic link %s: %s"
-msgstr "Fout bij het maken van symbolische verwijzing: %s"
+msgstr "Fout bij het maken van symbolische verwijzing %s: %s"
 
-#: gio/glocalfile.c:2358 glib/gfileutils.c:2138
-msgid "Symbolic links not supported"
-msgstr "Symbolische verwijzingen zijn niet mogelijk"
-
-#: gio/glocalfile.c:2413 gio/glocalfile.c:2448 gio/glocalfile.c:2505
-#, fuzzy, c-format
-#| msgid "Error moving file: %s"
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
+#, c-format
 msgid "Error moving file %s: %s"
-msgstr "Fout bij het verplaatsen van bestand: %s"
+msgstr "Fout bij het verplaatsen van bestand %s: %s"
 
-#: gio/glocalfile.c:2436
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Kan map niet over andere map heen verplaatsen"
 
-#: gio/glocalfile.c:2462 gio/glocalfileoutputstream.c:1030
-#: gio/glocalfileoutputstream.c:1044 gio/glocalfileoutputstream.c:1059
-#: gio/glocalfileoutputstream.c:1076 gio/glocalfileoutputstream.c:1090
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Aanmaken van backupbestand is mislukt"
 
-#: gio/glocalfile.c:2481
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Fout bij het verwijderen doelbestand: %s"
 
 # (nog) niet mogelijk/niet ondersteund
-#: gio/glocalfile.c:2495
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Verplaatsen tussen aankoppelpunten is niet mogelijk"
 
-#: gio/glocalfile.c:2686
-#, fuzzy, c-format
-#| msgid "could not get remote address: %s"
+#: gio/glocalfile.c:2673
+#, c-format
 msgid "Could not determine the disk usage of %s: %s"
-msgstr "kon adres op afstand niet verkrijgen: %s"
+msgstr "Kon het schijfgebruik van %s niet verkrijgen: %s"
 
 # technotalk
-#: gio/glocalfileinfo.c:745
+#: gio/glocalfileinfo.c:760
 msgid "Attribute value must be non-NULL"
 msgstr "Attribuutwaarde moet niet-NULL zijn"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:767
 msgid "Invalid attribute type (string expected)"
 msgstr "Ongeldig attribuuttype (hoort een tekenreeks te zijn)"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:774
 msgid "Invalid extended attribute name"
 msgstr "Ongeldige uitgebreide attribuutnaam"
 
-#: gio/glocalfileinfo.c:799
-#, fuzzy, c-format
-#| msgid "Error setting extended attribute '%s': %s"
+#: gio/glocalfileinfo.c:814
+#, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Fout bij het instellen van uitgebreid attribuut ‘%s’: %s"
 
-#: gio/glocalfileinfo.c:1625
+#: gio/glocalfileinfo.c:1650
 msgid " (invalid encoding)"
 msgstr " (ongeldige codering)"
 
 # lezen/openen
-#: gio/glocalfileinfo.c:1789 gio/glocalfileoutputstream.c:908
-#, fuzzy, c-format
-#| msgid "Error when getting information for file '%s': %s"
+#: gio/glocalfileinfo.c:1814 gio/glocalfileoutputstream.c:909
+#, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Fout bij het verkrijgen van informatie over het bestand ‘%s’: %s"
 
-#: gio/glocalfileinfo.c:2059
+#: gio/glocalfileinfo.c:2084
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Fout bij het verkrijgen van informatie over het bestanddescriptor %s"
 
-#: gio/glocalfileinfo.c:2104
+#: gio/glocalfileinfo.c:2129
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Ongeldig attribuuttype (hoort een uint32 te zijn)"
 
-#: gio/glocalfileinfo.c:2122
+#: gio/glocalfileinfo.c:2147
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Ongeldig attribuuttype (hoort een uint64 te zijn)"
 
-#: gio/glocalfileinfo.c:2141 gio/glocalfileinfo.c:2160
+#: gio/glocalfileinfo.c:2166 gio/glocalfileinfo.c:2185
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Ongeldig attribuuttype (hoort een byte-tekenreeks te zijn)"
 
-#: gio/glocalfileinfo.c:2207
+#: gio/glocalfileinfo.c:2232
 msgid "Cannot set permissions on symlinks"
 msgstr "Kan geen toegangsrechten instellen voor symbolische verwijzing: %s"
 
-#: gio/glocalfileinfo.c:2223
+#: gio/glocalfileinfo.c:2248
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Fout bij instellen toegangsrechten: %s"
 
-#: gio/glocalfileinfo.c:2274
+#: gio/glocalfileinfo.c:2299
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Fout bij instellen eigenaar: %s"
 
 # technotalk
 # symlink/symbolische verwijzing
-#: gio/glocalfileinfo.c:2297
+#: gio/glocalfileinfo.c:2322
 msgid "symlink must be non-NULL"
 msgstr "symbolische verwijzing moet niet-NULL zijn"
 
-#: gio/glocalfileinfo.c:2307 gio/glocalfileinfo.c:2326
-#: gio/glocalfileinfo.c:2337
+#: gio/glocalfileinfo.c:2332 gio/glocalfileinfo.c:2351
+#: gio/glocalfileinfo.c:2362
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Fout bij instellen symbolische verwijzing: %s"
 
-#: gio/glocalfileinfo.c:2316
+#: gio/glocalfileinfo.c:2341
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Fout bij instellen symbolische verwijzing: bestand is geen symbolische "
 "verwijzing"
 
-#: gio/glocalfileinfo.c:2442
+#: gio/glocalfileinfo.c:2413
+#, c-format
+msgid "Extra nanoseconds %d for UNIX timestamp %lld are negative"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2422
+#, c-format
+msgid "Extra nanoseconds %d for UNIX timestamp %lld reach 1 second"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2432
+#, c-format
+msgid "UNIX timestamp %lld does not fit into 64 bits"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2443
+#, c-format
+msgid "UNIX timestamp %lld is outside of the range supported by Windows"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2507
+#, fuzzy, c-format
+#| msgid "Value “%s” cannot be interpreted as a number."
+msgid "File name “%s” cannot be converted to UTF-16"
+msgstr "De waarde ‘%s’ kan niet geïnterpreteerd worden als een getal."
+
+#: gio/glocalfileinfo.c:2526
+#, fuzzy, c-format
+#| msgid "Value “%s” cannot be interpreted as a number."
+msgid "File “%s” cannot be opened: Windows Error %lu"
+msgstr "De waarde ‘%s’ kan niet geïnterpreteerd worden als een getal."
+
+# lezen/openen
+#: gio/glocalfileinfo.c:2539
+#, fuzzy, c-format
+#| msgid "Error when getting information for file “%s”: %s"
+msgid "Error setting modification or access time for file “%s”: %lu"
+msgstr "Fout bij het verkrijgen van informatie over het bestand ‘%s’: %s"
+
+#: gio/glocalfileinfo.c:2640
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr ""
 
 # technotalk
-#: gio/glocalfileinfo.c:2465
+#: gio/glocalfileinfo.c:2663
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux-context moet niet-NULL zijn"
 
-#: gio/glocalfileinfo.c:2480
+#: gio/glocalfileinfo.c:2678
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Fout bij instellen SELinux-context: %s"
 
 # geactiveerd/aangezet
 # systeem/computer
-#: gio/glocalfileinfo.c:2487
+#: gio/glocalfileinfo.c:2685
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux is niet geactiveerd op dit systeem"
 
-#: gio/glocalfileinfo.c:2579
+#: gio/glocalfileinfo.c:2777
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Instellen van attribuut %s is niet mogelijk"
 
-#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:791
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Fout bij het lezen van bestand: %s"
 
 #: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
 #: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
-#: gio/glocalfileoutputstream.c:553 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Fout bij het doorzoeken van bestand: %s"
 
-#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:343
-#: gio/glocalfileoutputstream.c:437
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Fout bij het sluiten van bestand: %s"
 
-#: gio/glocalfilemonitor.c:856
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Kon de standaard ‘file monitor type’ niet vinden"
 
-#: gio/glocalfileoutputstream.c:208 gio/glocalfileoutputstream.c:286
-#: gio/glocalfileoutputstream.c:323 gio/glocalfileoutputstream.c:812
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Fout bij het schrijven naar bestand: %s"
 
-#: gio/glocalfileoutputstream.c:370
+#: gio/glocalfileoutputstream.c:371
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Fout bij verwijderen van oude verwijzing naar reservekopie: %s"
 
-#: gio/glocalfileoutputstream.c:384 gio/glocalfileoutputstream.c:397
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Fout bij het aanmaken van reservekopie: %s"
 
-#: gio/glocalfileoutputstream.c:415
+#: gio/glocalfileoutputstream.c:416
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Fout bij het hernoemen van tijdelijk bestand: %s"
 
-#: gio/glocalfileoutputstream.c:599 gio/glocalfileoutputstream.c:1159
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Fout bij het afkappen bestand: %s"
 
 # lezen/openen
-#: gio/glocalfileoutputstream.c:652 gio/glocalfileoutputstream.c:890
-#: gio/glocalfileoutputstream.c:1140 gio/gsubprocess.c:380
-#, fuzzy, c-format
-#| msgid "Error opening file '%s': %s"
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
+#, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Fout bij het openen van bestand ‘%s’: %s"
 
-#: gio/glocalfileoutputstream.c:921
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
 msgstr "Doelbestand is geen map"
 
-#: gio/glocalfileoutputstream.c:926
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
 msgstr "Doelbestand is geen gewoon bestand"
 
-#: gio/glocalfileoutputstream.c:938
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
 msgstr "Het bestand is door een ander programma gewijzigd"
 
-#: gio/glocalfileoutputstream.c:1124
+#: gio/glocalfileoutputstream.c:1125
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Fout bij verwijderen van oude bestand: %s"
@@ -3253,19 +3254,15 @@ msgstr "‘Seek’-aanvraag ligt na het eindpunt van de stroom"
 #. * message for mount objects that
 #. * don't implement unmount.
 #: gio/gmount.c:399
-#, fuzzy
-#| msgid "mount doesn't implement \"unmount\""
 msgid "mount doesn’t implement “unmount”"
-msgstr "mount heeft geen ondersteuning voor ontkoppelen (unmount)"
+msgstr "mount heeft geen ondersteuning voor ‘unmount’ (ontkoppelen)"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
 #: gio/gmount.c:475
-#, fuzzy
-#| msgid "mount doesn't implement \"eject\""
 msgid "mount doesn’t implement “eject”"
-msgstr "mount heeft geen ondersteuning voor uitwerpen (eject)"
+msgstr "mount heeft geen ondersteuning voor ‘eject’ (uitwerpen)"
 
 # ontkoppelen is op deze koppeling niet mogelijk/niet geimplementeerd
 # ontkoppelen is bij deze koppeling/bij dit aangekoppelde object
@@ -3274,8 +3271,6 @@ msgstr "mount heeft geen ondersteuning voor uitwerpen (eject)"
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
 #: gio/gmount.c:553
-#, fuzzy
-#| msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
 msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
 msgstr ""
 "mount heeft geen ondersteuning voor ‘unmount’ of ‘unmount_with_operation’"
@@ -3284,8 +3279,6 @@ msgstr ""
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
 #: gio/gmount.c:638
-#, fuzzy
-#| msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
 msgid "mount doesn’t implement “eject” or “eject_with_operation”"
 msgstr "mount heeft geen ondersteuning voor ‘eject’ of ‘eject_with_operation’"
 
@@ -3293,41 +3286,34 @@ msgstr "mount heeft geen ondersteuning voor ‘eject’ of ‘eject_with_operati
 #. * message for mount objects that
 #. * don't implement remount.
 #: gio/gmount.c:726
-#, fuzzy
-#| msgid "mount doesn't implement \"remount\""
 msgid "mount doesn’t implement “remount”"
-msgstr "mount heeft geen ondersteuning voor remount (opnieuw koppelen)"
+msgstr "mount heeft geen ondersteuning voor ‘remount’ (opnieuw koppelen)"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
 #: gio/gmount.c:808
-#, fuzzy
-#| msgid "mount doesn't implement content type guessing"
 msgid "mount doesn’t implement content type guessing"
-msgstr "mount heeft geen ondersteuning voor inhoudstype raden"
+msgstr "mount heeft geen ondersteuning voor raden van inhoudstype"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
 #: gio/gmount.c:895
-#, fuzzy
-#| msgid "mount doesn't implement synchronous content type guessing"
 msgid "mount doesn’t implement synchronous content type guessing"
 msgstr ""
-"mount heeft geen ondersteuning voor inhoudstype raden op synchrone wijze"
+"mount heeft geen ondersteuning voor raden inhoudstype op synchrone wijze"
 
-#: gio/gnetworkaddress.c:384
-#, fuzzy, c-format
-#| msgid "Hostname '%s' contains '[' but not ']'"
+#: gio/gnetworkaddress.c:415
+#, c-format
 msgid "Hostname “%s” contains “[” but not “]”"
-msgstr "Host-naam ‘%s’ bevat ‘[’ maar geen ‘]’"
+msgstr "Hostnaam ‘%s’ bevat ‘[’ maar geen ‘]’"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Netwerk onbereikbaar"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Host onbereikbaar"
 
@@ -3345,22 +3331,20 @@ msgstr ""
 msgid "Could not get network status: "
 msgstr "Kon geen netwerkstatus verkrijgen: "
 
-#: gio/gnetworkmonitornm.c:313
+#: gio/gnetworkmonitornm.c:348
 #, c-format
 msgid "NetworkManager not running"
 msgstr "Netwerkbeheer draait niet"
 
-#: gio/gnetworkmonitornm.c:324
+#: gio/gnetworkmonitornm.c:359
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "Geïnstalleerde versie van Netwerkbeheer is te oud"
 
 # uitvoerdatastroom begrijpt de opdracht 'scrijven' niet
 #: gio/goutputstream.c:232 gio/goutputstream.c:775
-#, fuzzy
-#| msgid "Output stream doesn't implement write"
 msgid "Output stream doesn’t implement write"
-msgstr "schrijven wordt niet ondersteund door de uitvoerdatastroom"
+msgstr "Schrijven wordt niet ondersteund door de uitvoerdatastroom"
 
 #: gio/goutputstream.c:472 gio/goutputstream.c:1533
 #, c-format
@@ -3371,19 +3355,19 @@ msgstr ""
 msgid "Source stream is already closed"
 msgstr "Brongegevensstroom is al gesloten"
 
-#: gio/gresolver.c:344 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:160
-#, fuzzy, c-format
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#, c-format
 msgid "Error resolving “%s”: %s"
-msgstr "Fout bij lezen van bestand ‘%s’: %s"
+msgstr "Fout bij oplossen van ‘%s’: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:389 gio/gresolver.c:547
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s niet geïmplementeerd"
 
 # ongeldige naam voor bestand/ongeldige bestandsnaam
-#: gio/gresolver.c:915 gio/gresolver.c:967
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Ongeldig domein"
 
@@ -3391,9 +3375,9 @@ msgstr "Ongeldig domein"
 #: gio/gresource.c:1087 gio/gresource.c:1159 gio/gresource.c:1232
 #: gio/gresource.c:1313 gio/gresourcefile.c:476 gio/gresourcefile.c:599
 #: gio/gresourcefile.c:736
-#, fuzzy, c-format
+#, c-format
 msgid "The resource at “%s” does not exist"
-msgstr "Doelbestand is geen map"
+msgstr "De bron op ‘%s’ bestaat niet"
 
 #: gio/gresource.c:830
 #, fuzzy, c-format
@@ -3401,37 +3385,35 @@ msgid "The resource at “%s” failed to decompress"
 msgstr "Doelbestand is geen map"
 
 #: gio/gresourcefile.c:732
-#, fuzzy, c-format
+#, c-format
 msgid "The resource at “%s” is not a directory"
-msgstr "Doelbestand is geen map"
+msgstr "De bron op ‘%s’ is geen map"
 
 # huh?
 #: gio/gresourcefile.c:940
-#, fuzzy
-#| msgid "Input stream doesn't implement seek"
 msgid "Input stream doesn’t implement seek"
-msgstr "Invoerdatastroom ondersteunt ‘lezen’ (seek) niet"
+msgstr "Invoerdatastroom ondersteunt ‘seek’ (lezen) niet"
 
-#: gio/gresource-tool.c:501
+#: gio/gresource-tool.c:499
 msgid "List sections containing resources in an elf FILE"
 msgstr ""
 
-#: gio/gresource-tool.c:507
+#: gio/gresource-tool.c:505
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources"
 msgstr ""
 
-#: gio/gresource-tool.c:510 gio/gresource-tool.c:520
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
 msgid "FILE [PATH]"
 msgstr "BESTAND [PAD]"
 
-#: gio/gresource-tool.c:511 gio/gresource-tool.c:521 gio/gresource-tool.c:528
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
 msgid "SECTION"
 msgstr "SECTIE"
 
-#: gio/gresource-tool.c:516
+#: gio/gresource-tool.c:514
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3439,15 +3421,15 @@ msgid ""
 "Details include the section, size and compression"
 msgstr ""
 
-#: gio/gresource-tool.c:526
+#: gio/gresource-tool.c:524
 msgid "Extract a resource file to stdout"
 msgstr "Bronbestand uitpakken naar stdout"
 
-#: gio/gresource-tool.c:527
+#: gio/gresource-tool.c:525
 msgid "FILE PATH"
 msgstr "BESTANDSPAD"
 
-#: gio/gresource-tool.c:541
+#: gio/gresource-tool.c:539
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3463,7 +3445,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gresource-tool.c:555
+#: gio/gresource-tool.c:553
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3478,102 +3460,100 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gresource-tool.c:562
+#: gio/gresource-tool.c:560
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr ""
 
-#: gio/gresource-tool.c:566 gio/gsettings-tool.c:703
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr ""
 
-#: gio/gresource-tool.c:572
+#: gio/gresource-tool.c:570
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr ""
 
-#: gio/gresource-tool.c:575
+#: gio/gresource-tool.c:573
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
 msgstr ""
 
-#: gio/gresource-tool.c:579
+#: gio/gresource-tool.c:577
 msgid "[PATH]"
 msgstr "[PAD]"
 
-#: gio/gresource-tool.c:581
+#: gio/gresource-tool.c:579
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr ""
 
-#: gio/gresource-tool.c:582
+#: gio/gresource-tool.c:580
 msgid "PATH"
 msgstr "PAD"
 
-#: gio/gresource-tool.c:584
+#: gio/gresource-tool.c:582
 msgid "  PATH      A resource path\n"
 msgstr "  PAD      Een bronpad\n"
 
-#: gio/gsettings-tool.c:51 gio/gsettings-tool.c:72 gio/gsettings-tool.c:908
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Geen schema ‘%s’\n"
 
-#: gio/gsettings-tool.c:57
-#, fuzzy, c-format
-#| msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+#: gio/gsettings-tool.c:55
+#, c-format
 msgid "Schema “%s” is not relocatable (path must not be specified)\n"
 msgstr "Schema ‘%s’ is niet verplaatsbaar (pad mag niet opgegeven worden)\n"
 
-#: gio/gsettings-tool.c:78
-#, fuzzy, c-format
-#| msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+#: gio/gsettings-tool.c:76
+#, c-format
 msgid "Schema “%s” is relocatable (path must be specified)\n"
-msgstr "Schema ‘%s’ is niet verplaatsbaar (pad mag niet opgegeven worden)\n"
+msgstr "Schema ‘%s’ is verplaatsbaar (pad moet opgegeven worden)\n"
 
-#: gio/gsettings-tool.c:92
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "Leeg pad gegeven.\n"
 
-#: gio/gsettings-tool.c:98
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
 msgstr "Pad moet beginnen met een schuine streep (/)\n"
 
-#: gio/gsettings-tool.c:104
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
 msgstr "Pad moet eindigen met een schuine streep (/)\n"
 
-#: gio/gsettings-tool.c:110
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Pad mag geen twee opeenvolgende schuine strepen bevatten (//)\n"
 
-#: gio/gsettings-tool.c:538
+#: gio/gsettings-tool.c:536
 msgid "The provided value is outside of the valid range\n"
 msgstr "De opgegeven waarde valt buiten het toegestane bereik\n"
 
-#: gio/gsettings-tool.c:545
+#: gio/gsettings-tool.c:543
 msgid "The key is not writable\n"
 msgstr "De sleutel is niet schrijfbaar\n"
 
-#: gio/gsettings-tool.c:581
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Geïnstalleerde (onverplaatsbare) schema’s oplijsten"
 
-#: gio/gsettings-tool.c:587
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
 msgstr "Geïnstalleerde verplaatsbare schema’s oplijsten"
 
-#: gio/gsettings-tool.c:593
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
 msgstr "Sleutels in SCHEMA oplijsten"
 
-#: gio/gsettings-tool.c:594 gio/gsettings-tool.c:600 gio/gsettings-tool.c:643
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PAD]"
 
-#: gio/gsettings-tool.c:599
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
 msgstr "Kinderen van SCHEMA oplijsten"
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3581,48 +3561,48 @@ msgstr ""
 "Sleutels en waarden recursief oplijsten\n"
 "Indien er geen SCHEMA gegeven is, alle sleutels oplijsten\n"
 
-#: gio/gsettings-tool.c:607
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PAD]]"
 
-#: gio/gsettings-tool.c:612
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
 msgstr "De waarde van KEY opvragen"
 
-#: gio/gsettings-tool.c:613 gio/gsettings-tool.c:619 gio/gsettings-tool.c:625
-#: gio/gsettings-tool.c:637 gio/gsettings-tool.c:649
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PAD] KEY"
 
-#: gio/gsettings-tool.c:618
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
 msgstr "Bereik van geldige waarden voor SLEUTEL opvragen"
 
-#: gio/gsettings-tool.c:624
+#: gio/gsettings-tool.c:622
 msgid "Query the description for KEY"
 msgstr "Beschrijving voor SLEUTEL opvragen"
 
-#: gio/gsettings-tool.c:630
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
 msgstr "Waarde van SLEUTEL instellen op WAARDE"
 
-#: gio/gsettings-tool.c:631
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PAD] SLEUTEL WAARDE"
 
-#: gio/gsettings-tool.c:636
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
 msgstr "SLEUTEL instellen op standaardwaarde"
 
-#: gio/gsettings-tool.c:642
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Alle sleutels in SCHEMA instellen op standaardwaarden"
 
-#: gio/gsettings-tool.c:648
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
 msgstr "Controleren of SLEUTEL schrijfbaar is"
 
-#: gio/gsettings-tool.c:654
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3632,11 +3612,11 @@ msgstr ""
 "Indien er geen SLEUTEL gegeven is, alle sleutels in SCHEMA controleren.\n"
 "Gebruik ^C om controle te stoppen.\n"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PAD] [SLEUTEL]"
 
-#: gio/gsettings-tool.c:669
+#: gio/gsettings-tool.c:667
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3662,7 +3642,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:693
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3672,11 +3652,11 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:697
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMAMAP Een map om te zoeken naar bijkomende schema’s\n"
 
-#: gio/gsettings-tool.c:707
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3684,15 +3664,15 @@ msgstr ""
 "  SCHEMA    De naam van het schema\n"
 "  PATH      Het pad, voor verplaatsbare schema’s\n"
 
-#: gio/gsettings-tool.c:712
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  SLEUTEL       De (optionele) sleutel in het schema\n"
 
-#: gio/gsettings-tool.c:716
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
 msgstr "  SLEUTEL       De sleutel in het schema\n"
 
-#: gio/gsettings-tool.c:720
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
 msgstr "  WAARDE     De in te stellen waarde\n"
 
@@ -3701,246 +3681,237 @@ msgstr "  WAARDE     De in te stellen waarde\n"
 # Openen van converteerder van '%s' naar '%s' mislukt
 # Openen van het programma voor het omzetten van s naar s is mislukt
 # (tekenreeks komt verderop nog een keer voor)
-#: gio/gsettings-tool.c:775
-#, fuzzy, c-format
-#| msgid "Could not open converter from '%s' to '%s'"
+#: gio/gsettings-tool.c:773
+#, c-format
 msgid "Could not load schemas from %s: %s\n"
-msgstr ""
-"Kon het conversieprogramma voor het omzetten van ‘%s’ naar ‘%s’ niet openen"
+msgstr "Kon schema’s niet laden uit %s: %s\n"
 
-#: gio/gsettings-tool.c:787
+#: gio/gsettings-tool.c:785
 msgid "No schemas installed\n"
 msgstr "Geen schema’s geïnstalleerd\n"
 
-#: gio/gsettings-tool.c:866
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
 msgstr "Lege schemanaam gegeven\n"
 
-#: gio/gsettings-tool.c:921
+#: gio/gsettings-tool.c:919
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Geen sleutel ‘%s’\n"
 
-#: gio/gsocket.c:373
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Ongeldige socket, niet geïnitialiseerd"
 
-#: gio/gsocket.c:380
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ongeldige socket, initialisatie mislukt door: %s"
 
 # bronstroom/datastroom van de bron
-#: gio/gsocket.c:388
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Socket is al gesloten"
 
-#: gio/gsocket.c:403 gio/gsocket.c:3027 gio/gsocket.c:4244 gio/gsocket.c:4302
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Time-out bij socket I/O"
 
-#: gio/gsocket.c:538
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "GSocket maken van fd: %s"
 
-#: gio/gsocket.c:567 gio/gsocket.c:621 gio/gsocket.c:628
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Kan socket niet aanmaken: %s"
 
-#: gio/gsocket.c:621
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Onbekende familie opgegeven"
 
-#: gio/gsocket.c:628
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Onbekend protocol opgegeven"
 
-#: gio/gsocket.c:1119
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 
-#: gio/gsocket.c:1136
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 
-#: gio/gsocket.c:1943
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "kon lokaal adres niet verkrijgen: %s"
 
-#: gio/gsocket.c:1989
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "kon adres op afstand niet verkrijgen: %s"
 
-#: gio/gsocket.c:2055
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "kon niet luisteren: %s"
 
-#: gio/gsocket.c:2157
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Fout bij het koppelen aan adres: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Fout bij het koppelen aan adres %s: %s"
 
-#: gio/gsocket.c:2215 gio/gsocket.c:2252 gio/gsocket.c:2362 gio/gsocket.c:2387
-#: gio/gsocket.c:2460 gio/gsocket.c:2518 gio/gsocket.c:2536
-#, fuzzy, c-format
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
+#, c-format
 msgid "Error joining multicast group: %s"
-msgstr "Fout bij opstarten van het programma: %s"
+msgstr "Fout bij toetreden tot multicastgroep: %s"
 
-#: gio/gsocket.c:2216 gio/gsocket.c:2253 gio/gsocket.c:2363 gio/gsocket.c:2388
-#: gio/gsocket.c:2461 gio/gsocket.c:2519 gio/gsocket.c:2537
-#, fuzzy, c-format
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
+#, c-format
 msgid "Error leaving multicast group: %s"
-msgstr "Fout bij opstarten van het programma: %s"
+msgstr "Fout bij verlaten van multicastgroep: %s"
 
-#: gio/gsocket.c:2217
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2364
-#, fuzzy
-#| msgid "Unsupported socket address"
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
-msgstr "Niet ondersteund socket-adres"
+msgstr "Niet-ondersteunde socketfamilie"
 
-#: gio/gsocket.c:2389
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr ""
 
-#: gio/gsocket.c:2407 gio/gsocket.c:2436 gio/gsocket.c:2486
-#, c-format
-msgid "Interface not found: %s"
-msgstr "Interface niet gevonden: %s"
-
-#: gio/gsocket.c:2423
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Interfacenaam is te lang"
 
-#: gio/gsocket.c:2462
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Interface niet gevonden: %s"
+
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2520
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2729
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fout bij accepteren van verbinding: %s"
 
-#: gio/gsocket.c:2855
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Verbinding bezig"
 
-#: gio/gsocket.c:2906
-#, fuzzy
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
-msgstr "Kan fout niet verkrijgen: %s"
+msgstr "Kan lopende fout niet verkrijgen: "
 
 # volledig verwijderen/definitief verwijderen/verwijderen
-#: gio/gsocket.c:3092
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fout bij ontvangen van gegevens: %s"
 
 # openen/lezen
-#: gio/gsocket.c:3289
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fout bij versturen van gegevens: %s"
 
-#: gio/gsocket.c:3476
-#, fuzzy, c-format
+#: gio/gsocket.c:3631
+#, c-format
 msgid "Unable to shutdown socket: %s"
-msgstr "Kan socket niet aanmaken: %s"
+msgstr "Kan socket niet afsluiten: %s"
 
-#: gio/gsocket.c:3557
-#, fuzzy, c-format
+#: gio/gsocket.c:3712
+#, c-format
 msgid "Error closing socket: %s"
-msgstr "Fout bij het sluiten van bestand: %s"
+msgstr "Fout bij het sluiten van socket: %s"
 
-#: gio/gsocket.c:4237
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr ""
 
 # openen/lezen
-#: gio/gsocket.c:4612 gio/gsocket.c:4756 gio/gsocket.c:4841 gio/gsocket.c:5021
-#: gio/gsocket.c:5059
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fout bij versturen van bericht: %s"
 
-#: gio/gsocket.c:4783
-#, fuzzy
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage wordt niet ondersteund op windows"
 
 # volledig verwijderen/definitief verwijderen/verwijderen
-#: gio/gsocket.c:5248 gio/gsocket.c:5321 gio/gsocket.c:5548
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fout bij ontvangen van bericht: %s"
 
-#: gio/gsocket.c:5820
+#: gio/gsocket.c:5995
 #, fuzzy, c-format
 #| msgid "Unable to create socket: %s"
 msgid "Unable to read socket credentials: %s"
 msgstr "Kan socket niet aanmaken: %s"
 
-#: gio/gsocket.c:5829
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 
-#: gio/gsocketclient.c:181
+#: gio/gsocketclient.c:182
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr ""
 
 # Openen van converteerder van '%s' naar '%s' mislukt: %s
-#: gio/gsocketclient.c:195
+#: gio/gsocketclient.c:196
 #, c-format
 msgid "Could not connect to %s: "
 msgstr "Kon niet verbinden met %s: "
 
-#: gio/gsocketclient.c:197
+#: gio/gsocketclient.c:198
 msgid "Could not connect: "
 msgstr "Kon niet verbinden: "
 
-#: gio/gsocketclient.c:1032 gio/gsocketclient.c:1714
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Onbekende fout bij verbinden"
 
-#: gio/gsocketclient.c:1086 gio/gsocketclient.c:1626
-#, fuzzy
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
-msgstr "Proxy-protocol ‘%s’ wordt niet ondersteund."
+msgstr "Proxyen via een verbinding anders dan TCP wordt niet ondersteund."
 
-#: gio/gsocketclient.c:1115 gio/gsocketclient.c:1652
-#, fuzzy, c-format
-#| msgid "Proxy protocol '%s' is not supported."
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
+#, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxy-protocol ‘%s’ wordt niet ondersteund."
 
-#: gio/gsocketlistener.c:225
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr "Listener is al gesloten"
 
-#: gio/gsocketlistener.c:271
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "Toegevoegde socket is gesloten"
 
 #: gio/gsocks4aproxy.c:118
-#, fuzzy, c-format
-#| msgid "SOCKSv4 does not support IPv6 address '%s'"
+#, c-format
 msgid "SOCKSv4 does not support IPv6 address “%s”"
 msgstr "SOCKSv4 ondersteunt IPv6-adres ‘%s’ niet"
 
@@ -3949,10 +3920,9 @@ msgid "Username is too long for SOCKSv4 protocol"
 msgstr "Gebruikersnaam is te lang voor het SOCKSv4-protocol"
 
 #: gio/gsocks4aproxy.c:153
-#, fuzzy, c-format
-#| msgid "Hostname '%s' is too long for SOCKSv4 protocol"
+#, c-format
 msgid "Hostname “%s” is too long for SOCKSv4 protocol"
-msgstr "Hostname ‘%s’ is te lang voor het SOCKSv4-protocol"
+msgstr "Hostnaam ‘%s’ is te lang voor het SOCKSv4-protocol"
 
 #: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
@@ -3988,10 +3958,9 @@ msgstr ""
 "SOCKSv5-authenticatie mislukt wegens onjuiste gebruikersnaam of wachtwoord."
 
 #: gio/gsocks5proxy.c:286
-#, fuzzy, c-format
-#| msgid "Hostname '%s' is too long for SOCKSv5 protocol"
+#, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
-msgstr "Hostname ‘%s’ is te lang voor het SOCKSv5-protocol"
+msgstr "Hostnaam ‘%s’ is te lang voor het SOCKSv5-protocol"
 
 #: gio/gsocks5proxy.c:348
 msgid "The SOCKSv5 proxy server uses unknown address type."
@@ -4018,8 +3987,6 @@ msgid "Connection refused through SOCKSv5 proxy."
 msgstr "Verbinding geweigerd via SOCKSv5-server."
 
 #: gio/gsocks5proxy.c:386
-#, fuzzy
-#| msgid "SOCKSv5 proxy does not support 'connect' command."
 msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "SOCKSv5-proxy ondersteunt de ‘connect’-opdracht niet."
 
@@ -4032,8 +3999,7 @@ msgid "Unknown SOCKSv5 proxy error."
 msgstr "Onbekende SOCKSv5-proxyfout."
 
 #: gio/gthemedicon.c:595
-#, fuzzy, c-format
-#| msgid "Can't handle version %d of GThemedIcon encoding"
+#, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
 msgstr "Kan versie %d van GThemedIcon-codering niet verwerken"
 
@@ -4041,38 +4007,35 @@ msgstr "Kan versie %d van GThemedIcon-codering niet verwerken"
 msgid "No valid addresses were found"
 msgstr "Geen geldige adressen gevonden"
 
-#: gio/gthreadedresolver.c:317
+#: gio/gthreadedresolver.c:334
 #, fuzzy, c-format
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Fout bij lezen van bestand ‘%s’: %s"
 
-#: gio/gthreadedresolver.c:653 gio/gthreadedresolver.c:732
-#: gio/gthreadedresolver.c:830 gio/gthreadedresolver.c:880
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr ""
 
-#: gio/gthreadedresolver.c:658 gio/gthreadedresolver.c:835
-#, fuzzy, c-format
-#| msgid "Temporarily unable to resolve '%s'"
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
+#, c-format
 msgid "Temporarily unable to resolve “%s”"
-msgstr "Kan tijdelijk geen resolve doen voor ‘%s’"
+msgstr "Kan ‘%s’ tijdelijk niet oplossen"
 
-#: gio/gthreadedresolver.c:663 gio/gthreadedresolver.c:840
-#: gio/gthreadedresolver.c:948
-#, fuzzy, c-format
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
+#, c-format
 msgid "Error resolving “%s”"
-msgstr "Fout bij het verwijderen van bestand: %s"
+msgstr "Fout bij oplossen van ‘%s’"
 
 #: gio/gtlscertificate.c:243
-#, fuzzy
 msgid "No PEM-encoded private key found"
-msgstr "Geen PEM-gecodeerd certificaat gevonden"
+msgstr "Geen PEM-gecodeerde privésleutel gevonden"
 
 #: gio/gtlscertificate.c:253
-#, fuzzy
 msgid "Cannot decrypt PEM-encoded private key"
-msgstr "Kon PEM-gecodeerde privésleutel niet verwerken"
+msgstr "Kan PEM-gecodeerde privésleutel niet ontsleutelen"
 
 #: gio/gtlscertificate.c:264
 msgid "Could not parse PEM-encoded private key"
@@ -4106,22 +4069,20 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Het ingevoerde wachtwoord is onjuist."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:563
-#, fuzzy, c-format
-#| msgid "Expecting 1 control message, got %d"
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "1 control-bericht verwacht, maar %d gekregen"
 msgstr[1] "1 control-bericht verwacht, maar %d gekregen"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:575
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 #, fuzzy
 msgid "Unexpected type of ancillary data"
 msgstr "Voortijdig einde aan gegevensstroom"
 
 #: gio/gunixconnection.c:200
-#, fuzzy, c-format
-#| msgid "Expecting one fd, but got %d\n"
+#, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Eén fd verwacht, maar %d ontvangen\n"
@@ -4131,56 +4092,56 @@ msgstr[1] "Eén fd verwacht, maar %d ontvangen\n"
 msgid "Received invalid fd"
 msgstr "Ongeldige fd ontvangen"
 
-#: gio/gunixconnection.c:355
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
 msgstr "Fout bij het sturen van gebruikersreferenties: "
 
-#: gio/gunixconnection.c:504
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Fout bij controleren of SO_PASSCRED is ingeschakeld voor de socket: %s"
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Fout bij inschakelen van SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:549
+#: gio/gunixconnection.c:565
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Een enkele byte werd verwacht voor het lezen van gebruikersreferenties, maar "
 "geen enkele byte werd gelezen"
 
-#: gio/gunixconnection.c:589
-#, fuzzy, c-format
+#: gio/gunixconnection.c:605
+#, c-format
 msgid "Not expecting control message, but got %d"
-msgstr "1 control-bericht verwacht, maar %d gekregen"
+msgstr "Geen control-bericht, maar %d gekregen"
 
-#: gio/gunixconnection.c:614
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Fout bij het uitschakelen van SO_PASSCRED: %s"
 
-#: gio/gunixinputstream.c:372 gio/gunixinputstream.c:393
+#: gio/gunixinputstream.c:362 gio/gunixinputstream.c:383
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "Fout bij lezen van bestandsdescriptor: %s"
 
-#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:534
+#: gio/gunixinputstream.c:416 gio/gunixoutputstream.c:525
 #: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Fout bij sluiten van bestandsdescriptor: %s"
 
 # hoofdmap van bestandssysteem
-#: gio/gunixmounts.c:2650 gio/gunixmounts.c:2703
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "Hoofdmap van bestandssysteem"
 
-#: gio/gunixoutputstream.c:371 gio/gunixoutputstream.c:391
-#: gio/gunixoutputstream.c:478 gio/gunixoutputstream.c:498
-#: gio/gunixoutputstream.c:675
+#: gio/gunixoutputstream.c:362 gio/gunixoutputstream.c:382
+#: gio/gunixoutputstream.c:469 gio/gunixoutputstream.c:489
+#: gio/gunixoutputstream.c:635
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Fout bij schrijven van bestandsdescriptor: %s"
@@ -4190,20 +4151,15 @@ msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 
 #: gio/gvolume.c:438
-#, fuzzy
-#| msgid "volume doesn't implement eject"
 msgid "volume doesn’t implement eject"
-msgstr "volumen begrijpt de opdracht ‘uitwerpen’ niet"
+msgstr "volume begrijpt de opdracht ‘uitwerpen’ niet"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
 #: gio/gvolume.c:515
-#, fuzzy
-#| msgid "volume doesn't implement eject or eject_with_operation"
 msgid "volume doesn’t implement eject or eject_with_operation"
-msgstr ""
-"volumen begrijpt de opdracht ‘uitwerpen’ of ‘eject_with_operation’ niet"
+msgstr "volume begrijpt de opdracht ‘uitwerpen’ of ‘eject_with_operation’ niet"
 
 #: gio/gwin32inputstream.c:185
 #, c-format
@@ -4261,180 +4217,161 @@ msgstr "Een dbus-service uitvoeren"
 msgid "Wrong args\n"
 msgstr "Verkeerde argumenten\n"
 
-#: glib/gbookmarkfile.c:754
-#, fuzzy, c-format
-#| msgid "Unexpected attribute '%s' for element '%s'"
+#: glib/gbookmarkfile.c:756
+#, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Onverwacht attribuut ‘%s’ voor element ‘%s’"
 
 # aangetroffen hier mooier dan gevonden
-#: glib/gbookmarkfile.c:765 glib/gbookmarkfile.c:836 glib/gbookmarkfile.c:846
-#: glib/gbookmarkfile.c:955
-#, fuzzy, c-format
-#| msgid "Attribute '%s' of element '%s' not found"
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
+#, c-format
 msgid "Attribute “%s” of element “%s” not found"
-msgstr "Attribuut ‘%s’ van element ‘%s’ is niet aangetroffen"
+msgstr "Attribuut ‘%s’ van element ‘%s’ niet gevonden"
 
-#: glib/gbookmarkfile.c:1164 glib/gbookmarkfile.c:1229
-#: glib/gbookmarkfile.c:1293 glib/gbookmarkfile.c:1303
-#, fuzzy, c-format
-#| msgid "Unexpected tag '%s', tag '%s' expected"
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
+#, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Onverwachte tag ‘%s’, tag ‘%s’ werd verwacht"
 
-#: glib/gbookmarkfile.c:1189 glib/gbookmarkfile.c:1203
-#: glib/gbookmarkfile.c:1271 glib/gbookmarkfile.c:1317
-#, fuzzy, c-format
-#| msgid "Unexpected tag '%s' inside '%s'"
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
+#, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Onverwachte tag ‘%s’ binnen ‘%s’"
 
-#: glib/gbookmarkfile.c:1813
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr ""
+
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Er is geen geldig bladwijzerbestand gevonden in de datamappen"
 
-#: glib/gbookmarkfile.c:2014
-#, fuzzy, c-format
-#| msgid "A bookmark for URI '%s' already exists"
+#: glib/gbookmarkfile.c:2032
+#, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Er bestaat al een bladwijzer voor de URI ‘%s’"
 
-#: glib/gbookmarkfile.c:2060 glib/gbookmarkfile.c:2218
-#: glib/gbookmarkfile.c:2303 glib/gbookmarkfile.c:2383
-#: glib/gbookmarkfile.c:2468 glib/gbookmarkfile.c:2551
-#: glib/gbookmarkfile.c:2629 glib/gbookmarkfile.c:2708
-#: glib/gbookmarkfile.c:2750 glib/gbookmarkfile.c:2847
-#: glib/gbookmarkfile.c:2968 glib/gbookmarkfile.c:3158
-#: glib/gbookmarkfile.c:3234 glib/gbookmarkfile.c:3402
-#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3580
-#: glib/gbookmarkfile.c:3699
-#, fuzzy, c-format
-#| msgid "No bookmark found for URI '%s'"
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
+#, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Geen bladwijzer gevonden voor URI ‘%s’"
 
-#: glib/gbookmarkfile.c:2392
-#, fuzzy, c-format
-#| msgid "No MIME type defined in the bookmark for URI '%s'"
+#: glib/gbookmarkfile.c:2410
+#, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Er is geen MIME-type gedefinieerd in de bladwijzer voor URI ‘%s’"
 
-#: glib/gbookmarkfile.c:2477
-#, fuzzy, c-format
-#| msgid "No private flag has been defined in bookmark for URI '%s'"
+#: glib/gbookmarkfile.c:2495
+#, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Er is geen privé-vlag gedefinieerd in de bladwijzer voor URI ‘%s’"
 
-#: glib/gbookmarkfile.c:2856
-#, fuzzy, c-format
-#| msgid "No groups set in bookmark for URI '%s'"
+#: glib/gbookmarkfile.c:2874
+#, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Er zijn geen groepen ingesteld in de bladwijzer voor URI ‘%s’"
 
-#: glib/gbookmarkfile.c:3255 glib/gbookmarkfile.c:3412
-#, fuzzy, c-format
-#| msgid "No application with name '%s' registered a bookmark for '%s'"
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
+#, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
-"Er is geen programma genaamd ‘%s’ die een bladwijzer geregistreerd heeft "
+"Er is geen programma genaamd ‘%s’ dat een bladwijzer geregistreerd heeft "
 "voor ‘%s’"
 
-#: glib/gbookmarkfile.c:3435
-#, fuzzy, c-format
-#| msgid "Failed to expand exec line '%s' with URI '%s'"
+#: glib/gbookmarkfile.c:3453
+#, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Exec-regel ‘%s’ kon niet worden verwerkt met URI ‘%s’"
 
-#: glib/gconvert.c:474
-#, fuzzy
-#| msgid "Invalid sequence in conversion input"
+#: glib/gconvert.c:466
 msgid "Unrepresentable character in conversion input"
-msgstr "Ongeldige reeks in conversieinvoer"
+msgstr "Teken in conversieinvoer kan niet weergegeven worden"
 
-#: glib/gconvert.c:501 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Onvolledige tekenreeks aan het eind van de invoer"
 
 # wordt hier niet character set ipv codeset bedoeld?
-#: glib/gconvert.c:770
-#, fuzzy, c-format
-#| msgid "Cannot convert fallback '%s' to codeset '%s'"
+#: glib/gconvert.c:762
+#, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
-msgstr "Kan vanaf codeverzameling ‘%s’ niet terugvallen op ‘%s’"
+msgstr "Kan terugval ‘%s’ niet converteren naar codeset ‘%s’"
 
-#: glib/gconvert.c:942
-#, fuzzy
-#| msgid "Invalid byte sequence in conversion input"
+#: glib/gconvert.c:934
 msgid "Embedded NUL byte in conversion input"
-msgstr "Ongeldige bytereeks in conversie-invoer"
+msgstr "NUL-byte ingebed in conversie-invoer"
 
-#: glib/gconvert.c:963
-#, fuzzy
-#| msgid "Invalid byte sequence in conversion input"
+#: glib/gconvert.c:955
 msgid "Embedded NUL byte in conversion output"
-msgstr "Ongeldige bytereeks in conversie-invoer"
+msgstr "NUL-byte ingebed in conversie-uitvoer"
 
-#: glib/gconvert.c:1648
-#, fuzzy, c-format
-#| msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
+#: glib/gconvert.c:1640
+#, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr ""
 "De URI ‘%s’ is geen absolute URI die gebruik maakt van het schema ‘bestand’"
 
-#: glib/gconvert.c:1658
-#, fuzzy, c-format
-#| msgid "The local file URI '%s' may not include a '#'"
+#: glib/gconvert.c:1650
+#, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "De lokale bestands-URI ‘%s’ mag het teken ‘#’ niet bevatten"
 
-#: glib/gconvert.c:1675
-#, fuzzy, c-format
-#| msgid "The URI '%s' is invalid"
+#: glib/gconvert.c:1667
+#, c-format
 msgid "The URI “%s” is invalid"
 msgstr "De URI ‘%s’ is ongeldig"
 
-#: glib/gconvert.c:1687
-#, fuzzy, c-format
-#| msgid "The hostname of the URI '%s' is invalid"
+#: glib/gconvert.c:1679
+#, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "De hostnaam van de URI ‘%s’ is ongeldig"
 
 # controle-tekens/ontsnappingstekens/sturingstekens
 # betere vertaling?
-#: glib/gconvert.c:1703
-#, fuzzy, c-format
-#| msgid "The URI '%s' contains invalidly escaped characters"
+#: glib/gconvert.c:1695
+#, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "De URI ‘%s’ bevat tekens met een foutief controleteken"
 
-#: glib/gconvert.c:1775
-#, fuzzy, c-format
-#| msgid "The pathname '%s' is not an absolute path"
+#: glib/gconvert.c:1767
+#, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr "Het pad ‘%s’ is geen absoluut pad"
 
 # bijv. ‘za 3 mrt 2018 22:30:00’
 #. Translators: this is the preferred format for expressing the date and the time
-#: glib/gdatetime.c:214
+#: glib/gdatetime.c:220
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%a %e %b %Y %H:%M:%S"
 
 #. Translators: this is the preferred format for expressing the date
-#: glib/gdatetime.c:217
+#: glib/gdatetime.c:223
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%d-%m-%Y"
 
 #. Translators: this is the preferred format for expressing the time
-#: glib/gdatetime.c:220
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: glib/gdatetime.c:223
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%I:%M:%S %p"
@@ -4455,62 +4392,62 @@ msgstr "%I:%M:%S %p"
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
 #.
-#: glib/gdatetime.c:262
+#: glib/gdatetime.c:268
 msgctxt "full month name"
 msgid "January"
 msgstr "januari"
 
-#: glib/gdatetime.c:264
+#: glib/gdatetime.c:270
 msgctxt "full month name"
 msgid "February"
 msgstr "februari"
 
-#: glib/gdatetime.c:266
+#: glib/gdatetime.c:272
 msgctxt "full month name"
 msgid "March"
 msgstr "maart"
 
-#: glib/gdatetime.c:268
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "April"
 msgstr "april"
 
-#: glib/gdatetime.c:270
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "May"
 msgstr "mei"
 
-#: glib/gdatetime.c:272
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "June"
 msgstr "juni"
 
-#: glib/gdatetime.c:274
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "July"
 msgstr "juli"
 
-#: glib/gdatetime.c:276
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "August"
 msgstr "augustus"
 
-#: glib/gdatetime.c:278
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "September"
 msgstr "september"
 
-#: glib/gdatetime.c:280
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "October"
 msgstr "oktober"
 
-#: glib/gdatetime.c:282
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "November"
 msgstr "november"
 
-#: glib/gdatetime.c:284
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "December"
 msgstr "december"
@@ -4532,132 +4469,132 @@ msgstr "december"
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
 #.
-#: glib/gdatetime.c:316
+#: glib/gdatetime.c:322
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "jan"
 
-#: glib/gdatetime.c:318
+#: glib/gdatetime.c:324
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "feb"
 
-#: glib/gdatetime.c:320
+#: glib/gdatetime.c:326
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "mrt"
 
-#: glib/gdatetime.c:322
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "apr"
 
-#: glib/gdatetime.c:324
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "mei"
 
-#: glib/gdatetime.c:326
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "jun"
 
-#: glib/gdatetime.c:328
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "jul"
 
-#: glib/gdatetime.c:330
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "aug"
 
-#: glib/gdatetime.c:332
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "sep"
 
-#: glib/gdatetime.c:334
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "okt"
 
-#: glib/gdatetime.c:336
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "nov"
 
-#: glib/gdatetime.c:338
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "dec"
 
-#: glib/gdatetime.c:353
+#: glib/gdatetime.c:359
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "maandag"
 
-#: glib/gdatetime.c:355
+#: glib/gdatetime.c:361
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "dinsdag"
 
-#: glib/gdatetime.c:357
+#: glib/gdatetime.c:363
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "woensdag"
 
-#: glib/gdatetime.c:359
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "donderdag"
 
-#: glib/gdatetime.c:361
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "vrijdag"
 
-#: glib/gdatetime.c:363
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "zaterdag"
 
-#: glib/gdatetime.c:365
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "zondag"
 
-#: glib/gdatetime.c:380
+#: glib/gdatetime.c:386
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "ma"
 
-#: glib/gdatetime.c:382
+#: glib/gdatetime.c:388
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "di"
 
-#: glib/gdatetime.c:384
+#: glib/gdatetime.c:390
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "wo"
 
-#: glib/gdatetime.c:386
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "do"
 
-#: glib/gdatetime.c:388
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "vr"
 
-#: glib/gdatetime.c:390
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "za"
 
-#: glib/gdatetime.c:392
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "zo"
@@ -4679,62 +4616,62 @@ msgstr "zo"
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
 #.
-#: glib/gdatetime.c:456
+#: glib/gdatetime.c:462
 msgctxt "full month name with day"
 msgid "January"
 msgstr "januari"
 
-#: glib/gdatetime.c:458
+#: glib/gdatetime.c:464
 msgctxt "full month name with day"
 msgid "February"
 msgstr "februari"
 
-#: glib/gdatetime.c:460
+#: glib/gdatetime.c:466
 msgctxt "full month name with day"
 msgid "March"
 msgstr "maart"
 
-#: glib/gdatetime.c:462
+#: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "April"
 msgstr "april"
 
-#: glib/gdatetime.c:464
+#: glib/gdatetime.c:470
 msgctxt "full month name with day"
 msgid "May"
 msgstr "mei"
 
-#: glib/gdatetime.c:466
+#: glib/gdatetime.c:472
 msgctxt "full month name with day"
 msgid "June"
 msgstr "juni"
 
-#: glib/gdatetime.c:468
+#: glib/gdatetime.c:474
 msgctxt "full month name with day"
 msgid "July"
 msgstr "juli"
 
-#: glib/gdatetime.c:470
+#: glib/gdatetime.c:476
 msgctxt "full month name with day"
 msgid "August"
 msgstr "augustus"
 
-#: glib/gdatetime.c:472
+#: glib/gdatetime.c:478
 msgctxt "full month name with day"
 msgid "September"
 msgstr "september"
 
-#: glib/gdatetime.c:474
+#: glib/gdatetime.c:480
 msgctxt "full month name with day"
 msgid "October"
 msgstr "oktober"
 
-#: glib/gdatetime.c:476
+#: glib/gdatetime.c:482
 msgctxt "full month name with day"
 msgid "November"
 msgstr "november"
 
-#: glib/gdatetime.c:478
+#: glib/gdatetime.c:484
 msgctxt "full month name with day"
 msgid "December"
 msgstr "december"
@@ -4756,210 +4693,189 @@ msgstr "december"
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
 #.
-#: glib/gdatetime.c:543
+#: glib/gdatetime.c:549
 msgctxt "abbreviated month name with day"
 msgid "Jan"
 msgstr "jan"
 
-#: glib/gdatetime.c:545
+#: glib/gdatetime.c:551
 msgctxt "abbreviated month name with day"
 msgid "Feb"
 msgstr "feb"
 
-#: glib/gdatetime.c:547
+#: glib/gdatetime.c:553
 msgctxt "abbreviated month name with day"
 msgid "Mar"
 msgstr "mrt"
 
-#: glib/gdatetime.c:549
+#: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Apr"
 msgstr "apr"
 
-#: glib/gdatetime.c:551
+#: glib/gdatetime.c:557
 msgctxt "abbreviated month name with day"
 msgid "May"
 msgstr "mei"
 
-#: glib/gdatetime.c:553
+#: glib/gdatetime.c:559
 msgctxt "abbreviated month name with day"
 msgid "Jun"
 msgstr "jun"
 
-#: glib/gdatetime.c:555
+#: glib/gdatetime.c:561
 msgctxt "abbreviated month name with day"
 msgid "Jul"
 msgstr "jul"
 
-#: glib/gdatetime.c:557
+#: glib/gdatetime.c:563
 msgctxt "abbreviated month name with day"
 msgid "Aug"
 msgstr "aug"
 
-#: glib/gdatetime.c:559
+#: glib/gdatetime.c:565
 msgctxt "abbreviated month name with day"
 msgid "Sep"
 msgstr "sep"
 
-#: glib/gdatetime.c:561
+#: glib/gdatetime.c:567
 msgctxt "abbreviated month name with day"
 msgid "Oct"
 msgstr "okt"
 
-#: glib/gdatetime.c:563
+#: glib/gdatetime.c:569
 msgctxt "abbreviated month name with day"
 msgid "Nov"
 msgstr "nov"
 
-#: glib/gdatetime.c:565
+#: glib/gdatetime.c:571
 msgctxt "abbreviated month name with day"
 msgid "Dec"
 msgstr "dec"
 
 #. Translators: 'before midday' indicator
-#: glib/gdatetime.c:582
+#: glib/gdatetime.c:588
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "AM"
 
 #. Translators: 'after midday' indicator
-#: glib/gdatetime.c:585
+#: glib/gdatetime.c:591
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "PM"
 
 #: glib/gdir.c:154
-#, fuzzy, c-format
-#| msgid "Error opening directory '%s': %s"
+#, c-format
 msgid "Error opening directory “%s”: %s"
 msgstr "Fout bij openen van map ‘%s’: %s"
 
 # Allocatie van %lu bytes om bestand "%s" te lezen is mislukt<
-#: glib/gfileutils.c:716 glib/gfileutils.c:808
-#, fuzzy, c-format
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
+#, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] ""
 "Kon geen %lu byte geheugenruimte reserveren om bestand ‘%s’ te lezen"
 msgstr[1] ""
-"Kon geen %lu byte geheugenruimte reserveren om bestand ‘%s’ te lezen"
+"Kon geen %lu bytes geheugenruimte reserveren om bestand ‘%s’ te lezen"
 
-#: glib/gfileutils.c:733
-#, fuzzy, c-format
-#| msgid "Error reading file %s: %s"
+#: glib/gfileutils.c:750
+#, c-format
 msgid "Error reading file “%s”: %s"
-msgstr "Fout bij lezen van bestand %s: %s"
+msgstr "Fout bij lezen van bestand ‘%s’: %s"
 
-#: glib/gfileutils.c:769
-#, fuzzy, c-format
-#| msgid "File \"%s\" is too large"
+#: glib/gfileutils.c:786
+#, c-format
 msgid "File “%s” is too large"
 msgstr "Bestand ‘%s’ is te groot"
 
-#: glib/gfileutils.c:833
-#, fuzzy, c-format
-#| msgid "Failed to read from file '%s': %s"
+#: glib/gfileutils.c:850
+#, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Lezen uit bestand ‘%s’ is mislukt: %s"
 
-#: glib/gfileutils.c:881 glib/gfileutils.c:953
-#, fuzzy, c-format
-#| msgid "Failed to open file '%s': %s"
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
+#, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Openen van bestand ‘%s’ is mislukt: %s"
 
-#: glib/gfileutils.c:893
-#, fuzzy, c-format
-#| msgid "Failed to get attributes of file '%s': fstat() failed: %s"
+#: glib/gfileutils.c:910
+#, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "Opvragen gegevens van bestand ‘%s’ is mislukt: fstat() is mislukt: %s"
 
-#: glib/gfileutils.c:923
-#, fuzzy, c-format
-#| msgid "Failed to open file '%s': fdopen() failed: %s"
+#: glib/gfileutils.c:940
+#, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Openen van bestand ‘%s’ is mislukt: fdopen() is mislukt: %s"
 
-#: glib/gfileutils.c:1022
-#, fuzzy, c-format
-#| msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
+#: glib/gfileutils.c:1039
+#, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr ""
 "Hernoemen van bestand ‘%s’ naar ‘%s’ is mislukt: g_rename() is mislukt: %s"
 
-#: glib/gfileutils.c:1057 glib/gfileutils.c:1575
-#, fuzzy, c-format
-#| msgid "Failed to create file '%s': %s"
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
+#, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Aanmaken van bestand ‘%s’ is mislukt: %s"
 
-#: glib/gfileutils.c:1084
-#, fuzzy, c-format
-#| msgid "Failed to write file '%s': fwrite() failed: %s"
+#: glib/gfileutils.c:1101
+#, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
-msgstr "Schrijven van bestand ‘%s’ is mislukt: fwrite() is mislukt: %s"
+msgstr "Schrijven van bestand ‘%s’ is mislukt: write() is mislukt: %s"
 
-#: glib/gfileutils.c:1127
-#, fuzzy, c-format
-#| msgid "Failed to write file '%s': fsync() failed: %s"
+#: glib/gfileutils.c:1144
+#, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Schrijven van bestand ‘%s’ is mislukt: fsync() is mislukt: %s"
 
 # bestaand bestand is een beetje dubbelop
-#: glib/gfileutils.c:1262
-#, fuzzy, c-format
-#| msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
+#: glib/gfileutils.c:1279
+#, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "Bestand ‘%s’ kon niet worden verwijderd: g_unlink() is mislukt: %s"
 
-#: glib/gfileutils.c:1541
-#, fuzzy, c-format
-#| msgid "Template '%s' invalid, should not contain a '%s'"
+#: glib/gfileutils.c:1558
+#, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
-msgstr "Sjabloon ‘%s’ is ongeldig, het zou geen ‘%s’ moeten bevatten"
+msgstr "Sjabloon ‘%s’ is ongeldig, het zou geen ‘%s’ mogen bevatten"
 
-#: glib/gfileutils.c:1554
-#, fuzzy, c-format
-#| msgid "Template '%s' doesn't contain XXXXXX"
+#: glib/gfileutils.c:1571
+#, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Sjabloon ‘%s’ bevat geen XXXXXX"
 
-#: glib/gfileutils.c:2116
-#, fuzzy, c-format
-#| msgid "Failed to read the symbolic link '%s': %s"
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
+#, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Lezen van symbolische verwijzing ‘%s’ is mislukt: %s"
 
 # Openen van converteerder van '%s' naar '%s' mislukt: %s
-#: glib/giochannel.c:1389
-#, fuzzy, c-format
-#| msgid "Could not open converter from '%s' to '%s': %s"
+#: glib/giochannel.c:1396
+#, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
-msgstr ""
-"Kon het conversieprogramma voor omzetten van ‘%s’ naar ‘%s’ niet openen: %s"
+msgstr "Converteerder van ‘%s’ naar ‘%s’ kon niet geopend worden: %s"
 
-#: glib/giochannel.c:1734
-#, fuzzy
-#| msgid "Can't do a raw read in g_io_channel_read_line_string"
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
-"Een kale ('raw') leesoperatie is niet mogelijk in "
+"Een kale (‘raw’) leesoperatie is niet mogelijk in "
 "g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1781 glib/giochannel.c:2039 glib/giochannel.c:2126
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "Restant aan ongeconverteerde data in de leesbuffer"
 
-#: glib/giochannel.c:1862 glib/giochannel.c:1939
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "Kanaal eindigt in een gedeeltelijk teken"
 
-#: glib/giochannel.c:1925
-#, fuzzy
-#| msgid "Can't do a raw read in g_io_channel_read_to_end"
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr ""
-"Een kale ('raw') leesoperatie is niet mogelijk in g_io_channel_read_to_end"
+"Een kale (‘raw’) leesoperatie is niet mogelijk in g_io_channel_read_to_end"
 
 #: glib/gkeyfile.c:789
 msgid "Valid key file could not be found in search dirs"
@@ -4970,15 +4886,12 @@ msgid "Not a regular file"
 msgstr "Geen gewoon bestand"
 
 #: glib/gkeyfile.c:1275
-#, fuzzy, c-format
-#| msgid ""
-#| "Key file contains line '%s' which is not a key-value pair, group, or "
-#| "comment"
+#, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
-"Sleutelbestand bevat regel ‘%s’ wat geen sleutelwaarde-paar, groep of "
-"opmerking is."
+"Sleutelbestand bevat regel ‘%s’, wat geen sleutelwaarde-paar, groep of "
+"opmerking is"
 
 #: glib/gkeyfile.c:1332
 #, c-format
@@ -4995,100 +4908,85 @@ msgid "Invalid key name: %s"
 msgstr "Ongeldige sleutelnaam: %s"
 
 #: glib/gkeyfile.c:1407
-#, fuzzy, c-format
-#| msgid "Key file contains unsupported encoding '%s'"
+#, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Het sleutelbestand bevat de niet-ondersteunde tekenset ‘%s’"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
-#, fuzzy, c-format
-#| msgid "Key file does not have group '%s'"
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
+#, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Het sleutelbestand bevat geen groep ‘%s’"
 
 #: glib/gkeyfile.c:1778
-#, fuzzy, c-format
-#| msgid "Key file does not have key '%s' in group '%s'"
+#, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Het sleutelbestand bevat geen sleutel ‘%s’ in groep ‘%s’"
 
 #: glib/gkeyfile.c:1940 glib/gkeyfile.c:2056
-#, fuzzy, c-format
-#| msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
+#, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
-"Het sleutelbestand bevat sleutel ‘%s’ met waarde ‘%s’ wat geen UTF-8 is"
+"Het sleutelbestand bevat sleutel ‘%s’ met waarde ‘%s’, wat geen UTF-8 is"
 
 #: glib/gkeyfile.c:1960 glib/gkeyfile.c:2076 glib/gkeyfile.c:2518
-#, fuzzy, c-format
-#| msgid ""
-#| "Key file contains key '%s' which has a value that cannot be interpreted."
+#, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
-"Het sleutelbestand bevat sleutel ‘%s’ die een waarde heeft die niet "
+"Het sleutelbestand bevat sleutel ‘%s’, die een waarde heeft die niet "
 "geïnterpreteerd kan worden."
 
 #: glib/gkeyfile.c:2736 glib/gkeyfile.c:3105
-#, fuzzy, c-format
-#| msgid ""
-#| "Key file contains key '%s' in group '%s' which has a value that cannot be "
-#| "interpreted."
+#, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 msgstr ""
-"Het sleutelbestand bevat sleutel ‘%s’ in groep ‘%s’ die een waarde heeft die "
-"niet geïnterpreteerd kan worden."
+"Het sleutelbestand bevat sleutel ‘%s’ in groep ‘%s’, die een waarde heeft "
+"die niet geïnterpreteerd kan worden."
 
 #: glib/gkeyfile.c:2814 glib/gkeyfile.c:2891
-#, fuzzy, c-format
-#| msgid "Key '%s' in group '%s' has value '%s' where %s was expected"
+#, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Sleutel ‘%s’ in groep ‘%s’ heeft de waarde ‘%s’ waar %s werd verwacht"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr ""
 "Het sleutelbestand bevat een ontsnappingsteken aan het einde van een regel"
 
-#: glib/gkeyfile.c:4305
-#, fuzzy, c-format
-#| msgid "Key file contains invalid escape sequence '%s'"
+#: glib/gkeyfile.c:4306
+#, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Het sleutelbestand bevat ongeldige ontsnappingstekens ‘%s’"
 
-#: glib/gkeyfile.c:4449
-#, fuzzy, c-format
-#| msgid "Value '%s' cannot be interpreted as a number."
+#: glib/gkeyfile.c:4450
+#, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "De waarde ‘%s’ kan niet geïnterpreteerd worden als een getal."
 
-#: glib/gkeyfile.c:4463
-#, fuzzy, c-format
-#| msgid "Integer value '%s' out of range"
+#: glib/gkeyfile.c:4464
+#, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Het geheel getal ‘%s’ valt buiten het bereik"
 
-#: glib/gkeyfile.c:4496
-#, fuzzy, c-format
-#| msgid "Value '%s' cannot be interpreted as a float number."
+#: glib/gkeyfile.c:4497
+#, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 "De waarde ‘%s’ kan niet geïnterpreteerd worden als een getal van het type "
 "float."
 
-#: glib/gkeyfile.c:4535
-#, fuzzy, c-format
-#| msgid "Value '%s' cannot be interpreted as a boolean."
+#: glib/gkeyfile.c:4536
+#, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
-msgstr "De waarde ‘%s’ kan niet geïnterpreteerd worden als een boolese."
+msgstr ""
+"De waarde ‘%s’ kan niet geïnterpreteerd worden als een booleaans waarde."
 
 #: glib/gmappedfile.c:129
-#, fuzzy, c-format
-#| msgid "Failed to get attributes of file '%s%s%s%s': fstat() failed: %s"
+#, c-format
 msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
 msgstr ""
 "Ophalen van eigenschappen van bestand ‘%s%s%s%s’ is mislukt: fstat() is "
@@ -5100,8 +4998,7 @@ msgid "Failed to map %s%s%s%s: mmap() failed: %s"
 msgstr "Toewijzen van %s%s%s%s is mislukt: mmap() is mislukt: %s"
 
 #: glib/gmappedfile.c:262
-#, fuzzy, c-format
-#| msgid "Failed to open file '%s': open() failed: %s"
+#, c-format
 msgid "Failed to open file “%s”: open() failed: %s"
 msgstr "Openen van bestand ‘%s’ is mislukt: open() is mislukt: %s"
 
@@ -5111,18 +5008,17 @@ msgid "Error on line %d char %d: "
 msgstr "Fout in regel %d teken %d: "
 
 #: glib/gmarkup.c:462 glib/gmarkup.c:545
-#, fuzzy, c-format
-#| msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
+#, c-format
 msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
-msgstr "Ongeldige UTF-8-gecodeerde tekst - niet geldig ‘%s’"
+msgstr "Ongeldige UTF-8-gecodeerde tekst  niet geldig ‘%s’"
 
 #: glib/gmarkup.c:473
-#, fuzzy, c-format
+#, c-format
 msgid "“%s” is not a valid name"
 msgstr "‘%s’ is geen geldige naam"
 
 #: glib/gmarkup.c:489
-#, fuzzy, c-format
+#, c-format
 msgid "“%s” is not a valid name: “%c”"
 msgstr "‘%s’ is geen geldige naam: ‘%c’"
 
@@ -5132,10 +5028,7 @@ msgid "Error on line %d: %s"
 msgstr "Fout in regel %d: %s"
 
 #: glib/gmarkup.c:690
-#, fuzzy, 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"
+#, 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"
@@ -5144,76 +5037,56 @@ msgstr ""
 "zou moeten zijn (bijvoorbeeld &#234;) - misschien is het getal te groot"
 
 #: glib/gmarkup.c:702
-#, fuzzy
-#| 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;"
 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 ""
 "Tekenreferentie eindigt niet op een puntkomma; waarschijnlijk heeft u een "
-"ampersand-teken gebruikt zonder daarmee een entiteit te willen beginnen - "
+"ampersand-teken gebruikt zonder daarmee een entiteit te willen beginnen  "
 "gebruik in plaats daarvan &amp;"
 
 # niet geoorloofd/toegestaan/ongeoorloofd
 #: glib/gmarkup.c:728
-#, fuzzy, c-format
-#| msgid "Character reference '%-.*s' does not encode a permitted character"
+#, c-format
 msgid "Character reference “%-.*s” does not encode a permitted character"
-msgstr "Tekenreferentie ‘%-.*s’ staat niet voor een geoorloofd teken"
+msgstr "Tekenreferentie ‘%-.*s’ staat niet voor een toegestaan teken"
 
 #: glib/gmarkup.c:766
-#, fuzzy
-#| 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 ""
-"Lege entiteit ‘&;’ gevonden;  geldige entiteiten zijn: &amp; &quot; &lt; "
-"&gt; &apos;"
+"Lege entiteit ‘&;’ gevonden; geldige entiteiten zijn: &amp; &quot; &lt; &gt; "
+"&apos;"
 
 #: glib/gmarkup.c:774
-#, fuzzy, c-format
-#| msgid "Entity name '%-.*s' is not known"
+#, c-format
 msgid "Entity name “%-.*s” is not known"
 msgstr "Entiteitnaam ‘%-.*s’ is onbekend"
 
 #: glib/gmarkup.c:779
-#, fuzzy
-#| 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;"
 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 ""
 "De entiteit eindigde niet op een puntkomma; waarschijnlijk heeft u een "
-"ampersand-teken gebruikt zonder daarmee een entiteit te willen beginnen - "
+"ampersand-teken gebruikt zonder daarmee een entiteit te willen beginnen  "
 "gebruik in plaats daarvan &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Het document moet beginnen met een element (bijv. <book>)"
 
-#: glib/gmarkup.c:1227
-#, fuzzy, c-format
-#| msgid ""
-#| "'%s' is not a valid character following a '<' character; it may not begin "
-#| "an element name"
+#: glib/gmarkup.c:1233
+#, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 msgstr ""
 "‘%s’ is geen geldig teken na ‘<’; een elementnaam mag er niet mee beginnen"
 
-#: glib/gmarkup.c:1270
-#, fuzzy, c-format
-#| msgid ""
-#| "Odd character '%s', expected a '>' character to end the empty-element tag "
-#| "'%s'"
+#: glib/gmarkup.c:1276
+#, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
 "“%s”"
@@ -5221,23 +5094,21 @@ msgstr ""
 "Onverwacht teken ‘%s’, er werd een ‘>’-teken verwacht om de ledig-element-"
 "tag ‘%s’ af te sluiten"
 
-#: glib/gmarkup.c:1352
-#, fuzzy, c-format
-#| msgid ""
-#| "Odd character '%s', expected a '=' after attribute name '%s' of element "
-#| "'%s'"
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Te veel attributen in element ‘%s’"
+
+#: glib/gmarkup.c:1366
+#, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr ""
 "Onverwacht teken ‘%s’, er werd een ‘=’ verwacht na de attribuutnaam ‘%s’ van "
 "element ‘%s’"
 
-#: glib/gmarkup.c:1394
-#, fuzzy, 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"
+#: glib/gmarkup.c:1408
+#, 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 "
@@ -5247,11 +5118,8 @@ msgstr ""
 "start-tag van element ‘%s’ af te sluiten, of eventueel een attribuut; "
 "misschien heeft u ongeldige tekens gebruikt in een attribuutnaam"
 
-#: glib/gmarkup.c:1439
-#, fuzzy, c-format
-#| msgid ""
-#| "Odd character '%s', expected an open quote mark after the equals sign "
-#| "when giving value for attribute '%s' of element '%s'"
+#: glib/gmarkup.c:1453
+#, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
 "giving value for attribute “%s” of element “%s”"
@@ -5259,64 +5127,51 @@ msgstr ""
 "Onverwacht teken ‘%s’, er werd een ‘\"’-teken verwacht na het ‘=’-teken bij "
 "de attribuutwaarde van ‘%s’ in element ‘%s’"
 
-#: glib/gmarkup.c:1573
-#, fuzzy, c-format
-#| msgid ""
-#| "'%s' is not a valid character following the characters '</'; '%s' may not "
-#| "begin an element name"
+#: glib/gmarkup.c:1587
+#, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
 msgstr ""
 "‘%s’ is geen geldig teken na ‘</’; een elementnaam mag niet met ‘%s’ beginnen"
 
-#: glib/gmarkup.c:1611
-#, fuzzy, c-format
-#| msgid ""
-#| "'%s' is not a valid character following the close element name '%s'; the "
-#| "allowed character is '>'"
+#: glib/gmarkup.c:1625
+#, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
 "allowed character is “>”"
 msgstr ""
 "‘%s’ is geen geldig teken na de elementnaam ‘%s’ in de afluitingstag; het "
-"teken dat toegestaan is is ‘>’ "
+"teken dat toegestaan is is ‘>’"
 
-#: glib/gmarkup.c:1623
-#, fuzzy, c-format
-#| msgid "Element '%s' was closed, no element is currently open"
+#: glib/gmarkup.c:1637
+#, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Element ‘%s’ is afgesloten, er is nu geen enkel element open"
 
-#: glib/gmarkup.c:1632
-#, fuzzy, c-format
-#| msgid "Element '%s' was closed, but the currently open element is '%s'"
+#: glib/gmarkup.c:1646
+#, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Element ‘%s’ is afgesloten, maar op dit moment is element ‘%s’ open"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Het document was leeg of bevatte slechts lege ruimte"
 
-#: glib/gmarkup.c:1799
-#, fuzzy
-#| msgid "Document ended unexpectedly just after an open angle bracket '<'"
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
-msgstr "Het document eindigde onverwacht na een openingshaakje: ‘<’"
+msgstr "Het document eindigde onverwacht na een openingshaakje ‘<’"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
-#, fuzzy, c-format
-#| msgid ""
-#| "Document ended unexpectedly with elements still open - '%s' was the last "
-#| "element opened"
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
+#, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 msgstr ""
-"Het document eindigde onverwacht met niet-afgesloten elementen - ‘%s’ is het "
-"laatstgeopende element"
+"Het document eindigde onverwacht met niet-afgesloten elementen  ‘%s’ is het "
+"laatst geopende element"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5325,19 +5180,19 @@ msgstr ""
 "Het document eindigde onverwacht, er werd een sluithaakje (‘>’) verwacht "
 "voor de tag <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Het document eindigde onverwacht in een elementnaam"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Het document eindigde onverwacht in een attribuutnaam"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Het document eindigde onverwacht in een element-openingstag."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5345,90 +5200,84 @@ msgstr ""
 "Het document eindigde onverwacht na een ‘=’-teken dat op een attribuutnaam "
 "volgde; geen attribuutwaarde"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Het document eindigde onverwacht in een attribuutwaarde"
 
-#: glib/gmarkup.c:1862
-#, fuzzy, c-format
-#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+#: glib/gmarkup.c:1876
+#, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
-"Het document eindigde onverwacht in een een afsluitingstag voor element ‘%s’"
+"Het document eindigde onverwacht in een afsluitingstag voor element ‘%s’"
 
-#: glib/gmarkup.c:1866
-#, fuzzy
-#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
-"Het document eindigde onverwacht in een een afsluitingstag voor element ‘%s’"
+"Het document eindigde onverwacht in een afsluitingstag voor een niet-geopend "
+"element"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Het document eindigde onverwacht in commentaar of een bewerkingsinstructie"
 
-#: glib/goption.c:861
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPTIE…]"
 
-#: glib/goption.c:977
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Hulpopties:"
 
-#: glib/goption.c:978
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Deze hulptekst tonen"
 
-#: glib/goption.c:984
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Alle hulpteksten tonen"
 
-#: glib/goption.c:1047
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Programmaopties:"
 
-#: glib/goption.c:1049
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Opties:"
 
-#: glib/goption.c:1113 glib/goption.c:1183
-#, fuzzy, c-format
-#| msgid "Cannot parse integer value '%s' for %s"
+#: glib/goption.c:1120 glib/goption.c:1190
+#, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Kan het geheel getal ‘%s’ voor %s niet verwerken"
 
-#: glib/goption.c:1123 glib/goption.c:1191
-#, fuzzy, c-format
-#| msgid "Integer value '%s' for %s out of range"
+#: glib/goption.c:1130 glib/goption.c:1198
+#, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Het geheel getal ‘%s’ voor %s valt buiten het bereik"
 
 # integer-double
-#: glib/goption.c:1148
-#, fuzzy, c-format
-#| msgid "Cannot parse double value '%s' for %s"
+#: glib/goption.c:1155
+#, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Kan het lange geheel getal ‘%s’ voor %s niet verwerken"
 
-#: glib/goption.c:1156
-#, fuzzy, c-format
-#| msgid "Double value '%s' for %s out of range"
+#: glib/goption.c:1163
+#, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "Het lange geheel getal ‘%s’ voor %s valt buiten het bereik"
 
-#: glib/goption.c:1448 glib/goption.c:1527
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Fout bij verwerken van optie %s"
 
-#: glib/goption.c:1558 glib/goption.c:1671
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Ontbrekend argument voor %s"
 
-#: glib/goption.c:2132
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Onbekende optie %s"
@@ -5625,7 +5474,7 @@ msgstr "\\C niet toegestaan in ‘lookbehind assertion’"
 
 #: glib/gregex.c:431
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
-msgstr "Escapes \\L, \\l, \\N{name}, \\U, en \\u worden niet ondersteund"
+msgstr "escapes \\L, \\l, \\N{name}, \\U, en \\u worden niet ondersteund"
 
 #: glib/gregex.c:434
 msgid "recursive call could loop indefinitely"
@@ -5700,7 +5549,7 @@ msgstr ""
 
 #: glib/gregex.c:486
 msgid "(*VERB) not recognized"
-msgstr ""
+msgstr "(*VERB) niet herkend"
 
 #: glib/gregex.c:489
 msgid "number is too big"
@@ -5713,9 +5562,8 @@ msgid "missing subpattern name after (?&"
 msgstr "afsluitteken ontbreekt in naam subpatroon"
 
 #: glib/gregex.c:495
-#, fuzzy
 msgid "digit expected after (?+"
-msgstr "cijfer verwacht"
+msgstr "cijfer verwacht na (?+"
 
 #: glib/gregex.c:498
 msgid "] is an invalid data character in JavaScript compatibility mode"
@@ -5728,11 +5576,11 @@ msgstr "twee genoemde subpatronen hebben dezelfde naam"
 
 #: glib/gregex.c:504
 msgid "(*MARK) must have an argument"
-msgstr ""
+msgstr "(*MARK) vereist een parameter"
 
 #: glib/gregex.c:507
 msgid "\\c must be followed by an ASCII character"
-msgstr ""
+msgstr "\\c moet gevolgd worden door een ASCII-teken"
 
 #: glib/gregex.c:510
 #, fuzzy
@@ -5752,7 +5600,7 @@ msgstr ""
 
 #: glib/gregex.c:519
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
-msgstr ""
+msgstr "naam is te lang in (*MARK), (*PRUNE), (*SKIP) of (*THEN)"
 
 #: glib/gregex.c:522
 #, fuzzy
@@ -5791,8 +5639,6 @@ msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Fout bij compileren van reguliere expressie %s op teken %d:%s"
 
 #: glib/gregex.c:2419
-#, fuzzy
-#| msgid "hexadecimal digit or '}' expected"
 msgid "hexadecimal digit or “}” expected"
 msgstr "hexadecimaal getal of ‘}’ verwacht"
 
@@ -5802,8 +5648,6 @@ msgstr "hexadecimaal getal verwacht"
 
 # tekort/ontbreekt/te weinig
 #: glib/gregex.c:2475
-#, fuzzy
-#| msgid "missing '<' in symbolic reference"
 msgid "missing “<” in symbolic reference"
 msgstr "‘<’ ontbreekt in verwijzing"
 
@@ -5825,8 +5669,6 @@ msgid "illegal symbolic reference"
 msgstr "ongeldige verwijzing"
 
 #: glib/gregex.c:2583
-#, fuzzy
-#| msgid "stray final '\\'"
 msgid "stray final “\\”"
 msgstr "extra afsluiting ‘\\’"
 
@@ -5835,14 +5677,11 @@ msgid "unknown escape sequence"
 msgstr "onbekende escape-reeks"
 
 #: glib/gregex.c:2597
-#, fuzzy, c-format
-#| msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
+#, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
-msgstr "Fout bij inlezen vervangende tekst ‘%s’ op teken %lu:%s"
+msgstr "Fout bij inlezen vervangende tekst ‘%s’ op teken %lu: %s"
 
 #: glib/gshell.c:94
-#, fuzzy
-#| msgid "Quoted text doesn't begin with a quotation mark"
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "Aangehaalde tekst begint niet met een ‘\"’-teken"
 
@@ -5852,19 +5691,16 @@ msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "Solitair ‘\"’-teken in opdrachtregel of andere shell-aangehaalde tekst"
 
 #: glib/gshell.c:580
-#, fuzzy, c-format
-#| msgid "Text ended just after a '\\' character. (The text was '%s')"
+#, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
-msgstr "Tekst eindigde na een ‘\\’-teken (de tekst was ‘%s’)."
+msgstr "Tekst eindigde na een ‘\\’-teken. (De tekst was ‘%s’)"
 
 #: glib/gshell.c:587
-#, fuzzy, c-format
-#| msgid ""
-#| "Text ended before matching quote was found for %c. (The text was '%s')"
+#, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
 "De tekst eindigde voordat een afsluitend aanhalingsteken was gevonden voor "
-"%c (de tekst was ‘%s’)"
+"%c. (De tekst was ‘%s’)"
 
 #: glib/gshell.c:599
 msgid "Text was empty (or contained only whitespace)"
@@ -5875,82 +5711,79 @@ msgstr "De tekst was leeg (of bevatte slechts lege ruimte)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Lezen van data van dochterproces is mislukt (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Onverwachte fout in select() bij het lezen van data van een dochterproces "
-"(%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Onverwachte fout bij het lezen van data van een dochterproces (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Onverwachte fout in waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Dochterproces eindigde met code %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Dochterproces afgesloten met signaal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Dochterproces gestopt met signaal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Dochterproces eindigde niet normaal"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Lezen van pijplijn naar dochter (%s) is mislukt"
 
-#: glib/gspawn.c:1653
-#, fuzzy, c-format
-#| msgid "Failed to execute child process \"%s\" (%s)"
+#: glib/gspawn.c:1723
+#, c-format
 msgid "Failed to spawn child process “%s” (%s)"
-msgstr "Uitvoeren van dochterproces ‘%s’ is mislukt (%s)"
+msgstr "Voortbrengen van dochterproces ‘%s’ is mislukt (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "De fork is mislukt (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Wijzigen naar map ‘%s’ is mislukt (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Uitvoeren van dochterproces ‘%s’ is mislukt (%s)"
 
 # was eerst: herleiden
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr ""
 "Doorsluizen van invoer of uitvoer van een dochterproces is mislukt (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Het forken van een dochterproces is mislukt (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Onbekende fout bij het uitvoeren van dochterproces ‘%s’"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Lezen van voldoende data van pijplijn van dochter-pid is mislukt (%s)"
@@ -6004,219 +5837,195 @@ msgstr ""
 "Onverwachte fout in g_io_channel_win32_poll() bij het lezen van data van een "
 "dochterproces"
 
-#: glib/gstrfuncs.c:3286 glib/gstrfuncs.c:3388
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Lege tekenreeks is geen getal"
 
-#: glib/gstrfuncs.c:3310
+#: glib/gstrfuncs.c:3333
 #, fuzzy, c-format
 msgid "“%s” is not a signed number"
 msgstr "‘%s’ is geen geldige naam"
 
-#: glib/gstrfuncs.c:3320 glib/gstrfuncs.c:3424
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Getal ‘%s’ is buiten bereik [%s, %s]"
 
-#: glib/gstrfuncs.c:3414
+#: glib/gstrfuncs.c:3437
 #, fuzzy, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "‘%s’ is geen geldige naam"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Geheugen toewijzen mislukt"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Teken valt buiten het bereik van UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Ongeldige reeks in conversieinvoer"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Teken valt buiten het bereik van UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2756
 #, c-format
-#| msgid "%.1f kB"
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2758
 #, c-format
-#| msgid "%.1f MB"
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2388
+#: glib/gutils.c:2760
 #, c-format
-#| msgid "%.1f GB"
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2762
 #, c-format
-#| msgid "%.1f TB"
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2764
 #, c-format
-#| msgid "%.1f PB"
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2766
 #, c-format
-#| msgid "%.1f EB"
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2770
 #, c-format
-#| msgid "%.1f KiB"
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2772
 #, c-format
-#| msgid "%.1f MiB"
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2402
+#: glib/gutils.c:2774
 #, c-format
-#| msgid "%.1f GiB"
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2404
+#: glib/gutils.c:2776
 #, c-format
-#| msgid "%.1f TiB"
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2406
+#: glib/gutils.c:2778
 #, c-format
-#| msgid "%.1f PiB"
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2408
+#: glib/gutils.c:2780
 #, c-format
-#| msgid "%.1f EiB"
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2412
+#: glib/gutils.c:2784
 #, c-format
-#| msgid "%.1f kb"
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2414
+#: glib/gutils.c:2786
 #, c-format
-#| msgid "%.1f Mb"
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2416
+#: glib/gutils.c:2788
 #, c-format
-#| msgid "%.1f Gb"
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2418
+#: glib/gutils.c:2790
 #, c-format
-#| msgid "%.1f Tb"
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2420
+#: glib/gutils.c:2792
 #, c-format
-#| msgid "%.1f Pb"
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2422
+#: glib/gutils.c:2794
 #, c-format
-#| msgid "%.1f Eb"
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2426
+#: glib/gutils.c:2798
 #, c-format
-#| msgid "%.1f Kib"
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2428
+#: glib/gutils.c:2800
 #, c-format
-#| msgid "%.1f Mib"
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2430
+#: glib/gutils.c:2802
 #, c-format
-#| msgid "%.1f Gib"
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2432
+#: glib/gutils.c:2804
 #, c-format
-#| msgid "%.1f Tib"
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2434
+#: glib/gutils.c:2806
 #, c-format
-#| msgid "%.1f Pib"
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2436
+#: glib/gutils.c:2808
 #, c-format
-#| msgid "%.1f Eib"
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
 # ook byte voor meervoud (het bestand is 29 byte groot)
-#: glib/gutils.c:2470 glib/gutils.c:2596
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2474
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6225,7 +6034,7 @@ msgstr[1] "%u bits"
 
 # ook byte voor meervoud (het bestand is 29 byte groot)
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2541
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6233,7 +6042,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2546
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6245,36 +6054,47 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2609
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2614
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2619
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2624
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2629
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2634
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#, fuzzy
+#~| msgid "Error in address '%s' - the family attribute is malformed"
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Fout in adres ‘%s’ - het family-attribuut is onjuist gevormd"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "%s aangekoppeld op %s\n"
+
+#~ msgid "doing nothing.\n"
+#~ msgstr "niets doen.\n"
+
 #~ msgid "No such method '%s'"
 #~ msgstr "Methode ‘%s' bstaat niet"
 
index 258a807..d8fccd7 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,20 +1,20 @@
 # Polish translation for glib.
-# Copyright © 2002-2019 the glib authors.
+# Copyright © 2002-2020 the glib authors.
 # This file is distributed under the same license as the glib package.
 # Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl>, 2002-2003.
 # Artur Flinta <aflinta@at.kernel.pl>, 2003-2006.
 # Tomasz Kłoczko <kloczek@rudy.mif.pg.gda.pl>, 2005.
 # Wadim Dziedzic <wdziedzic@aviary.pl>, 2007-2009.
 # Tomasz Dominikowski <dominikowski@gmail.com>, 2008-2009.
-# Piotr Drąg <piotrdrag@gmail.com>, 2009-2019.
-# Aviary.pl <community-poland@mozilla.org>, 2007-2019.
+# Piotr Drąg <piotrdrag@gmail.com>, 2009-2020.
+# Aviary.pl <community-poland@mozilla.org>, 2007-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
-"PO-Revision-Date: 2019-08-21 20:12+0200\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-16 15:44+0100\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <community-poland@mozilla.org>\n"
 "Language: pl\n"
@@ -122,8 +122,8 @@ msgstr ""
 "Identyfikator programu w formacie usługi D-Bus (np. org.przykład."
 "przeglądarka)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "PLIK"
@@ -286,7 +286,7 @@ msgstr "Potok jest już zamknięty"
 msgid "Truncate not supported on base stream"
 msgstr "Skracanie nie jest dozwolone na podstawowym potoku"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -306,22 +306,22 @@ msgstr "Brak wystarczającej ilości miejsca w miejscu docelowym"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Nieprawidłowa sekwencja bajtów na wejściu konwersji"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Błąd podczas konwersji: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Zainicjowanie, które można anulować nie jest obsługiwane"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Konwersja z zestawu znaków „%s” na zestaw „%s” nie jest obsługiwana"
@@ -345,20 +345,24 @@ msgstr "Nieznany typ"
 msgid "%s filetype"
 msgstr "Typ pliku %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials zawiera nieprawidłowe dane"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials nie jest zaimplementowane w tym systemie operacyjnym"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Platforma nie obsługuje GCredentials"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 "GCredentials nie zawiera identyfikatora procesu w tym systemie operacyjnym"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "Fałszowanie danych uwierzytelniających nie jest możliwe w tym systemie "
@@ -368,7 +372,7 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Nieoczekiwany, przedwczesny koniec potoku"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nieobsługiwany klucz „%s” we wpisie adresu „%s”"
@@ -387,32 +391,28 @@ msgstr ""
 "Adres „%s” jest nieprawidłowy (wymaga dokładnie jednej ścieżki, katalogu, "
 "katalogu tymczasowego lub kluczy abstrakcyjnych)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Błąd w adresie „%s” — atrybut portu jest błędnie sformatowany"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Błąd w adresie „%s” — atrybut rodziny jest błędnie sformatowany"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Błąd w adresie „%s” — atrybut „%s” jest błędnie sformatowany"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Nieznany lub nieobsługiwany transport „%s” dla adresu „%s”"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Element adresu „%s” nie zawiera dwukropka (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Nazwa transportu w elemencie adresu „%s” nie może być pusta"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -421,7 +421,7 @@ msgstr ""
 "Para klucz/wartość %d, „%s” w elemencie adresu „%s” nie zawiera znaku "
 "równości"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -429,7 +429,7 @@ msgstr ""
 "Para klucz/wartość %d, „%s” w elemencie adresu „%s” nie może mieć pustego "
 "klucza"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -438,7 +438,7 @@ msgstr ""
 "Błąd podczas usuwania znaku sterującego klucza lub wartości w parze klucz/"
 "wartość %d, „%s” w elemencie adresu „%s”"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -447,84 +447,84 @@ msgstr ""
 "Błąd w adresie „%s” — transport systemu UNIX wymaga ustawienia dokładnie "
 "jednego z kluczy „path” lub „abstract”"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Błąd w adresie „%s” — brak atrybutu komputera lub jest błędnie sformatowany"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Błąd w adresie „%s” — brak atrybutu portu lub jest błędnie sformatowany"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Błąd w adresie „%s” — brak atrybutu pliku nonce lub jest błędnie sformatowany"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Błąd podczas automatycznego uruchamiania: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Błąd podczas otwierania pliku nonce „%s”: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Błąd podczas odczytywania pliku nonce „%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Błąd podczas odczytywania pliku nonce „%s”, oczekiwano 16 bajtów, otrzymano "
 "%d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Błąd podczas zapisywania zawartości pliku nonce „%s” do potoku:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Podany adres jest pusty"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Nie można wywołać magistrali komunikatów, kiedy używane jest setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Nie można wywołać magistrali komunikatów bez identyfikatora komputera: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr ""
 "Nie można automatycznie uruchomić usługi D-Bus bez zmiennej $DISPLAY "
 "środowiska X11"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Błąd podczas wywoływania wiersza poleceń „%s”: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nie można ustalić adresu magistrali sesji (nie jest zaimplementowane dla "
 "tego systemu operacyjnego)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -533,7 +533,7 @@ msgstr ""
 "Nie można ustalić adresu magistrali ze zmiennej środowiskowej "
 "DBUS_STARTER_BUS_TYPE — nieznana wartość „%s”"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -541,21 +541,21 @@ msgstr ""
 "Nie można ustalić adresu magistrali, ponieważ nie ustawiono zmiennej "
 "środowiskowej DBUS_STARTER_BUS_TYPE"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Nieznany typ magistrali %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Oczekiwano braku zawartości podczas próby odczytania wiersza"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Oczekiwano braku zawartości podczas próby (bezpiecznego) odczytania wiersza"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -563,16 +563,16 @@ msgstr ""
 "Wyczerpano wszystkie dostępne mechanizmy uwierzytelniania (próby: %s, "
 "dostępne: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Anulowano przez GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Błąd podczas pobierania informacji o katalogu „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -580,23 +580,23 @@ msgstr ""
 "Uprawnienia katalogu „%s” są błędnie sformatowane. Oczekiwano trybu 0700, "
 "otrzymano 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Błąd podczas tworzenia katalogu „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Błąd podczas otwierania bazy kluczy „%s” do odczytania: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "%d. wiersz bazy kluczy w „%s” z zawartością „%s” jest błędnie sformatowany"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -604,7 +604,7 @@ msgstr ""
 "Pierwszy token %d. wiersza bazy kluczy w „%s” z zawartością „%s” jest "
 "błędnie sformatowany"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -612,37 +612,37 @@ msgstr ""
 "Drugi token %d. wiersza bazy kluczy w „%s” z zawartością „%s” jest błędnie "
 "sformatowany"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nie odnaleziono ciasteczka z identyfikatorem %d w bazie kluczy w „%s”"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Błąd podczas usuwania starego pliku blokady „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Błąd podczas tworzenia pliku blokady „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Błąd podczas zamykania (niedowiązanego) pliku blokady „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Błąd podczas odwiązywania pliku blokady „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Błąd podczas otwierania bazy kluczy „%s” do zapisania: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Dodatkowo, uwolnienie blokady „%s” także się nie powiodło: %s) "
@@ -661,107 +661,107 @@ msgid ""
 msgstr ""
 "Wystąpiły nieobsługiwane flagi podczas tworzenia połączenia ze strony klienta"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Brak interfejsu „org.freedesktop.DBus.Properties” w obiekcie w ścieżce %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Brak właściwości „%s”"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Właściwość „%s” nie jest odczytywalna"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Właściwość „%s” nie jest zapisywalna"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Błąd podczas ustawiania właściwości „%s”: oczekiwano typ „%s”, ale otrzymano "
 "„%s”"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Brak interfejsu „%s”"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Brak interfejsu „%s” w obiekcie w ścieżce %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Brak metody „%s”"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Typ komunikatu, „%s”, nie pasuje do oczekiwanego typu „%s”"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Obiekt został już wyeksportowany dla interfejsu %s w %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nie można pobrać właściwości %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nie można ustawić właściwości %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metoda „%s” zwróciła typ „%s”, ale oczekiwano „%s”"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metoda „%s” w interfejsie „%s” z podpisem „%s” nie istnieje"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Poddrzewo zostało już wyeksportowane dla %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "typ jest NIEPRAWIDŁOWY"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Komunikat METHOD_CALL: brak pola nagłówka PATH lub MEMBER"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Komunikat METHOD_RETURN: brak pola nagłówka REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Komunikat o BŁĘDZIE: brak pola nagłówka REPLY_SERIAL lub ERROR_NAME"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Komunikat SYGNAŁU: brak pola nagłówka PATH, INTERFACE lub MEMBER"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -769,7 +769,7 @@ msgstr ""
 "Komunikat SYGNAŁU: pole nagłówka PATH używa zastrzeżonej wartości /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -777,7 +777,7 @@ msgstr ""
 "Komunikat SYGNAŁU: pole nagłówka INTERFACE używa zastrzeżonej wartości org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -785,12 +785,12 @@ msgstr[0] "Chciano odczytać %lu bajt, ale otrzymano tylko %lu"
 msgstr[1] "Chciano odczytać %lu bajty, ale otrzymano tylko %lu"
 msgstr[2] "Chciano odczytać %lu bajtów, ale otrzymano tylko %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Oczekiwano bajtu NUL po ciągu „%s”, ale odnaleziono bajt %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -800,18 +800,22 @@ msgstr ""
 "w wyrównaniu bajtu %d (długość ciągu wynosi %d). Prawidłowy ciąg UTF-8 do "
 "tego miejsca to „%s”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Wartość jest zagnieżdżona za głęboko"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 "Przetworzona wartość „%s” nie jest prawidłową ścieżką do obiektu usługi D-Bus"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Przetworzona wartość „%s” nie jest prawidłowym podpisem usługi D-Bus"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -827,7 +831,7 @@ msgstr[2] ""
 "Wystąpiła macierz o długości %u bajtów. Maksymalna długość to 2<<26 bajtów "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -836,14 +840,14 @@ msgstr ""
 "Wystąpiła macierz typu „a%c”, której oczekiwana długość jest wielokrotnością "
 "%u B, ale wynosi %u B"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "Przetworzona wartość „%s” dla wariantu nie jest prawidłowym podpisem usługi "
 "D-Bus"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -851,7 +855,7 @@ msgstr ""
 "Błąd podczas deserializowania GVariant za pomocą ciągu typu „%s” z formatu "
 "przewodu usługi D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -860,30 +864,30 @@ msgstr ""
 "Nieprawidłowa wartość kolejności bajtów. Oczekiwano 0x6c („l”) lub 0x42 "
 "(„B”), ale odnaleziono wartość 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Nieprawidłowa główna wersja protokołu. Oczekiwano 1, ale odnaleziono %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Odnaleziono nagłówek podpisu, ale nie jest podpisem typu"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Odnaleziono nagłówek podpisu z podpisem „%s”, ale treść komunikatu jest pusta"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "Przetworzona wartość „%s” nie jest prawidłowym podpisem usługi D-Bus (dla "
 "treści)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -894,11 +898,11 @@ msgstr[1] ""
 msgstr[2] ""
 "Brak nagłówka podpisu w komunikacie, ale treść komunikatu liczy %u bajtów"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Nie można deserializować komunikatu: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -906,23 +910,23 @@ msgstr ""
 "Błąd podczas serializowania GVariant za pomocą ciągu typu „%s” z formatu "
 "przewodu usługi D-Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Liczba deskryptorów plików w komunikacie (%d) różni się od pola nagłówka (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Nie można serializować komunikatu: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Treść komunikatu ma podpis „%s”, ale brak nagłówka podpisu"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -930,38 +934,38 @@ msgid ""
 msgstr ""
 "Treść komunikatu ma podpis typu „%s”, ale podpis w polu nagłówka to „%s”"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Treść komunikatu jest pusta, ale podpis w polu nagłówka to „(%s)”"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Błąd zwrotu z treścią typu „%s”"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Błąd zwrotu z pustą treścią"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Wpisanie dowolnego znaku zamknie to okno)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "Magistrala D-Bus sesji nie jest uruchomiona, i automatyczne uruchomienie się "
 "nie powiodło"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nie można pobrać profilu sprzętu: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Nie można wczytać pliku /var/lib/dbus/machine-id lub /etc/machine-id: "
 
@@ -985,25 +989,25 @@ msgstr ""
 "właściciela, a pośrednik został utworzony za pomocą flagi "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Przestrzeń nazw abstrakcyjnych jest nieobsługiwana"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Nie można określić pliku nonce podczas tworzenia serwera"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Błąd podczas zapisywania pliku nonce w „%s”: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Ciąg „%s” nie jest prawidłowym GUID usługi D-Bus"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Nie można nasłuchiwać na nieobsługiwanym transporcie „%s”"
@@ -1281,39 +1285,39 @@ msgstr "Błąd: za dużo parametrów.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Błąd: %s nie jest prawidłową znaną nazwą magistrali.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Bez nazwy"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Plik .desktop nie określa pola Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Nie można odnaleźć terminala wymaganego przez program"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Nie można utworzyć katalogu użytkownika dla konfiguracji programu %s: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nie można utworzyć katalogu użytkownika dla konfiguracji MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Brak identyfikatora w informacjach o programie"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nie można utworzyć pliku .desktop dla użytkownika %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Niestandardowa definicja dla %s"
@@ -1374,12 +1378,12 @@ msgstr "Błędna liczba elementów (%d) w kodowaniu GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Oczekiwano obiektu GEmblem dla GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Działanie nie jest obsługiwane"
@@ -1388,70 +1392,74 @@ msgstr "Działanie nie jest obsługiwane"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Nie istnieje zawierający punkt montowania"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Nie można skopiować na katalog"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Nie można skopiować katalogu na katalog"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Plik docelowy istnieje"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Nie można skopiować katalogu rekurencyjnie"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Wywołanie „splice” nie jest obsługiwane"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Błąd podczas dzielenia pliku: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Kopiowanie (reflink/clone) między punktami montowania nie jest obsługiwane"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiowanie (reflink/clone) nie jest obsługiwane lub jest nieprawidłowe"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiowanie (reflink/clone) nie jest obsługiwane lub nie zadziałało"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Nie można skopiować pliku specjalnego"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Wprowadzono nieprawidłową wartość dowiązania symbolicznego"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Dowiązania symboliczne nie są obsługiwane"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Kosz nie jest obsługiwany"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Nazwy plików nie mogą zawierać „%c”"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "wolumin nie obsługuje montowania"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Żaden program nie jest zarejestrowany do obsługi tego pliku"
 
@@ -1496,7 +1504,7 @@ msgstr "Skracanie nie jest dozwolone na potoku wejściowym"
 msgid "Truncate not supported on stream"
 msgstr "Skracanie nie jest dozwolone na potoku"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Nieprawidłowa nazwa komputera"
@@ -1614,7 +1622,7 @@ msgstr "Podąża za plikiem podczas przenoszenia"
 msgid "“version” takes no arguments"
 msgstr "„version” nie przyjmuje żadnych parametrów"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Użycie:"
 
@@ -1700,10 +1708,10 @@ msgid "Error writing to stdout"
 msgstr "Błąd podczas zapisywania do standardowego wyjścia"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1723,56 +1731,60 @@ msgstr ""
 "GIO zamiast plików lokalnych: przykładowo można użyć czegoś takiego jak\n"
 "smb://serwer/zasób/plik.txt jako położenia."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Nie podano położeń"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Brak katalogu docelowego"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Wyświetla postęp"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Pyta przed zastąpieniem"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Zachowuje wszystkie atrybuty"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Tworzy kopię zapasową istniejących plików docelowych"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Nigdy nie podąża za dowiązaniami symbolicznymi"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Używa domyślnych uprawnień dla elementu docelowego"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Przesłano %s z %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "PLIK-ŹRÓDŁOWY"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "CEL"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Kopiuje jeden lub więcej PLIKÓW ŹRÓDŁOWYCH do PLIKÓW DOCELOWYCH."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1782,88 +1794,98 @@ msgstr ""
 "GIO zamiast plików lokalnych: przykładowo można użyć czegoś takiego jak\n"
 "smb://serwer/zasób/plik.txt jako położenia."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Plik docelowy %s nie jest katalogiem"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: zastąpić „%s”? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Lista zapisywalnych atrybutów"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Pobiera informacje o systemie plików"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Atrybuty do pobrania"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRYBUTY"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Bez podążania za dowiązaniami symbolicznymi"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atrybuty:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "wyświetlana nazwa: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "modyfikowana nazwa: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "nazwa: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "typ: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "rozmiar: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "ukryty\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "URI: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "lokalna ścieżka: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "punkt montowania systemu UNIX: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Atrybuty możliwe do ustawienia:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Przestrzeń nazw atrybutów możliwych do ustawienia:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Wyświetla informacje o położeniach."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1877,23 +1899,27 @@ msgstr ""
 "podawane za pomocą ich nazwy GIO, np. standard::icon, przestrzeni nazw,\n"
 "np. unix, albo „*”, co oznacza wszystkie atrybuty"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Wyświetla ukryte pliki"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Używa długiego formatu list"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Wyświetla wyświetlane nazwy"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Wyświetla pełne adresy URI"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Wyświetla listę zawartości położenia."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2025,12 +2051,12 @@ msgid "Mount as mountable"
 msgstr "Montuje jako montowalny"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Montuje wolumin za pomocą pliku urządzenia"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Montuje wolumin za pomocą pliku urządzenia lub innego identyfikatora"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "URZĄDZENIE"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "Identyfikator"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2044,6 +2070,10 @@ msgstr "Wysuwa"
 msgid "Stop drive with device file"
 msgstr "Zatrzymuje napęd za pomocą pliku urządzenia"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "URZĄDZENIE"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Odmontowuje wszystko za pomocą podanego schematu"
@@ -2098,16 +2128,11 @@ msgstr "Odmowa dostępu anonimowego"
 msgid "No drive for device file"
 msgstr "Brak napędu dla pliku urządzenia"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Zamontowano %s w %s\n"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Brak woluminu dla podanego identyfikatora"
 
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Brak woluminu dla pliku urządzenia"
-
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Montuje lub odmontowuje położenia."
 
@@ -2325,64 +2350,64 @@ msgstr "Błąd podczas odczytywania pliku %s: %s"
 msgid "Error compressing file %s"
 msgstr "Błąd podczas kompresowania pliku %s"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "tekst nie może znajdować się wewnątrz <%s>"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Wyświetla wersję programu i kończy działanie"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Nazwa pliku wyjściowego"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr "Katalog, z którego wczytywać PLIKI (domyślnie bieżący katalog)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "KATALOG"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Tworzy wyjście w formacie wybranym przez rozszerzenie pliku docelowego"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Tworzy nagłówek źródła"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Tworzy kod źródłowy używany do dowiązania pliku zasobu do kodu"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Tworzy listę zależności"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Nazwa pliku zależności do utworzenia"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Dołącza fałszywe cele w utworzonym pliku zależności"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Bez automatycznego tworzenia i rejestrowania zasobu"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Bez eksportowania funkcji; deklaruje je jako G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2390,11 +2415,11 @@ msgstr ""
 "Bez osadzania danych zasobów w pliku C; przyjmuje, że jest zamiast tego "
 "zewnętrznie dowiązane"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "Nazwa identyfikatora języka C używana dla utworzonego kodu źródłowego"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2404,7 +2429,7 @@ msgstr ""
 "zasobów mają rozszerzenie .gresource.xml, a pliki\n"
 "zasobów mają rozszerzenie .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Należy podać dokładnie jedną nazwę pliku\n"
 
@@ -2921,7 +2946,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Nie można zmienić nazwy pliku, plik o takiej nazwie już istnieje"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Nieprawidłowa nazwa pliku"
 
@@ -2997,131 +3022,127 @@ msgstr "System plików nie obsługuje dowiązań symbolicznych"
 msgid "Error making symbolic link %s: %s"
 msgstr "Błąd podczas tworzenia dowiązania symbolicznego %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Dowiązania symboliczne nie są obsługiwane"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Błąd podczas przenoszenia pliku %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Nie można przenieść katalogu na katalog"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Utworzenie pliku kopii zapasowej się nie powiodło"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Błąd podczas usuwania pliku docelowego: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Przenoszenie między punktami montowania nie jest obsługiwane"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Nie można ustalić wykorzystania dysku %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Wartość atrybutu nie może być pusta"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Nieprawidłowy typ atrybutu (oczekiwano „string”)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Nieprawidłowa nazwa rozszerzonego atrybutu"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Błąd podczas ustawiania rozszerzonego atrybutu „%s”: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (nieprawidłowe kodowanie)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Błąd podczas pobierania informacji o pliku „%s”: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Błąd podczas pobierania informacji o deskryptorze pliku: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Nieprawidłowy typ atrybutu (oczekiwano „uint32”)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Nieprawidłowy typ atrybutu (oczekiwano „uint64”)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Nieprawidłowy typ atrybutu (oczekiwano „byte string”)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Nie można ustawić uprawnień na dowiązaniach symbolicznych"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Błąd podczas ustawiania uprawnień: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Błąd podczas ustawiania właściciela: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "dowiązanie symboliczne nie może być puste"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Błąd podczas ustawiania dowiązania symbolicznego: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Błąd podczas ustawiania dowiązania symbolicznego: plik nie jest dowiązaniem "
 "symbolicznym"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Błąd podczas ustawiania czasu modyfikacji lub dostępu: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "Kontekst SELinux nie może być pusty"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Błąd podczas ustawiania kontekstu SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux nie jest włączony w tym systemie"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Ustawianie atrybutu %s nie jest obsługiwane"
@@ -3144,7 +3165,7 @@ msgstr "Błąd podczas wyszukiwania w pliku: %s"
 msgid "Error closing file: %s"
 msgstr "Błąd podczas zamykania pliku: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Nie można odnaleźć domyślnego typu monitora pliku lokalnego"
 
@@ -3289,11 +3310,11 @@ msgstr ""
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Nazwa komputera „%s” zawiera „[”, ale nie „]”"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Sieć jest niedostępna"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Komputer jest niedostępny"
 
@@ -3334,18 +3355,18 @@ msgstr "Suma wektorów przekazanych do %s jest za duża"
 msgid "Source stream is already closed"
 msgstr "Potok źródłowy jest już zamknięty"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Błąd podczas rozwiązywania „%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s nie jest zaimplementowane"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Nieprawidłowa domena"
 
@@ -3724,174 +3745,174 @@ msgstr "Podano pustą nazwę schematu\n"
 msgid "No such key “%s”\n"
 msgstr "Brak klucza „%s”\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Nieprawidłowe gniazdo, nie zainicjowano"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Nieprawidłowe gniazdo, zainicjowanie się nie powiodło z powodu: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Gniazdo jest już zamknięte"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Przekroczono czas oczekiwania wejścia/wyjścia gniazda"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "tworzenie GSocket z fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nie można utworzyć gniazda: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Podano nieznaną rodzinę"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Podano nieznany protokół"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Nie można używać działań datagramowych na niedatagramowych gniazdach."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Nie można używać działań datagramowych na gniazdach z ustawionym czasem "
 "oczekiwania."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nie można uzyskać lokalnego adresu: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nie można uzyskać zdalnego adresu: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "nie można nasłuchiwać: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Błąd podczas dowiązywania do adresu: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Błąd podczas dowiązywania do adresu %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Błąd podczas dołączania do grupy multicast: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Błąd podczas opuszczania grupy multicast: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Brak obsługi multicastu dla konkretnych źródeł"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Nieobsługiwana rodzina gniazda"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "konkretne źródła nie są adresem IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Nazwa interfejsu jest za długa"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Nie odnaleziono interfejsu: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Brak obsługi multicastu IPv4 dla konkretnych źródeł"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Brak obsługi multicastu IPv6 dla konkretnych źródeł"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Błąd podczas akceptowania połączenia: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Trwa połączenie"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Nie można uzyskać oczekującego błędu: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Błąd podczas pobierania danych: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Błąd podczas wysyłania danych: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nie można zamknąć gniazda: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Błąd podczas zamykania gniazda: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Oczekiwanie na warunek gniazda: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Błąd podczas wysyłania komunikatu: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage nie jest obsługiwane w systemie Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Błąd podczas pobierania komunikatu: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nie można odczytać danych uwierzytelniających gniazda: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials nie jest zaimplementowane dla tego systemu "
@@ -4161,7 +4182,7 @@ msgstr "Błąd podczas odczytywania z deskryptora pliku: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Błąd podczas zamykania deskryptora pliku: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Katalog główny systemu plików"
 
@@ -4250,72 +4271,72 @@ msgstr "Błędne parametry\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Nieoczekiwany atrybut „%s” dla elementu „%s”"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Nie odnaleziono atrybutu „%s” dla elementu „%s”"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Nieoczekiwany znacznik „%s”, oczekiwano znacznika „%s”"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Nieoczekiwany znacznik „%s” wewnątrz „%s”"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Nieprawidłowa data/czas „%s” w pliku zakładek"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Nie można odnaleźć prawidłowego pliku zakładek w katalogach danych"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Zakładka dla adresu URI „%s” już istnieje"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Nie odnaleziono zakładki dla adresu URI „%s”"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Nie zdefiniowano typu MIME w zakładce dla adresu URI „%s”"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Nie zdefiniowano prywatnej flagi w zakładce dla adresu URI „%s”"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Nie ustawiono grup w zakładce dla adresu URI „%s”"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Żaden program o nazwie „%s” nie zarejestrował zakładki dla „%s”"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Rozwinięcie wiersza exec „%s” z adresem URI „%s” się nie powiodło"
@@ -4324,8 +4345,8 @@ msgstr "Rozwinięcie wiersza exec „%s” z adresem URI „%s” się nie powi
 msgid "Unrepresentable character in conversion input"
 msgstr "Nieprzedstawialny znak na wejściu konwersji"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Na końcu wejścia występuje sekwencja odpowiadająca części znaku"
 
@@ -4878,25 +4899,25 @@ msgstr "Szablon „%s” nie zawiera XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Odczytanie dowiązania symbolicznego „%s” się nie powiodło: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Nie można otworzyć konwertera z „%s” na „%s”: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 "Nie można wykonać surowego odczytu w zmiennej g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "W buforze odczytu pozostały nieskonwertowane dane"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Na końcu kanału występuje sekwencja odpowiadająca części znaku"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nie można wykonać surowego odczytu w zmiennej g_io_channel_read_to_end"
 
@@ -4937,8 +4958,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Plik klucza zawiera nieobsługiwane kodowanie „%s”"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Plik klucza nie zawiera grupy „%s”"
@@ -4977,31 +4998,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Klucz „%s” w grupie „%s” ma wartość „%s”, podczas gdy oczekiwano %s"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Plik klucza zawiera znak sterujący na końcu linii"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Plik klucza zawiera nieprawidłową sekwencję sterującą „%s”"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Nie można zinterpretować „%s” jako liczby."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Wartość całkowita „%s” jest spoza dopuszczalnego zakresu"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Nie można zinterpretować „%s” jako liczby zmiennoprzecinkowej."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Nie można zinterpretować „%s” jako wartości logicznej."
@@ -5096,11 +5117,11 @@ msgstr ""
 "Jednostka nie jest zakończona średnikiem; najprawdopodobniej został użyty "
 "znak &, który nie miał oznaczać jednostki — należy go zapisać jako &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokument musi rozpoczynać się jakimś elementem (np. <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5109,7 +5130,7 @@ msgstr ""
 "Znak „%s” nie powinien występować po znaku „<”; nie może on rozpoczynać "
 "nazwy elementu"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5118,7 +5139,12 @@ msgstr ""
 "Nieoczekiwany znak „%s”, oczekiwano znaku „>”, aby zakończyć znacznik „%s” "
 "pustego elementu"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Za dużo atrybutów w elemencie „%s”"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5126,7 +5152,7 @@ msgstr ""
 "Nieoczekiwany znak „%s”; po nazwie atrybutu „%s” elementu „%s” oczekiwano "
 "znaku „=”"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5137,7 +5163,7 @@ msgstr ""
 "początkowy elementu „%s” lub opcjonalnie atrybutu; być może w nazwie "
 "atrybutu został użyty nieprawidłowy znak"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5146,7 +5172,7 @@ msgstr ""
 "Nieoczekiwany znak „%s”; oczekiwano otwierającego znaku cudzysłowu po znaku "
 "równości podczas podawania wartości atrybutu „%s” elementu „%s”"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5155,7 +5181,7 @@ msgstr ""
 "Znak „%s” nie jest znakiem, który może pojawić się po sekwencji „</”; „%s” "
 "nie może rozpoczynać nazwy elementu"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5164,26 +5190,26 @@ msgstr ""
 "Znak „%s” nie jest znakiem, który może wystąpić po domykającej nazwie "
 "elementu „%s”; dopuszczalnym znakiem jest „>”"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Element „%s” został zamknięty, ale brak obecnie otwartego elementu"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr ""
 "Element „%s” został zamknięty, ale obecnie otwartym elementem jest „%s”"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokument jest pusty lub zawiera tylko spacje"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Zaraz po znaku „<” nastąpił nieoczekiwany koniec dokumentu"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5192,7 +5218,7 @@ msgstr ""
 "Nastąpił nieoczekiwany koniec dokumentu, gdy pewne elementy są wciąż otwarte "
 "— „%s” był ostatnim otwartym elementem"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5201,21 +5227,21 @@ msgstr ""
 "Nastąpił nieoczekiwany koniec dokumentu; oczekiwano znaku „>”, kończącego "
 "znacznik <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Nastąpił nieoczekiwany koniec dokumentu wewnątrz nazwy elementu"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Nastąpił nieoczekiwany koniec dokumentu wewnątrz nazwy atrybutu"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "Nastąpił nieoczekiwany koniec dokumentu wewnątrz znacznika otwierającego "
 "element."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5223,86 +5249,86 @@ msgstr ""
 "Nastąpił nieoczekiwany koniec dokumentu po znaku równości występującym po "
 "nazwie atrybutu; brak wartości atrybutu"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Nastąpił nieoczekiwany koniec dokumentu wewnątrz wartości atrybutu"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Nastąpił nieoczekiwany koniec dokumentu wewnątrz znacznika domykającego "
 "elementu „%s”"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Nastąpił nieoczekiwany koniec dokumentu wewnątrz znacznika domykającego "
 "nieotwartego elementu"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Nastąpił nieoczekiwany koniec dokumentu wewnątrz komentarza lub instrukcji "
 "przetwarzania"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPCJA…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Opcje pomocy:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Wyświetla opcje pomocy"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Wyświetla wszystkie opcje pomocy"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Opcje programu:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Opcje:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Nie można przetworzyć wartości całkowitej „%s” dla %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Wartość całkowita „%s” dla %s jest spoza dopuszczalnego zakresu"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Nie można przetworzyć podwójnej wartości liczbowej „%s” dla %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr ""
 "Podwójna wartość liczbowa „%s” dla %s jest spoza dopuszczalnego zakresu"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Błąd podczas przetwarzania opcji %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Brak parametru dla %s"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Nieznana opcja %s"
@@ -5709,82 +5735,81 @@ msgstr "Tekst jest pusty (lub zawiera tylko spacje)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Odczytanie danych z procesu potomnego (%s) się nie powiodło"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
-"Nieoczekiwany błąd w funkcji select() podczas odczytywania danych z procesu "
-"potomnego (%s)"
+"Nieoczekiwany błąd podczas odczytywania danych z procesu potomnego (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Nieoczekiwany błąd w waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Proces potomny został zakończony z kodem %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Proces potomny został zakończony sygnałem %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Proces potomny został zatrzymany sygnałem %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Proces potomny został nieprawidłowo zakończony"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr ""
 "Odczytanie danych z potoku łączącego z procesem potomnym (%s) się nie "
 "powiodło"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Wywołanie procesu potomnego „%s” (%s) się nie powiodło"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Rozdzielenie procesu (%s) się nie powiodło"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Zmiana katalogu na „%s” (%s) się nie powiodła"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Wykonanie procesu potomnego „%s” (%s) się nie powiodło"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr ""
 "Przekierowanie wejścia lub wyjścia procesu potomnego (%s) się nie powiodło"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Rozdzielenie procesu potomnego (%s) się nie powiodło"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Podczas wykonywania procesu potomnego „%s” wystąpił nieznany błąd"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5839,187 +5864,187 @@ msgstr ""
 "Podczas odczytu danych z procesu potomnego w g_io_channel_win32_poll() "
 "wystąpił nieznany błąd"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Pusty ciąg nie jest liczbą"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s” nie jest liczbą ze znakiem"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Liczba „%s” jest poza zakresem [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s” nie jest liczbą bez znaku"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Przydzielenie pamięci się nie powiodło"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Znak jest poza zakresem dla UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Nieprawidłowa sekwencja na wejściu konwersji"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Znak jest poza zakresem dla UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6027,7 +6052,7 @@ msgstr[0] "%u bajt"
 msgstr[1] "%u bajty"
 msgstr[2] "%u bajtów"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6036,7 +6061,7 @@ msgstr[1] "%u bity"
 msgstr[2] "%u bitów"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6045,7 +6070,7 @@ msgstr[1] "%s bajty"
 msgstr[2] "%s bajtów"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6058,32 +6083,32 @@ msgstr[2] "%s bitów"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 25dec28..c6c64be 100644 (file)
@@ -1,5 +1,5 @@
 # Brazilian Portuguese translation of glib.
-# Copyright (C) 2001-2019 Free Software Foundation, Inc.
+# Copyright (C) 2020 Free Software Foundation, Inc.
 # This file is distributed under the same license as the glib package.
 # Gustavo Noronha Silva <kov@debian.org>, 2001-2005
 # Leonardo Ferreira Fontenelle <leonardof@gnome.org>, 2006-2009.
 # Felipe Braga <fbobraga@gmail.com>, 2015.
 # Artur de Aquino Morais <artur.morais93@outlook.com>, 2016.
 # Enrico Nicoletto <liverig@gmail.com>, 2013, 2014, 2016.
-# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2019.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-09-02 13:53+0000\n"
-"PO-Revision-Date: 2019-09-05 02:24-0300\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-06 20:49-0300\n"
 "Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
 "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
 "Language: pt_BR\n"
@@ -297,7 +297,7 @@ msgstr "O fluxo já está fechado"
 msgid "Truncate not supported on base stream"
 msgstr "Não há suporte para truncar fluxo base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -317,22 +317,22 @@ msgstr "Espaço insuficiente no destino"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Sequência de bytes inválida na entrada de conversão"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Erro durante a conversão: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Sem suporte a inicialização cancelável"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Não há suporte à conversão do conjunto de caracteres “%s” para “%s”"
@@ -356,19 +356,23 @@ msgstr "Tipo desconhecido"
 msgid "%s filetype"
 msgstr "tipo de arquivo %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials contém dados inválidos"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials não está implementado neste SO"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Não há suporte ao GCredentials para sua plataforma"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials não contém um ID de processo neste SO"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "Não é possível fazer uso de falsificação de credenciais neste sistema "
@@ -378,7 +382,7 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Fim do fluxo inesperadamente prematuro"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Não há suporte a chave “%s” na entrada de endereço “%s”"
@@ -398,32 +402,28 @@ msgstr ""
 "O endereço “%s” é inválido (é necessário exatamente um dentre: caminho, "
 "diretório, diretório temporário ou chaves abstratas)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Erro no endereço “%s” — o atributo porta está malformada"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Erro no endereço “%s” — o atributo família está malformada"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Erro no endereço “%s” — o atributo “%s” está malformado"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transporte desconhecido ou sem suporte “%s” para o endereço “%s”"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "O elemento endereço “%s” não contém um caractere de dois-pontos (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "O nome do transporte no elemento de endereço “%s” não pode estar vazio"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -432,7 +432,7 @@ msgstr ""
 "O par chave/valor %d, “%s”, no elemento endereço “%s”, não contém um sinal "
 "de igual"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -440,7 +440,7 @@ msgstr ""
 "O par chave/valor %d, “%s”, no elemento endereço “%s”, não pode ter uma "
 "chave vazia"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -449,7 +449,7 @@ msgstr ""
 "Erro ao distinguir a chave sem escape ou valor no par chave/valor %d, “%s”, "
 "no elemento endereço “%s”"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -458,82 +458,82 @@ msgstr ""
 "Erro no endereço “%s” — o transporte Unix requer exatamente uma das chaves "
 "“path” ou “abstract” sejam definidas"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Erro no endereço “%s” — o atributo servidor está faltando ou malformado"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Erro no endereço “%s” — o atributo porta está faltando ou malformado"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Erro no endereço “%s” — o atributo do arquivo de valor de uso único está "
 "faltando ou malformado"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Erro ao iniciar automaticamente: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Erro ao abrir arquivo de valor de uso único “%s”: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Erro ao ler arquivo de valor de uso único “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Erro ao ler o arquivo de valor de uso único “%s”; era esperado 16 bytes, mas "
 "foi obtido %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Erro ao gravar o arquivo de valor de uso único “%s” no fluxo:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "O endereço fornecido está vazio"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Não foi possível chamar um barramento de mensagens com setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Não foi possível chamar um barramento de mensagens sem um ID de máquina: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Não foi possível iniciar automaticamente o D-Bus sem X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Erro ao chamar a linha de comandos “%s”: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Não foi possível determinar o endereço de barramento da sessão (sem "
 "implementação para este SO)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -542,7 +542,7 @@ msgstr ""
 "Não foi possível determinar o endereço de barramento da variável de ambiente "
 "DBUS_STARTER_BUS_TYPE — valor desconhecido “%s”"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -550,20 +550,20 @@ msgstr ""
 "Não foi possível determinar o endereço do barramento porque a variável de "
 "ambiente DBUS_STARTER_BUS_TYPE não está definida"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo de barramento %d desconhecido"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Falta de conteúdo inesperada ao tentar ler uma linha"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Falta de conteúdo inesperada ao tentar (seguramente) ler uma linha"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -571,16 +571,16 @@ msgstr ""
 "Foram esgotados todos mecanismos de autenticação disponíveis (tentado: %s) "
 "(disponível: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelado via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Erro ao obter informação para o diretório “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -588,22 +588,22 @@ msgstr ""
 "As permissões no diretório “%s” estão malformadas. É esperado 0700, mas foi "
 "obtido 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Erro ao criar o diretório “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Erro ao abrir o chaveiro “%s” para leitura: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "A linha %d do chaveiro em “%s” com o conteúdo “%s” está malformado"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -611,7 +611,7 @@ msgstr ""
 "O primeiro símbolo da linha %d do chaveiro em “%s” com o conteúdo “%s” está "
 "malformado"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -619,37 +619,37 @@ msgstr ""
 "O segundo símbolo da linha %d do chaveiro em “%s” com o conteúdo “%s” está "
 "malformado"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Não foi possível localizar um anexo com o ID %d no chaveiro em “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Erro ao excluir o arquivo de bloqueio anterior “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Erro ao criar o arquivo de bloqueio “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Erro ao fechar o arquivo de bloqueio (desvinculado) “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Erro ao desvincular o arquivo de bloqueio “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Erro ao abrir o chaveiro “%s” para escrita: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Adicionalmente, liberar o bloqueio de “%s” também falhou: %s) "
@@ -669,112 +669,112 @@ msgstr ""
 "Foram encontrados sinalizadores sem suporte ao construir uma conexão do lado "
 "do cliente"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Nenhuma interface “org.freedesktop.DBus.Properties” no objeto no caminho %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Nenhuma propriedade “%s”"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "A propriedade “%s” não pode ser lida"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "A propriedade “%s” não pode ser escrita"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Erro ao definir a propriedade “%s”: o tipo esperado é “%s”, mas obteve “%s”"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Nenhuma interface “%s”"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Nenhuma interface “%s” no objeto no caminho %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Método inexistente “%s”"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "O tipo da mensagem, “%s”, não equivale ao tipo esperado “%s”"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Um objeto já foi exportado para a interface %s em %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Não foi possível obter a propriedade %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Não foi possível definir a propriedade %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "O método “%s” retornou o tipo “%s”, mas é esperado “%s”"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "O método “%s” na interface “%s” com a assinatura “%s” não existe"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Uma subárvore já foi exportada para %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "o tipo é INVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 "Mensagem de METHOD_CALL: O campo de cabeçalho PATH ou MEMBER está faltando"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr ""
 "Mensagem de METHOD_RETURN: O campo de cabeçalho REPLY_SERIAL está faltando"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Mensagem de ERROR: O campo de cabeçalho REPLY_SERIAL ou ERROR_NAME está "
 "faltando"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 "Mensagem de SIGNAL: O campo de cabeçalho PATH, INTERFACE ou MEMBER está "
 "faltando"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -782,7 +782,7 @@ msgstr ""
 "Mensagem de SIGNAL: O campo de cabeçalho PATH está usando o valor reservado /"
 "org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -790,21 +790,21 @@ msgstr ""
 "Mensagem de SIGNAL: O campo de cabeçalho INTERFACE está usando o valor "
 "reservado org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Ao tentar ler %lu byte obteve-se %lu"
 msgstr[1] "Ao tentar ler %lu bytes obteve-se %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Era esperado um byte NUL (nulo) após o texto “%s”, mas foi localizado o byte "
 "%d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -814,17 +814,21 @@ msgstr ""
 "posição %d (tamanho do texto é %d). O texto UTF-8 válido até este ponto era "
 "“%s”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Valor aninhado profundo demais"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "O valor “%s” analisado não é um objeto de caminho D-Bus válido"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "O valor “%s” analisado não é uma assinatura D-Bus válida"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -837,7 +841,7 @@ msgstr[1] ""
 "Foi encontrado um vetor com tamanho de %u bytes. O tamanho máximo é de 2<<26 "
 "bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -847,12 +851,12 @@ msgstr ""
 "comprimento múltiplo de %u bytes, porém foi localizado %u bytes em "
 "comprimento"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "O valor “%s” analisado para variante não é uma assinatura D-Bus válida"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -860,7 +864,7 @@ msgstr ""
 "Erro ao desserializar GVariant com o texto de tipo “%s” do formato "
 "delimitado pelo D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -869,31 +873,31 @@ msgstr ""
 "Valor identificador de endian inválido. Era esperado 0x6c (“l”) ou 0x42 "
 "(“B”), mas foi localizado o valor 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Versão majoritária de protocolo inválida. Era esperado 1, mas foi localizado "
 "%d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Cabeçalho da assinatura localizado, mas não é do tipo assinatura"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "O cabeçalho de assinatura foi localizado com a assinatura “%s”, mas o corpo "
 "da mensagem está vazio"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "O valor “%s” analisado não é uma assinatura D-Bus válida (para o corpo)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -904,11 +908,11 @@ msgstr[1] ""
 "Nenhum cabeçalho de assinatura na mensagem, mas o corpo da mensagem tem %u "
 "bytes"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Não foi possível desserializar a mensagem: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -916,7 +920,7 @@ msgstr ""
 "Erro ao serializar GVariant com o texto de tipo “%s” para o formato "
 "delimitado pelo D-Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -924,18 +928,18 @@ msgstr ""
 "O número de descritores de arquivo na mensagem (%d) difere do campo de "
 "cabeçalho (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Não foi possível serializar a mensagem: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "O corpo da mensagem tem a assinatura “%s”, mas não há um cabeçalho de "
 "assinatura"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -944,38 +948,38 @@ msgstr ""
 "O corpo da mensagem tem o tipo de assinatura “%s”, mas a assinatura no campo "
 "de cabeçalho é “%s”"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "O corpo da mensagem está vazio, mas a assinatura no campo de cabeçalho é "
 "“(%s)”"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Retorno de erro com o corpo de tipo “%s”"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Retorno de erro com o corpo vazio"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Digite qualquer tecla para fechar esta janela)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "A sessão dbus não está em execução, e o início automático falhou"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Não foi possível obter o perfil da máquina: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr ""
 "Não foi possível carregar /var/lib/dbus/machine-id ou /etc/machine-id: "
@@ -1000,27 +1004,27 @@ msgstr ""
 "dono e o proxy foi construído com o sinalizador "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Sem suporte a espaço de nome abstrato"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 "Não foi possível especificar o arquivo de valor de uso único ao criar um "
 "servidor"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Erro ao gravar o arquivo de valor de uso único em “%s”: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "O texto “%s” não é válido para GUID D-Bus"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Não é possível escutar no transporte “%s” por falta de suporte"
@@ -1300,39 +1304,39 @@ msgstr "Erro: Número excessivo de argumentos.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erro: %s não é um nome válido de barramento conhecido.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Sem nome"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "O arquivo da área de trabalho não especifica o campo Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Não é possível localizar o terminal requerido para o aplicativo"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Não é possível criar pasta de configuração do aplicativo do usuário %s: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Não é possível criar pasta de configuração MIME do usuário %s: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "A informação do aplicativo carece de um identificador"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Não é possível criar arquivo %s da área de trabalho do usuário"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definição personalizada para %s"
@@ -1393,12 +1397,12 @@ msgstr "Número inválido de tokens (%d) na codificação GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Esperado um GEmblem para o GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operação sem suporte"
@@ -1407,69 +1411,73 @@ msgstr "Operação sem suporte"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Ponto de montagem contido não existe"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Não é possível copiar sobre diretório"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Não é possível copiar diretório sobre diretório"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Arquivo alvo existe"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Não é possível copiar o diretório recursivamente"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Não há suporte a união de arquivos"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Erro ao unir o arquivo: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Não há suporte a copiar (reflink/clone) entre montagens"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Não há suporte a copiar (reflink/clone) ou é inválido"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Não há suporte a copiar (reflink/clone) ou não funcionou"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Não é possível copiar o arquivo especial"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Fornecido valor inválido de link simbólico"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Não há suporte a links simbólicos"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Não há suporte para lixeira"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Nomes de arquivo não podem conter “%c”"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volume não implementa montagem"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Nenhum aplicativo está registrado como manipulador deste arquivo"
 
@@ -1514,7 +1522,7 @@ msgstr "Não é permitido truncar fluxo de entrada"
 msgid "Truncate not supported on stream"
 msgstr "Não há suporte para truncar fluxo"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Nome de servidor inválido"
@@ -1717,10 +1725,10 @@ msgid "Error writing to stdout"
 msgstr "Erro ao gravar para a saída padrão"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1740,56 +1748,60 @@ msgstr ""
 "usando locais GIO em vez de arquivos locais: por exemplo, você pode\n"
 "usar alguma coisa como smb://servidor/recurso/arquivo.txt como local."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Nenhum local fornecido"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Nenhum diretório alvo"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Mostra progresso"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Pergunta antes de sobrescrever"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Preserva todos os atributos"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Cria backup dos arquivos de destino existentes"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Nunca segue links simbólicos"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Usa permissões padrão para o destino"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Transferido(s) %s de %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "ORIGEM"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINO"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copia um ou mais arquivos de ORIGEM para DESTINO."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1799,88 +1811,98 @@ msgstr ""
 "GIO em vez de arquivos locais: por exemplo, você pode usar alguma\n"
 "coisa como smb://servidor/recurso/arquivo.txt como local."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "O destino %s não é um diretório"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: sobrescrever “%s”? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Lista os atributos graváveis"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Obtém informação de sistema de arquivos"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Os atributos a obter"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTOS"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Não segue links simbólicos"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atributos:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "nome de exibição: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "nome para edição: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "nome: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "tipo: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "tamanho: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "oculto\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "caminho local: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "montagem unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Atributos definíveis:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Atributos graváveis no namespace:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Mostra informações sobre locais."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1895,23 +1917,27 @@ msgstr ""
 "(ex.: standard::icon), ou apenas pelo espaço de nome (ex.: unix),\n"
 "ou por “*”, que corresponde a todos atributos"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Mostra arquivos ocultos"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Usa um formato de listagem longa"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Exibe nomes de exibição"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
-msgstr "Imprimir URIs completas"
+msgstr "Imprime URIs completas"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Lista o conteúdo dos locais."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2039,12 +2065,12 @@ msgid "Mount as mountable"
 msgstr "Monta como montável"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Monta o volume com o arquivo de dispositivo"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Monta o volume com o arquivo de dispositivo ou outro identificador"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "DISPOSITIVO"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2058,6 +2084,10 @@ msgstr "Ejeta"
 msgid "Stop drive with device file"
 msgstr "Interrompe o volume com o arquivo de dispositivo"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DISPOSITIVO"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Desmonta todas montagens com o esquema dado"
@@ -2111,16 +2141,11 @@ msgstr "Acesso anônimo negado"
 msgid "No drive for device file"
 msgstr "Nenhuma unidade para o arquivo de dispositivo"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Montado %s em %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Nenhum volume para o arquivo de dispositivo"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Nenhum volume para o ID dado"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Monta ou desmontar os locais."
 
@@ -2785,9 +2810,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:1993
 #, c-format
-#| msgid ""
-#| "Cannot provide per-desktop overrides for localised key “%s” in schema "
-#| "“%s” (override file “%s”); ignoring override for this key."
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”); ignoring override for this key."
@@ -2798,9 +2820,6 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2002
 #, c-format
-#| msgid ""
-#| "Cannot provide per-desktop overrides for localised key “%s” in schema "
-#| "“%s” (override file “%s”) and --strict was specified; exiting."
 msgid ""
 "Cannot provide per-desktop overrides for localized key “%s” in schema "
 "“%s” (override file “%s”) and --strict was specified; exiting."
@@ -2936,7 +2955,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Não é possível renomear o arquivo, o nome do arquivo já existe"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Nome de arquivo inválido"
 
@@ -3012,129 +3031,125 @@ msgstr "O sistema de arquivos não tem suporte a links simbólicos"
 msgid "Error making symbolic link %s: %s"
 msgstr "Erro ao criar link simbólico %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Não há suporte a links simbólicos"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Erro ao mover arquivo %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Não é possível mover diretório sobre diretório"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Falha ao criar arquivo de backup"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Erro ao remover arquivo alvo: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Não há suporte a mover entre montagens"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Não foi possível determinar a utilização de disco de %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Valor de atributo deve ser não-NULO"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Tipo de atributo inválido (esperava-se expressão)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Nome de atributo estendido inválido"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Erro ao definir atributo estendido “%s”: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (codificação inválida)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Erro ao obter informação para o arquivo “%s”: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Erro ao obter informação para o descritor de arquivo: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Tipo de atributo inválido (esperado uint32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Tipo de atributo inválido (esperado uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Tipo de atributo inválido (expressão de byte esperada)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Não foi possível definir permissões aos links simbólicos"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Erro ao definir permissões: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Erro ao definir proprietário: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "o link simbólico deve ser não-NULO"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Erro ao definir link simbólico: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Erro ao definir link simbólico: o arquivo não é um link simbólico"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Erro ao definir data/hora de modificação ou acesso: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "O contexto SELinux deve ser não-NULO"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Erro ao definir o contexto SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux não está habilitado neste sistema"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Não há suporte à definição do atributo %s"
@@ -3157,7 +3172,7 @@ msgstr "Erro ao buscar no arquivo: %s"
 msgid "Error closing file: %s"
 msgstr "Erro ao fechar arquivo: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Não é possível localizar o tipo de arquivo monitor local padrão"
 
@@ -3302,11 +3317,11 @@ msgstr ""
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Nome da máquina “%s” contém “[” mas não “]”"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Rede inalcançável"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Máquina inalcançável"
 
@@ -3347,18 +3362,18 @@ msgstr "A soma dos vetores passada para %s é grande demais"
 msgid "Source stream is already closed"
 msgstr "A fonte do fluxo já está fechada"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Erro ao resolver “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s não implementado"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Domínio inválido"
 
@@ -3733,175 +3748,175 @@ msgstr "Nome de esquema vazio\n"
 msgid "No such key “%s”\n"
 msgstr "Nenhuma chave “%s”\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Soquete inválido, não inicializado"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Soquete inválido, inicialização falhou devido a: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "O soquete já está fechado"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Tempo de E/S do soquete foi esgotado"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "criando GSocket a partir do fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Não é possível criar soquete: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Foi especificada uma família desconhecida"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Foi especificado um protocolo desconhecido"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Não foi possível usar operações de datagrama em um soquete não-datagrama."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Não foi possível usar operações de datagrama em um soquete com um tempo "
 "limite definido."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "não foi possível obter endereço local: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "não foi possível obter endereço remoto: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "não foi possível escutar: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Erro ao vincular ao endereço: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Erro ao vincular ao endereço %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Erro ao entrar no grupo multicast: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Erro ao sair do grupo multicast: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Não há suporte para multicast específico da origem"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Família de soquete sem suporte"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "a origem específica não é um endereço IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Nome de interface grande demais"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface não localizada: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Não há suporte para multicast específico da origem IPv4"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Não há suporte para multicast específico da origem IPv6"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Erro ao aceitar a conexão: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Conexão em progresso"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Não é possível obter erro pendente: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Erro ao receber dados: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Erro ao enviar dados: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Não é possível encerrar soquete: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Erro ao fechar soquete: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Aguardando pela condição do soquete: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Erro ao enviar mensagem: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Não há suporte a GSocketControlMessage no Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Erro ao receber mensagem: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Não é possível ler as credenciais do soquete: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials não está implementado para este SO"
 
@@ -4164,7 +4179,7 @@ msgstr "Erro ao ler do descritor de arquivo: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Erro ao fechar o descritor de arquivo: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Sistema de arquivos root"
 
@@ -4253,73 +4268,73 @@ msgstr "Args. incorretos\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Atributo “%s” inesperado para o elemento “%s”"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Atributo “%s” do elemento “%s” não localizado"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Marca “%s” inesperada, esperava marca “%s”"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Marca “%s” inesperada dentro de “%s”"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Data/hora “%s” inválida no arquivo de marcadores"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 "Nenhum arquivo de marcadores válido foi localizado nos diretórios de dados"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Já existe um marcador para o URI “%s”"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Nenhum marcador localizado para o URI “%s”"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Não foi definido tipo MIME no marcador para o URI “%s”"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Não foi definido sinal de particular no marcador para o URI “%s”"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Não há grupos definidos no marcador para o URI “%s”"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Nenhum aplicativo chamado “%s” registrou um marcador para “%s”"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Falha em expandir linha de execução “%s” com URI “%s”"
@@ -4328,8 +4343,8 @@ msgstr "Falha em expandir linha de execução “%s” com URI “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Caractere não representável na conversão da entrada"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Sequência de caracteres parcial no final da entrada"
 
@@ -4872,25 +4887,25 @@ msgstr "Modelo “%s” não contém XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Falha ao ler link simbólico “%s”: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Não foi possível abrir conversor de “%s” para “%s”: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 "Não é possível fazer uma leitura em bruto em g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Dados residuais não convertidos no buffer de leitura"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Canal termina em um caractere parcial"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Não é possível fazer uma leitura em bruto de g_io_channel_read_to_end"
 
@@ -4931,8 +4946,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Arquivo de chave contém codificação “%s” sem suporte"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Arquivo de chave não tem grupo “%s”"
@@ -4968,31 +4983,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Chave “%s” no grupo “%s” tem o valor “%s” onde %s era esperado"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Arquivo de chave contém caractere de escape no fim da linha"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Arquivo de chave contém sequência de escape “%s” inválida"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "O valor “%s” não pode ser interpretado como um número."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Valor inteiro “%s” fora dos limites"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "O valor “%s” não pode ser interpretado como ponto flutuante."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "O valor “%s” não pode ser interpretado como um booleano."
@@ -5081,11 +5096,11 @@ msgstr ""
 "Entidade não termina com um ponto e vírgula; provavelmente você utilizou um "
 "“e comercial” sem desejar iniciar uma entidade — escape-o com &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Documento tem de começar com um elemento (ex. <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5094,7 +5109,7 @@ msgstr ""
 "“%s” não é um caractere válido após um caractere “<”; não poderá começar um "
 "nome de elemento"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5103,7 +5118,12 @@ msgstr ""
 "Caractere estranho “%s”, esperado um caractere “>” para finalizar a marca "
 "“%s” de elemento vazio"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Número excessivo de atributos no elemento “%s”"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5111,7 +5131,7 @@ msgstr ""
 "Caractere estranho “%s”, esperava-se um “=” após o nome do atributo “%s” do "
 "elemento “%s”"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5122,7 +5142,7 @@ msgstr ""
 "marca inicial do elemento “%s”, ou opcionalmente um atributo; talvez tenha "
 "utilizado um caractere inválido no nome de atributo"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5131,7 +5151,7 @@ msgstr ""
 "Caractere estranho “%s”, esperava-se uma abertura de aspas após o sinal de "
 "igual ao atribuir o valor ao atributo “%s” do elemento “%s”"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5140,7 +5160,7 @@ msgstr ""
 "“%s” não é um caractere válido após os caracteres “</”; “%s” não poderá "
 "começar o nome de um elemento"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5149,25 +5169,25 @@ msgstr ""
 "“%s” não é um caractere válido após o nome do elemento de fecho “%s”; o "
 "caractere permitido é “>”"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Elemento “%s” foi fechado, nenhum elemento está atualmente aberto"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Elemento “%s” foi fechado, mas o elemento atualmente aberto é “%s”"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Documento estava vazio ou apenas continha espaços"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Documento terminou inesperadamente logo após um menor que “<”"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5176,7 +5196,7 @@ msgstr ""
 "Documento terminou inesperadamente com elementos ainda abertos — “%s” foi o "
 "último elemento aberto"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5185,21 +5205,21 @@ msgstr ""
 "Documento terminou inesperadamente, esperava-se ver um sinal de maior (“>”) "
 "para terminar a marca <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Documento terminou inesperadamente dentro de um nome de elemento"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Documento terminou inesperadamente dentro de um nome de atributo"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "Documento terminou inesperadamente dentro de uma marca de abertura de "
 "elemento."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5207,24 +5227,24 @@ msgstr ""
 "Documento terminou inesperadamente após o sinal de igual que se seguiu a um "
 "nome de atributo; nenhum valor de atributo"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Documento terminou inesperadamente dentro de um valor de atributo"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Documento terminou inesperadamente dentro da marca de fechamento do elemento "
 "“%s”"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Documento terminou inesperadamente dentro da marca de um elemento não aberto"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Documento terminou inesperadamente dentro de um comentário ou instrução de "
@@ -5285,7 +5305,7 @@ msgstr "Erro ao ler a opção %s"
 msgid "Missing argument for %s"
 msgstr "Falta argumento para %s"
 
-#: glib/goption.c:2187
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opção %s desconhecida"
@@ -5693,77 +5713,77 @@ msgstr "Texto estava vazio (ou apenas continha espaços)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Falha ao ler dados de processo filho (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Erro inesperado no select() ao ler dados de processo filho (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Erro inesperado na leitura de dados de um processo filho (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Erro inesperado em waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Processo filho concluiu com código %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Processo filho foi terminado pelo sinal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Processo filho foi parado pelo sinal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Processo filho concluiu anormalmente"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Falha ao ler de canal filho (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Falha ao criar processo filho “%s” (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Falha no fork (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Falha ao ir para diretório “%s” (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Falha ao executar processo filho “%s” (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Falha ao redirecionar saída ou entrada do processo filho (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Falha no fork de processo filho (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Erro desconhecido ao executar processo filho “%s”"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Falha ao ler dados suficientes de canal pid do filho (%s)"
@@ -5815,194 +5835,194 @@ msgstr ""
 "Erro inesperado no g_io_channel_win32_poll() ao ler dados de um processo "
 "filho"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Texto vazio não é um número"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” não é um número assinado"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "O número “%s” está fora dos limites [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” não é um número não assinado"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Falha ao alocar memória"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Caractere fora do limite para UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Sequência inválida na conversão da entrada"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Caractere fora do limite para UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2326
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2328
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2330
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2332
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2334
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2336
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2340
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2342
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2344
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2346
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2360
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2374
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2412 glib/gutils.c:2529
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2416
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6010,7 +6030,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2483
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6018,7 +6038,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2488
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6030,36 +6050,46 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2542
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2547
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2552
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2557
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2562
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2567
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+#~ msgstr ""
+#~ "Este GTlsBackend não oferece suporte à criação de certificados PKCS #11"
+
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Erro no endereço “%s” — o atributo família está malformada"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "Montado %s em %s\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; ignorando sobrescrita para esta chave.\n"
 
index b748c96..8a55edc 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
-"PO-Revision-Date: 2019-08-21 22:20+0200\n"
+"POT-Creation-Date: 2020-03-10 16:11+0000\n"
+"PO-Revision-Date: 2020-03-19 11:52+0100\n"
 "Last-Translator: Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>\n"
 "Language-Team: Gnome Romanian Translation Team <gnomero-list@lists."
 "sourceforge.net>\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
 "20)) ? 1 : 2);\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 2.3\n"
 "X-Project-Style: gnome\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
@@ -121,8 +121,8 @@ msgstr "Comanda pentru care să se afișeze ajutorul detaliat"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identificatorul de aplicație în format D-Bus (eg: org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "FIȘIER"
@@ -285,7 +285,7 @@ msgstr "Flux deja închis"
 msgid "Truncate not supported on base stream"
 msgstr "Trunchierea fluxului de bază nu este suportată"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -305,22 +305,22 @@ msgstr "Spațiu insuficient în destinație"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Secvență de octeți incorectă în inputul conversiei"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Eroare în timpul conversiei: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Inițializarea întreruptibilă nu este implementată"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Conversia de la setul de caractere „%s” la „%s” nu este suportată"
@@ -344,19 +344,23 @@ msgstr "Tip necunoscută"
 msgid "%s filetype"
 msgstr "tip de fișier %s"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials conține date nevalide"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials nu este implementat pe acest SO"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Nu există suport pentru GCredentials pe platforma dumneavoastră"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials nu conține un ID de proces pe acest SO"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Spoofing-ul certificărilor nu este posibil pe acest SO"
 
@@ -364,7 +368,7 @@ msgstr "Spoofing-ul certificărilor nu este posibil pe acest SO"
 msgid "Unexpected early end-of-stream"
 msgstr "Flux terminat neașteptat de repede"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Cheie „%s” nesuportată în intrarea de adresă „%s”"
@@ -383,32 +387,28 @@ msgstr ""
 "Adresa „%s” nu este validă (este nevoie de exact una din cale, dir, tmpdir "
 "sau chei abstracte)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Eroare în adresa „%s” - atributul port este eronat"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Eroare în adresa „%s” - atributul familie este eronat"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Eroare în adresa „%s” — atributul „%s” este malformat"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transport „%s” necunoscut sau nesuportat pentru adresa „%s”"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Elementul de adresă „%s” nu conține două puncte (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Numele de transport în elementul de adresă „%s” nu trebuie să fie gol"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -417,7 +417,7 @@ msgstr ""
 "Perechea cheie/valoare %d, „%s”, în elementul de adresă „%s”, nu conține un "
 "semn de egalitate"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -425,7 +425,7 @@ msgstr ""
 "Perechea cheie/valoare %d, „%s”, în elementul de adresă „%s”, nu trebuie să "
 "aibă o cheie goală"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -434,7 +434,7 @@ msgstr ""
 "Eroare la conversia din formatul „escaped” a cheii sau a valorii din "
 "perechea cheie/valoare %d, „%s”, în elementul de adresă „%s”"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -443,79 +443,79 @@ msgstr ""
 "Eroare în adresa „%s” - transportul unix necesită exact una din cheile "
 "„path” sau „abstract” să fie stabilită"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Eroare în adresa „%s” - atributul gazdă lipsește sau este eronat"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Eroare la adresa „%s” - atributul port lipsește sau este eronat"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Eroare în adresa „%s” - atributul noncefile lipsește sau este eronat"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Eroare la auto-lansare: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Eroare la deschiderea fișierului nonce „%s”: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Eroare la citirea din fișierul nonce „%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Eroare la citirea din fișierul nonce „%s”, se așteptau 16 octeți, s-au "
 "primit %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Eroare la scrierea conținutului fișierului nonce „%s” la flux:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Adresa oferită este goală"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Nu se poate lansa o magistrală de mesaje când setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Nu se poate lansa o magistrală de mesaje fără un identificator de mașină: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Nu se poate lansa automat D-Bus fără $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Eroare la crearea liniei de comandă „%s”: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nu se poate determina adresa magistralei de sesiune (neimplementat pe acest "
 "sistem de operare)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -524,7 +524,7 @@ msgstr ""
 "Nu se poate determina adresa magistralei din variabila de mediu "
 "DBUS_STARTER_BUS_TYPE — valoare necunoscută „%s”"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -532,22 +532,22 @@ msgstr ""
 "Nu s-a putut determina adresa magistralei pentru că variabila de mediu "
 "DBUS_STARTER_BUS_TYPE nu este setată"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tip de magistrală %d necunoscut"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Lipsă de conținut neașteptată în timp ce se încerca citirea unei linii"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Lipsă de conținut neașteptată în timp ce se încerca citirea (în siguranță a) "
 "unei linii"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -555,16 +555,16 @@ msgstr ""
 "S-au epuizat toate mecanismele de autentificare disponibile (încercat: %s) "
 "(disponibile: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Anulat via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Eroare în timpul obținerii de informații pentru directorul „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -572,22 +572,22 @@ msgstr ""
 "Permisiunile pentru dosarul „%s” sunt eronate. Se aștepta modul 0700, s-a "
 "primit 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Eroare la crearea directorului „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Eroare la deschiderea inelului de chei „%s” pentru citire: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Linia %d a inelului de chei de la „%s” cu conținutul „%s” este eronată"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -595,7 +595,7 @@ msgstr ""
 "Primul jeton al liniei %d a inelului de chei de la „%s” cu conținutul „%s” "
 "este eronat"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -603,57 +603,57 @@ msgstr ""
 "Al doilea jeton al liniei %d a inelului de chei de la „%s” cu conținutul "
 "„%s” este eronat"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nu s-a găsit un cookie cu id-ul %d în inelul de chei de la „%s”"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Eroare la ștergerea fișierului de blocare învechit „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Eroare la crearea fișierului de blocare „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Eroare la închiderea fișierului de blocare (deconectat) „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Eroare la deconectarea fișierului de blocare „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Eroare la deschiderea inelului de chei „%s” pentru citire: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Adițional, a eșuat și eliberarea blocării pentru „%s”: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2400
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "Conexiunea este închisă"
 
-#: gio/gdbusconnection.c:1901
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "Limita de timp a fost atinsă"
 
-#: gio/gdbusconnection.c:2522
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "S-au întâlnit fanioane nesuportate când se construia partea de client a "
 "conexiunii"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -661,104 +661,104 @@ msgstr ""
 "Nu există interfața „org.freedesktop.DBus.Properties” în obiectul de la "
 "calea %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4303
 #, c-format
 msgid "No such property “%s”"
 msgstr "Nu există proprietatea „%s”"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4315
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Proprietatea „%s” nu poate fi citită"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4326
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Proprietatea „%s” nu poate fi scrisă"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4346
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Eroare la stabilirea proprietății „%s”: Se aștepta tipul „%s”, dar s-a "
 "primit „%s”"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Nu există interfața „%s”"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Nu există interfața „%s” în obiectul de la calea %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4975
 #, c-format
 msgid "No such method “%s”"
 msgstr "Nu există metoda „%s”"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5006
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Tipul de mesaj, „%s”, nu se potrivește cu cel așteptat „%s”"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Există deja un obiect exportat pentru interfața %s de la %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5430
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nu se poate obține proprietatea %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5486
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nu se poate stabili proprietatea %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5664
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metoda „%s” a întors tipul „%s”, dar se aștepta „%s”"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6741
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metoda „%s” din interfața „%s” cu semnătura „%s” nu există"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Un subarbore este deja exporta pentru %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "tipul este NEVALID"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 "Mesaj METHOD_CALL: unul din câmpurile de antet PATH sau MEMBER lipsește"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Mesaj METHOD_RETURN: câmpul antet REPLY_SERIAL lipsește"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Mesaj de EROARE: unul din câmpurile de antet REPLY_SERIAL sau ERROR_NAME "
 "lipsește"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 "Mesaj SIGNAL: unul din câmpurile de antet PATH, INTERFACE sau MEMBER lipsește"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -766,7 +766,7 @@ msgstr ""
 "Mesaj SIGNAL: câmpul de antet PATH utilizează valoarea rezervată /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -774,7 +774,7 @@ msgstr ""
 "Mesaj SIGNAL: câmpul de antet INTERFACE utilizează valoarea rezervată org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -782,12 +782,12 @@ msgstr[0] "S-a încercat să se citească %lu octet, dar s-a primit doar %lu"
 msgstr[1] "S-a încercat să se citească %lu octeți, dar s-au primit doar %lu"
 msgstr[2] "S-a încercat să se citească %lu de octeți, dar s-au primit doar %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "S-a așteptat un octet NUL după șirul „%s”, dar s-a găsit octetul %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -797,17 +797,21 @@ msgstr ""
 "%d (lungimea șirului este %d). Șirul UTF-8 valid până la acel punct a fost "
 "„%s”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Valoare imbricată prea adânc"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Valoarea parsată „%s” nu este o cale de obiect D-Bus validă"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Valoarea parsată „%s” nu este o semnătură D-Bus validă"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -823,7 +827,7 @@ msgstr[2] ""
 "S-a întâlnit un șir cu lungimea de %u de octeți. Lungimea maximă este de "
 "2<<26 de octeți (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -832,12 +836,12 @@ msgstr ""
 "S-a întâlnit un șir de tipul „a%c”, se aștepta să aibă o lungime un multiplu "
 "de %u octeți, dar s-a constatat că are o lungime de %u octeți"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Valoarea parsată „%s” pentru variantă nu este o semnătură D-Bus validă"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -845,7 +849,7 @@ msgstr ""
 "Eroare la deserializarea GVariant cu șirul de tipul „%s” din formatul de "
 "rețea D-Bus"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -854,28 +858,28 @@ msgstr ""
 "Valoare de endianness nevalidă. Se aștepta 0x6c („l”) sau 0x42 („B”), dar s-"
 "a găsit valoarea 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versiune majoră de protocol nevalidă. Se aștepta 1 dar s-a găsit %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Antet de semnătură găsit dar nu este de tipul semnătură"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "S-a găsit un antet de semnătură cu semnătura „%s”, dar corpul mesajului este "
 "vid"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Valoarea parsată „%s” nu este o semnătură D-Bus validă (pentru corp)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -889,11 +893,11 @@ msgstr[2] ""
 "Nu există niciun antet de semnătură în mesaj, dar corpul mesajului este de "
 "%u de octeți"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Nu se poate deserializa mesajul: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -901,24 +905,24 @@ msgstr ""
 "Eroare la serializarea GVariant cu șirul de tipul „%s” în formatul de rețea "
 "D-Bus"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Numărul de descriptori de fișier în mesaj (%d) diferă de câmpul de antet (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Nu se poate serializa mesajul: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Corpul mesajului are semnătura „%s”, dar nu există nicio semnătură de antet"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -927,51 +931,51 @@ msgstr ""
 "Corpul mesajului are semnătura „%s”, dar semnătura din câmpul de antet este "
 "„%s”"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Corpul mesajului este vid, dar semnătura din câmpul de antet este „(%s)”"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Eroare la întoarcere cu corpul de tipul „%s”"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Rezultat de eroare cu corp vid"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Tastați orice caracter pentru a închide această fereastră)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Sesiunea dbus nu rulează, și lansarea automată a eșuat"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nu se poate obține profilul hardware: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Nu se poate încărca /var/lib/dbus/machine-id sau /etc/machine-id: "
 
-#: gio/gdbusproxy.c:1625
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Eroare la apelul StartServiceByName pentru %s: "
 
-#: gio/gdbusproxy.c:1648
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Răspuns neașteptat %d de la metoda StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2748 gio/gdbusproxy.c:2883
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -981,25 +985,25 @@ msgstr ""
 "proprietar, și a fost construit utilizând fanionul "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Spațiul de nume abstract nu este suportat"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Nu se poate specifica un fișier nonce când se creează un server"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Eroare la scrierea fișierului nonce la „%s”: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Șirul „%s” nu este un GUID D-Bus valid"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Nu se poate asculta pe transportul nesuportat „%s”"
@@ -1029,13 +1033,13 @@ msgstr ""
 "comandă.\n"
 
 #: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
-#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:846 gio/gdbus-tool.c:1183
-#: gio/gdbus-tool.c:1668
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Eroare: %s\n"
 
-#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1684
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Eroare la parsarea introspecției XML: %s\n"
@@ -1067,24 +1071,24 @@ msgstr "Opțiuni ale capătului conexiunii:"
 msgid "Options specifying the connection endpoint"
 msgstr "Opțiuni care specifică capătul conexiunii"
 
-#: gio/gdbus-tool.c:429
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Niciun capăt de conexiune specificat"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Mai multe capete de conexiune specificate"
 
-#: gio/gdbus-tool.c:509
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Avertisment: conform datelor de introspecție, interfața „%s” nu există\n"
 
-#: gio/gdbus-tool.c:518
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1093,168 +1097,168 @@ msgstr ""
 "Avertisment: conform datelor de introspecție, metoda „%s” nu există în "
 "interfața „%s”\n"
 
-#: gio/gdbus-tool.c:580
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
 msgstr "Destinația opțională pentru semnal (nume unic)"
 
-#: gio/gdbus-tool.c:581
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
 msgstr "Calea obiectului pe care se emite semnalul"
 
-#: gio/gdbus-tool.c:582
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr "Numele semnalului și interfeței"
 
-#: gio/gdbus-tool.c:615
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "Emite un semnal."
 
-#: gio/gdbus-tool.c:670 gio/gdbus-tool.c:977 gio/gdbus-tool.c:1771
-#: gio/gdbus-tool.c:2003 gio/gdbus-tool.c:2223
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Eroare la conectare: %s\n"
 
-#: gio/gdbus-tool.c:690
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Eroare: %s nu este un nume de magistrală unic valid.\n"
 
-#: gio/gdbus-tool.c:709 gio/gdbus-tool.c:1020 gio/gdbus-tool.c:1814
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
 msgstr "Eroare: calea către obiect nu a fost specificată\n"
 
-#: gio/gdbus-tool.c:732 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1834
-#: gio/gdbus-tool.c:2074
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Eroare: calea %s către obiect nu este validă\n"
 
-#: gio/gdbus-tool.c:752
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
 msgstr "Eroare: numele de semnal nu a fost specificat\n"
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:770
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr ""
 "Eroare: numele de semnal „%s” nu este valid\n"
 "\n"
 
-#: gio/gdbus-tool.c:778
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Eroare: %s nu este un nume de interfață valid\n"
 
-#: gio/gdbus-tool.c:784
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Eroare: %s nu este un nume de membru valid\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:821 gio/gdbus-tool.c:1152
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Eroare la parsarea parametrului %d: %s\n"
 
-#: gio/gdbus-tool.c:853
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Eroare la golirea conexiunii: %s\n"
 
-#: gio/gdbus-tool.c:880
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
 msgstr "Numele destinației pe care se va invoca metoda"
 
-#: gio/gdbus-tool.c:881
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
 msgstr "Calea către obiectul pe care se va invoca metoda"
 
-#: gio/gdbus-tool.c:882
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "Metoda și numele interfeței"
 
-#: gio/gdbus-tool.c:883
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "Limita de timp în secunde"
 
-#: gio/gdbus-tool.c:922
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr "Invocă o metodă pe un obiect la distanță."
 
-#: gio/gdbus-tool.c:994 gio/gdbus-tool.c:1788 gio/gdbus-tool.c:2028
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr "Eroare: destinația nu a fost specificată\n"
 
-#: gio/gdbus-tool.c:1005 gio/gdbus-tool.c:1805 gio/gdbus-tool.c:2039
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr ""
 "Eroare: %s nu este un nume de magistrală valid\n"
 "\n"
 
-#: gio/gdbus-tool.c:1055
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr "Eroare: numele metodei nu a fost specificat\n"
 
-#: gio/gdbus-tool.c:1066
+#: gio/gdbus-tool.c:1070
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr ""
 "Eroare: numele de metodă „%s” nu este valid\n"
 "\n"
 
-#: gio/gdbus-tool.c:1144
+#: gio/gdbus-tool.c:1148
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Eroare la parsarea parametrului %d cu tipul „%s”: %s\n"
 
-#: gio/gdbus-tool.c:1630
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
 msgstr "Numele destinației de introspectat"
 
-#: gio/gdbus-tool.c:1631
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
 msgstr "Calea obiectului de introspectat"
 
-#: gio/gdbus-tool.c:1632
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "Afișează XML"
 
-#: gio/gdbus-tool.c:1633
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr "Introspectează inferiorii"
 
-#: gio/gdbus-tool.c:1634
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Tipărește doar proprietățile"
 
-#: gio/gdbus-tool.c:1723
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr "Introspectează un obiect la distanță."
 
-#: gio/gdbus-tool.c:1929
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
 msgstr "Numele destinației de monitorizat"
 
-#: gio/gdbus-tool.c:1930
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr "Calea către obiectul de monitorizat"
 
-#: gio/gdbus-tool.c:1955
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr "Monitorizează un obiect la distanță."
 
-#: gio/gdbus-tool.c:2013
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Eroare: nu se poate monitoriza o conexiune non-magistrală-mesaj\n"
 
-#: gio/gdbus-tool.c:2137
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 "Serviciu de activat înainte de a-l aștepta pe celălalt (nume bine cunoscut)"
 
-#: gio/gdbus-tool.c:2140
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1262,65 +1266,65 @@ msgstr ""
 "Limita de timp de așteptat înainte de a ieși cu o eroare (secunde); 0 pentru "
 "nicio limită de timp (implicit)"
 
-#: gio/gdbus-tool.c:2188
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPȚIUNE…] NUME-MAGISTRALĂ"
 
-#: gio/gdbus-tool.c:2189
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
 msgstr "Așteaptă apariția unui nume de magistrală."
 
-#: gio/gdbus-tool.c:2265
+#: gio/gdbus-tool.c:2269
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Eroare: trebuie specificat un serviciu pentru care să se activeze.\n"
 
-#: gio/gdbus-tool.c:2270
+#: gio/gdbus-tool.c:2274
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Eroare: trebuie specificat un serviciu după care să se aștepte.\n"
 
-#: gio/gdbus-tool.c:2275
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
 msgstr "Eroare: prea multe argumente.\n"
 
-#: gio/gdbus-tool.c:2283 gio/gdbus-tool.c:2290
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Eroare: %s nu este un nume de magistrală popular valid.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Nedenumit"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Fișierul desktop nu a specificat un câmp Exec"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "Nu s-a găsit un terminal pentru pornirea aplicației"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3413
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Nu se poate crea dosarul de configurare pentru aplicațiile utilizatorului "
 "%s: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3417
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nu se poate crea dosarul de configurare MIME al utilizatorului %s: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
 msgstr "Informațiile despre aplicație nu au un indentificator"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3915
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nu se poate crea fișierul desktop al utilizatorului %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definiție personalizată pentru %s"
@@ -1349,12 +1353,12 @@ msgstr "unitatea nu implementează comanda start"
 msgid "drive doesn’t implement stop"
 msgstr "unitatea nu implementează comanda stop"
 
-#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
-#: gio/gdummytlsbackend.c:509
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321
+#: gio/gdummytlsbackend.c:513
 msgid "TLS support is not available"
 msgstr "Suportul TLS nu este disponibil"
 
-#: gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:423
 msgid "DTLS support is not available"
 msgstr "Suportul DTLS nu este disponibil"
 
@@ -1382,12 +1386,12 @@ msgstr "Număr de jetoane formatat eronat (%d) în codarea GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Se aștepta un GEmblem pentru GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operațiune neimplementată"
@@ -1396,73 +1400,77 @@ msgstr "Operațiune neimplementată"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Montarea conținută nu există"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Nu se poate copia peste director"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Nu se poate copia un director peste alt director"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Fișierul destinație există deja"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Nu se poate copia recursiv directorul"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Nu există suport pentru funcția splice"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Eroare la aplicarea funcției „splice” fișierului: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copierea (reflink/clonarea) între două montări nu este suportată"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
 "Copierea (legătura de referință/clonarea) nu este suportată sau nu este "
 "validă"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "Copierea (legătura de referință/clonarea) nu este suportată sau nu a "
 "funcționat"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Nu se poate copia fișierul special"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "S-a primit o valoare incorectă pentru legătura simbolică"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Legăturile simbolice nu sunt implementate"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Nu există o implementare pentru coșul de gunoi"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Numele de fișiere nu pot conține „%c”"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volumul nu implementează montarea"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Nu există o aplicație înregistrată pentru deschiderea acestui fișier"
 
@@ -1507,7 +1515,7 @@ msgstr "Nu se permite trunchierea fluxului de intrare"
 msgid "Truncate not supported on stream"
 msgstr "Trunchierea fluxului nu este implementată"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Nume nevalid"
@@ -1624,7 +1632,7 @@ msgstr "Păstrează cu fișierul când este mutat"
 msgid "“version” takes no arguments"
 msgstr "„version” nu ia argumente"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Utilizare:"
 
@@ -1710,10 +1718,10 @@ msgid "Error writing to stdout"
 msgstr "Eroare la scrierea la stdout"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1735,56 +1743,60 @@ msgstr ""
 "asemănător\n"
 "cu smb://server/resource/file.txt ca locație."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Nu s-au furnizat locații"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Nu este niciun director țintă"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Arată progresul"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Solicită înainte de suprascriere"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Păstrează toate atributele"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Creează o copie de siguranță a fișierelor destinație existente"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Nu urmări niciodată legăturile simbolice"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Utilizează permisiunile implicite pentru destinație"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Transferat %s din %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "SURSĂ"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINAȚIE"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copiază unul sau mai multe fișiere de la SURSĂ la DESTINAȚIE."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1796,88 +1808,98 @@ msgstr ""
 "asemănător\n"
 "cu smb://server/resource/file.txt ca locație."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Destinația %s nu este un director"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: se suprascrie „%s”? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Listează atributele inscripționabile"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Obține informațiile sistemului de fișiere"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Atributele de obținut"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTE"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Nu urmări legăturile simbolice"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atribute:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "nume de afișaj: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "editează numele: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "nume: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "tip: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "dimensiune: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "ascuns\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "cale locală: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "montare unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Atribute care se pot stabili:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Spații de nume de atribut inscripționabile:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Arată informațiile despre locații."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1894,23 +1916,27 @@ msgstr ""
 "spațiul de nume, ex. unix, sau prin „*”, care se potrivește cu toate "
 "atributele"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Arată fișierele ascunse"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Utilizează un format de listare lung"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Tipărește nume de afișaje"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Tipărește URI-uri complete"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Listează conținuturile locațiilor."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2045,12 +2071,12 @@ msgid "Mount as mountable"
 msgstr "Montează ca montabil"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Montează volumul cu fișier de dispozitiv"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Montează volumul cu fișier de dispozitiv, sau alt indicator"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "DISPOZITIV"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2064,6 +2090,10 @@ msgstr "Scoate"
 msgid "Stop drive with device file"
 msgstr "Oprește unitatea cu fișierul de dispozitiv"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DISPOZITIV"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Demontează toate montările cu schema dată"
@@ -2119,16 +2149,11 @@ msgstr "Accesul anonim respins"
 msgid "No drive for device file"
 msgstr "Nu există nicio unitate pentru fișierul de dispozitiv"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "S-a montat %s la %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Nu există niciun volum pentru fișierul de dispozitiv"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Nu există niciun volum pentru ID-ul dat"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Montează sau demontează locațiile."
 
@@ -2346,20 +2371,20 @@ msgstr "Eroare la citirea fișierului %s: %s"
 msgid "Error compressing file %s"
 msgstr "Eroare la comprimarea fișierului %s"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "textul nu are voie să apară în <%s>"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Arată versiunea programului și ieși"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Numele fișierului de ieșire"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2367,56 +2392,56 @@ msgstr ""
 "Directoarele de unde se vor încărca fișierele referențiate în FILE "
 "(implicit: directorul curent)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DOSAR"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generează rezultatul în formatul selectat de extensia numelui de fișier țintă"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Generează antetul sursei"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Generează codul sursă utilizat pentru a lega fișierul resursă în cod"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Generează lista de dependențe"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Numele fișierului de dependențe de generat"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Include țintele false în fișierul de dependențe generat"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Nu crea și înregistra automat resursa"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Nu exporta funcțiile; declară-le G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr "Nu îngloba date în fișierul C; presupuneți că este legat extern"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "Nume de identificator C utilizat pentru codul sursă generat"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2426,7 +2451,7 @@ msgstr ""
 "Fișierele specificație de resursă au extensia .gresource.xml,\n"
 "iar fișierul resursă are extensia cu numele .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Ar trebui să furnizați exact un nume de fișier\n"
 
@@ -2947,7 +2972,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Nu se poate redenumi fișierul, numele de fișier există deja"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Nume nevalid de fișier"
 
@@ -3026,133 +3051,129 @@ msgstr "Sistemul de fișiere nu suportă legături simbolice"
 msgid "Error making symbolic link %s: %s"
 msgstr "Eroare la crearea legăturii simbolice %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Legăturile simbolice nu sunt implementate"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Eroare la mutarea fișierului %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Nu se poate muta un director peste alt director"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Crearea fișierului pentru copia de siguranță a eșuat"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Eroare la ștergerea fișierului destinație: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr ""
 "Operațiunea de mutare între două dispozitive montate nu este implementată"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Nu s-a putut determina utilizarea discului a %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Valoarea atributului trebuie să fie diferită de NULL"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Tip incorect de atribut (se aștepta un șir)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Nume incorect de atribut extins"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Eroare la stabilirea atributului extins „%s”: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (codare incorectă)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Eroare în timpul obținerii de informații pentru fișierul „%s”: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr ""
 "Eroare în timpul obținerii de informații pentru descriptorul de fișier: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Tip incorect de atribut (se aștepta o valoare uint32)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Tip incorect de atribut (se aștepta o valoare uint64)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Tip incorect de atribut (se aștepta un șir de octeți)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Nu se pot defini drepturi pentru legături simbolice"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Eroare la definirea drepturilor: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Eroare la definirea deținătorului: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "legătura simbolică trebuie să fie diferită de NULL"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Eroare la definirea legăturii simbolice: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Eroare la definirea legăturii simbolice: fișierul nu este o legătură "
 "simbolică"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Eroare la schimbarea datei de acces ori modificare: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "Contextul SELinux trebuie să fie diferit de NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Eroare la definirea contextului SELinux: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux nu este activat pentru acest sistem"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Definirea atributului %s nu este implementată"
@@ -3175,7 +3196,7 @@ msgstr "Eroare la căutarea în fișier: %s"
 msgid "Error closing file: %s"
 msgstr "Eroare la închiderea fișierului: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Nu s-a găsit tipul implicit de monitorizare a fișierelor locale"
 
@@ -3318,11 +3339,11 @@ msgstr "montarea nu implementează detecția sincronizată a tipului de conținu
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Numele de gazdă „%s” conține „[” dar nu și „]”"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Nu se poate accesa rețeaua"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Nu se poate accesa gazda"
 
@@ -3363,18 +3384,18 @@ msgstr "Suma vectorilor oferiți la %s este prea mare"
 msgid "Source stream is already closed"
 msgstr "Sursa fluxului este deja închisă"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Eroare la rezolvarea „%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s nu este implementat"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Domeniu nevalid"
 
@@ -3749,176 +3770,176 @@ msgstr "Numele schemei dat este gol \n"
 msgid "No such key “%s”\n"
 msgstr "Nu există cheia „%s”\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Socket nevalid (neinițializat)"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Socket nevalid, inițializarea a eșuat din următoarea cauză: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Socket-ul este deja închis"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "A expirat limita de timp la I/O pe socket"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "se creează GSocket din fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nu s-a putut crea socket-ul: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "S-a specificat o familie necunoscută"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "S-a specificat un protocol necunoscut"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Nu se pot utiliza operațiile de datagramă pe un soclu non-datagramă."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Nu se pot utiliza operațiile de datagramă pe un soclu care are stabilită o "
 "limită de timp."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nu s-a putut obține adresa locală: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nu s-a putut obține adresa la distanță: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "nu s-a putut asculta: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Eroare la asocierea adresei: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Eroare la asocierea adresei %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Eroare la alăturarea grupului multicast: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Eroare la părăsirea grupului multicast: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Nu există niciun suport pentru difuzarea multiplă specifică sursei"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Familie de soclu nesuportată"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "specific sursei nu o adresă IPv4"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Numele de interfață este prea lung"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Nu s-a putut găsi interfața: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr ""
 "Nu există niciun suport pentru difuzarea multiplă specifică sursei IPv4"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr ""
 "Nu există niciun suport pentru difuzarea multiplă specifică sursei IPv6"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Eroare la acceptarea conexiunii: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Conectare în progres"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Nu se poate obține eroarea în așteptare: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Eroare la primirea datelor: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Eroare la trimiterea datelor: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nu se poate opri soclul: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Eroare la închiderea socket-ului: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Se așteaptă condiția socket-ului: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Eroare la trimiterea mesajului: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage nu este suportat pe Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Eroare la primirea mesajului: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nu se pot citi certificările soclului: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials nu este implementat pe acest sistem de operare"
@@ -3937,11 +3958,11 @@ msgstr "Nu s-a putut conecta la %s: "
 msgid "Could not connect: "
 msgstr "Nu s-a putut conecta: "
 
-#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1764
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Eroare necunoscută la conectare"
 
-#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1672
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Nu se poate utiliza proxy peste o conexiune non-TCP."
 
@@ -3980,70 +4001,70 @@ msgstr "Serverul nu este un server de proxy SOCKSv4."
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr "Conectarea prin serverul SOCKSv4 a fost respinsă"
 
-#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:338 gio/gsocks5proxy.c:348
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr "Serverul nu este un server de proxy SOCKSv5."
 
-#: gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167 gio/gsocks5proxy.c:184
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "Proxy-ul SOCKSv5 necesită autentificare."
 
-#: gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:191
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
 msgstr ""
 "SOCKSv5 necesită o metodă de autentificare ce nu este acceptată de GLib."
 
-#: gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:220
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr ""
 "Numele de utilizator sau parola este prea lungă pentru protocolul SOCKSv5."
 
-#: gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:250
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
 "Autentificarea SOCKSv5 a eșuat din cauza unui nume de utilizator sau a unei "
 "parole greșite."
 
-#: gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:300
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
 msgstr "Numele de gazdă „%s” este prea lung pentru protocolul SOCKSv5"
 
-#: gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:362
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr "Serverul proxy SOCKSv5 utilizează un tip de adresă necunoscut."
 
-#: gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:369
 msgid "Internal SOCKSv5 proxy server error."
 msgstr "Eroare internă a serverului proxy SOCKSv5."
 
-#: gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:375
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr "Setul de reguli nu permite conexiuni SOCKSv5."
 
-#: gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:382
 msgid "Host unreachable through SOCKSv5 server."
 msgstr "Gazda nu poate fi contactată prin intermediul serverului SOCKSv5."
 
-#: gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:388
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr "Rețeaua nu poate fi contactată prin intermediul proxy-ului SOCKSv5."
 
-#: gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:394
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr "Conexiune refuzată prin proxy-ul SOCKSv5."
 
-#: gio/gsocks5proxy.c:386
+#: gio/gsocks5proxy.c:400
 msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "Proxy-ul SOCKSv5 nu suportă comanda „connect”."
 
-#: gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:406
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr "Proxy-ul SOCKSv5 nu acceptă tipul de adresă furnizat."
 
-#: gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:412
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Eroare necunoscută a proxy-ului SOCKSv5."
 
@@ -4186,7 +4207,7 @@ msgstr "Eroare la citirea din descriptorul de fișier: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Eroare la închiderea descriptorului de fișier: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "Rădăcina sistemului de fișiere"
 
@@ -4275,72 +4296,72 @@ msgstr "Argumente greșite\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Atribut neașteptat „%s” pentru elementul „%s”"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Atributul „%s” al elementului „%s” nu a fost găsit"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Etichetă neașteptată „%s”, se aștepta eticheta „%s”"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Etichetă neașteptată „%s” în „%s”"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Dată/oră nevalidă „%s” în fișierul de favorit"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Nu s-a găsit un fișier valid cu favorite în directoarele de date"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Un favorit pentru URI-ul „%s” există deja"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Nu s-a găsit niciun favorit pentru URI-ul „%s”"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Nu s-a definit niciun tip MIME în favorit pentru URI-ul „%s”"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Nu s-a definit niciun fanion privat în favorit pentru URI-ul „%s”"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Nu s-au stabilit grupuri în favorit pentru URI-ul „%s”"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Nicio aplicație cu numele „%s” nu a înregistrat un favorit pentru „%s”"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Nu s-a putut extinde linia de exec „%s” cu URI-ul „%s”"
@@ -4349,8 +4370,8 @@ msgstr "Nu s-a putut extinde linia de exec „%s” cu URI-ul „%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Caracter nereprezentabil în intrarea conversiei"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Secvență parțială de caractere la sfârșitul inputului"
 
@@ -4893,24 +4914,24 @@ msgstr "Șablonul „%s” nu conține XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Nu s-a putut citi legătura simbolică „%s”: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Nu s-a putut deschide convertorul de la „%s” la „%s”: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Nu se poate efectua o citire brută în g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "Date neconvertite rămase în memoria tampon pentru citire"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "Canalul se termină cu un caracter parțial"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nu se poate efectua o citire brută în g_io_channel_read_to_end"
 
@@ -4950,8 +4971,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Fișierul cheii conține codarea nesuportată „%s”"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Fișierul cheii nu are grupul „%s”"
@@ -4989,31 +5010,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Cheia „%s” în grupul „%s” are valoarea „%s” unde %s a fost așteptat"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Fișieul cheie conține caractere „escape” la sfârșit de linie"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Fișierul cheie conține secvența de eludare nevalidă „%s”"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Valoarea „%s” nu poate fi interpretată ca un număr."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Valoarea întreagă „%s” este în afara limitelor"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Valoarea „%s” nu poate fi interpretată ca un număr rațional."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Valoarea „%s” nu poate fi interpretată ca o valoare logică."
@@ -5104,11 +5125,11 @@ msgstr ""
 "caracter ampersand fără intenția de a începe o entitate — eludați ampersand "
 "ca &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Documentul trebuie să înceapă cu un element (de ex. <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5117,7 +5138,7 @@ msgstr ""
 "„%s” nu este un caracter valid după un caracter „<”; nu poate începe numele "
 "unui element"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5126,7 +5147,12 @@ msgstr ""
 "Caracter neobișnuit „%s”, se aștepta un caracter „>” pentru a termina "
 "eticheta de element gol „%s”"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Prea multe atribute în elementul „%s”"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5134,7 +5160,7 @@ msgstr ""
 "Caracter neobișnuit „%s”, se aștepta un caracter „=” după numele atributului "
 "„%s” al elementului „%s”"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5145,7 +5171,7 @@ msgstr ""
 "termina eticheta de început a elementului „%s”, sau opțional un atribut; "
 "poate ați utilizat un caracter nevalid în numele atributului"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5154,7 +5180,7 @@ msgstr ""
 "Caracter neobișnuit „%s”, se așteptau ghilimele de deschidere după semnul "
 "egal când se dă valoarea atributului „%s” al elementului „%s”"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5163,7 +5189,7 @@ msgstr ""
 "„%s” nu este un caracter valid după caracterele „</”; „%s” nu poate începe "
 "un nume de element"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5172,27 +5198,27 @@ msgstr ""
 "„%s” nu este un caracter valid după numele elementului de închidere „%s”; "
 "caracterul permis este „>”"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Elementul „%s” a fost închis, nici un element nu este curent deschis"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Elementul „%s” a fost închis, dar elementul deschis curent este „%s”"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Documentul era gol sau conținea doar spațiu gol"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "Documentul s-a terminat în mod neașteptat imediat după o paranteză "
 "unghiulară de deschidere „<”"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5201,7 +5227,7 @@ msgstr ""
 "Documentul s-a terminat în mod neașteptat cu unele elemente încă deschise — "
 "„%s” a fost ultimul element deschis"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5210,23 +5236,23 @@ msgstr ""
 "Documentul s-a terminat în mod neașteptat, se aștepta un caracter „>” care "
 "să încheie eticheta <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr ""
 "Documentul s-a terminat în mod neașteptat în cadrul numelui unui element"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr ""
 "Documentul s-a terminat în mod neașteptat în cadrul numele unui atribut"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr ""
 "Documentul s-a terminat în mod neașteptat în cadrul unei etichete ce "
 "deschidea un element."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5234,86 +5260,86 @@ msgstr ""
 "Documentul s-a terminat în mod neașteptat după semnul egal ce urma unui nume "
 "atribut. Nici o valoare pentru atribut"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr ""
 "Documentul s-a terminat în mod neașteptat în cadrul valorii unui atribut"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Documentul s-a terminat în mod neașteptat în cadrul etichetei de închidere a "
 "elementului „%s”"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Documentul s-a terminat în mod neașteptat în cadrul etichetei de închidere a "
 "unui element nedeschis"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Documentul s-a terminat în mod neașteptat în cadrul unui comentariu sau a "
 "unei instrucțiuni de procesare"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[OPȚIUNE…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Opțiuni ajutor:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Arată opțiunile de ajutor"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Arată toate opțiunile de ajutor"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Opțiuni aplicație:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Opțiuni:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Nu se poate parsa valoarea întreagă „%s” pentru %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Valoarea întreagă „%s” pentru %s este în afara limitelor"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Nu se poate parsa valoarea dublă „%s” pentru %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "Valoarea dublă „%s” pentru %s este în afara limitelor"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Eroare la prelucrarea opțiunii %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Argument lipsă pentru %s"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opțiune necunoscută %s"
@@ -5723,78 +5749,77 @@ msgstr "Textul era gol (sau conținea doar spațiu gol)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Nu s-au putut citi datele din procesul copil (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Eroare neașteptată în select() la citirea datelor din procesul copil (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Eroare neașteptată la citirea datelor din procesul copil (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Eroare neașteptată în waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Procesul inferior a ieșit cu codul %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Procesul inferior a fost terminat de semnalul %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Procesul inferior a fost oprit de semnalul %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Procesul inferior a ieșit în mod neobișnuit"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Nu s-au putut citi datele din conectorul „pipe” copil (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Nu s-a putut crea procesul inferior „%s” (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Nu s-a putut clona procesul (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Nu s-a putut schimba la directorul „%s” (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Nu s-a putut executa procesul inferior „%s” (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Nu s-a putut redirecta ieșirea sau inputul procesului copil (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Nu s-a putut clona procesul copil (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Eroare necunoscută la executarea procesului inferior „%s”"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Nu s-au putut citi date suficiente de la procesul copil (%s)"
@@ -5847,187 +5872,187 @@ msgstr ""
 "Eroare neașteptată în g_io_channel_win32_poll() la citirea datelor de la "
 "procesul copil"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Șirul gol nu este un număr"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s” nu este un număr negativ"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Numărul „%s” se află în afara intervalului [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s” nu este un număr pozitiv"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Nu s-a putut aloca memoria"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Caracter în afara limitelor standardului UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Secvență incorectă în inputul conversiei"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Caracter în afara limitelor standardului UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6035,7 +6060,7 @@ msgstr[0] "%u octet"
 msgstr[1] "%u octeți"
 msgstr[2] "%u de octeți"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6044,7 +6069,7 @@ msgstr[1] "%u biți"
 msgstr[2] "%u de biți"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6053,7 +6078,7 @@ msgstr[1] "%s octeți"
 msgstr[2] "%s de octeți"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6066,36 +6091,42 @@ msgstr[2] "%s de biți"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Eroare în adresa „%s” - atributul familie este eronat"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "S-a montat %s la %s\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; se ignoră suprascrierea pentru această cheie.\n"
 
index 7d1fe03..e92d9a4 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the glib package.
 #
 # Andraž Tori <andraz.tori1@guest.arnes.si> 2000.
-# Matej Urbančič <mateju@svn.gnome.org>, 2007–2019.
+# Matej Urbančič <mateju@svn.gnome.org>, 2007–2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-02-14 15:07+0000\n"
-"PO-Revision-Date: 2019-02-14 18:38+0100\n"
+"POT-Creation-Date: 2020-06-09 04:01+0000\n"
+"PO-Revision-Date: 2020-06-21 22:23+0200\n"
 "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
 "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
 "Language: sl_SI\n"
@@ -20,34 +20,34 @@ msgstr ""
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
 "%100==4 ? 3 : 0);\n"
 "X-Poedit-SourceCharset: utf-8\n"
-"X-Generator: Poedit 2.1.1\n"
+"X-Generator: Poedit 2.3\n"
 
-#: gio/gapplication.c:499
+#: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Možnosti programa"
 
-#: gio/gapplication.c:499
+#: gio/gapplication.c:500
 msgid "Show GApplication options"
 msgstr "Prikaže možnosti programa"
 
-#: gio/gapplication.c:544
+#: gio/gapplication.c:545
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr "Vstopi v način storitev (uporabi iz storitvenih datotek D-Bus)"
 
-#: gio/gapplication.c:556
+#: gio/gapplication.c:557
 msgid "Override the application’s ID"
 msgstr "Prepiši ID programa"
 
-#: gio/gapplication.c:568
+#: gio/gapplication.c:569
 msgid "Replace the running instance"
 msgstr "Zamenjaj trenutno zagnan primerek"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:495 gio/gsettings-tool.c:569
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
 msgid "Print help"
 msgstr "Izpiši pomoč"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:496 gio/gresource-tool.c:564
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
 msgid "[COMMAND]"
 msgstr "[UKAZ]"
 
@@ -55,7 +55,7 @@ msgstr "[UKAZ]"
 msgid "Print version"
 msgstr "Izpiši različico"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:575
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
 msgid "Print version information and exit"
 msgstr "Izpiši podatke o različici in končaj"
 
@@ -105,7 +105,7 @@ msgstr "Izpiši statična dejanja za program (iz datoteke .desktop)"
 msgid "APPID"
 msgstr "APPID"
 
-#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:90
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
 #: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "UKAZ"
@@ -121,7 +121,7 @@ msgstr ""
 
 #: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
 #: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
-#: gio/gresource-tool.c:502 gio/gresource-tool.c:568
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "DATOTEKA"
 
@@ -146,7 +146,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Neobvezen parameter za priklic dejanja, v zapisu GVariant"
 
-#: gio/gapplication-tool.c:96 gio/gresource-tool.c:533 gio/gsettings-tool.c:661
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -159,8 +159,8 @@ msgstr ""
 msgid "Usage:\n"
 msgstr "Uporaba:\n"
 
-#: gio/gapplication-tool.c:114 gio/gresource-tool.c:558
-#: gio/gsettings-tool.c:696
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
 msgid "Arguments:\n"
 msgstr "Argumenti:\n"
 
@@ -283,7 +283,7 @@ msgstr "Pretok je že zaprt"
 msgid "Truncate not supported on base stream"
 msgstr "Razčlenitev na osnovnem pretoku ni dovoljena"
 
-#: gio/gcancellable.c:317 gio/gdbusconnection.c:1867 gio/gdbusprivate.c:1402
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -302,28 +302,28 @@ msgid "Not enough space in destination"
 msgstr "Ni dovolj prostora za cilju"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1261 glib/gconvert.c:455 glib/gconvert.c:885
-#: glib/giochannel.c:1557 glib/giochannel.c:1599 glib/giochannel.c:2443
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Neveljavno zaporedje bajtov na vhodu pretvorbe"
 
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:463 glib/gconvert.c:799
-#: glib/giochannel.c:1564 glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Napaka med pretvorbo: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1093
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Dejanje prekinitve zagona ni podprto"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:328 glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Pretvorba iz nabora znakov »%s« v »%s« ni podprta"
 
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:332
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Ni mogoče odpreti pretvornika iz »%s« v »%s«"
@@ -333,28 +333,32 @@ msgstr "Ni mogoče odpreti pretvornika iz »%s« v »%s«"
 msgid "%s type"
 msgstr "%s vrsta"
 
-#: gio/gcontenttype-win32.c:177
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "Neznana vrsta"
 
-#: gio/gcontenttype-win32.c:179
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
 msgstr "%s vrsta datoteke"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials vsebuje neveljavne podatke"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "Na tem OS predmet GCredentials ni podprt"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Okolje ne podpira možnosti GCredentials"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "Predmet GCredentials na tem sistemu ne vsebuje ustreznega ID opravila"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Na tem OS vohljanje po poverilih ni podprto"
 
@@ -362,45 +366,46 @@ msgstr "Na tem OS vohljanje po poverilih ni podprto"
 msgid "Unexpected early end-of-stream"
 msgstr "Nepričakovan prezgodnji konec pretoka"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:246 gio/gdbusaddress.c:327
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepodprt ključ  »%s« v vnosu naslova  »%s«"
 
-#: gio/gdbusaddress.c:185
-#, c-format
-msgid ""
-"Address “%s” is invalid (need exactly one of path, tmpdir or abstract keys)"
-msgstr ""
-"Naslov »%s« je nepravilen (zahtevana je pot, začasna mapa ali abstraktni "
-"ključ)"
-
-#: gio/gdbusaddress.c:198
+#: gio/gdbusaddress.c:171
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Nesmiselna kombinacija za par ključ/vrednost v vnosu naslova »%s«"
 
-#: gio/gdbusaddress.c:261 gio/gdbusaddress.c:342
+#: gio/gdbusaddress.c:180
 #, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Napaka v naslovu »%s« – atribut vrat je nepravilno oblikovan"
+msgid ""
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
+msgstr ""
+"Naslov »%s« ni večkavem (zahtevana je pot, začasna mapa ali abstraktni ključ)"
 
-#: gio/gdbusaddress.c:272 gio/gdbusaddress.c:353
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Napaka v naslovu »%s« – atribut družine je nepravilno oblikovan"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Napaka v naslovu »%s« – atribut »%s« je nepravilno oblikovan"
 
-#: gio/gdbusaddress.c:423 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Neznan ali nepodprt prenos »%s« za naslov »%s«"
 
-#: gio/gdbusaddress.c:467
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Predmet naslova »%s« ne vsebuje dvopičja ( : )"
 
-#: gio/gdbusaddress.c:488
+#: gio/gdbusaddress.c:470
+#, c-format
+msgid "Transport name in address element “%s” must not be empty"
+msgstr "Transportno ime v naslovu predmeta »%s« ne sme biti prazno polje"
+
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -410,13 +415,21 @@ msgstr "Par ključ/vrednost %d, »%s« v predmetu naslova »%s« ne vsebuje ena
 #: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr ""
+"Par ključ/vrednost %d, »%s« v predmetu naslova »%s« ne sme vsebovati "
+"praznega ključa"
+
+#: gio/gdbusaddress.c:516
+#, c-format
+msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 msgstr ""
 "Napaka neubežnega ključa ali vrednosti v paru ključ/vrednost %d, »%s«, v "
 "predmetu naslova »%s«"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -425,92 +438,82 @@ msgstr ""
 "Napaka v naslovu »%s« – prenos unix zahteva enega izmed ključev »path« ali "
 "»abstract«"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Napaka v naslovu »%s« – atribut gostitelja manjka ali pa je nepravilno "
 "oblikovan"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Napaka v naslovu »%s« – manjka atribut vrat ali pa ali je nepravilno "
 "oblikovan"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Napaka v naslovu »%s« – atribut enkratne datoteke manjka ali pa je "
 "nepravilno oblikovan"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Napaka samodejnega zaganjanja:"
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Napaka med odpiranjem enkratne datoteke »%s«: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Napaka med branjem iz enkratne datoteke »%s«: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Napaka med branjem iz enkratne datoteke »%s«; pričakovanih 16 bajtov, "
 "pridobljenih pa %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Napaka med pisanjem vsebine enkratne datoteke »%s« v pretok:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Podan naslov je prazen."
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Ni mogoče oživiti vodila sporočila med izvajanjem ukaza setuid"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Ni mogoče oživiti vodila sporočila brez predmeta machine-id:"
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Ni mogoče samodejno zagnati vodila D-Bus brez nastavitve X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Napaka med oživljanjem ukazne vrstice »%s«: "
 
-#: gio/gdbusaddress.c:1359
-#, c-format
-msgid "(Type any character to close this window)\n"
-msgstr "(S pritiskom na katerikoli znak, se okno zapre)\n"
-
-#: gio/gdbusaddress.c:1513
-#, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr "Vodilo seje DBus ni zagnano, zato je samodejni zagon spodletel"
-
-#: gio/gdbusaddress.c:1524
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Ni mogoče določiti naslova vodila seje (ni podprto v tem OS)"
 
-#: gio/gdbusaddress.c:1662 gio/gdbusconnection.c:7174
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -519,7 +522,7 @@ msgstr ""
 "Ni mogoče določiti naslova vodila iz okoljske spremenljivke "
 "DBUS_STARTER_BUS_TYPE – neznana vrednost »%s«"
 
-#: gio/gdbusaddress.c:1671 gio/gdbusconnection.c:7183
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -527,20 +530,20 @@ msgstr ""
 "Ni mogoče določiti naslova vodila, kajti okoljska spremenljivka "
 "DBUS_STARTER_BUS_TYPE ni nastavljena"
 
-#: gio/gdbusaddress.c:1681
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Neznana vrsta vodila %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Nepričakovano pomanjkanje vsebine med branjem vrstice"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Nepričakovano pomanjkanje vsebine med (varnem) branjem vrstice"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -548,16 +551,16 @@ msgstr ""
 "Izčrpani so vsi razpoložljivi overitveni mehanizmi (poskusi: %s) "
 "(razpoložljivih: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Prekinjeno s strani GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:265
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Napaka med pridobivanjem podrobnosti mape »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:280
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -565,22 +568,22 @@ msgstr ""
 "Dovoljenja na mapi »%s« so napačno oblikovana. Pričakovano je dovoljenje "
 "0700, pridobljeno pa 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:310
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Napaka med ustvarjanjem mape »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:355
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Napaka med odpiranjem zbirke ključev »%s« za branje:"
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:378 gio/gdbusauthmechanismsha1.c:700
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Vrstica %d zbirke ključev »%s« z vsebino »%s« je neustrezno oblikovana"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:392 gio/gdbusauthmechanismsha1.c:714
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -588,7 +591,7 @@ msgstr ""
 "Prvi žeton vrstice %d zbirke ključev pri »%s« z vsebino »%s« je neustrezno "
 "oblikovan"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:406 gio/gdbusauthmechanismsha1.c:728
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -596,157 +599,157 @@ msgstr ""
 "Drugi žeton vrstice %d zbirke ključev pri »%s« z vsebino »%s« je neustrezno "
 "oblikovana"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:430
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Piškotka z ID %d v zbirki ključev »%s« ni mogoče najti"
 
-#: gio/gdbusauthmechanismsha1.c:503
-#, c-format
-msgid "Error deleting stale lock file “%s”: %s"
-msgstr "Napaka brisanja stare datoteke zaklepa »%s«: %s"
-
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:476
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Napaka med ustvarjanjem datoteke zaklepa »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:540
+#, c-format
+msgid "Error deleting stale lock file “%s”: %s"
+msgstr "Napaka brisanja stare datoteke zaklepa »%s«: %s"
+
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Napaka med zapiranjem (nepovezane) datoteke zaklepa »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:590
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Napaka med razvezovanjem datoteke zaklepa »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:667
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Napaka med odpiranjem zbirke ključev »%s« za branje: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:863
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(V nadaljevanju je spodletelo tudi sproščanje zaklepa »%s«: %s)"
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2396
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "Povezava je zaprta"
 
-#: gio/gdbusconnection.c:1897
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "Čas zakasnitve je potekel"
 
-#: gio/gdbusconnection.c:2518
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Med izgrajevanjem povezave s strani odjemalca so bile odkrite nepodprte "
 "zastavice"
 
-#: gio/gdbusconnection.c:4147 gio/gdbusconnection.c:4494
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Vmesnik »org.freedesktop.DBus.Properties« na predmetu na poti %s ne obstaja"
 
-#: gio/gdbusconnection.c:4289
+#: gio/gdbusconnection.c:4303
 #, c-format
 msgid "No such property “%s”"
 msgstr "Lastnost »%s« ne obstaja"
 
-#: gio/gdbusconnection.c:4301
+#: gio/gdbusconnection.c:4315
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Lastnost »%s« ni berljiva"
 
-#: gio/gdbusconnection.c:4312
+#: gio/gdbusconnection.c:4326
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Lastnost »%s« ni zapisljiva"
 
-#: gio/gdbusconnection.c:4332
+#: gio/gdbusconnection.c:4346
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Napaka med nastavljanjem lastnosti »%s«: pričakovana je vrsta »%s«, javljena "
 "pa »%s«."
 
-#: gio/gdbusconnection.c:4437 gio/gdbusconnection.c:4645
-#: gio/gdbusconnection.c:6614
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Vmesnik »%s« ne obstaja"
 
-#: gio/gdbusconnection.c:4863 gio/gdbusconnection.c:7123
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Vmesnik »%s« na predmetu na poti %s ne obstaja"
 
-#: gio/gdbusconnection.c:4961
+#: gio/gdbusconnection.c:4975
 #, c-format
 msgid "No such method “%s”"
 msgstr "Način »%s« ne obstaja"
 
-#: gio/gdbusconnection.c:4992
+#: gio/gdbusconnection.c:5006
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Vrsta sporočila »%s« se ne sklada s pričakovano vrsto »%s«"
 
-#: gio/gdbusconnection.c:5190
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Za vmesnik %s pri %s je predmet že izvožen"
 
-#: gio/gdbusconnection.c:5416
+#: gio/gdbusconnection.c:5430
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Ni mogoče pridobiti lastnosti %s.%s"
 
-#: gio/gdbusconnection.c:5472
+#: gio/gdbusconnection.c:5486
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Ni mogoče določiti lastnosti %s.%s"
 
-#: gio/gdbusconnection.c:5650
+#: gio/gdbusconnection.c:5664
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Način »%s« je vrnil vrsto »%s«, pričakovana pa je vrsta »%s«"
 
-#: gio/gdbusconnection.c:6725
+#: gio/gdbusconnection.c:6741
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Način »%s« na vmesniku »%s« s podpisom »%s« ne obstaja"
 
-#: gio/gdbusconnection.c:6846
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Podrejeno drevo je že izvoženo za %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "vrsta je neveljavna"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Sporočilo METHOD_CALL: manjka polje glave PATH ali MEMBER"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Sporočilo METHOD_RETURN: manjka polje glave REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Sporočilo ERROR: manjka polje glave REPLY_SERIAL ali ERROR_NAME"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Sporočilo SIGNAL: manjka polje glave PATH, INTERFACE ali MEMBER"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -754,7 +757,7 @@ msgstr ""
 "Sporočilo SIGNAL: polje glave PATH uporablja rezervirano vrednost /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -763,7 +766,7 @@ msgstr ""
 "freedesktop.DBus.Local"
 
 # Double multiple plural?
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -772,12 +775,12 @@ msgstr[1] "Med poskusom branja %lu bajtov je bil prejet le %lu."
 msgstr[2] "Med poskusom branja %lu bajtov  sta bila prejeta le %lu."
 msgstr[3] "Med poskusom branja %lu bajtov so bili prejeti le %lu."
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Po nizu »%s« je pričakovan bajt NUL, vendar je bil zaznan %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -787,17 +790,21 @@ msgstr ""
 "bajtov na bajtnem odmiku %d (dolžina niza %d). Do takrat veljaven UTF-8 niz "
 "je »%s«"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Vrednost je gnezdene pregloboko"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Razčlenjena vrednost »%s« ni veljavna pot predmeta vodila D-Bus"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Razčlenjena vrednost »%s« ni veljaven podpis vodila D-Bus"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -816,7 +823,7 @@ msgstr[3] ""
 "Najdeno je polje dolžine %u bajtov, največja dovoljena pa je 2<<26 bajtov "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -825,12 +832,12 @@ msgstr ""
 "Zaznano je polje vrste »'a%c«, pričakovana pa je vrednost večkratnika %u "
 "bajtov, zaznanih pa je %u bajtov dolžine"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Razčlenjena vrednost »%s« ni veljaven podpis vodila D-Bus"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -838,7 +845,7 @@ msgstr ""
 "Napaka med ločevanjem GVariant iz zaporedja z vrsto niza »%s« iz D-Bus žične "
 "oblike"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -847,29 +854,29 @@ msgstr ""
 "Neveljavna vrednost vrstnega reda zlogov. Pričakovana je ali vrednost 0x6c "
 "(» l «) ali 0x42 (» B «), najdena pa je vrednost 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Neveljavna večja različica protokola. Pričakovana je 1, najdenih pa jih je "
 "več (%d)"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2724
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Glava podpisa je najdena, vendar ni ustrezno oblikovana"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Glava podpisa s podpisom »%s« je najdena, vendar je telo sporočila prazno"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Razčlenjena vrednost »%s« ni veljaven podpis vodila D-Bus (za telo)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -882,11 +889,11 @@ msgstr[2] ""
 msgstr[3] ""
 "V sporočilu ni glave podpisa, vendar je telo sporočila dolgo %u bajte"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Sporočila ni mogoče ločiti iz zaporedja:"
 
-#: gio/gdbusmessage.c:2541
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -894,22 +901,22 @@ msgstr ""
 "Napaka pri združevanju GVariant v zaporedje z vrsto niza »%s« v D-Bus žično "
 "obliko"
 
-#: gio/gdbusmessage.c:2678
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "Število opisnikov v sporočilu (%d) se razlikuje od polja glave (%d)"
 
-#: gio/gdbusmessage.c:2686
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Sporočila ni bilo mogoče združiti v zaporedje:"
 
-#: gio/gdbusmessage.c:2739
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Telo sporočila ima podpis »%s«, vendar v glavi ni podpisa"
 
-#: gio/gdbusmessage.c:2749
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -917,40 +924,50 @@ msgid ""
 msgstr ""
 "Telo sporočila ima podpis vrste »%s«, vendar je podpis v polju glave »%s«"
 
-#: gio/gdbusmessage.c:2765
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Telo sporočila je prazno, vendar je v polju glave podpis »(%s)«"
 
-#: gio/gdbusmessage.c:3318
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Napaka vrnjena s telesom vrste »%s«"
 
-#: gio/gdbusmessage.c:3326
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Napaka vrnjena s praznim telesom"
 
-#: gio/gdbusprivate.c:2075
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr "(S pritiskom na katerikoli znak, se okno zapre)\n"
+
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr "Vodilo seje DBus ni zagnano, zato je samodejni zagon spodletel"
+
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Ni mogoče pridobiti strojnega profila: %s"
 
-#: gio/gdbusprivate.c:2120
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Ni mogoče naložiti /var/lib/dbus/machine-id oziroma /etc/machine-id: "
 
-#: gio/gdbusproxy.c:1617
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Napaka med klicanjem predmeta StartServiceByName za %s: "
 
-#: gio/gdbusproxy.c:1640
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Nepričakovan odgovor %d iz načina StartServiceByName(»%s«)"
 
-#: gio/gdbusproxy.c:2740 gio/gdbusproxy.c:2875
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -959,30 +976,30 @@ msgstr ""
 "Ni mogoče sklicati načina; posredniški strežnik za znano ime %s brez "
 "lastnika je bil zgrajen z zastavico  G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:708
-msgid "Abstract name space not supported"
+#: gio/gdbusserver.c:755
+msgid "Abstract namespace not supported"
 msgstr "Abstraktni imenski prostor ni podprt"
 
-#: gio/gdbusserver.c:795
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Med ustvarjanjem strežnika ni mogoče določiti enkratne datoteke"
 
-#: gio/gdbusserver.c:876
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Napaka med zapisovanjem enkratne datoteke na »%s«: %s"
 
-#: gio/gdbusserver.c:1047
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Niz »%s« ni veljaven D-Bus GUID"
 
-#: gio/gdbusserver.c:1087
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Na nepodprtem načinu prenosa »%s« ni mogoče poslušati"
 
-#: gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:107
 #, c-format
 msgid ""
 "Commands:\n"
@@ -1005,60 +1022,60 @@ msgstr ""
 "\n"
 "Uporabite »%s COMMAND --help« za pomoč o posameznem ukazu.\n"
 
-#: gio/gdbus-tool.c:185 gio/gdbus-tool.c:252 gio/gdbus-tool.c:324
-#: gio/gdbus-tool.c:348 gio/gdbus-tool.c:834 gio/gdbus-tool.c:1171
-#: gio/gdbus-tool.c:1613
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Napaka: %s\n"
 
-#: gio/gdbus-tool.c:196 gio/gdbus-tool.c:265 gio/gdbus-tool.c:1629
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Napaka med samopreverjanjem XML: %s\n"
 
-#: gio/gdbus-tool.c:234
+#: gio/gdbus-tool.c:246
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Napaka: %s ni veljavno ime\n"
 
-#: gio/gdbus-tool.c:382
+#: gio/gdbus-tool.c:394
 msgid "Connect to the system bus"
 msgstr "Poveži s sistemskim vodilom"
 
-#: gio/gdbus-tool.c:383
+#: gio/gdbus-tool.c:395
 msgid "Connect to the session bus"
 msgstr "Poveži z vodilom seje"
 
-#: gio/gdbus-tool.c:384
+#: gio/gdbus-tool.c:396
 msgid "Connect to given D-Bus address"
 msgstr "Poveži s podanim naslovom vodila D-Bus"
 
-#: gio/gdbus-tool.c:394
+#: gio/gdbus-tool.c:406
 msgid "Connection Endpoint Options:"
 msgstr "Možnosti končnih točk povezave:"
 
-#: gio/gdbus-tool.c:395
+#: gio/gdbus-tool.c:407
 msgid "Options specifying the connection endpoint"
 msgstr "Možnosti, ki določajo končne točke povezave"
 
-#: gio/gdbus-tool.c:417
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Ni določene končne točke povezave"
 
-#: gio/gdbus-tool.c:427
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Določenih je več povezav končne točke"
 
-#: gio/gdbus-tool.c:497
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Opozorilo: na osnovi podatkov samopregleda, vmesnik »%s« ne obstaja\n"
 
-#: gio/gdbus-tool.c:506
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1067,161 +1084,161 @@ msgstr ""
 "Opozorilo: na osnovi podatkov samopregleda, način »%s« ne obstaja na "
 "vmesniku »%s«\n"
 
-#: gio/gdbus-tool.c:568
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
 msgstr "Izbirni cilj za signal (enoznačno ime)"
 
-#: gio/gdbus-tool.c:569
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
 msgstr "Pot predmeta za oddajanje signala"
 
-#: gio/gdbus-tool.c:570
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr "Ime signala in vmesnika"
 
-#: gio/gdbus-tool.c:603
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "Oddaj signal."
 
-#: gio/gdbus-tool.c:658 gio/gdbus-tool.c:965 gio/gdbus-tool.c:1715
-#: gio/gdbus-tool.c:1944 gio/gdbus-tool.c:2164
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Napaka med povezovanjem: %s\n"
 
-#: gio/gdbus-tool.c:678
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Napaka: %s ni veljavno enoznačno ime vodila.\n"
 
-#: gio/gdbus-tool.c:697 gio/gdbus-tool.c:1008 gio/gdbus-tool.c:1758
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
 msgstr "Napaka: pot predmeta ni določena\n"
 
-#: gio/gdbus-tool.c:720 gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1778
-#: gio/gdbus-tool.c:2015
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Napaka: %s ni veljavna pot predmeta\n"
 
-#: gio/gdbus-tool.c:740
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
 msgstr "Napaka: ime signala ni določeno\n"
 
-#: gio/gdbus-tool.c:754
+#: gio/gdbus-tool.c:770
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Napaka: ime signala »%s« ni veljavno\n"
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Napaka: %s ni veljavno ime vmesnika.\n"
 
-#: gio/gdbus-tool.c:772
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Napaka: %s ni veljavno ime predmeta.\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:809 gio/gdbus-tool.c:1140
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Napaka med razčlenjevanjem parametra %d: %s\n"
 
-#: gio/gdbus-tool.c:841
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Napaka med počiščenjem povezave: %s\n"
 
-#: gio/gdbus-tool.c:868
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
 msgstr "Ime cilja za sklicanje načina"
 
-#: gio/gdbus-tool.c:869
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
 msgstr "Pot do predmeta za sklicanje načina"
 
-#: gio/gdbus-tool.c:870
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "Ime načina in vmesnika"
 
-#: gio/gdbus-tool.c:871
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "Časovni zamik v sekundah"
 
-#: gio/gdbus-tool.c:910
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr "Skliči način na oddaljenem predmetu."
 
-#: gio/gdbus-tool.c:982 gio/gdbus-tool.c:1732 gio/gdbus-tool.c:1969
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr "Napaka: cilj ni določen\n"
 
-#: gio/gdbus-tool.c:993 gio/gdbus-tool.c:1749 gio/gdbus-tool.c:1980
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Napaka: %s ni veljavno ime vodila\n"
 
-#: gio/gdbus-tool.c:1043
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr "Napaka: ime načina ni določeno\n"
 
-#: gio/gdbus-tool.c:1054
+#: gio/gdbus-tool.c:1070
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Napaka: ime načina »%s« ni veljavno\n"
 
-#: gio/gdbus-tool.c:1132
+#: gio/gdbus-tool.c:1148
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Napaka med razčlenjevanjem parametra %d vrste »%s«: %s\n"
 
-#: gio/gdbus-tool.c:1576
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
 msgstr "Samopreverjanje ciljnega imena"
 
-#: gio/gdbus-tool.c:1577
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
 msgstr "Samopreverjanje poti predmeta"
 
-#: gio/gdbus-tool.c:1578
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "Natisni XML"
 
-#: gio/gdbus-tool.c:1579
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr "Samopreverjanje podrejenih predmetov"
 
-#: gio/gdbus-tool.c:1580
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Natisni le lastnosti"
 
-#: gio/gdbus-tool.c:1667
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr "Samopreverjanje oddaljenega predmeta."
 
-#: gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
 msgstr "Nadzor ciljnega imena"
 
-#: gio/gdbus-tool.c:1871
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr "Nadzor poti predmeta"
 
-#: gio/gdbus-tool.c:1896
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr "Nadzoruj oddaljeni predmet."
 
-#: gio/gdbus-tool.c:1954
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Napaka: ni mogoče nadzirati povezav mimo sporočilnega vtiča\n"
 
-#: gio/gdbus-tool.c:2078
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Storitev, ki naj se začne, preden začne program čakati na drugo (ime)"
 
-#: gio/gdbus-tool.c:2081
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1229,65 +1246,65 @@ msgstr ""
 "Časovni zamik, po katerem je program končan z napako (v sekundah); vrednost "
 "0 onemogoči zamik (privzeto)"
 
-#: gio/gdbus-tool.c:2129
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
 msgstr "[MOŽNOST …] IME-VODILA"
 
-#: gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
 msgstr "Počakaj na izpis imena vodila."
 
-#: gio/gdbus-tool.c:2206
+#: gio/gdbus-tool.c:2269
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Napaka: storitev za omogočanje mora biti določena.\n"
 
-#: gio/gdbus-tool.c:2211
+#: gio/gdbus-tool.c:2274
 msgid "Error: A service to wait for must be specified.\n"
 msgstr ""
 "Napaka: storitev za čakanje mora biti določena.\n"
 "\n"
 
-#: gio/gdbus-tool.c:2216
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
 msgstr "Napaka: navedenih je preveč argumentov.\n"
 
-#: gio/gdbus-tool.c:2224 gio/gdbus-tool.c:2231
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Napaka: %s ni veljavno enoznačno ime vodila.\n"
 
-#: gio/gdesktopappinfo.c:2041 gio/gdesktopappinfo.c:4822
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Neimenovano"
 
-#: gio/gdesktopappinfo.c:2451
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Namizna datoteka ne vsebuje določenega polja Exec"
 
-#: gio/gdesktopappinfo.c:2710
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "Ni mogoče najti terminala, ki ga zahteva program"
 
-#: gio/gdesktopappinfo.c:3362
+#: gio/gdesktopappinfo.c:3413
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Ni mogoče ustvariti nastavitvene mape uporabnikovega programa %s: %s"
 
-#: gio/gdesktopappinfo.c:3366
+#: gio/gdesktopappinfo.c:3417
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Ni mogoče ustvariti uporabnikove nastavitvene mape MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3606 gio/gdesktopappinfo.c:3630
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
 msgstr "Podatki programa so brez določila"
 
-#: gio/gdesktopappinfo.c:3864
+#: gio/gdesktopappinfo.c:3915
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Ni mogoče ustvariti uporabnikove datoteke namizja %s"
 
-#: gio/gdesktopappinfo.c:3998
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Določilo po meri za %s"
@@ -1315,12 +1332,12 @@ msgstr "pogon ne vključuje možnosti zagona"
 msgid "drive doesn’t implement stop"
 msgstr "pogon ne vključuje možnosti zaustavitve"
 
-#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
-#: gio/gdummytlsbackend.c:509
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321
+#: gio/gdummytlsbackend.c:513
 msgid "TLS support is not available"
 msgstr "Podpora TLS ni na voljo"
 
-#: gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:423
 msgid "DTLS support is not available"
 msgstr "Podpora za DTLS ni na voljo"
 
@@ -1348,12 +1365,12 @@ msgstr "Nepravilno oblikovana znakov (%d) v kodiranju GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Pričakovan GEmblem za GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3738 gio/gfile.c:3793
-#: gio/gfile.c:4029 gio/gfile.c:4071 gio/gfile.c:4539 gio/gfile.c:4950
-#: gio/gfile.c:5035 gio/gfile.c:5125 gio/gfile.c:5222 gio/gfile.c:5309
-#: gio/gfile.c:5410 gio/gfile.c:8113 gio/gfile.c:8203 gio/gfile.c:8287
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8104 gio/gfile.c:8194 gio/gfile.c:8278
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Opravilo ni podprto"
@@ -1362,70 +1379,74 @@ msgstr "Opravilo ni podprto"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Obstoječa enota ne obstaja"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Ni mogoče kopirati prek mape"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Ni mogoče kopirati mape prek mape"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Ciljna datoteka obstaja"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Ni mogoče kopirati drevesne zgradbe map"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Splice ni podprt"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Napaka med prepletanjem datoteke: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Kopiranje (sklic povezave/kloniranje) med različnimi priklopi ni podprto"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiranje (sklic povezave/kloniranje) ni podprto ali pa ni veljavno"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiranje (sklic povezave/kloniranje) ni podprto, ali pa ni delovalo"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Ni mogoče kopirati posebne datoteke"
 
-#: gio/gfile.c:4019
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Neveljavna vrednost simbolne povezave"
 
-#: gio/gfile.c:4180
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Simbolne povezave niso podprte"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Smeti niso podprte"
 
-#: gio/gfile.c:4292
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Ni mogoče uporabiti »%c« v imenu datoteke"
 
-#: gio/gfile.c:6773 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "enota ne podpira priklopa"
 
-#: gio/gfile.c:6884 gio/gfile.c:6930
+#: gio/gfile.c:6871 gio/gfile.c:6919
 msgid "No application is registered as handling this file"
 msgstr "Na voljo ni programa z a upravljanje s to datoteko"
 
@@ -1470,8 +1491,8 @@ msgstr "Razčlenitev ni dovoljena na dovodnem pretoku"
 msgid "Truncate not supported on stream"
 msgstr "Razčlenitev ni podprta na pretoku"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:377 gio/gresolver.c:529
-#: glib/gconvert.c:1785
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Neveljavno ime gostitelja"
 
@@ -1587,7 +1608,7 @@ msgstr "Ohrani z datoteko ob premikanju"
 msgid "“version” takes no arguments"
 msgstr "»različica« ne prevzema argumentov"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:857
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Uporaba:"
 
@@ -1673,10 +1694,10 @@ msgid "Error writing to stdout"
 msgstr "Napaka med pisanjem v standardni odvod"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1696,56 +1717,60 @@ msgstr ""
 "oddaljen GIO namesto krajevnih poti do datotek. Primer: kot pot je\n"
 "mogoče uporabiti smb://strežnik/vir/datoteka.txt."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Ni podanih mest"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Ni ciljne mape"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Pokaži napredek"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Opozori pred prepisovanjem"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Ohrani vse atribute"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Varnostno kopiraj obstoječe ciljne datoteke"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Nikoli ne sledi simbolnim povezavam"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Uporabi privzeta dovoljenja za ciljno mesto"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Preneseno %s od %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "VIR"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "CILJ"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Kopiraj eno ali več datotek iz VIRA na CILJ."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1755,88 +1780,98 @@ msgstr ""
 "oddaljen GIO namesto krajevnih poti do datotek. Primer: kot pot je\n"
 "mogoče uporabiti smb://strežnik/vir/datoteka.txt."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "CIljni predmet %s ni mapa"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: Ali želite prepisati »%s«? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Izpiši zapisljive atribute"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Pridobi podrobnosti datotečnega sistema"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Zahtevani atributi"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATRIBUTI"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Ne sledi simbolnim povezavam"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "atributi:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "prikaži ime: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "uredi ime: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "ime: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "vrsta: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "velikost:"
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "skrito\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "naslov URI: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "Krajevna pot: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "priklopna točka unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Nastavljivi atributi:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Imenski prostor zapisljivih atributov:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Pokaže podatke o mestih."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1850,23 +1885,27 @@ msgstr ""
 "so lahko navedeni z imeni GIO, na primer standard::ikona, ali pa le z\n"
 "imenskim prostorom, na primer: unix ali z » * «, ki ustreza vsem."
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Pokaži skrite datoteke"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Uporabi zapis v dolgi obliki"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Izpiši prikazna imena"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Izpiši celotne naslove URI"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Izpiši vsebino mest."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1994,12 +2033,12 @@ msgid "Mount as mountable"
 msgstr "priklopi kot priklopno"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Priklopi nosilec z datoteko naprave"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Priklopi nosilec z datoteko naprave oz. drugim določilnikom"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "NAPRAVA"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2013,6 +2052,10 @@ msgstr "Izvrzi"
 msgid "Stop drive with device file"
 msgstr "Zaustavi pogon z datoteko naprave"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "NAPRAVA"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Odklopi vse priklope s podano shemo"
@@ -2067,16 +2110,11 @@ msgstr "Brezimen dostop ni dovoljen!"
 msgid "No drive for device file"
 msgstr "Ni določenega pogona za datoteko naprave"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Priklopljen %s na %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Ni določenega nosilca za datoteko naprave"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Ni nosilca za podano določilo ID"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Priklop oziroma odklop različnih nosilcev"
 
@@ -2240,32 +2278,32 @@ msgstr "Sledi simbolnim povezavam, priklopom in bližnjicam map"
 msgid "List contents of directories in a tree-like format."
 msgstr "Izpiši seznam vsebine map v drevesni obliki."
 
-#: gio/glib-compile-resources.c:143 gio/glib-compile-schemas.c:1515
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Predmet <%s> ni dovoljen znotraj predmeta <%s>"
 
-#: gio/glib-compile-resources.c:147
+#: gio/glib-compile-resources.c:144
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Predmet <%s> ni dovoljen na vrhnji ravni"
 
-#: gio/glib-compile-resources.c:237
+#: gio/glib-compile-resources.c:234
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "Datoteka %s se v viru pojavi večkrat"
 
-#: gio/glib-compile-resources.c:248
+#: gio/glib-compile-resources.c:245
 #, c-format
 msgid "Failed to locate “%s” in any source directory"
 msgstr "Datoteke »%s« ni mogoče najti v nobeni mapi virov"
 
-#: gio/glib-compile-resources.c:259
+#: gio/glib-compile-resources.c:256
 #, c-format
 msgid "Failed to locate “%s” in current directory"
 msgstr "Datoteke »%s« ni mogoče najti v trenutni mapi"
 
-#: gio/glib-compile-resources.c:293
+#: gio/glib-compile-resources.c:290
 #, c-format
 msgid "Unknown processing option “%s”"
 msgstr "Neznana možnost obdelovanja »%s«"
@@ -2274,20 +2312,20 @@ msgstr "Neznana možnost obdelovanja »%s«"
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
 #.
-#: gio/glib-compile-resources.c:313 gio/glib-compile-resources.c:370
-#: gio/glib-compile-resources.c:427
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
 #, c-format
 msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
 msgstr ""
 "Zahtevan ja atribut %s, vendar spremenljivka %s ni nastavljena, orodje "
 "ukazne vrstice  %s pa ni vpisano na poti PATH"
 
-#: gio/glib-compile-resources.c:460
+#: gio/glib-compile-resources.c:457
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "Napaka med branjem datoteke %s: %s"
 
-#: gio/glib-compile-resources.c:480
+#: gio/glib-compile-resources.c:477
 #, c-format
 msgid "Error compressing file %s"
 msgstr "Napaka med stiskanjem datoteke %s"
@@ -2297,7 +2335,7 @@ msgstr "Napaka med stiskanjem datoteke %s"
 msgid "text may not appear inside <%s>"
 msgstr "besedilo se ne sme pojaviti znotraj <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2139
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Izpiši podrobnosti različice in končaj"
 
@@ -2312,8 +2350,8 @@ msgid ""
 msgstr ""
 "Mape, iz katerih naj bodo prebrane datoteke (privzeto je to trenutna mapa)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2140
-#: gio/glib-compile-schemas.c:2169
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "MAPA"
 
@@ -2374,117 +2412,117 @@ msgstr ""
 msgid "You should give exactly one file name\n"
 msgstr "Podati je treba natanko eno ime datoteke\n"
 
-#: gio/glib-compile-schemas.c:95
+#: gio/glib-compile-schemas.c:92
 #, c-format
 msgid "nick must be a minimum of 2 characters"
 msgstr "vzdevek mora vsebovati najmanj 2 znaka"
 
-#: gio/glib-compile-schemas.c:106
+#: gio/glib-compile-schemas.c:103
 #, c-format
 msgid "Invalid numeric value"
 msgstr "Neveljavna številčna vrednost"
 
-#: gio/glib-compile-schemas.c:114
+#: gio/glib-compile-schemas.c:111
 #, c-format
 msgid "<value nick='%s'/> already specified"
 msgstr "<alias value='%s'/> je že določeno"
 
-#: gio/glib-compile-schemas.c:122
+#: gio/glib-compile-schemas.c:119
 #, c-format
 msgid "value='%s' already specified"
 msgstr "<alias value='%s'/> je že določena"
 
-#: gio/glib-compile-schemas.c:136
+#: gio/glib-compile-schemas.c:133
 #, c-format
 msgid "flags values must have at most 1 bit set"
 msgstr "zastavice morajo biti nastavljene vsaj kot 1 bitni niz"
 
-#: gio/glib-compile-schemas.c:161
+#: gio/glib-compile-schemas.c:158
 #, c-format
 msgid "<%s> must contain at least one <value>"
 msgstr "<%s> oznaka mora vsebovati vsaj eno <value>"
 
-#: gio/glib-compile-schemas.c:317
+#: gio/glib-compile-schemas.c:314
 #, c-format
 msgid "<%s> is not contained in the specified range"
 msgstr "<%s> ni znotraj določenega obsega"
 
-#: gio/glib-compile-schemas.c:329
+#: gio/glib-compile-schemas.c:326
 #, c-format
 msgid "<%s> is not a valid member of the specified enumerated type"
 msgstr "<%s> ni veljavni član določene oštevilčene vrste"
 
-#: gio/glib-compile-schemas.c:335
+#: gio/glib-compile-schemas.c:332
 #, c-format
 msgid "<%s> contains string not in the specified flags type"
 msgstr "<%s> vsebuje niz, ki ni med določenimi vrstami zastavic"
 
-#: gio/glib-compile-schemas.c:341
+#: gio/glib-compile-schemas.c:338
 #, c-format
 msgid "<%s> contains a string not in <choices>"
 msgstr "<%s> vsebuje niz, ki ni med izbirami <choices>"
 
-#: gio/glib-compile-schemas.c:375
+#: gio/glib-compile-schemas.c:372
 msgid "<range/> already specified for this key"
 msgstr "<range/> je za ta ključ že določen"
 
-#: gio/glib-compile-schemas.c:393
+#: gio/glib-compile-schemas.c:390
 #, c-format
 msgid "<range> not allowed for keys of type “%s”"
 msgstr "<range> ni dovoljena vrednost vrste »%s«"
 
-#: gio/glib-compile-schemas.c:410
+#: gio/glib-compile-schemas.c:407
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
 msgstr "najmanjša vrednost <range> je večja od največje vrednosti"
 
-#: gio/glib-compile-schemas.c:435
+#: gio/glib-compile-schemas.c:432
 #, c-format
 msgid "unsupported l10n category: %s"
 msgstr "nepodprta kategorija l10n: %s"
 
-#: gio/glib-compile-schemas.c:443
+#: gio/glib-compile-schemas.c:440
 msgid "l10n requested, but no gettext domain given"
 msgstr "zahtevan je predmet l10n, vendar pa ni podana domena gettext"
 
-#: gio/glib-compile-schemas.c:455
+#: gio/glib-compile-schemas.c:452
 msgid "translation context given for value without l10n enabled"
 msgstr "podan je prevod, ni pa omogočena podpora za l10n"
 
-#: gio/glib-compile-schemas.c:477
+#: gio/glib-compile-schemas.c:474
 #, c-format
 msgid "Failed to parse <default> value of type “%s”: "
 msgstr "Razčlenjevanje vrednosti <default> vrste »%s« je spodletelo:"
 
-#: gio/glib-compile-schemas.c:494
+#: gio/glib-compile-schemas.c:491
 msgid ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr "<choices> ni mogoče določiti za ključe, označene kot oštevilčene vrste"
 
-#: gio/glib-compile-schemas.c:503
+#: gio/glib-compile-schemas.c:500
 msgid "<choices> already specified for this key"
 msgstr "<choices> so za ta ključ že določene"
 
-#: gio/glib-compile-schemas.c:515
+#: gio/glib-compile-schemas.c:512
 #, c-format
 msgid "<choices> not allowed for keys of type “%s”"
 msgstr "<choices> ni dovoljena vrednost vrste »%s«"
 
-#: gio/glib-compile-schemas.c:531
+#: gio/glib-compile-schemas.c:528
 #, c-format
 msgid "<choice value='%s'/> already given"
 msgstr "<choice value='%s'/> je že podano"
 
-#: gio/glib-compile-schemas.c:546
+#: gio/glib-compile-schemas.c:543
 #, c-format
 msgid "<choices> must contain at least one <choice>"
 msgstr "vrednost <choices> mora vsebovati vsaj en <choice>"
 
-#: gio/glib-compile-schemas.c:560
+#: gio/glib-compile-schemas.c:557
 msgid "<aliases> already specified for this key"
 msgstr "<aliases> je za ta ključ že določen"
 
-#: gio/glib-compile-schemas.c:564
+#: gio/glib-compile-schemas.c:561
 msgid ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
@@ -2492,7 +2530,7 @@ msgstr ""
 "<aliases> je mogoče določiti le za ključe z oštevilčenimi vrednostmi, z "
 "vrsto zastavic ali za <choices>"
 
-#: gio/glib-compile-schemas.c:583
+#: gio/glib-compile-schemas.c:580
 #, c-format
 msgid ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
@@ -2501,42 +2539,42 @@ msgstr ""
 "vrednost <alias value='%s'/> je podana, čeprav je »%s« že veljaven član "
 "oštevilčene vrste"
 
-#: gio/glib-compile-schemas.c:589
+#: gio/glib-compile-schemas.c:586
 #, c-format
 msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
 msgstr ""
 "<alias value='%s'/> je podano, vendar je <choice value='%s'/> že podan given"
 
-#: gio/glib-compile-schemas.c:597
+#: gio/glib-compile-schemas.c:594
 #, c-format
 msgid "<alias value='%s'/> already specified"
 msgstr "<alias value='%s'/> je že določeno"
 
-#: gio/glib-compile-schemas.c:607
+#: gio/glib-compile-schemas.c:604
 #, c-format
 msgid "alias target “%s” is not in enumerated type"
 msgstr "cilj vzdevka »%s« ni oštevilčene vrste"
 
-#: gio/glib-compile-schemas.c:608
+#: gio/glib-compile-schemas.c:605
 #, c-format
 msgid "alias target “%s” is not in <choices>"
 msgstr "cilj vzdevka »%s« ni med izbirami <choices>"
 
-#: gio/glib-compile-schemas.c:623
+#: gio/glib-compile-schemas.c:620
 #, c-format
 msgid "<aliases> must contain at least one <alias>"
 msgstr "vrednost <aliases> mora vsebovati vsaj en <alias>"
 
-#: gio/glib-compile-schemas.c:798
+#: gio/glib-compile-schemas.c:797
 msgid "Empty names are not permitted"
 msgstr "Prazna polja imen niso dovoljena."
 
-#: gio/glib-compile-schemas.c:808
+#: gio/glib-compile-schemas.c:807
 #, c-format
 msgid "Invalid name “%s”: names must begin with a lowercase letter"
 msgstr "Neveljavno ime »%s«: imena se morajo začeti z malo črko."
 
-#: gio/glib-compile-schemas.c:820
+#: gio/glib-compile-schemas.c:819
 #, c-format
 msgid ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
@@ -2545,36 +2583,36 @@ msgstr ""
 "Neveljavno ime »%s«: neveljaven znak »%c«; dovoljene so samo male črke, "
 "številke in vezaj (» - «)."
 
-#: gio/glib-compile-schemas.c:829
+#: gio/glib-compile-schemas.c:828
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr "Neveljavno ime »%s«: zaporedna vezaja (» -- «) nista dovoljena."
 
-#: gio/glib-compile-schemas.c:838
+#: gio/glib-compile-schemas.c:837
 #, c-format
 msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 msgstr "Neveljavno ime »%s«: zadnji znak ne sme biti vezaj (» - «)."
 
-#: gio/glib-compile-schemas.c:846
+#: gio/glib-compile-schemas.c:845
 #, c-format
 msgid "Invalid name “%s”: maximum length is 1024"
 msgstr "Neveljavno ime »%s«: največja dolžina je 1024"
 
-#: gio/glib-compile-schemas.c:918
+#: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr "<child name=»%s«> je že določeno"
 
-#: gio/glib-compile-schemas.c:944
+#: gio/glib-compile-schemas.c:943
 msgid "Cannot add keys to a “list-of” schema"
 msgstr "Shemi »list-of« ni mogoče dodati ključev."
 
-#: gio/glib-compile-schemas.c:955
+#: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr "<key name=»%s«> je že določeno"
 
-#: gio/glib-compile-schemas.c:973
+#: gio/glib-compile-schemas.c:972
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
@@ -2583,7 +2621,7 @@ msgstr ""
 "<key name=»%s«> sence <key name=»%s«> v <schema id=»%s«>; za spreminjanje "
 "vrednosti uporabite <override>"
 
-#: gio/glib-compile-schemas.c:984
+#: gio/glib-compile-schemas.c:983
 #, c-format
 msgid ""
 "Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
@@ -2592,62 +2630,62 @@ msgstr ""
 "Natanko ena izmed možnosti »vrste«, »enum« ali »zastavice« mora biti "
 "določena kot lastnost ključa <key>"
 
-#: gio/glib-compile-schemas.c:1003
+#: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id=»%s«> (še) ni določen."
 
-#: gio/glib-compile-schemas.c:1018
+#: gio/glib-compile-schemas.c:1017
 #, c-format
 msgid "Invalid GVariant type string “%s”"
 msgstr "Neveljavna vrsta niza GVariant »%s«"
 
-#: gio/glib-compile-schemas.c:1048
+#: gio/glib-compile-schemas.c:1047
 msgid "<override> given but schema isn’t extending anything"
 msgstr "<override> je podan, vendar shema ne razširja ničesar"
 
-#: gio/glib-compile-schemas.c:1061
+#: gio/glib-compile-schemas.c:1060
 #, c-format
 msgid "No <key name='%s'> to override"
 msgstr "<key name='%s'> za prepis ni na voljo"
 
-#: gio/glib-compile-schemas.c:1069
+#: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr "<override name=»%s«> je že določeno"
 
-#: gio/glib-compile-schemas.c:1142
+#: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr "<schema id=»%s«> je že določeno"
 
-#: gio/glib-compile-schemas.c:1154
+#: gio/glib-compile-schemas.c:1153
 #, c-format
 msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr "<schema id='%s'> razširja še neobstoječo shemo »%s«"
 
-#: gio/glib-compile-schemas.c:1170
+#: gio/glib-compile-schemas.c:1169
 #, c-format
 msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr "<schema id='%s'> je seznam še neobstoječe sheme »%s«"
 
-#: gio/glib-compile-schemas.c:1178
+#: gio/glib-compile-schemas.c:1177
 #, c-format
 msgid "Cannot be a list of a schema with a path"
 msgstr "Seznam sheme s potjo ni mogoč"
 
-#: gio/glib-compile-schemas.c:1188
+#: gio/glib-compile-schemas.c:1187
 #, c-format
 msgid "Cannot extend a schema with a path"
 msgstr "Sheme ni mogoče razširiti s potjo"
 
-#: gio/glib-compile-schemas.c:1198
+#: gio/glib-compile-schemas.c:1197
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr "<schema id=»%s«> je seznam, ki razširja <schema id=»%s«>, ki ni seznam"
 
-#: gio/glib-compile-schemas.c:1208
+#: gio/glib-compile-schemas.c:1207
 #, c-format
 msgid ""
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
@@ -2656,17 +2694,17 @@ msgstr ""
 "<schema id='%s' list-of='%s'> razširja <schema id='%s' list-of='%s'> vendar "
 "»%s« ne razširja »%s«"
 
-#: gio/glib-compile-schemas.c:1225
+#: gio/glib-compile-schemas.c:1224
 #, c-format
 msgid "A path, if given, must begin and end with a slash"
 msgstr "Pot, če je podana, se mora začeti in končati s poševnico"
 
-#: gio/glib-compile-schemas.c:1232
+#: gio/glib-compile-schemas.c:1231
 #, c-format
 msgid "The path of a list must end with “:/”"
 msgstr "Pot seznama se mora končati z » :/ «"
 
-#: gio/glib-compile-schemas.c:1241
+#: gio/glib-compile-schemas.c:1240
 #, c-format
 msgid ""
 "Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
@@ -2675,127 +2713,158 @@ msgstr ""
 "Opozorilo: shema »%s« ima določeno pot »%s«. Poti, ki se začnejo z »/apps/«, "
 "»/desktop/« ali »/system/« so opuščene."
 
-#: gio/glib-compile-schemas.c:1271
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id=»%s«> je že določeno"
 
-#: gio/glib-compile-schemas.c:1421 gio/glib-compile-schemas.c:1437
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
 msgstr "Le en predmet <%s> je lahko znotraj predmeta <%s>"
 
-#: gio/glib-compile-schemas.c:1519
+#: gio/glib-compile-schemas.c:1518
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "Predmet <%s> na vrhnji ravni ni dovoljen"
 
-#: gio/glib-compile-schemas.c:1537
+#: gio/glib-compile-schemas.c:1536
 msgid "Element <default> is required in <key>"
 msgstr "Predmet <default> mora biti zapisan v ključu <key>"
 
-#: gio/glib-compile-schemas.c:1627
+#: gio/glib-compile-schemas.c:1626
 #, c-format
 msgid "Text may not appear inside <%s>"
 msgstr "Besedilo se ne sme pojaviti znotraj <%s>"
 
-#: gio/glib-compile-schemas.c:1695
+#: gio/glib-compile-schemas.c:1694
 #, c-format
 msgid "Warning: undefined reference to <schema id='%s'/>"
 msgstr "Opozorilo: neveljaven sklic na <schema id='%s'/>"
 
 #. Translators: Do not translate "--strict".
-#: gio/glib-compile-schemas.c:1834 gio/glib-compile-schemas.c:1910
-#: gio/glib-compile-schemas.c:2025
-#, c-format
-msgid "--strict was specified; exiting.\n"
-msgstr "--strict je določen, končanje.\n"
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+msgid "--strict was specified; exiting."
+msgstr "določena je zastavica --strict; opravilo bo preklicano."
 
-#: gio/glib-compile-schemas.c:1844
+#: gio/glib-compile-schemas.c:1845
+msgid "This entire file has been ignored."
+msgstr "Celotna datoteka je prezrta."
+
+#: gio/glib-compile-schemas.c:1908
+msgid "Ignoring this file."
+msgstr "Datoteka je prezrta."
+
+#: gio/glib-compile-schemas.c:1963
 #, c-format
-msgid "This entire file has been ignored.\n"
-msgstr "Celotna datoteka je prezrta.\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
+msgstr ""
+"Ključ »%s« v shemi »%s« kot je določen v datoteki prepisa »%s« ne obstaja. "
+"Prepis za ta ključ bo prezrt."
 
-#: gio/glib-compile-schemas.c:1906
+#: gio/glib-compile-schemas.c:1971
 #, c-format
-msgid "Ignoring this file.\n"
-msgstr "Datoteka je prezrta.\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
+msgstr ""
+"Ključ »%s« v shemi »%s« kot je določen v datoteki prepisa »%s« ne obstaja, "
+"določena je tudi zastavica --strict. Opravilo je prekinjeno."
 
-#: gio/glib-compile-schemas.c:1959
+#: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "No such key “%s” in schema “%s” as specified in override file “%s”"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
 msgstr ""
-"Ključ »%s« v shemi »%s« kot je določen v datoteki prepisa »%s« ne obstaja"
+"Ni mogoče uporabiti prepisa jezikovno prilagojenega ključa »%s« za namizje v "
+"shemi »%s« (prepisna datoteka »%s«). Prepis za ta ključ bo prezrt."
 
-#: gio/glib-compile-schemas.c:1965 gio/glib-compile-schemas.c:1990
-#: gio/glib-compile-schemas.c:2050 gio/glib-compile-schemas.c:2079
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "; ignoring override for this key.\n"
-msgstr "; prepis za ta ključ je prezrt.\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
+msgstr ""
+"Ni mogoče uporabiti prepisa jezikovno prilagojenega ključa »%s« za namizje v "
+"shemi »%s« (prepisna datoteka »%s«), določena je tudi zastavica --strict. "
+"Opravilo je prekinjeno."
 
-#: gio/glib-compile-schemas.c:1969 gio/glib-compile-schemas.c:1994
-#: gio/glib-compile-schemas.c:2054 gio/glib-compile-schemas.c:2083
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid " and --strict was specified; exiting.\n"
-msgstr " in --strict sta določena, končanje.\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
+msgstr ""
+"Napaka razčlenjevanja ključa »%s« v shemi »%s« kot je določen v datoteki "
+"prepisa »%s«: %s. Prepis za ta ključ bo prezrt."
 
-#: gio/glib-compile-schemas.c:1984
+#: gio/glib-compile-schemas.c:2038
 #, c-format
 msgid ""
-"cannot provide per-desktop overrides for localised key “%s” in schema "
-"“%s” (override file “%s”)"
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
 msgstr ""
-"ni mogoče uporabiti prepisa jezikovno prilagojenega ključa »%s« za namizje v "
-"shemi »%s« (prepisna datoteka »%s«)"
+"Napaka razčlenjevanja ključa »%s« v shemi »%s« kot je določen v datoteki "
+"prepisa »%s«: %s. Določena je bila zastavica --strict; opravilo je "
+"preklicano."
 
-#: gio/glib-compile-schemas.c:2011
+#: gio/glib-compile-schemas.c:2065
 #, c-format
 msgid ""
-"error parsing key “%s” in schema “%s” as specified in override file “%s”: %s."
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 msgstr ""
-"napaka razčlenjevanja ključa »%s« v shemi »%s« kot je določen v datoteki "
-"prepisa »%s«: %s.  "
+"Prepis za ključ »%s« v shemi »%s« v datoteki prepisa »%s« ni v obsegu, "
+"podanem v shemi. Prepis za ta ključ bo prezrt."
 
-#: gio/glib-compile-schemas.c:2021
+#: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "Ignoring override for this key.\n"
-msgstr "Prepis za ta ključ je prezrt.\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
+msgstr ""
+"Prepis za ključ »%s« v shemi »%s« v datoteki prepisa »%s« ni v obsegu, "
+"podanem v shemi, določena je tudi zastavica --strict. Opravilo je prekinjeno."
 
-#: gio/glib-compile-schemas.c:2040
+#: gio/glib-compile-schemas.c:2101
 #, c-format
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is outside the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
 msgstr ""
-"prepis za ključ »%s« v shemi »%s« v datoteki prepisa »%s« ni v obsegu, "
-"podanem v shemi"
+"Prepis za ključ »%s« v shemi »%s« v datoteki prepisa »%s« ni v seznamu "
+"veljavnih možnosti. Prepis za ta ključ bo prezrt."
 
-#: gio/glib-compile-schemas.c:2069
+#: gio/glib-compile-schemas.c:2111
 #, c-format
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 msgstr ""
-"prepis za ključ »%s« v shemi »%s« v datoteki prepisa »%s« ni v seznamu "
-"veljavnih možnosti"
+"Prepis za ključ »%s« v shemi »%s« v datoteki prepisa »%s« ni v seznamu "
+"veljavnih možnosti, določena je tudi zastavica --strict. Opravilo je "
+"prekinjeno."
 
-#: gio/glib-compile-schemas.c:2140
-msgid "where to store the gschemas.compiled file"
-msgstr "kje naj se shrani datoteka gschemas.compiled"
+#: gio/glib-compile-schemas.c:2173
+msgid "Where to store the gschemas.compiled file"
+msgstr "Kje naj se shrani datoteka gschemas.compiled"
 
-#: gio/glib-compile-schemas.c:2141
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
 msgstr "Prekini ob vsakršni napaki v shemi"
 
-#: gio/glib-compile-schemas.c:2142
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
 msgstr "Ne zapiši datoteke gschema.compiled"
 
-#: gio/glib-compile-schemas.c:2143
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
 msgstr "Ne vsili omejitev imena ključa"
 
-#: gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-schemas.c:2205
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -2805,25 +2874,18 @@ msgstr ""
 "sheme. Datoteke shem morajo imeti pripono .gschema.xml,\n"
 "datoteka predpomnilnika pa se imenuje gschemas.compiled."
 
-#: gio/glib-compile-schemas.c:2193
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr "Podati je treba natanko eno ime mape\n"
-
-#: gio/glib-compile-schemas.c:2235
-#, c-format
-msgid "No schema files found: "
-msgstr "Datotek sheme ni mogoče najti:"
+#: gio/glib-compile-schemas.c:2226
+msgid "You should give exactly one directory name"
+msgstr "Podati je treba natanko eno ime mape"
 
-#: gio/glib-compile-schemas.c:2238
-#, c-format
-msgid "doing nothing.\n"
-msgstr "je brez dela.\n"
+#: gio/glib-compile-schemas.c:2269
+msgid "No schema files found: doing nothing."
+msgstr "Datotek sheme ni mogoče najti: opravilo bo preklicano."
 
-#: gio/glib-compile-schemas.c:2241
-#, c-format
-msgid "removed existing output file.\n"
-msgstr "odstranjena obstoječa odvodna datoteka.\n"
+#: gio/glib-compile-schemas.c:2271
+msgid "No schema files found: removed existing output file."
+msgstr ""
+"Datotek sheme ni mogoče najti: obstoječa odvodna datoteka je odstranjena."
 
 #: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
@@ -2858,7 +2920,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Ni mogoče preimenovati datoteke, izbrano ime že obstaja"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:646
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Neveljavno ime datoteke"
 
@@ -2934,201 +2996,197 @@ msgstr "Datotečni sistem ne podpira simbolnih povezav"
 msgid "Error making symbolic link %s: %s"
 msgstr "Napaka med ustvarjanjem simbolne povezave %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2138
-msgid "Symbolic links not supported"
-msgstr "Simbolne povezave niso podprte"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Napaka med premikanjem datoteke %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Ni mogoče premakniti mape čez mapo"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1030
-#: gio/glocalfileoutputstream.c:1044 gio/glocalfileoutputstream.c:1059
-#: gio/glocalfileoutputstream.c:1076 gio/glocalfileoutputstream.c:1090
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Ustvarjanje varnostne kopije je spodletelo."
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Napaka med odstranjevanjem ciljne datoteke: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Premikanje med priklopi ni podprto"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Ni mogoče določiti porabe diska %s: %s."
 
-#: gio/glocalfileinfo.c:745
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Vrednost atributa ni mogoče določiti kot NULL"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Neveljavna vrsta atributa (pričakovan niz)"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Neveljavno razširjeno ime atributa"
 
-#: gio/glocalfileinfo.c:799
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Napaka med določanjem razširjenega atributa »%s«: %s"
 
-#: gio/glocalfileinfo.c:1625
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (neveljavni nabor znakov)"
 
-#: gio/glocalfileinfo.c:1789 gio/glocalfileoutputstream.c:908
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Napaka med pridobivanjem podatkov za datoteko »%s«: %s"
 
-#: gio/glocalfileinfo.c:2059
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Napaka med potrjevanjem opisovalnika datoteke: %s"
 
-#: gio/glocalfileinfo.c:2104
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Neveljavna vrsta atributa (pričakovan uint32)"
 
-#: gio/glocalfileinfo.c:2122
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Neveljavna vrsta atributa (pričakovan uint64)"
 
-#: gio/glocalfileinfo.c:2141 gio/glocalfileinfo.c:2160
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Neveljavna vrsta atributa (pričakovan bitni niz)"
 
-#: gio/glocalfileinfo.c:2207
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Ni mogoče določiti dovoljenj simbolnih povezav"
 
-#: gio/glocalfileinfo.c:2223
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Napaka med določanjem dovoljenj: %s"
 
-#: gio/glocalfileinfo.c:2274
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Napaka med določanjem lastnika: %s"
 
-#: gio/glocalfileinfo.c:2297
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "Simbolna povezava ne sme biti določena kot NULL"
 
-#: gio/glocalfileinfo.c:2307 gio/glocalfileinfo.c:2326
-#: gio/glocalfileinfo.c:2337
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Napaka med določanjem simbolne povezave: %s"
 
-#: gio/glocalfileinfo.c:2316
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Napaka med določevanjem simbolne povezave; datoteka ni simbolna povezava"
 
-#: gio/glocalfileinfo.c:2442
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Napaka med določanjem sprememb ali časa dostopa: %s"
 
-#: gio/glocalfileinfo.c:2465
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "Atributa SELinux ni mogoče določiti kot NULL"
 
-#: gio/glocalfileinfo.c:2480
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Napaka nastavitve vsebine SELinux: %s"
 
-#: gio/glocalfileinfo.c:2487
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "Na tem sistemu SELinux ni omogočen"
 
-#: gio/glocalfileinfo.c:2579
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Določanje atributa %s ni podprto"
 
-#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:791
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Napaka med branjem iz datoteke: %s"
 
 #: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
 #: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
-#: gio/glocalfileoutputstream.c:553 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Napaka med iskanjem v datoteki: %s"
 
-#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:343
-#: gio/glocalfileoutputstream.c:437
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Napaka med zapiranjem datoteke: %s"
 
-#: gio/glocalfilemonitor.c:856
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Ni mogoče najti privzete krajevne datoteke nadzora"
 
-#: gio/glocalfileoutputstream.c:208 gio/glocalfileoutputstream.c:286
-#: gio/glocalfileoutputstream.c:323 gio/glocalfileoutputstream.c:812
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Napaka med pisanjem v datoteko: %s"
 
-#: gio/glocalfileoutputstream.c:370
+#: gio/glocalfileoutputstream.c:371
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Napaka med odstranjevanjem stare varnostne povezave: %s"
 
-#: gio/glocalfileoutputstream.c:384 gio/glocalfileoutputstream.c:397
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Napaka med ustvarjanjem varnostne kopije: %s"
 
-#: gio/glocalfileoutputstream.c:415
+#: gio/glocalfileoutputstream.c:416
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Napaka med preimenovanjem začasne datoteke: %s"
 
-#: gio/glocalfileoutputstream.c:599 gio/glocalfileoutputstream.c:1159
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Napaka med obrezovanjem datoteke: %s"
 
-#: gio/glocalfileoutputstream.c:652 gio/glocalfileoutputstream.c:890
-#: gio/glocalfileoutputstream.c:1140 gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Napaka med odpiranjem datoteke »%s«: %s"
 
-#: gio/glocalfileoutputstream.c:921
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
 msgstr "Ciljna datoteka je mapa"
 
-#: gio/glocalfileoutputstream.c:926
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
 msgstr "Ciljna datoteka ni običajna datoteka"
 
-#: gio/glocalfileoutputstream.c:938
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
 msgstr "Datoteka je bila zunanje spremenjena"
 
-#: gio/glocalfileoutputstream.c:1124
+#: gio/glocalfileoutputstream.c:1125
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Napaka med odstranjevanjem datoteke: %s"
@@ -3218,16 +3276,16 @@ msgstr "priklop ne podpira ugibanja vsebine vrste"
 msgid "mount doesn’t implement synchronous content type guessing"
 msgstr "priklop ne podpira usklajevanja ugibanja vsebine vrste"
 
-#: gio/gnetworkaddress.c:388
+#: gio/gnetworkaddress.c:415
 #, c-format
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Ime gostitelja »%s« vsebuje » [ «, ne pa tudi » ] «"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Omrežje ni dosegljivo"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Gostitelj ni dosegljiv"
 
@@ -3245,12 +3303,12 @@ msgstr "Ni mogoče ustvariti nadzornika omrežja:"
 msgid "Could not get network status: "
 msgstr "Ni mogoče pridobiti stanja omrežja:"
 
-#: gio/gnetworkmonitornm.c:313
+#: gio/gnetworkmonitornm.c:348
 #, c-format
 msgid "NetworkManager not running"
 msgstr "Program NetworkManager ni zagnan"
 
-#: gio/gnetworkmonitornm.c:324
+#: gio/gnetworkmonitornm.c:359
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "Različica programa NetworkManager je prestara"
@@ -3268,18 +3326,18 @@ msgstr "Vsota vektorjev, poslanih na %s, je prevelika."
 msgid "Source stream is already closed"
 msgstr "Izvorni pretok je že zaprt"
 
-#: gio/gresolver.c:344 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:160
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Napaka med razreševanjem »%s«: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:389 gio/gresolver.c:547
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "Za funkcijo %s ni zagotovljene podpore."
 
-#: gio/gresolver.c:915 gio/gresolver.c:967
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Neveljavna domena"
 
@@ -3305,11 +3363,11 @@ msgstr "Vir »%s« ni mapa."
 msgid "Input stream doesn’t implement seek"
 msgstr "Vhodni pretok ne podpira iskanja"
 
-#: gio/gresource-tool.c:501
+#: gio/gresource-tool.c:499
 msgid "List sections containing resources in an elf FILE"
 msgstr "Izpiši seznam odsekov, ki vsebujejo vire v DATOTEKI elf"
 
-#: gio/gresource-tool.c:507
+#: gio/gresource-tool.c:505
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3319,15 +3377,15 @@ msgstr ""
 "Če je ODSEK podan, izpiši le vire iz tega odseka\n"
 "Če je podana POT, izpiši le skladne vire"
 
-#: gio/gresource-tool.c:510 gio/gresource-tool.c:520
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
 msgid "FILE [PATH]"
 msgstr "DATOTEKA [POT]"
 
-#: gio/gresource-tool.c:511 gio/gresource-tool.c:521 gio/gresource-tool.c:528
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
 msgid "SECTION"
 msgstr "ODSEK"
 
-#: gio/gresource-tool.c:516
+#: gio/gresource-tool.c:514
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3339,15 +3397,15 @@ msgstr ""
 "Če je podana POT, izpiši le ujemajoče vire\n"
 "Podrobnosti vsebujejo odsek, velikost in stiskanje"
 
-#: gio/gresource-tool.c:526
+#: gio/gresource-tool.c:524
 msgid "Extract a resource file to stdout"
 msgstr "Razširi datoteko vira na standardni odvod"
 
-#: gio/gresource-tool.c:527
+#: gio/gresource-tool.c:525
 msgid "FILE PATH"
 msgstr "DATOTEKA POT"
 
-#: gio/gresource-tool.c:541
+#: gio/gresource-tool.c:539
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3375,7 +3433,7 @@ msgstr ""
 "Z ukazom »gresource help UKAZ« pridobite podrobno pomoč.\n"
 "\n"
 
-#: gio/gresource-tool.c:555
+#: gio/gresource-tool.c:553
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3390,19 +3448,19 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gresource-tool.c:562
+#: gio/gresource-tool.c:560
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  ODSEK     Ime (izbirno) izbora elf\n"
 
-#: gio/gresource-tool.c:566 gio/gsettings-tool.c:703
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  UKAZ      Ukaz (izbirno) za razlago\n"
 
-#: gio/gresource-tool.c:572
+#: gio/gresource-tool.c:570
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr "  DATOTEKA  Datoteka elf (dvojiška ali skupna knjižnica)\n"
 
-#: gio/gresource-tool.c:575
+#: gio/gresource-tool.c:573
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -3410,82 +3468,82 @@ msgstr ""
 "  DATOTEKA  Datoteka elf (dvojiška ali skupna knjižnica)\n"
 "            ali prevedena datoteka vira\n"
 
-#: gio/gresource-tool.c:579
+#: gio/gresource-tool.c:577
 msgid "[PATH]"
 msgstr "[POT]"
 
-#: gio/gresource-tool.c:581
+#: gio/gresource-tool.c:579
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr "  POT      Dodatna (neobvezna) pot vira (lahko je delna)\n"
 
-#: gio/gresource-tool.c:582
+#: gio/gresource-tool.c:580
 msgid "PATH"
 msgstr "POT"
 
-#: gio/gresource-tool.c:584
+#: gio/gresource-tool.c:582
 msgid "  PATH      A resource path\n"
 msgstr "  POT       Pot vira\n"
 
-#: gio/gsettings-tool.c:51 gio/gsettings-tool.c:72 gio/gsettings-tool.c:908
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Shema »%s« ne obstaja.\n"
 
-#: gio/gsettings-tool.c:57
+#: gio/gsettings-tool.c:55
 #, c-format
 msgid "Schema “%s” is not relocatable (path must not be specified)\n"
 msgstr "Shema »%s« ni dodeljiva (pot ne sme biti določena)\n"
 
-#: gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:76
 #, c-format
 msgid "Schema “%s” is relocatable (path must be specified)\n"
 msgstr "Shema »%s« je dodeljiva (pot mora biti določena)\n"
 
-#: gio/gsettings-tool.c:92
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "Pot ni podana.\n"
 
-#: gio/gsettings-tool.c:98
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
 msgstr "Zapis poti se mora začeti s poševnico (/)\n"
 
-#: gio/gsettings-tool.c:104
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
 msgstr "Zapis poti se mora končati s poševnico (/)\n"
 
-#: gio/gsettings-tool.c:110
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Pot ne sme vsebovati dveh zaporednih poševnic (//)\n"
 
-#: gio/gsettings-tool.c:538
+#: gio/gsettings-tool.c:536
 msgid "The provided value is outside of the valid range\n"
 msgstr "Ponujena vrednost je izven veljavnega območja\n"
 
-#: gio/gsettings-tool.c:545
+#: gio/gsettings-tool.c:543
 msgid "The key is not writable\n"
 msgstr "Ključ ni zapisljiv\n"
 
-#: gio/gsettings-tool.c:581
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Izpiši nameščene (nedodeljive) sheme"
 
-#: gio/gsettings-tool.c:587
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
 msgstr "Seznam naloženih dodeljivih SHEM"
 
-#: gio/gsettings-tool.c:593
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
 msgstr "Izpiši seznam ključev SHEME"
 
-#: gio/gsettings-tool.c:594 gio/gsettings-tool.c:600 gio/gsettings-tool.c:643
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
 msgstr "SHEMA[:POT]"
 
-#: gio/gsettings-tool.c:599
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
 msgstr "Izpiši seznam podrejenih predmetov SHEME"
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3493,48 +3551,48 @@ msgstr ""
 "Rekurzivno izpiši ključe in vrednosti,\n"
 "če ni podana SHEMA, pa izpiši vse ključe\n"
 
-#: gio/gsettings-tool.c:607
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SHEMA[:POT]]"
 
-#: gio/gsettings-tool.c:612
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
 msgstr "Pridobi vrednost KLJUČA"
 
-#: gio/gsettings-tool.c:613 gio/gsettings-tool.c:619 gio/gsettings-tool.c:625
-#: gio/gsettings-tool.c:637 gio/gsettings-tool.c:649
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SHEMA[:POT] KLJUČ"
 
-#: gio/gsettings-tool.c:618
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
 msgstr "Poizvej območje veljavnih vrednosti KLJUČA"
 
-#: gio/gsettings-tool.c:624
+#: gio/gsettings-tool.c:622
 msgid "Query the description for KEY"
 msgstr "Preveri opis za KLJUČ"
 
-#: gio/gsettings-tool.c:630
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
 msgstr "Nastavi vrednosti KLJUČA na VREDNOST"
 
-#: gio/gsettings-tool.c:631
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SHEMA[:POT] KLJUČ VREDNOST"
 
-#: gio/gsettings-tool.c:636
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
 msgstr "Ponastavi KLJUČ na privzeto vrednost"
 
-#: gio/gsettings-tool.c:642
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Ponastavi vse ključe SHEME na privzete vrednosti"
 
-#: gio/gsettings-tool.c:648
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
 msgstr "Preveri ali je KLJUČ zapisljiv"
 
-#: gio/gsettings-tool.c:654
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3544,11 +3602,11 @@ msgstr ""
 "V kolikor KLJUČ ni določen, nadzoruj vse ključe SHEME.\n"
 "Pritisni ^C za zaustavitev nadzora.\n"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SHEMA[:POT] [KLJUČ]"
 
-#: gio/gsettings-tool.c:669
+#: gio/gsettings-tool.c:667
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3596,7 +3654,7 @@ msgstr ""
 "Z ukazom »gsettings help UKAZ« se izpiše podrobna pomoč.\n"
 "\n"
 
-#: gio/gsettings-tool.c:693
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3611,11 +3669,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:697
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  MAPASHEM  Mapa za iskanje dodatnih shem\n"
 
-#: gio/gsettings-tool.c:707
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3623,239 +3681,239 @@ msgstr ""
 "  SHEMA         Ime sheme\n"
 "  POT              Pot do dodeljive sheme\n"
 
-#: gio/gsettings-tool.c:712
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KLJUČ           Ključ (izbirno) znotraj sheme\n"
 
-#: gio/gsettings-tool.c:716
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
 msgstr "  KLJUČ           Ključ znotraj sheme\n"
 
-#: gio/gsettings-tool.c:720
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
 msgstr "  VREDNOST   Vrednost za nastavitev\n"
 
-#: gio/gsettings-tool.c:775
+#: gio/gsettings-tool.c:773
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Ni mogoče odpreti shem iz %s: %s\n"
 
-#: gio/gsettings-tool.c:787
+#: gio/gsettings-tool.c:785
 msgid "No schemas installed\n"
 msgstr "Ni nameščenih shem\n"
 
-#: gio/gsettings-tool.c:866
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
 msgstr "Ni podanega imena sheme.\n"
 
-#: gio/gsettings-tool.c:921
+#: gio/gsettings-tool.c:919
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Ključ »%s« ne obstaja.\n"
 
-#: gio/gsocket.c:373
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Neveljaven vtič, ni zagnano"
 
-#: gio/gsocket.c:380
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Neveljaven vtič, zaganjanje je spodletelo: %s"
 
-#: gio/gsocket.c:388
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Vtič je že zaprt"
 
-#: gio/gsocket.c:403 gio/gsocket.c:3027 gio/gsocket.c:4244 gio/gsocket.c:4302
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Vtič V/I naprave je časovno potekel"
 
-#: gio/gsocket.c:538
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "ustvarjanje GSocet preko fd: %s"
 
-#: gio/gsocket.c:567 gio/gsocket.c:621 gio/gsocket.c:628
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Ni mogoče ustvariti vtiča: %s"
 
-#: gio/gsocket.c:621
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Določena je neznana družina"
 
-#: gio/gsocket.c:628
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Določen je neznan protokol"
 
-#: gio/gsocket.c:1119
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Ni mogoče uporabiti opravil datagrama na vtiču, ki jih ne podpira."
 
-#: gio/gsocket.c:1136
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Ni mogoče uporabiti opravil datagrama na vtiču z nastavljenim časovnim "
 "pretekom"
 
-#: gio/gsocket.c:1943
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "ni mogoče pridobiti krajevnega naslova: %s"
 
-#: gio/gsocket.c:1989
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "ni mogoče pridobiti oddaljenega naslova: %s"
 
-#: gio/gsocket.c:2055
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "ni mogoče slediti: %s"
 
-#: gio/gsocket.c:2157
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Napaka vezanjem na naslov: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Napaka vezave na naslov %s: %s"
 
-#: gio/gsocket.c:2215 gio/gsocket.c:2252 gio/gsocket.c:2362 gio/gsocket.c:2387
-#: gio/gsocket.c:2460 gio/gsocket.c:2518 gio/gsocket.c:2536
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Napaka povezovanja v skupino za večsmerno oddajanje: %s"
 
-#: gio/gsocket.c:2216 gio/gsocket.c:2253 gio/gsocket.c:2363 gio/gsocket.c:2388
-#: gio/gsocket.c:2461 gio/gsocket.c:2519 gio/gsocket.c:2537
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Napaka zapuščanja skupine za večsmerno oddajanje: %s"
 
-#: gio/gsocket.c:2217
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Ni podpore za večsmerno oddajanje lastno viru"
 
-#: gio/gsocket.c:2364
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Nepodprta skupina vtiča"
 
-#: gio/gsocket.c:2389
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "določeno po viru in ne po naslovu IPv4"
 
-#: gio/gsocket.c:2407 gio/gsocket.c:2436 gio/gsocket.c:2486
-#, c-format
-msgid "Interface not found: %s"
-msgstr "Vmesnika ni mogoče najti: %s"
-
-#: gio/gsocket.c:2423
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Ime vmesnika je predolgo"
 
-#: gio/gsocket.c:2462
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Vmesnika ni mogoče najti: %s"
+
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Ni podpore za večsmerno oddajanje v protokolu IPv4"
 
-#: gio/gsocket.c:2520
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Ni podpore za večsmerno oddajanje v protokolu IPv6"
 
-#: gio/gsocket.c:2729
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Napaka med sprejemanjem povezave: %s"
 
-#: gio/gsocket.c:2855
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Povezava v teku"
 
-#: gio/gsocket.c:2906
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Ni mogoče pridobiti uvrščene napake:"
 
-#: gio/gsocket.c:3092
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Napaka med prejemanjem podatkov: %s"
 
-#: gio/gsocket.c:3289
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Napaka med pošiljanjem podatkov: %s"
 
-#: gio/gsocket.c:3476
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Ni mogoče izklopiti vtiča: %s"
 
-#: gio/gsocket.c:3557
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Napaka med zapiranjem vtiča: %s"
 
-#: gio/gsocket.c:4237
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Čakanje na stanje vtiča: %s"
 
-#: gio/gsocket.c:4614 gio/gsocket.c:4616 gio/gsocket.c:4762 gio/gsocket.c:4847
-#: gio/gsocket.c:5027 gio/gsocket.c:5067 gio/gsocket.c:5069
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Napaka med pošiljanjem sporočila: %s"
 
-#: gio/gsocket.c:4789
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Predmet GSocketControlMessage na sistemih Windows ni podprt"
 
-#: gio/gsocket.c:5260 gio/gsocket.c:5333 gio/gsocket.c:5560
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Napaka med prejemanjem sporočila: %s"
 
-#: gio/gsocket.c:5832
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Ni mogoče prebrati poveril vtiča: %s."
 
-#: gio/gsocket.c:5841
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "Operacijski sistem ne podpira možnosti g_socket_get_credentials"
 
-#: gio/gsocketclient.c:181
+#: gio/gsocketclient.c:182
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr "Ni se mogoče povezati s posredniškim strežnikom %s:"
 
-#: gio/gsocketclient.c:195
+#: gio/gsocketclient.c:196
 #, c-format
 msgid "Could not connect to %s: "
 msgstr "Ni se mogoče povezati s strežnikom %s:"
 
-#: gio/gsocketclient.c:197
+#: gio/gsocketclient.c:198
 msgid "Could not connect: "
 msgstr "Ni se mogoče povezati:"
 
-#: gio/gsocketclient.c:1032 gio/gsocketclient.c:1731
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Neznana napaka med povezovanjem"
 
-#: gio/gsocketclient.c:1086 gio/gsocketclient.c:1640
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Posredovanje preko ne-TCP povezave ni podprto."
 
-#: gio/gsocketclient.c:1115 gio/gsocketclient.c:1666
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Protokol posredniškega strežnika »%s« ni podprt."
 
-#: gio/gsocketlistener.c:225
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr "Poslušalnik je že zaprt"
 
-#: gio/gsocketlistener.c:271
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "Dodan vtič je zaprt"
 
@@ -3881,68 +3939,68 @@ msgstr "Strežnik ni SOCKSv4 posredniški strežnik."
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr "Povezava preko posredniškega strežnika SOCKSv4 je zavrnjena."
 
-#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:338 gio/gsocks5proxy.c:348
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr "Strežnik ni SOCKSv5 posredniški strežnik."
 
-#: gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167 gio/gsocks5proxy.c:184
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "Posredniški strežnik SOCKSv5 zahteva overitev."
 
-#: gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:191
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
 msgstr "Strežnik SOCKSv5 zahteva overitveni način, ki ni podprt v GLib."
 
-#: gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:220
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr "Uporabniško ime ali geslo za protokol SOCKSv5 je predolgo."
 
-#: gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:250
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
 "Overitev strežnika SOCKSv5 je spodletela zaradi napačno vnesenega "
 "uporabniškega imena ali gesla."
 
-#: gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:300
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
 msgstr "Ime gostitelja »%s« je predolgo za protokol SOCKSv5"
 
-#: gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:362
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr "Posredniški strežnik SOCKSv5 uporablja neznano vrsto naslova."
 
-#: gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:369
 msgid "Internal SOCKSv5 proxy server error."
 msgstr "Notranja napaka posredniškega strežnika SOCKSv5"
 
-#: gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:375
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr "Nabor pravil ne dovoljuje SOCKSv5 povezave"
 
-#: gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:382
 msgid "Host unreachable through SOCKSv5 server."
 msgstr "Gostitelj ni dosegljiv preko strežnika SOCKSv5"
 
-#: gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:388
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr "Skozi SOCKSv5 posredniški strežnik ni mogoče doseči omrežja."
 
-#: gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:394
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr "Povezava skozi posredniški strežnik SOCKSv5 je zavrnjena."
 
-#: gio/gsocks5proxy.c:386
+#: gio/gsocks5proxy.c:400
 msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "Posredniški strežnik SOCKSv5 ne podpira ukaza »connect«."
 
-#: gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:406
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr "SOCKSv5 posredniški strežnik ne podpira ponujene vrste naslova"
 
-#: gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:412
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Neznana napaka posredniškega strežnika SOCKSv5."
 
@@ -3955,24 +4013,24 @@ msgstr "Ni mogoče upravljati z različico %d kodiranja GThemedIcon"
 msgid "No valid addresses were found"
 msgstr "Ni mogoče najti veljavnega naslova"
 
-#: gio/gthreadedresolver.c:317
+#: gio/gthreadedresolver.c:334
 #, c-format
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Napaka med obratnim razreševanjem »%s«: %s"
 
-#: gio/gthreadedresolver.c:653 gio/gthreadedresolver.c:732
-#: gio/gthreadedresolver.c:830 gio/gthreadedresolver.c:880
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Ni zapisa DNS za zahtevano vrsto »%s«"
 
-#: gio/gthreadedresolver.c:658 gio/gthreadedresolver.c:835
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Trenutno ni mogoče razrešiti »%s«"
 
-#: gio/gthreadedresolver.c:663 gio/gthreadedresolver.c:840
-#: gio/gthreadedresolver.c:948
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Napaka med razreševanjem »%s«"
@@ -4018,7 +4076,7 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Vneseno geslo je nepravilno."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:563
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4027,7 +4085,7 @@ msgstr[1] "Pričakovano eno nadzorno sporočilo, prejeto pa je %d sporočilo"
 msgstr[2] "Pričakovano eno nadzorno sporočilo, prejeti pa sta %d sporočili"
 msgstr[3] "Pričakovano eno nadzorno sporočilo, prejeta pa so %d sporočila"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:575
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
 msgstr "Nepričakovana vrsta dodatnih podatkov"
 
@@ -4044,33 +4102,33 @@ msgstr[3] "Pričakovan en fd, prejetih pa so %d\n"
 msgid "Received invalid fd"
 msgstr "Prejet neveljaven fd"
 
-#: gio/gunixconnection.c:355
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
 msgstr "Napaka med pošiljanjem poveril:"
 
-#: gio/gunixconnection.c:504
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Napaka med preverjanjem ali je predmet O_PASSCRED omogočen za vtič: %s"
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Napaka omogočanja predmeta SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:549
+#: gio/gunixconnection.c:565
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Pri prejemanju poveril je pričakovano branje enega bajta, vendar se je "
 "prebralo nič bajtov"
 
-#: gio/gunixconnection.c:589
+#: gio/gunixconnection.c:605
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Nadzorno sporočilo ni pričakovano, vendar pa je prejeto %d"
 
-#: gio/gunixconnection.c:614
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Napaka med onemogočanjem SO_PASSCRED: %s"
@@ -4080,19 +4138,19 @@ msgstr "Napaka med onemogočanjem SO_PASSCRED: %s"
 msgid "Error reading from file descriptor: %s"
 msgstr "Napaka med branjem iz opisovalnika datoteke: %s"
 
-#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:534
+#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:535
 #: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Napaka med zapiranjem opisovalnika datoteke: %s"
 
-#: gio/gunixmounts.c:2650 gio/gunixmounts.c:2703
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "Koren datotečnega sistema"
 
-#: gio/gunixoutputstream.c:371 gio/gunixoutputstream.c:391
-#: gio/gunixoutputstream.c:478 gio/gunixoutputstream.c:498
-#: gio/gunixoutputstream.c:675
+#: gio/gunixoutputstream.c:372 gio/gunixoutputstream.c:392
+#: gio/gunixoutputstream.c:479 gio/gunixoutputstream.c:499
+#: gio/gunixoutputstream.c:676
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Napaka med pisanjem v opisovalnik datoteke: %s"
@@ -4168,148 +4226,153 @@ msgstr "Zaženi storitev DBus"
 msgid "Wrong args\n"
 msgstr "Napačni argumenti\n"
 
-#: glib/gbookmarkfile.c:754
+#: glib/gbookmarkfile.c:756
 #, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Nepričakovan atribut »%s« za predmet »%s«"
 
-#: glib/gbookmarkfile.c:765 glib/gbookmarkfile.c:836 glib/gbookmarkfile.c:846
-#: glib/gbookmarkfile.c:955
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Atributa »%s« predmeta »%s« ni mogoče najti"
 
-#: glib/gbookmarkfile.c:1164 glib/gbookmarkfile.c:1229
-#: glib/gbookmarkfile.c:1293 glib/gbookmarkfile.c:1303
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Nepričakovana oznaka »%s«, pričakovana je »%s«"
 
-#: glib/gbookmarkfile.c:1189 glib/gbookmarkfile.c:1203
-#: glib/gbookmarkfile.c:1271 glib/gbookmarkfile.c:1317
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Nepričakovana oznaka »%s« znotraj »%s«"
 
-#: glib/gbookmarkfile.c:1813
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr "Neveljaven zapis datuma/časa »%s« v datoteki zaznamka"
+
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Ni veljavne datoteke zaznamkov v podatkovnih mapah"
 
-#: glib/gbookmarkfile.c:2014
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Zaznamek za naslov URI »%s« že obstaja"
 
-#: glib/gbookmarkfile.c:2060 glib/gbookmarkfile.c:2218
-#: glib/gbookmarkfile.c:2303 glib/gbookmarkfile.c:2383
-#: glib/gbookmarkfile.c:2468 glib/gbookmarkfile.c:2551
-#: glib/gbookmarkfile.c:2629 glib/gbookmarkfile.c:2708
-#: glib/gbookmarkfile.c:2750 glib/gbookmarkfile.c:2847
-#: glib/gbookmarkfile.c:2968 glib/gbookmarkfile.c:3158
-#: glib/gbookmarkfile.c:3234 glib/gbookmarkfile.c:3402
-#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3580
-#: glib/gbookmarkfile.c:3699
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Ni veljavnega zaznamka za naslov URI »%s«"
 
-#: glib/gbookmarkfile.c:2392
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "V zaznamku za naslov URI »%s« ni določene vrsta MIME"
 
-#: glib/gbookmarkfile.c:2477
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "V zaznamku za naslov URI »%s« ni določene zasebne zastavice"
 
-#: glib/gbookmarkfile.c:2856
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "V zaznamku za naslov URI »%s« ni nastavljenih skupin"
 
-#: glib/gbookmarkfile.c:3255 glib/gbookmarkfile.c:3412
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Program z imenom »%s« ni ustvaril zaznamka za »%s«"
 
-#: glib/gbookmarkfile.c:3435
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Razširjanje ukazne vrstice »%s« z naslovom URI »%s« je spodletelo."
 
-#: glib/gconvert.c:474
+#: glib/gconvert.c:466
 msgid "Unrepresentable character in conversion input"
 msgstr "Nepredstavljiv znak na dovodu pretvorbe"
 
-#: glib/gconvert.c:501 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Nedokončano zaporedje znakov na koncu vhoda"
 
-#: glib/gconvert.c:770
+#: glib/gconvert.c:762
 #, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "Ni mogoče pretvoriti »%s« v nabor znakov »%s«"
 
-#: glib/gconvert.c:942
+#: glib/gconvert.c:934
 msgid "Embedded NUL byte in conversion input"
 msgstr "Vstavljeno je prazno zaporedje bajtov na dovod pretvorbe"
 
-#: glib/gconvert.c:963
+#: glib/gconvert.c:955
 msgid "Embedded NUL byte in conversion output"
 msgstr "Vstavljeno je prazno zaporedje bajtov na odvod pretvorbe"
 
-#: glib/gconvert.c:1648
+#: glib/gconvert.c:1640
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr "Naslov URI »%s« pri uporabi »datotečne« sheme ni absoluten"
 
-#: glib/gconvert.c:1658
+#: glib/gconvert.c:1650
 #, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "V naslovu URI krajevne datoteke »%s« ni mogoče uporabiti '#'"
 
-#: glib/gconvert.c:1675
+#: glib/gconvert.c:1667
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr "Naslov URI »%s« je neveljaven"
 
-#: glib/gconvert.c:1687
+#: glib/gconvert.c:1679
 #, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "Ime gostitelja naslova URI »%s« ni veljavno"
 
-#: glib/gconvert.c:1703
+#: glib/gconvert.c:1695
 #, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "Naslov URI »%s« vsebuje neveljavne ubežne znake"
 
-#: glib/gconvert.c:1775
+#: glib/gconvert.c:1767
 #, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr "Pot »%s« ni absolutna pot"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: glib/gdatetime.c:214
+#: glib/gdatetime.c:220
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%a, %e. %b %Y %H:%M:%S"
 
 #. Translators: this is the preferred format for expressing the date
-#: glib/gdatetime.c:217
+#: glib/gdatetime.c:223
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%d.%m.%y"
 
 #. Translators: this is the preferred format for expressing the time
-#: glib/gdatetime.c:220
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: glib/gdatetime.c:223
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%I:%M:%S %p"
@@ -4330,62 +4393,62 @@ msgstr "%I:%M:%S %p"
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
 #.
-#: glib/gdatetime.c:262
+#: glib/gdatetime.c:268
 msgctxt "full month name"
 msgid "January"
 msgstr "januar"
 
-#: glib/gdatetime.c:264
+#: glib/gdatetime.c:270
 msgctxt "full month name"
 msgid "February"
 msgstr "februar"
 
-#: glib/gdatetime.c:266
+#: glib/gdatetime.c:272
 msgctxt "full month name"
 msgid "March"
 msgstr "marec"
 
-#: glib/gdatetime.c:268
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "April"
 msgstr "april"
 
-#: glib/gdatetime.c:270
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "May"
 msgstr "maj"
 
-#: glib/gdatetime.c:272
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "June"
 msgstr "junij"
 
-#: glib/gdatetime.c:274
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "July"
 msgstr "julij"
 
-#: glib/gdatetime.c:276
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "August"
 msgstr "avgust"
 
-#: glib/gdatetime.c:278
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "September"
 msgstr "september"
 
-#: glib/gdatetime.c:280
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "October"
 msgstr "oktober"
 
-#: glib/gdatetime.c:282
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "November"
 msgstr "november"
 
-#: glib/gdatetime.c:284
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "December"
 msgstr "december"
@@ -4407,132 +4470,132 @@ msgstr "december"
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
 #.
-#: glib/gdatetime.c:316
+#: glib/gdatetime.c:322
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "jan"
 
-#: glib/gdatetime.c:318
+#: glib/gdatetime.c:324
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "feb"
 
-#: glib/gdatetime.c:320
+#: glib/gdatetime.c:326
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "mar"
 
-#: glib/gdatetime.c:322
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "apr"
 
-#: glib/gdatetime.c:324
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "maj"
 
-#: glib/gdatetime.c:326
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "jun"
 
-#: glib/gdatetime.c:328
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "jul"
 
-#: glib/gdatetime.c:330
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "avg"
 
-#: glib/gdatetime.c:332
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "sep"
 
-#: glib/gdatetime.c:334
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "okt"
 
-#: glib/gdatetime.c:336
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "nov"
 
-#: glib/gdatetime.c:338
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "dec"
 
-#: glib/gdatetime.c:353
+#: glib/gdatetime.c:359
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "ponedeljek"
 
-#: glib/gdatetime.c:355
+#: glib/gdatetime.c:361
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "torek"
 
-#: glib/gdatetime.c:357
+#: glib/gdatetime.c:363
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "sreda"
 
-#: glib/gdatetime.c:359
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "četrtek"
 
-#: glib/gdatetime.c:361
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "petek"
 
-#: glib/gdatetime.c:363
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "sobota"
 
-#: glib/gdatetime.c:365
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "nedeljo"
 
-#: glib/gdatetime.c:380
+#: glib/gdatetime.c:386
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "pon"
 
-#: glib/gdatetime.c:382
+#: glib/gdatetime.c:388
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "tor"
 
-#: glib/gdatetime.c:384
+#: glib/gdatetime.c:390
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "sre"
 
-#: glib/gdatetime.c:386
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "čet"
 
-#: glib/gdatetime.c:388
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "pet"
 
-#: glib/gdatetime.c:390
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "sob"
 
-#: glib/gdatetime.c:392
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "ned"
@@ -4554,62 +4617,62 @@ msgstr "ned"
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
 #.
-#: glib/gdatetime.c:456
+#: glib/gdatetime.c:462
 msgctxt "full month name with day"
 msgid "January"
 msgstr "januar"
 
-#: glib/gdatetime.c:458
+#: glib/gdatetime.c:464
 msgctxt "full month name with day"
 msgid "February"
 msgstr "februar"
 
-#: glib/gdatetime.c:460
+#: glib/gdatetime.c:466
 msgctxt "full month name with day"
 msgid "March"
 msgstr "marec"
 
-#: glib/gdatetime.c:462
+#: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "April"
 msgstr "april"
 
-#: glib/gdatetime.c:464
+#: glib/gdatetime.c:470
 msgctxt "full month name with day"
 msgid "May"
 msgstr "maj"
 
-#: glib/gdatetime.c:466
+#: glib/gdatetime.c:472
 msgctxt "full month name with day"
 msgid "June"
 msgstr "junij"
 
-#: glib/gdatetime.c:468
+#: glib/gdatetime.c:474
 msgctxt "full month name with day"
 msgid "July"
 msgstr "julij"
 
-#: glib/gdatetime.c:470
+#: glib/gdatetime.c:476
 msgctxt "full month name with day"
 msgid "August"
 msgstr "avgust"
 
-#: glib/gdatetime.c:472
+#: glib/gdatetime.c:478
 msgctxt "full month name with day"
 msgid "September"
 msgstr "september"
 
-#: glib/gdatetime.c:474
+#: glib/gdatetime.c:480
 msgctxt "full month name with day"
 msgid "October"
 msgstr "oktober"
 
-#: glib/gdatetime.c:476
+#: glib/gdatetime.c:482
 msgctxt "full month name with day"
 msgid "November"
 msgstr "november"
 
-#: glib/gdatetime.c:478
+#: glib/gdatetime.c:484
 msgctxt "full month name with day"
 msgid "December"
 msgstr "december"
@@ -4631,74 +4694,74 @@ msgstr "december"
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
 #.
-#: glib/gdatetime.c:543
+#: glib/gdatetime.c:549
 msgctxt "abbreviated month name with day"
 msgid "Jan"
 msgstr "jan"
 
-#: glib/gdatetime.c:545
+#: glib/gdatetime.c:551
 msgctxt "abbreviated month name with day"
 msgid "Feb"
 msgstr "feb"
 
-#: glib/gdatetime.c:547
+#: glib/gdatetime.c:553
 msgctxt "abbreviated month name with day"
 msgid "Mar"
 msgstr "mar"
 
-#: glib/gdatetime.c:549
+#: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Apr"
 msgstr "apr"
 
-#: glib/gdatetime.c:551
+#: glib/gdatetime.c:557
 msgctxt "abbreviated month name with day"
 msgid "May"
 msgstr "maj"
 
-#: glib/gdatetime.c:553
+#: glib/gdatetime.c:559
 msgctxt "abbreviated month name with day"
 msgid "Jun"
 msgstr "jun"
 
-#: glib/gdatetime.c:555
+#: glib/gdatetime.c:561
 msgctxt "abbreviated month name with day"
 msgid "Jul"
 msgstr "jul"
 
-#: glib/gdatetime.c:557
+#: glib/gdatetime.c:563
 msgctxt "abbreviated month name with day"
 msgid "Aug"
 msgstr "avg"
 
-#: glib/gdatetime.c:559
+#: glib/gdatetime.c:565
 msgctxt "abbreviated month name with day"
 msgid "Sep"
 msgstr "sep"
 
-#: glib/gdatetime.c:561
+#: glib/gdatetime.c:567
 msgctxt "abbreviated month name with day"
 msgid "Oct"
 msgstr "okt"
 
-#: glib/gdatetime.c:563
+#: glib/gdatetime.c:569
 msgctxt "abbreviated month name with day"
 msgid "Nov"
 msgstr "nov"
 
-#: glib/gdatetime.c:565
+#: glib/gdatetime.c:571
 msgctxt "abbreviated month name with day"
 msgid "Dec"
 msgstr "dec"
 
 #. Translators: 'before midday' indicator
-#: glib/gdatetime.c:582
+#: glib/gdatetime.c:588
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "dop"
 
 #. Translators: 'after midday' indicator
-#: glib/gdatetime.c:585
+#: glib/gdatetime.c:591
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "pop"
@@ -4708,7 +4771,7 @@ msgstr "pop"
 msgid "Error opening directory “%s”: %s"
 msgstr "Napaka med odpiranjem imenika »%s«: %s"
 
-#: glib/gfileutils.c:716 glib/gfileutils.c:808
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
@@ -4717,100 +4780,100 @@ msgstr[1] "Ni mogoče dodeliti %lu bajta za branje datoteke »%s«"
 msgstr[2] "Ni mogoče dodeliti %lu bajtov za branje datoteke »%s«"
 msgstr[3] "Ni mogoče dodeliti %lu bajtov za branje datoteke »%s«"
 
-#: glib/gfileutils.c:733
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Napaka med branjem datoteke »%s«: %s"
 
-#: glib/gfileutils.c:769
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "Datoteka »%s« je prevelika."
 
-#: glib/gfileutils.c:833
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Branje datoteke »%s« je spodletelo: %s"
 
-#: glib/gfileutils.c:881 glib/gfileutils.c:953
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Odpiranje datoteke »%s« je spodletelo: %s"
 
-#: glib/gfileutils.c:893
+#: glib/gfileutils.c:910
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr ""
 "Pridobivanje atributov datoteke »%s« je spodletelo: ukaz fstat() ni uspešno "
 "izveden: %s"
 
-#: glib/gfileutils.c:923
+#: glib/gfileutils.c:940
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Ni mogoče odpreti datoteke »%s«: ukaz fdopen() ni uspešno izveden: %s"
 
-#: glib/gfileutils.c:1022
+#: glib/gfileutils.c:1039
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr ""
 "Ni mogoče preimenovati datoteke »%s« v »%s«: ukaz g_rename() ni uspešno "
 "izveden: %s"
 
-#: glib/gfileutils.c:1057 glib/gfileutils.c:1575
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Ni mogoče ustvariti datoteke »%s«: %s"
 
-#: glib/gfileutils.c:1084
+#: glib/gfileutils.c:1101
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Ni mogoče zapisati datoteke »%s«: ukaz write() je spodletel: %s"
 
-#: glib/gfileutils.c:1127
+#: glib/gfileutils.c:1144
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Ni mogoče zapisati datoteke »%s«: ukaz fsync() ni uspešno izveden: %s"
 
-#: glib/gfileutils.c:1262
+#: glib/gfileutils.c:1279
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
 "Obstoječe datoteke »%s« ni mogoče odstraniti: ukaz g_unlink() ni uspešno "
 "izveden: %s"
 
-#: glib/gfileutils.c:1541
+#: glib/gfileutils.c:1558
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Predloga »%s« je neveljavna, saj ne sme vsebovati »%s«"
 
-#: glib/gfileutils.c:1554
+#: glib/gfileutils.c:1571
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Predloga »%s« ne vsebuje XXXXXX"
 
-#: glib/gfileutils.c:2116
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Branje simbolne povezave »%s« je spodletelo: %s"
 
-#: glib/giochannel.c:1389
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Ni mogoče odpreti pretvornika iz »%s« v »%s«: %s"
 
-#: glib/giochannel.c:1734
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Ni mogoče prebrati g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1781 glib/giochannel.c:2039 glib/giochannel.c:2126
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "Preostanek nepretvorjenih podatkov v bralnem medpomnilniku"
 
-#: glib/giochannel.c:1862 glib/giochannel.c:1939
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "Kanal je prekinjen v delnem znaku"
 
-#: glib/giochannel.c:1925
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Ni mogoče prebrati v g_io_channel_read_to_end"
 
@@ -4850,8 +4913,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Datoteka ključa vsebuje nepodprto kodiranje »%s«"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Datoteka s ključem ni del skupine »%s«"
@@ -4890,31 +4953,31 @@ msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "Ključ »%s« v skupini »%s« ima vrednost »%s«, pričakovana pa je vrednost %s."
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Datoteka s ključem vsebuje ubežni znak na koncu vrstice"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Datoteka ključa vsebuje neveljavno ubežno zaporedje »%s«"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Vrednosti »%s« ni mogoče obravnavati kot število."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Celoštevilska vrednost »%s« je izven obsega"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Vrednosti »%s« ni mogoče obravnavati kot število s plavajočo vejico."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Vrednosti »%s« ni mogoče obravnavati kot logično Boolovo vrednost."
@@ -5005,11 +5068,11 @@ msgstr ""
 "Predmet ni zaključen s podpičjem; najverjetneje je uporabljen znak » & « "
 "brez povezave s predmetom – znak » & « mora biti zapisan kot »&amp;«."
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokument se mora začeti z predmetom (na primer <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5018,7 +5081,7 @@ msgstr ""
 "»%s« ni veljaven znak, ki lahko sledi znaku » < «;. Morda se ne začne z "
 "imenom predmeta."
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5027,7 +5090,12 @@ msgstr ""
 "Nenavaden znak »%s«; pričakovan znak je » > «, da zaključi oznako predmeta "
 "»%s«"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Določenih je preveč atributov za predmet »%s«"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5035,7 +5103,7 @@ msgstr ""
 "Nenavaden znak »%s«; za imenom atributa »%s« (predmeta »%s«) je pričakovan "
 "znak » = «."
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5046,7 +5114,7 @@ msgstr ""
 "predmeta »%s« ali pogojno atribut. Morda je uporabljen neveljaven znak v "
 "imenu atributa."
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5055,7 +5123,7 @@ msgstr ""
 "Nenavaden znak »%s«; za enačajem je pričakovan narekovaj, znotraj katerega "
 "je podana vrednost atributa »%s« predmeta »%s«."
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5064,7 +5132,7 @@ msgstr ""
 "»%s« ni veljaven znak za znakoma » </ «; imena predmeta ni mogoče začeti z "
 "»%s«"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5073,25 +5141,25 @@ msgstr ""
 "Znak »%s« ni veljaven, kadar sledi zaprtju imena predmeta »%s«; dovoljen "
 "znak je » > «."
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Predmet »%s« je zaprt, trenutno ni odprtega drugega predmeta"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Predmet »%s« je zaprt, še vedno pa je odprt predmet »%s«"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokument je prazen ali pa vsebuje le presledne znake"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Dokument je nepričakovano zaključen takoj za odprtjem oznake z » < «"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5100,7 +5168,7 @@ msgstr ""
 "Dokument je nepričakovano zaključen s še odprtimi predmeti – »%s« je zadnji "
 "odprt predmet"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5109,19 +5177,19 @@ msgstr ""
 "Dokument nepričakovano zaključen, pričakovan je zaključni zaklepaj oznake <"
 "%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokument nepričakovano zaključen sredi imena predmeta"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokument nepričakovano zaključen sredi imena atributa"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokument nepričakovano zaključen sredi oznake za odprtje predmeta."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5129,81 +5197,81 @@ msgstr ""
 "Dokument nepričakovano zaključen za enačajem, ki sledil imenu atributa; ni "
 "določena vrednosti atributa"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokument nepričakovano zaključen sredi vrednosti atributa"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Dokument je nepričakovano zaključen sredi oznake zaprtja predmeta »%s«"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Dokument je nepričakovano zaključen sredi oznake zaprtja predmeta za neodprt "
 "predmet"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Dokument nepričakovano zaključen sredi opombe ali ukaza"
 
-#: glib/goption.c:861
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[MOŽNOST ...]"
 
-#: glib/goption.c:977
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Možnosti pomoči:"
 
-#: glib/goption.c:978
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Pokaži možnosti pomoči"
 
-#: glib/goption.c:984
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Pokaži vse možnosti pomoči"
 
-#: glib/goption.c:1047
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Možnosti programa:"
 
-#: glib/goption.c:1049
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Možnosti:"
 
-#: glib/goption.c:1113 glib/goption.c:1183
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Ni mogoče razčleniti celoštevilske vrednosti »%s« za %s"
 
-#: glib/goption.c:1123 glib/goption.c:1191
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Celoštevilska vrednost »%s« za %s je izven obsega"
 
-#: glib/goption.c:1148
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Ni mogoče razčleniti dvojne vrednosti »%s« za %s"
 
-#: glib/goption.c:1156
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "Dvojna vrednost »%s« za %s je izven obsega"
 
-#: glib/goption.c:1448 glib/goption.c:1527
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Napaka med razčlenjevanjem %s"
 
-#: glib/goption.c:1558 glib/goption.c:1671
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Manjka argument za %s"
 
-#: glib/goption.c:2132
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Neznana možnost %s"
@@ -5306,7 +5374,7 @@ msgstr "neprepoznan znak za (? ali (?-"
 
 #: glib/gregex.c:363
 msgid "POSIX named classes are supported only within a class"
-msgstr "razredi POSIX so podprti le znotraj razreda"
+msgstr "Imenski razredi POSIX so podprti le znotraj razreda"
 
 #: glib/gregex.c:366
 msgid "missing terminating )"
@@ -5369,7 +5437,7 @@ msgstr "neznano ime razreda POSIX"
 
 #: glib/gregex.c:415
 msgid "POSIX collating elements are not supported"
-msgstr "zbirni predmeti POSIX niso podprti"
+msgstr "Zbirni predmeti POSIX niso podprti"
 
 #: glib/gregex.c:418
 msgid "character value in \\x{...} sequence is too large"
@@ -5469,7 +5537,7 @@ msgstr "manjkajoče ime podrejenega vzorca po (?&"
 
 #: glib/gregex.c:495
 msgid "digit expected after (?+"
-msgstr "pričakovana števka po "
+msgstr "pričakovana števka po (?+"
 
 #: glib/gregex.c:498
 msgid "] is an invalid data character in JavaScript compatibility mode"
@@ -5603,79 +5671,77 @@ msgstr "Besedilo je bilo prazno (ali pa vsebuje le presledne znake)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Ni mogoče prebrati podatkov podrejenega procesa (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Nepričakovana napaka branja podatkov v opravilu select() podrejenega "
-"opravila (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Nepričakovana napaka branja podatkov podrejenega opravila (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Nepričakovana napaka v waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Podrejeni proces se je zaključil s kodo %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Podrejeni proces je uničen s signalom %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Podrejeni proces se je ustavil s signalom %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Podrejeni proces se je zaključil nenaravno"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Ni mogoče prebrati iz cevi podrejenega procesa (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Ni mogoče ustvariti podrejenega opravila »%s« (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Ni mogoča razvejitev (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Ni mogoče spremeniti v mapo »%s« (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Ni mogoče izvesti podrejenega opravila »%s« (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Ni mogoče preusmeriti vhoda ali izhoda podrejenega procesa (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Ni mogoče razvejiti podrejenega procesa (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Neznana napaka med izvajanjem podrejenega opravila »%s«"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Ni mogoče prebrati dovolj podatkov iz cevi podrejenega procesa (%s)"
@@ -5727,211 +5793,187 @@ msgstr ""
 "Nepričakovana napaka v g_io_channel_win32_poll() med branjem podatkov "
 "procesa podrejenega predmeta"
 
-#: glib/gstrfuncs.c:3286 glib/gstrfuncs.c:3388
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Prazen niz ni številska vrednost"
 
-#: glib/gstrfuncs.c:3310
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "»%s« ni podpisano število"
 
-#: glib/gstrfuncs.c:3320 glib/gstrfuncs.c:3424
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Število »%s« je izven območja [%s, %s]"
 
-#: glib/gstrfuncs.c:3414
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "»%s« ni nepodpisano število"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Ni mogoče dodeliti pomnilnika"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Znak izven območja za UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Neveljavno zaporedje na vhodu pretvorbe"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Znak izven območja za UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2339
+#: glib/gutils.c:2756
 #, c-format
-#| msgid "%.1f kB"
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2341
+#: glib/gutils.c:2758
 #, c-format
-#| msgid "%.1f MB"
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2343
+#: glib/gutils.c:2760
 #, c-format
-#| msgid "%.1f GB"
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2345
+#: glib/gutils.c:2762
 #, c-format
-#| msgid "%.1f TB"
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2347
+#: glib/gutils.c:2764
 #, c-format
-#| msgid "%.1f PB"
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2349
+#: glib/gutils.c:2766
 #, c-format
-#| msgid "%.1f EB"
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2353
+#: glib/gutils.c:2770
 #, c-format
-#| msgid "%.1f KiB"
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2355
+#: glib/gutils.c:2772
 #, c-format
-#| msgid "%.1f MiB"
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2357
+#: glib/gutils.c:2774
 #, c-format
-#| msgid "%.1f GiB"
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2359
+#: glib/gutils.c:2776
 #, c-format
-#| msgid "%.1f TiB"
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2361
+#: glib/gutils.c:2778
 #, c-format
-#| msgid "%.1f PiB"
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2363
+#: glib/gutils.c:2780
 #, c-format
-#| msgid "%.1f EiB"
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2367
+#: glib/gutils.c:2784
 #, c-format
-#| msgid "%.1f kb"
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2369
+#: glib/gutils.c:2786
 #, c-format
-#| msgid "%.1f Mb"
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2371
+#: glib/gutils.c:2788
 #, c-format
-#| msgid "%.1f Gb"
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2373
+#: glib/gutils.c:2790
 #, c-format
-#| msgid "%.1f Tb"
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2375
+#: glib/gutils.c:2792
 #, c-format
-#| msgid "%.1f Pb"
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2377
+#: glib/gutils.c:2794
 #, c-format
-#| msgid "%.1f Eb"
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2381
+#: glib/gutils.c:2798
 #, c-format
-#| msgid "%.1f Kib"
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2383
+#: glib/gutils.c:2800
 #, c-format
-#| msgid "%.1f Mib"
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2385
+#: glib/gutils.c:2802
 #, c-format
-#| msgid "%.1f Gib"
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2387
+#: glib/gutils.c:2804
 #, c-format
-#| msgid "%.1f Tib"
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2389
+#: glib/gutils.c:2806
 #, c-format
-#| msgid "%.1f Pib"
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2391
+#: glib/gutils.c:2808
 #, c-format
-#| msgid "%.1f Eib"
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2425 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -5940,7 +5982,7 @@ msgstr[1] "%u bajt"
 msgstr[2] "%u bajta"
 msgstr[3] "%u bajti"
 
-#: glib/gutils.c:2429
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5950,7 +5992,7 @@ msgstr[2] "%u bita"
 msgstr[3] "%u biti"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2496
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5960,7 +6002,7 @@ msgstr[2] "%s bajta"
 msgstr[3] "%s bajti"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2501
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5974,36 +6016,54 @@ msgstr[3] "%s biti"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Napaka v naslovu »%s« – atribut družine je nepravilno oblikovan"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "Priklopljen %s na %s\n"
+
+#~ msgid "; ignoring override for this key.\n"
+#~ msgstr "; prepis za ta ključ je prezrt.\n"
+
+#~ msgid " and --strict was specified; exiting.\n"
+#~ msgstr " in --strict sta določena, končanje.\n"
+
+#~ msgid "Ignoring override for this key.\n"
+#~ msgstr "Prepis za ta ključ je prezrt.\n"
+
+#~ msgid "doing nothing.\n"
+#~ msgstr "je brez dela.\n"
+
 #~ msgid "No such interface '%s'"
 #~ msgstr "Vmesnik »%s«ne obstaja"
 
index abc24d7..1c46347 100644 (file)
--- a/po/sr.po
+++ b/po/sr.po
@@ -12,8 +12,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 2.8\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-09-07 11:26+0000\n"
-"PO-Revision-Date: 2019-09-15 11:01+0200\n"
+"POT-Creation-Date: 2020-03-06 13:00+0000\n"
+"PO-Revision-Date: 2020-03-08 21:48+0100\n"
 "Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
 "Language-Team: српски <gnome-sr@googlegroups.org>\n"
 "Language: sr\n"
@@ -23,7 +23,7 @@ msgstr ""
 "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
 "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "X-Project-Style: gnome\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 2.3\n"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -287,7 +287,7 @@ msgstr "Ток је већ затворен"
 msgid "Truncate not supported on base stream"
 msgstr "Није подржано сасецање основног тока"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -307,22 +307,22 @@ msgstr "Нема довољно места у одредишту"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Неисправан низ бајтова у улазу који претварам"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Грешка приликом претварања: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Није подржано покретање уз могућност отказивања"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Претварање из скупа знакова „%s“ у „%s“ није подржано"
@@ -346,19 +346,23 @@ msgstr "Непозната врста"
 msgid "%s filetype"
 msgstr "%s врста датотеке"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "Г-акредитиви садрже неисправне податке"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "Гуверења нису подржана на оперативном систему"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Немате подршку за Гуверења на овој платформи"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "Гуверења не садрже ИБ процеса на овом оперативном систему"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Заваравање уверења није могуће на овом оперативном систему"
 
@@ -366,7 +370,7 @@ msgstr "Заваравање уверења није могуће на овом
 msgid "Unexpected early end-of-stream"
 msgstr "Неочекиван, преран крај тока"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Кључ „%s“ није подржан унутар адресе „%s“"
@@ -385,32 +389,28 @@ msgstr ""
 "Адреса „%s“ је неисправна (потребна само једна путања, директоријум, "
 "привремени директоријум или апстрактни кључ)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Грешка унутар адресе „%s“ — порт није исправно уписан"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Ð\93Ñ\80еÑ\88ка Ñ\83нÑ\83Ñ\82аÑ\80 Ð°Ð´Ñ\80еÑ\81е â\80\9e%sâ\80\9c â\80\94 Ð°Ñ\82Ñ\80ибÑ\83Ñ\82 Ñ\84амилиÑ\98е Ñ\98е Ð½ÐµÐ¸Ñ\81пÑ\80авно Ñ\83пиÑ\81ан"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Ð\93Ñ\80еÑ\88ка Ñ\83нÑ\83Ñ\82аÑ\80 Ð°Ð´Ñ\80еÑ\81е â\80\9e%sâ\80\9c â\80\94 Ð¾Ñ\81обина â\80\9e%sâ\80\9c Ð½Ð¸Ñ\98е Ð¸Ñ\81пÑ\80авна"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Непознати или неподржани пренос „%s“ за адресе „%s“"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Елемент адресе „%s“ не садржи две тачке (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Назив транспорта у елементу адресе „%s“ не сме бити празан"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -418,7 +418,7 @@ msgid ""
 msgstr ""
 "Пар кључ/вредност %d, „%s“, у елементу адресе „%s“ не садржи знак једнакости"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -426,7 +426,7 @@ msgstr ""
 "Пар кључ/вредност %d, „%s“, у елементу адресе „%s“ не сме задржати празан "
 "кључ"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -435,7 +435,7 @@ msgstr ""
 "Грешка при неизбегавању кључа или вредности у пару Кључ/Вредности %d, „%s“, "
 "у елементу адресе „%s“"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -444,84 +444,84 @@ msgstr ""
 "Грешка у адреси „%s“ — Јуниксов пренос захтева постављање кључа "
 "„path“ (путања) или „abstract“ (резиме)"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Грешка унутар адресе „%s“ — атрибут домаћина недостаје или је неисправан"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Грешка унутар адресе „%s“ — порт недостаје или је неисправан"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Грешка унутар адресе „%s“ — атрибут датотеке једнократних случајних бројева "
 "недостаје или је неисправан"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Грешка у самопокретању: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr ""
 "Грешка приликом отварања датотеке једнократних случајних бројева „%s“: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Грешка при читању датотеке једнократних случајних бројева „%s“: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Грешка при читању датотеке једнократних случајних бројева „%s“, очекивано 16 "
 "бајтова, а добијено %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Грешка приликом уписа садржаја датотеке једнократних случајних бројева „%s“ "
 "у ток:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Дата адреса је празна"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Не могу да покренем магистралу порука када подешавам јиб"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Не могу да покренем магистралу порука без идентификације машине: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Не могу да самопокренем Д-сабирницу без „X11 $DISPLAY“"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Грешка при покретању наредбе „%s“: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Не могу да одредим адресу магистрале сесије (није направљено за овај "
 "оперативни систем)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -530,7 +530,7 @@ msgstr ""
 "Не могу да одредим адресу магистрале сесије из променљиве окружења "
 "DBUS_STARTER_BUS_TYPE — непозната вредност „%s“"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -538,20 +538,20 @@ msgstr ""
 "Не могу да одредим адресу магистрале сесије јер није постављена променљива "
 "окружења DBUS_STARTER_BUS_TYPE"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Непознат тип магистрале %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Неочекивани недостатак садржаја при читању линије"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Неочекивани недостатак садржаја при (сигурном) читању линије"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -559,16 +559,16 @@ msgstr ""
 "Истрошени су сви доступни механизми пријављивања (покушано: %s) (доступно: "
 "%s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Поништено преко GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Грешка приликом добављања података за директоријум „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -576,29 +576,29 @@ msgstr ""
 "Овлашћења фасцикле „%s“ су неисправна. Очекивана вредност је била 0700, а "
 "добијено је 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Грешка стварања директоријума „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Грешка приликом отварања привеска кључева „%s“ за читање: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Линија %d привеска кључева на „%s“ са садржајем „%s“ није исправна"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Први токен линије %d привеска кључева на „%s“ са садржајем „%s“ није исправан"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -606,156 +606,156 @@ msgstr ""
 "Други токен линије %d привеска кључева на „%s“ са садржајем „%s“ није "
 "исправан"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Нисам нашао колачић са идентификацијом %d у привеску кључева на „%s“"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Грешка при брисању заостале датотеке закључавања „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Грешка при прављењу датотеке закључавања „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Грешка приликом затварања (неповезане) датотеке закључавања „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Грешка приликом одвезивању датотеке закључавања „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Грешка приликом отварања привеска кључева „%s“ за писање: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Додатно, отпуштање кључа са „%s“ такође није успело: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2400
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "Веза је затворена"
 
-#: gio/gdbusconnection.c:1901
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "Време је истекло"
 
-#: gio/gdbusconnection.c:2522
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "Наишао сам на неподржане ознаке при изградњи клијентског дела везе"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Нема интерфејса „org.freedesktop.DBus.Properties“ у објекту на путањи %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4303
 #, c-format
 msgid "No such property “%s”"
 msgstr "Нема особине „%s“"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4315
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Особина „%s“ није читљива"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4326
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Није могуће писање особине „%s“"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4346
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Грешка при постављању особине „%s“: Очекивани тип је био „%s“, а добијен је "
 "„%s“"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Нема таквог интерфејса „%s“"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Нема таквог интерфејса „%s“ у објекту на путањи %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4975
 #, c-format
 msgid "No such method “%s”"
 msgstr "Нема таквог метода „%s“"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5006
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Тип поруке, „%s“, не одговара очекиваном типу „%s“"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Објекат је већ извезен за интерфејс %s на %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5430
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Не могу да добијем особину %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5486
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Не могу да поставим особину %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5664
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Метод „%s“ је вратио тип „%s“, али је био очекиван „%s“"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6741
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Метод „%s“ на интерфејсу „%s“ са потписом „%s“ не постоји"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Поддрво је већ извезено за %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "врста је НЕИСПРАВНА"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Порука ПОЗИВА_МЕТОДА: недостају поља заглавља ПУТАЊА или ЧЛАН"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Порука РЕЗУЛТАТ_МЕТОДА: недостаје поље заглавља ОДГОВОРИ_СЕРИЈСКИ"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Порука ГРЕШКЕ: недостају поља заглавља ОДГОВОРИ_СЕРИЈСКИ или НАЗИВ_ГРЕШКЕ"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Порука СИГНАЛА: недостају поља заглавља ПУТАЊА, СУЧЕЉЕ или ЧЛАН"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -763,7 +763,7 @@ msgstr ""
 "Порука СИГНАЛА: поље заглавља ПУТАЊА користи резервисану вредност „/org/"
 "freedesktop/DBus/Local“"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -771,7 +771,7 @@ msgstr ""
 "Порука СИГНАЛА: поље заглавља СУЧЕЉЕ користи резервисану вредност „org."
 "freedesktop.DBus.Local“"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -780,12 +780,12 @@ msgstr[1] "Покушах да читам %lu бајта, али добих са
 msgstr[2] "Покушах да читам %lu бајтова, али добих само %lu"
 msgstr[3] "Покушах да читам један бајт, али добих само %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Очекивао сам NUL бајт после ниске „%s“, али сам нашао бајт %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -794,17 +794,21 @@ msgstr ""
 "Очекивах исправну УТФ-8 ниску, али нађох неисправне бајтове на бајт померају "
 "%d (дужина ниске је %d). Исправна ниска до тог дела је била „%s“"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Вредност је угнеждена предубоко"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Рашчлањена вредност „%s“ није исправна путања објекта Д-магистрале"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Рашчлањена вредност „%s“ није исправан потпис Д-магистрале"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -821,7 +825,7 @@ msgstr[3] ""
 "Наишао сам на низ дужине једног бајта. Највећа дужина је 2<<26 бајтова (64 "
 "MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -830,13 +834,13 @@ msgstr ""
 "Наиђох на низ врсте „a%c“, очекивах да је дужина умножак од %u бајта, али "
 "нађох да је дуг %u бајта"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "Рашчлањена вредност „%s“ за варијанту није исправан потпис Д-магистрале"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -844,7 +848,7 @@ msgstr ""
 "Грешка при десеријализацији Гваријанта са ниском врсте „%s“ из жичаног "
 "формата Д-магистрале"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -853,27 +857,27 @@ msgstr ""
 "Неисправна вредност за крајњост. Очекивао сам 0x6c („l“) или 0x42 („Bд) али "
 "сам нашао вредност 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Неисправна главно издање протокола. Очекивано 1, али нађено %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Потпис заглавља је пронађен али он није врсте потпис"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Потпис заглавља са потписом „%s“ је нађен, али је тело поруке празно"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "Рашчлањена вредност „%s“ није исправан потпис Д-магистрале (за тело поруке)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -882,11 +886,11 @@ msgstr[1] "Нема заглавља потписа у поруци, али те
 msgstr[2] "Нема заглавља потписа у поруци, али тело поруке има %u бајтова"
 msgstr[3] "Нема заглавља потписа у поруци, али тело поруке има један бајт"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Не могу да десеријализујем поруку: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -894,73 +898,73 @@ msgstr ""
 "Грешка при серијализацији Гваријанта са ниском врсте „%s“ из жичаног формата "
 "Д-магистрале"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Број описника датотеке у поруци (%d) се разликује од заглавља поља (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Не могу да серијализујем поруку: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Тело поруке има потпис „%s“, али недостаје заглавље потписа"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr "Тело поруке има тип потписа „%s“, али потпис у пољу заглавља је „%s“"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Тело поруке је празно,,, али је потпис у пољу заглавља „(%s)“"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Добијена је грешка са телом поруке типа „%s“"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Добијена је грешка са празним телом поруке"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Упишите било који знак да затворите овај прозор)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Д-магистрала сесије није покренута, самопокретање није успело"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Не могу да добавим профил физичких делова: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Не могу да учитам „/var/lib/dbus/machine-id“ или „/etc/machine-id“: "
 
-#: gio/gdbusproxy.c:1625
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Грешка при позиву покрени услугу према називу за %s: "
 
-#: gio/gdbusproxy.c:1648
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Неочекиван одговор %d од StartServiceByName(„%s“) метода"
 
-#: gio/gdbusproxy.c:2748 gio/gdbusproxy.c:2883
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -969,28 +973,28 @@ msgstr ""
 "Не могу да позовем метод; посредник је за добро знани назив „%s“ без "
 "власника, а направљен је без G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START заставице"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Апстрактни именски простор није подржан"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 "Не могу да наведем датотеку једнократних случајних бројева при повезивању са "
 "сервером"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr ""
 "Грешка приликом уписа датотеке једнократних случајних бројева на „%s“: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Ниска „%s“ није исправни ГЈИБ Д-сабирнице"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Не могу да слушам на неподржаном преносном механизму „%s“"
@@ -1019,13 +1023,13 @@ msgstr ""
 "Користите „%s НАРЕДБА --help“ да добијете помоћ за појединачне наредбе.\n"
 
 #: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
-#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:846 gio/gdbus-tool.c:1183
-#: gio/gdbus-tool.c:1668
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Грешка: %s\n"
 
-#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1684
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Грешка при рашчлањивању XML-а добијеног испитивањем: %s\n"
@@ -1055,24 +1059,24 @@ msgstr "Опције крајње тачке везе:"
 msgid "Options specifying the connection endpoint"
 msgstr "Опције које одређују крајњу тачку везе"
 
-#: gio/gdbus-tool.c:429
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Није наведена крајња тачка везе"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Наведено више крајњих тачака везе"
 
-#: gio/gdbus-tool.c:509
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Упозорење: Према подацима добијеним испитивањем, интерфејс „%s“ не постоји\n"
 
-#: gio/gdbus-tool.c:518
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1081,161 +1085,161 @@ msgstr ""
 "Упозорење: Према подацима добијеним испитивањем, метод „%s“ не постоји на "
 "интерфејсу „%s“\n"
 
-#: gio/gdbus-tool.c:580
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
 msgstr "Опционална дестинација сигнала (јединствено име)"
 
-#: gio/gdbus-tool.c:581
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
 msgstr "Путања објекта за емитовање сигнала"
 
-#: gio/gdbus-tool.c:582
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr "Назив сигнала и сучеља"
 
-#: gio/gdbus-tool.c:615
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "Емитује сигнал."
 
-#: gio/gdbus-tool.c:670 gio/gdbus-tool.c:977 gio/gdbus-tool.c:1771
-#: gio/gdbus-tool.c:2003 gio/gdbus-tool.c:2223
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Грешка у повезивању: %s\n"
 
-#: gio/gdbus-tool.c:690
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Грешка: „%s“ није исправан назив јединствене магистрале.\n"
 
-#: gio/gdbus-tool.c:709 gio/gdbus-tool.c:1020 gio/gdbus-tool.c:1814
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
 msgstr "Грешка: Није изабрана путања до објекта\n"
 
-#: gio/gdbus-tool.c:732 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1834
-#: gio/gdbus-tool.c:2074
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Грешка: %s није исправна путања до објеката\n"
 
-#: gio/gdbus-tool.c:752
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
 msgstr "Грешка: Име сигнала није одређено\n"
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:770
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Грешка: Име сигнала „%s“ није одређено\n"
 
-#: gio/gdbus-tool.c:778
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Грешка: „%s“ није исправан назив сучеља\n"
 
-#: gio/gdbus-tool.c:784
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Грешка: „%s“ није исправан назив члана\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:821 gio/gdbus-tool.c:1152
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Грешка при обради параметра %d: %s\n"
 
-#: gio/gdbus-tool.c:853
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Грешка испирања везе: %s\n"
 
-#: gio/gdbus-tool.c:880
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
 msgstr "Назив одредишта на коме треба позвати метод"
 
-#: gio/gdbus-tool.c:881
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
 msgstr "Путања објекта на коме треба позвати метод"
 
-#: gio/gdbus-tool.c:882
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "Име метода и интерфејса"
 
-#: gio/gdbus-tool.c:883
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "Време истека у секундама"
 
-#: gio/gdbus-tool.c:922
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr "Позивање метода на удаљеном објекту."
 
-#: gio/gdbus-tool.c:994 gio/gdbus-tool.c:1788 gio/gdbus-tool.c:2028
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr "Грешка: Није изабрано одредиште\n"
 
-#: gio/gdbus-tool.c:1005 gio/gdbus-tool.c:1805 gio/gdbus-tool.c:2039
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Грешка: „%s“ није исправан назив магистрале\n"
 
-#: gio/gdbus-tool.c:1055
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr "Грешка: Име начина није одређено\n"
 
-#: gio/gdbus-tool.c:1066
+#: gio/gdbus-tool.c:1070
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Грешка: Име начина „%s“ није одређено\n"
 
-#: gio/gdbus-tool.c:1144
+#: gio/gdbus-tool.c:1148
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Грешка при обради параметра %d врсте „%s“: %s\n"
 
-#: gio/gdbus-tool.c:1630
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
 msgstr "Назив одредишта за испитивање"
 
-#: gio/gdbus-tool.c:1631
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
 msgstr "Путања објекта за испитивање"
 
-#: gio/gdbus-tool.c:1632
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "Штампа ИксМЛ"
 
-#: gio/gdbus-tool.c:1633
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr "Преиспитује чланове"
 
-#: gio/gdbus-tool.c:1634
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Само штампа својства"
 
-#: gio/gdbus-tool.c:1723
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr "Испитајте удаљени објекат."
 
-#: gio/gdbus-tool.c:1929
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
 msgstr "Назив одредишта за надгледање"
 
-#: gio/gdbus-tool.c:1930
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr "Путања објекта за надгледање"
 
-#: gio/gdbus-tool.c:1955
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr "Надгледање удаљеног објекта."
 
-#: gio/gdbus-tool.c:2013
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Грешка: не могу да надгледам везу на сабирници која није за поруке\n"
 
-#: gio/gdbus-tool.c:2137
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Услуга за активирање пре чекања на другу (добро знан назив)"
 
-#: gio/gdbus-tool.c:2140
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1243,63 +1247,63 @@ msgstr ""
 "Време за чекање пре изласка са грешком (секунде); 0 — без временског рока "
 "(основно)"
 
-#: gio/gdbus-tool.c:2188
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
 msgstr "[ОПЦИЈА…] НАЗИВ_МАГИСТРАЛЕ"
 
-#: gio/gdbus-tool.c:2189
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
 msgstr "Чека да се појави назив магистрале."
 
-#: gio/gdbus-tool.c:2265
+#: gio/gdbus-tool.c:2269
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Грешка: Услуга за активирање мора бити наведена.\n"
 
-#: gio/gdbus-tool.c:2270
+#: gio/gdbus-tool.c:2274
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Грешка: Услуга за чекање мора бити наведена.\n"
 
-#: gio/gdbus-tool.c:2275
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
 msgstr "Грешка: Превише аргумената.\n"
 
-#: gio/gdbus-tool.c:2283 gio/gdbus-tool.c:2290
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Грешка: „%s“ није исправан назив добро знане магистрале.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Неименовано"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Датотека за радну површ не садржи Exec унос"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "Не могу да нађем терминал ради покретања овог програма"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3413
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Не могу да направим фасциклу за корисникова подешавања %s: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3417
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Не могу да направим фасциклу за корисникова МИМЕ подешавања %s: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
 msgstr "Подацима о програму недостаје идентификатор"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3915
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Не могу да направим датотеку радне површи %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Произвољне одреднице за %s"
@@ -1360,12 +1364,12 @@ msgstr "Није исправно задат број токена (%d) у ко
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Очекивано је ГЕмблем за иконицу ГЕмблема"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Радња није подржана"
@@ -1374,69 +1378,73 @@ msgstr "Радња није подржана"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Садржано монтирање не постоји"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Не могу да умножим преко директоријума"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Не могу да умножим директоријум преко директоријума"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Циљна датотека већ постоји"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Не могу да умножим директоријум и његов садржај"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Дељење није подржано"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Грешка приликом дељења датотеке: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Није подржано умножавање (reflink/clone) између монтираних уређаја"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Умножавање (reflink/clone) није подржано или је неисправно"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Умножавање (reflink/clone) није подржано или не ради"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Не могу да умножим специјалну датотеку"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Дата је неисправна симболичка веза"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Симболичке везе нису подржане"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Није подржано смеће"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Имена датотека не могу да садрже „%c“"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "није подржано монтирање диска"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Ни један програм не може да отвори ову датотеку"
 
@@ -1481,7 +1489,7 @@ msgstr "Сасецање није дозвољену над улазним то
 msgid "Truncate not supported on stream"
 msgstr "Сасецање није дозвољено над током"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Неисправно име домаћина"
@@ -1684,10 +1692,10 @@ msgid "Error writing to stdout"
 msgstr "Грешка писања на стандардни излаз"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1707,56 +1715,60 @@ msgstr ""
 "места уместо месних датотека: на пример, можете користити нешто\n"
 "као „smb://server/resource/datoteka.txt“ као место."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Није дато место"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Нема циљне датотеке"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Приказује напредак"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Пита пре преписивања"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Очувава све атрибуте"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Прави резерву постојећих одредишних датотека"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Никада не прати симболичке везе"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Користи подразумевана овлашћења за одредиште"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Пренешено је %s од %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "ИЗВОР"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "ОДРЕДИШТЕ"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Умножава једну или више датотека из ИЗВОРА у ОДРЕДИШТЕ."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1766,88 +1778,98 @@ msgstr ""
 "места уместо месних датотека: на пример, можете користити нешто\n"
 "као „smb://server/resource/datoteka.txt“ као место."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Одредиште „%s“ није директоријум"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: да препишем „%s“? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Исписује исписиве атрибуте"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Добавља податаке о систему датотека"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Атрибути за добављање"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "АТРИБУТИ"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Не прати симболичке везе"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "атрибути:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "назив приказа: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "назив уређивања: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "назив: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "врста: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "величина: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "скривено\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "путања: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "локална путања: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "јуникс качење: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Подесиве особине:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Називни простори записиве особине:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Приказује податке о местима."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1862,23 +1884,27 @@ msgstr ""
 "навести њиховим ГИО називом, тј. „standard::icon“, или само\n"
 "називним простором, тј. „unix“, или са „*“, која одговара свим атрибутима"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Приказује скривене датотеке"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Користи дуги запис списка"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Испиши приказна имена"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Штампа пуне путање"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Исписује садржаје места."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2007,12 +2033,12 @@ msgid "Mount as mountable"
 msgstr "Качи као прикачљивом"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Ð\9aаÑ\87и Ð²Ð¾Ð»Ñ\83мен Ñ\81а Ð´Ð°Ñ\82оÑ\82еком Ñ\83Ñ\80еÑ\92аÑ\98а"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Ð\97акаÑ\87и Ð²Ð¾Ð»Ñ\83мен Ñ\81а Ñ\83Ñ\80еÑ\92аÑ\98-даÑ\82оÑ\82еком Ð¸Ð»Ð¸ Ð´Ñ\80Ñ\83гим Ð¸Ð´ÐµÐ½Ñ\82иÑ\84икаÑ\82оÑ\80ом"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "УРÐ\95Ð\82Ð\90Ð\88"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "Ð\98Ð\91"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -2026,6 +2052,10 @@ msgstr "Избаци"
 msgid "Stop drive with device file"
 msgstr "Заустави уређај са уређај-датотеком"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "УРЕЂАЈ"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Откачиње сва качења датом шемом"
@@ -2079,16 +2109,11 @@ msgstr "Анониман приступ је забрањен"
 msgid "No drive for device file"
 msgstr "Нема уређаја за уређај-датотеку"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Монтирах „%s“ на „%s“\n"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Нема волумена за дати ИБ"
 
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Нема волумена за датотеку уређаја"
-
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Качи или откачиње места."
 
@@ -2895,7 +2920,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Не могу да преименујем датотеку, назив датотеке већ постоји"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Неисправан назив датотеке"
 
@@ -2969,129 +2994,125 @@ msgstr "Систем датотека не подржава симболичке
 msgid "Error making symbolic link %s: %s"
 msgstr "Грешка стварања симболичке везе „%s“: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Симболичке везе нису подржане"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Грешка премештања датотеке „%s“: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Не могу да преместим директоријум преко директоријума"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Није успела израда резервне датотеке"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Грешка уклањања циљне датотеке: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Није подржано премештање између монтираних уређаја"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Не могу да одредим искоришћеност диска за „%s“: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Вредност особине мора бити различита од NULL"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Није исправна врста атрибута (очекивана је ниска знакова)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Није исправан назив проширене особине"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Грешка приликом постављања проширене особине „%s“: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (неисправно кодирање)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Грешка приликом добављања података за датотеку „%s“: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Грешка приликом добављања података за описника датотеке: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Није исправна врста особине („uint32“ је очекивано)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Није исправна врста особине („uint64“ је очекивано)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Није исправна врста особине (очекивана је ниска битова)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Не могу да поставим овлашћења за симболичке везе"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Грешка приликом постављања овлашћења: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Грешка приликом постављања власника: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "симболичке везе морају бити различите од NULL"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Грешка приликом постављања симболичке везе: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Грешка при постављању симболичке везе: датотека није симболичка веза"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Грешка при постављању датума измене или приступа: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "СЕЛинукс контекст не сме бити NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Грешка приликом постављања СЕЛинукс контекста: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "СЕЛинукс није укључен на вашем систему"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Није подржано постављање особине %s"
@@ -3114,7 +3135,7 @@ msgstr "Грешка приликом претраге унутар датоте
 msgid "Error closing file: %s"
 msgstr "Грешка приликом затварања датотеке: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Не могу да пронађем подразумевану, локалну врсту монитора датотеке"
 
@@ -3255,11 +3276,11 @@ msgstr "монтирање не подржава усклађено налаже
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Име домаћина „%s“ садржи „[“, али не и „]“"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Мрежа је недостижна"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Домаћин је недостижан"
 
@@ -3300,18 +3321,18 @@ msgstr "Збир вектора достављених у „%s“ је прев
 msgid "Source stream is already closed"
 msgstr "Изворни ток је већ затворен"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Грешка у разрешавању „%s“: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "Ставка „%s“ није израђена"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Неисправан домен"
 
@@ -3685,174 +3706,174 @@ msgstr "Дат је празан назив шеме\n"
 msgid "No such key “%s”\n"
 msgstr "Нема таквог кључа „%s“\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Неисправна утичница, није покренуто"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Неисправна утичница, покретање није успело због: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Утичница је већ затворена"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Истекло време за У/И утичнице"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "правим ГУтичницу из фд-а: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Не могу да направим утичницу: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Задата је непозната породица"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Задат је непознати протокол"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Не могу да користим датаграм радње над недатаграмском утичницом."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Не могу да користим датаграмске радње над утичницом са подешеним истицањем "
 "времена."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "не могу да добијем локалну адресу: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "не могу да добијем удаљену адресу: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "не могу да слушам: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "гÑ\80еÑ\88ка Ð¿Ñ\80и Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ\9aÑ\83 Ð½Ð° Ð°Ð´Ñ\80еÑ\81Ñ\83: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ\9aÑ\83 Ð½Ð° Ð°Ð´Ñ\80еÑ\81Ñ\83 %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Грешка приликом приступања групи вишеструког емитовања: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Грешка приликом напуштања групе вишеструког емитовања: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Нема подршке за посебно вишеструко емитовање извора"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Није подржана породица утичнице"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "посебни извор није ИПв4 адреса"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Назив интерфејса је предугачак"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Интерфејс није нађен: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Нема подршке за посебно вишеструко емитовање ИПв4 извора"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Нема подршке за посебно вишеструко емитовање ИПв6 извора"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "грешка у прихватању везе: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Повезивање је у току"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Не могу да добијем грешку на чекању: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Грешка у примању података: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Грешка у слању података: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Не могу да угасим утичницу: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Грешка у затварању утичнице: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Чекам услов утичнице: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Грешка при слању поруке: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Порука управљања Гутичницом није подржана на Виндоузу"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Грешка при примању поруке: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Не могу да прочитам уверења утичнице: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "г_утичница_добавља_уверења није примењена за овај оперативни систем"
 
@@ -3870,11 +3891,11 @@ msgstr "Не могу да се повежем на „%s“: "
 msgid "Could not connect: "
 msgstr "Не могу да се повежем: "
 
-#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1764
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Непозната грешка везе"
 
-#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1672
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Посредовање преко везе која није ТЦП није подржано."
 
@@ -4118,7 +4139,7 @@ msgstr "Грешка приликом читања из описивача да
 msgid "Error closing file descriptor: %s"
 msgstr "Грешка приликом затварања описника датотеке: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "Корени систем датотека"
 
@@ -4205,74 +4226,74 @@ msgstr "Погрешни аргументи\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Неочекивано својство „%s“ елемента „%s“"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Својство „%s“ елемента „%s“ није пронађено"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Неочекивана ознака „%s“, очекивана је „%s“"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Неочекивана ознака „%s“ унутар „%s“"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Несправно време и датум „%s“ у датотеци обележивача"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 "Не могу да нађем исправну датотеку са обележивачима међу фасциклама са "
 "подацима"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Обележивач за путању „%s“ већ постоји"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Није пронађен обележивач за путању „%s“"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "У обележивачу за путању „%s“ није одређена МИМЕ врста"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "У обележивачу за путању „%s“ није одређена приватна заставица"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "У обележивачу за путању „%s“ нису одређене групе"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Програм „%s“ није регистровао обележивач за „%s“"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Нисам успеода проширим комадну линију „%s“ са путањом „%s“"
@@ -4281,8 +4302,8 @@ msgstr "Нисам успеода проширим комадну линију 
 msgid "Unrepresentable character in conversion input"
 msgstr "Неприказив знак у уносу за претварање"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Непотпун низ знакова на крају улаза"
 
@@ -4837,24 +4858,24 @@ msgstr "Шаблон „%s“ не садржи XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Нисам успео да прочитам симболичку везу „%s“: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Не могу да покренем претварање из „%s“ у „%s“: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Не могу да обавим сирово читање ниске_г_уи_канала_читања_реда"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "Преостали непретворени подаци у баферу за читање"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "Канал се завршава делимичним знаком"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Не могу да читам без обраде у г_уи_каналу_читај_до_краја"
 
@@ -4895,8 +4916,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Датотека са кључевима садржи неподржано кодирање „%s“"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Датотека са кључевима нема групу „%s“"
@@ -4930,31 +4951,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Кључ „%s“ у групи „%s“ има вредност „%s“ где је очекивано %s"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Датотека са кључевима садржи знак истицања на крају реда"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Датотека са кључевима садржи недозвољен низ истицања „%s“"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Вредност „%s“ се не може сматрати бројем."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Целобројна вредност „%s“ је изван опсега"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Вредност „%s“ се не може сматрати реалним бројем једноструке тачности."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Вредност „%s“ се не може сматрати истинитосном."
@@ -5047,11 +5068,11 @@ msgstr ""
 "Ентитет се не завршава тачка-запетом; највероватније сте користили амперсанд "
 "без намере да започнете ентитет — назначите амперсанд са &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Документ мора почети елементом (нпр. <књига>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5060,7 +5081,7 @@ msgstr ""
 "„%s“ не представља исправан знак након знака „<“; назив елемента не може "
 "њиме почети"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5069,14 +5090,19 @@ msgstr ""
 "Чудан знак „%s“, а очекиван је „>“ знак ради окончања ознаке празног "
 "елемента „%s“"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Превише особина у елементу „%s“"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr ""
 "Чудан знак „%s“, очекиван је „=“ после имена атрибута „%s“ елемента „%s“"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5087,7 +5113,7 @@ msgstr ""
 "елемента „%s“, или можда атрибут; можда сте користили неисправан знак у "
 "имену атрибута"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5096,7 +5122,7 @@ msgstr ""
 "Чудан знак „%s“, очекиван је почетни наводник након знака једнакости при "
 "додели вредности атрибута „%s“ елемента „%s“"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5104,7 +5130,7 @@ msgid ""
 msgstr ""
 "„%s“ није исправан знак након низа „</“; „%s“ не може започети назив елемента"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5113,27 +5139,27 @@ msgstr ""
 "„%s“ није исправан знак након имена затвореног елемента „%s“; дозвољени знак "
 "је „>“"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Елемент „%s“ је затворен, нема тренутно отворених елемената"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Елемент „%s“ је затворен, а тренутно отворен елемент је „%s“"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Документ је празан или садржи само белине"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "Документ je завршен неочекивано непосредно након отворене косоугле заграде "
 "„<“"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5142,7 +5168,7 @@ msgstr ""
 "Документ je завршен неочекивано са отвореним елементима — „%s“ је последње "
 "отворен елемент"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5151,19 +5177,19 @@ msgstr ""
 "Документ је завршен неочекивано, а очекивана је затворена косоугла заграда "
 "која затвара ознаку <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Документ je завршен неочекивано усред имена елемента"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Документ je завршен неочекивано усред имена атрибута"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Документ je завршен неочекивано усред почетне ознаке елемента."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5171,22 +5197,22 @@ msgstr ""
 "Документ je завршен неочекивано након знака једнакости после имена атрибута; "
 "вредност атрибута није наведена"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Документ je завршен неочекивано усред вредности атрибута"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Документ je завршен неочекивано усред завршне ознаке елемента „%s“"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Документ je завршен неочекивано унутар завршне ознаке неотвореног елемента"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Документ je завршен неочекивано усред примедбе или упута за обраду"
 
@@ -5244,7 +5270,7 @@ msgstr "Грешка при рашчлањивању могућности %s"
 msgid "Missing argument for %s"
 msgstr "Недостаје аргумент за %s"
 
-#: glib/goption.c:2187
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Непозната опција %s"
@@ -5647,80 +5673,78 @@ msgstr "Садржај празан (или садржи само белине)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Неуспело читање података од потпроцеса (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Неочекивана грешка у функцији „select()“ приликом читања података из "
-"потпроцеса (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Неочекивана грешка приликом читања података из дете процеса (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Неочекивана грешка у функцији „waitpid()“ (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Потпроцес је изашао са шифром %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Потпроцес је убијен сигналом %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Потпроцес је заустављен сигналом %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Потпроцес је неочекивано прекинут"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Нисам успео да читам из спојке порода (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Нисам успео да извршим потпроцес „%s“ (%s)"
 
 # за сада овако, можда гранање, умножавање? виљушкање ;-)
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Нисам успео да исцепим (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Нисам успео да пређем у директоријум „%s“ (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Нисам успео да извршим потпроцес „%s“ (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Нисам успео да преусмерим улаз или излаз потпроцеса (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Нисам успео да исцепим потпроцес (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Непозната грешка при извршавању потпроцеса „%s“"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Није успео да прочита довољно података из цевке ка потпроцесу (%s)"
@@ -5772,187 +5796,187 @@ msgstr ""
 "Неочекивана грешка док су у g_io_channel_win32_poll() читани подаци из "
 "потпроцеса"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Празна ниска није број"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s“ није потписан број"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Број „%s“ је ван граница [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s“ није непотписан број"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Нисам успео да доделим меморију"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Знак ван опсега за УТФ-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Није исправан низ у уносу за претварање"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Знак ван опсега за УТФ-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2326
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2328
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2330
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2332
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2334
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2336
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2340
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2342
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2344
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2346
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2360
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2374
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2412 glib/gutils.c:2529
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -5961,7 +5985,7 @@ msgstr[1] "%u бајта"
 msgstr[2] "%u бајта"
 msgstr[3] "Један бајт"
 
-#: glib/gutils.c:2416
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5971,7 +5995,7 @@ msgstr[2] "%u битова"
 msgstr[3] "Један бит"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2483
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5981,7 +6005,7 @@ msgstr[2] "%s бајтова"
 msgstr[3] "Један бајт"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2488
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5995,36 +6019,42 @@ msgstr[3] "Један бит"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2542
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2547
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2552
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2557
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2562
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2567
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Грешка унутар адресе „%s“ — атрибут фамилије је неисправно уписан"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "Монтирах „%s“ на „%s“\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; занемарујем замену за овај кључ.\n"
 
index 460f250..a2bc0d4 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,16 +1,16 @@
 # Swedish messages for glib.
-# Copyright © 2001-2019 Free Software Foundation, Inc.
+# Copyright © 2001-2020 Free Software Foundation, Inc.
 # Christian Rose <menthos@menthos.com>, 2001-2005.
 # Daniel Nylander <po@danielnylander.se>, 2006-2012.
 # Sebastian Rasmussen <sebras@gmail.com>, 2014, 2015.
-# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2016, 2017, 2018, 2019.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2016, 2017, 2018, 2019, 2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-08-21 17:54+0000\n"
-"PO-Revision-Date: 2019-08-22 11:53+0200\n"
+"POT-Creation-Date: 2020-02-03 13:14+0000\n"
+"PO-Revision-Date: 2020-02-03 18:03+0100\n"
 "Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
@@ -18,7 +18,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 2.2.4\n"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -115,8 +115,8 @@ msgstr "Kommandot att skriva ut detaljerad hjälp för"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Programidentifierare i D-Bus-format (t.ex: org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:735
-#: gio/glib-compile-resources.c:741 gio/glib-compile-resources.c:769
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
 #: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "FIL"
@@ -278,7 +278,7 @@ msgstr "Strömmen är redan stängd"
 msgid "Truncate not supported on base stream"
 msgstr "Kapning stöds inte på basströmmen"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -298,22 +298,22 @@ msgstr "Inte tillräckligt med utrymme i målet"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Ogiltig bytesekvens i konverteringsindata"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Fel vid konvertering: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Avbrytningsbar initiering stöds inte"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Konvertering från teckentabellen ”%s” till ”%s” stöds inte"
@@ -337,19 +337,23 @@ msgstr "Okänd typ"
 msgid "%s filetype"
 msgstr "%s-filtyp"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials innehåller ogiltiga data"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials är inte implementerat för detta operativsystem"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Det finns inget stöd för GCredentials för din plattform"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials innehåller inte ett process-ID för detta OS"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Inloggningsuppgiftsspoofning är inte möjligt i detta OS"
 
@@ -357,7 +361,7 @@ msgstr "Inloggningsuppgiftsspoofning är inte möjligt i detta OS"
 msgid "Unexpected early end-of-stream"
 msgstr "Oväntat tidig end-of-stream"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nyckeln ”%s” stöds inte i adressposten ”%s”"
@@ -376,32 +380,28 @@ msgstr ""
 "Adressen ”%s” är ogiltig (behöver exakt en av sökväg, katalog, "
 "temporärkatalog eller abstrakta nycklar)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "Fel i adressen ”%s” — portattributet är felformulerat"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "Fel i adressen ”%s” — familjeattributet är felformulerat"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Fel i adressen ”%s” — attributet ”%s” är felformulerat"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transport ”%s” är okänd eller saknar stöd för adressen ”%s”"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adresselementet ”%s” innehåller inte ett kolontecken (:)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transportnamn i adresselementet ”%s” får inte vara tomt"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -410,14 +410,14 @@ msgstr ""
 "Nyckel/Värde-par %d, ”%s”, i adresselementet ”%s” innehåller inte ett "
 "likhetstecken"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "Nyckel/Värde-par %d, ”%s”, i adresselementet ”%s” får inte ha en tom nyckel"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -426,7 +426,7 @@ msgstr ""
 "Fel vid borttagning av escape i nyckel eller värde i Nyckel/Värde-par %d, "
 "”%s”, i adresselementet ”%s”"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -435,77 +435,77 @@ msgstr ""
 "Fel i adressen ”%s” — unix-transporten kräver att exakt en av nycklarna "
 "”path” eller ”abstract” har ställts in"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Fel i adressen ”%s” — värdattributet saknas eller är felformulerat"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Fel i adressen ”%s” — portattributet saknas eller är felformulerat"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Fel i adressen ”%s” — attributet noncefile saknas eller är felformulerat"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Fel vid automatisk körning: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Fel vid öppning av nonce-filen ”%s”: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Fel vid läsning från nonce-filen ”%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Fel vid läsning från nonce-filen ”%s”, förväntade 16 byte, fick %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Fel vid skrivning av innehåll i nonce-filen ”%s” till ström:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Angivna adressen är tom"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Kan inte starta en meddelandebuss med setuid satt"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Kan inte starta en meddelandebuss utan ett maskin-id: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Kan inte starta D-Bus automatiskt utan X11-miljövariabeln $DISPLAY"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Fel vid körning av kommandoraden ”%s”: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Kan inte fastställa adress för sessionsbuss (inte implementerat för detta "
 "operativsystem)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -514,7 +514,7 @@ msgstr ""
 "Kan inte fastställa bussadressen från miljövariabeln DBUS_STARTER_BUS_TYPE — "
 "okänt värde ”%s”"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -522,20 +522,20 @@ msgstr ""
 "Kan inte fastställa bussadress därför att miljövariabeln "
 "DBUS_STARTER_BUS_TYPE inte är inställd"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Okänd busstyp %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Oväntad avsaknad av innehåll vid försök att läsa en rad"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Oväntad avsaknad av innehåll vid försök att (säkert) läsa en rad"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -543,16 +543,16 @@ msgstr ""
 "Alla tillgängliga autentiseringsmekanismer har testats (försök: %s) "
 "(tillgängliga: %s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Avbröts via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Fel vid hämtning av information för katalogen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -560,22 +560,22 @@ msgstr ""
 "Rättigheter på katalogen ”%s” är felformulerade. Förväntade rättigheten "
 "0700, fick 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Fel vid skapandet av katalogen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Fel vid öppnandet av nyckelringen ”%s” för läsning: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Rad %d av nyckelringen vid ”%s” med innehåll ”%s” är felformulerad"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -583,7 +583,7 @@ msgstr ""
 "Första token på rad %d av nyckelringen i ”%s” med innehållet ”%s” är "
 "felformulerad"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -591,37 +591,37 @@ msgstr ""
 "Andra token på rad %d av nyckelringen i ”%s” med innehållet ”%s” är "
 "felformulerad"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Hittade inte kaka med id %d i nyckelringen vid ”%s”"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Fel vid borttagning av gamla låsfilen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Fel vid skapandet av låsfilen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Fel vid stängning av (avlänkad) låsfil ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Fel vid avlänkning av låsfilen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Fel vid öppning av nyckelringen ”%s” för skrivning: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(I tillägg misslyckades även upplåsningen för ”%s”: %s) "
@@ -641,7 +641,7 @@ msgstr ""
 "Flaggor som inte stöds påträffades vid konstruktion av en anslutning på "
 "klientsidan"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -649,99 +649,99 @@ msgstr ""
 "Inget sådant gränssnitt ”org.freedesktop.DBus.Properties” på objekt med "
 "sökvägen %s"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "Ingen sådan egenskap ”%s”"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Egenskapen ”%s” är inte läsbar"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Egenskapen ”%s” är inte skrivbar"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Fel vid inställning av egenskapen ”%s”: Förväntade typen ”%s” men fick ”%s”"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Inget sådan gränssnitt ”%s”"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Inget sådant gränssnitt ”%s” på objekt med sökvägen %s"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "Ingen sådan metod ”%s”"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Typ av meddelande, ”%s”, matchar inte förväntade typen ”%s”"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Ett objekt är redan exporterat för gränssnittet %s vid %s"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Kunde inte hämta egenskap %s.%s"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Kunde inte sätta egenskap %s.%s"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metoden ”%s” returnerade typen ”%s”, men förväntade ”%s”"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metoden ”%s” på gränssnittet ”%s” med signaturen ”%s” finns inte"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ett underträd har redan exporterats för %s"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "typ är OGILTIG"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL-meddelande: rubrikfältet PATH eller MEMBER saknas"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN-meddelande: rubrikfältet REPLY_SERIAL saknas"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "FELmeddelande: rubrikfältet REPLY_SERIAL eller ERROR_NAME saknas"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL-meddelande: rubrikfältet PATH, INTERFACE eller MEMBER saknas"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -749,7 +749,7 @@ msgstr ""
 "SIGNAL-meddelande: Rubrikfältet PATH använder det reserverade värdet /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -757,19 +757,19 @@ msgstr ""
 "SIGNAL-meddelande: Rubrikfältet INTERFACE använder det reserverade värdet "
 "org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Ville läsa %lu byte men fick bara %lu"
 msgstr[1] "Ville läsa %lu byte men fick bara %lu"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Förväntade NUL-byte efter strängen ”%s” men hittade byte %d"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -779,17 +779,21 @@ msgstr ""
 "(längd av strängen är %d). Den giltiga UTF-8-strängen fram till den punkten "
 "var ”%s”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Värde nästlat för djupt"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Tolkat värde ”%s” är inte en giltig D-Bus-objektsökväg"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Tolkat värde ”%s” är inte en giltig D-Bus-signatur"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -800,7 +804,7 @@ msgstr[0] ""
 msgstr[1] ""
 "Påträffade array med längden %u byte. Maximal längd är 2<<26 byte (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -809,12 +813,12 @@ msgstr ""
 "Påträffade array av typ ”a%c”, förväntad att ha en längd som är en multipel "
 "av %u byte, men visade sig vara %u byte lång"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Tolkat värde ”%s” för variant är inte en giltig D-Bus-signatur"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -822,7 +826,7 @@ msgstr ""
 "Fel vid deserialisering av GVariant med typsträngen ”%s” från D-Bus-"
 "transportformatet"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -831,38 +835,38 @@ msgstr ""
 "Ogiltigt värde för byteordning. Förväntade 0x6c (”l”) eller 0x42 (”B”) men "
 "hittade värdet 0x%02x"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Ogiltig större protokollversion. Förväntade 1 men hittade %d"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "Signaturrubrik hittades men är inte av typen signatur"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signaturrubrik med signaturen ”%s” hittades men meddelandekroppen är tom"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Tolkat värde ”%s” är inte en giltig D-Bus-signatur (för kropp)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "Ingen signaturrubrik i meddelande men meddelandekroppen är %u byte"
 msgstr[1] "Ingen signaturrubrik i meddelande men meddelandekroppen är %u byte"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "Kan inte deserialisera meddelande: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -870,23 +874,23 @@ msgstr ""
 "Fel vid serialisering av GVariant med typsträngen ”%s” till D-Bus-"
 "transportformatet"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "Antal filhandtag i meddelande (%d) skiljer sig från rubrikfältet (%d)"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "Kan inte serialisera meddelandet: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Meddelandekroppen har signaturen ”%s” men det finns ingen signaturrubrik"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -895,36 +899,36 @@ msgstr ""
 "Meddelandekroppen har typsignaturen ”%s” men signaturen i rubrikfältet är "
 "”%s”"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Meddelandekroppen är tom men signaturen i rubrikfältet är ”(%s)”"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Fel returnerades med kropp av typen ”%s”"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Fel returnerade med tom kropp"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Skriv vilket tecken som helst för att stänga detta fönster)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Sessions-dbus kör inte, och autostart misslyckades"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Kunde inte hämta hårdvaruprofil: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Kunde inte läsa in /var/lib/dbus/machine-id eller /etc/machine-id: "
 
@@ -947,25 +951,25 @@ msgstr ""
 "Kan inte anropa metod; proxy är för det välkända namnet %s utan en ägare och "
 "proxy konstruerades med flaggan G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Abstrakt namnrymd stöds inte"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Kan inte ange nonce-filen när en server skapas"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Fel vid skrivning av nonce-fil i ”%s”: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Strängen ”%s” är inte ett giltigt D-Bus GUID"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Kan inte lyssna på transport ”%s” som inte stöds"
@@ -1242,38 +1246,38 @@ msgstr "Fel: För många argument.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Fel: %s är inte ett giltigt välkänt bussnamn.\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Namnlös"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Skrivbordsfilen angav inget Exec-fält"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Kunde inte hitta terminal som krävs för programmet"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, 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:3383
+#: gio/gdesktopappinfo.c:3410
 #, 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:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Programinformation saknar en identifierare"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Kan inte skapa skrivbordsfil för användare %s"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Anpassad definition för %s"
@@ -1334,12 +1338,12 @@ msgstr "Felformaterat antal token (%d) i GEmblemedIcon-kodning"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Förväntade en GEmblem för GEmblemedIcon"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Åtgärden stöds inte"
@@ -1348,69 +1352,73 @@ msgstr "Åtgärden stöds inte"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Innefattande montering finns inte"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Kan inte kopiera över katalog"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Kan inte kopiera katalog över katalog"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Målfilen finns"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Kan inte kopiera katalogen rekursivt"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Splice stöds inte"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fel vid splice av fil: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopiering (reflänk/klon) mellan monteringar stöds inte"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiering (reflänk/klon) stöds inte eller är ogiltigt"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiering (reflänk/klon) stöds inte eller fungerade inte"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Kan inte kopiera specialfil"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Ogiltigt värde för symbolisk länk angivet"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Symboliska länkar stöds inte"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Papperskorgen stöds inte"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Filnamn får inte innehålla ”%c”"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volymen har inte implementerat montering"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Inget program är registrerat för hantering av denna fil"
 
@@ -1434,7 +1442,7 @@ msgstr "Kan inte hantera version %d av GFileIcon-kodning"
 
 #: gio/gfileicon.c:246
 msgid "Malformed input data for GFileIcon"
-msgstr "Felformaterad inmatningsdata för GFileIcon"
+msgstr "Felformaterade inmatningsdata för GFileIcon"
 
 #: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
 #: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
@@ -1455,7 +1463,7 @@ msgstr "Kapning tillåts inte på inmatningsströmmen"
 msgid "Truncate not supported on stream"
 msgstr "Kapning stöds inte på strömmen"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Ogiltigt värdnamn"
@@ -1572,7 +1580,7 @@ msgstr "Behåll med filen vid flyttning"
 msgid "“version” takes no arguments"
 msgstr "”version” tar inga argument"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:861
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "Användning:"
 
@@ -1658,10 +1666,10 @@ msgid "Error writing to stdout"
 msgstr "Fel vid skrivning till standard ut"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1681,56 +1689,60 @@ msgstr ""
 "använder GIO-platser istället för lokala filer: exempelvis kan du använda\n"
 "något liknande smb://server/resurs/fil.txt som plats."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Inga platser angivna"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Ingen målkatalog"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Visa förlopp"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Fråga innan överskrivning"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Behåll alla attribut"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Säkerhetskopiera befintliga målfiler"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Följ aldrig symboliska länkar"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Använd standardrättigheter för målet"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "Överförde %s av %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "KÄLLA"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "MÅL"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Kopiera en eller fler filer från KÄLLA till MÅL."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1740,88 +1752,98 @@ msgstr ""
 "GIO-platser istället för lokala filer: exempelvis kan du använda något\n"
 "liknande smb://server/resurs/fil.txt som plats."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Målet %s är inte en katalog"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: skriv över ”%s”? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Lista skrivbara attribut"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Hämta information om filsystem"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Attributen att hämta"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUT"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Följ inte symboliska länkar"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "attribut:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "visningsnamn: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "redigeringsnamn: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "namn: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "typ: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "storlek: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "dold\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "lokal sökväg: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix-montering: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Inställningsbara attribut:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Skrivbara namnrymder för attribut:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Visa information om platser."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1835,23 +1857,27 @@ msgstr ""
 "anges med deras GIO-namn, t.ex. standard::icon, eller bara efter\n"
 "namnrymd, t.ex. unix, eller med ”*” som matchar alla attribut"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Visa dolda filer"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Använd ett långt listningsformat"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Skriv ut visningsnamn"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Skriv ut fullständiga URI:er"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Lista innehållet för platserna."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1979,12 +2005,12 @@ msgid "Mount as mountable"
 msgstr "Montera som monteringsbar"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Montera volym med enhetsfil"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Montera volym med enhetsfil, eller annan identifierare"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "ENHET"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -1998,6 +2024,10 @@ msgstr "Mata ut"
 msgid "Stop drive with device file"
 msgstr "Stoppa enhet med enhetsfil"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "ENHET"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Avmontera alla monteringar med angivet schema"
@@ -2051,16 +2081,11 @@ msgstr "Anonym åtkomst nekad"
 msgid "No drive for device file"
 msgstr "Ingen enhet för enhetsfil"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "Monterade %s på %s\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Ingen volym för enhetsfil"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Ingen volym för angivet ID"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Montera eller avmontera platserna."
 
@@ -2275,20 +2300,20 @@ msgstr "Fel vid läsning av filen %s: %s"
 msgid "Error compressing file %s"
 msgstr "Fel vid komprimering av filen %s"
 
-#: gio/glib-compile-resources.c:538
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "text får inte vara inuti <%s>"
 
-#: gio/glib-compile-resources.c:734 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Visa programversion och avsluta"
 
-#: gio/glib-compile-resources.c:735
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "Namn på utmatningsfilen"
 
-#: gio/glib-compile-resources.c:736
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2296,56 +2321,56 @@ msgstr ""
 "Katalogerna där filer som hänvisas till i FIL ska läsas från (standard: "
 "aktuell katalog)"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "KATALOG"
 
-#: gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Generera utmatning i formatet valt av målfilnamnets filändelse"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Generera källkods-header"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Generera källkod som används för att länka in resursfilen i din kod"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Generera beroendelista"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
 msgstr "Namn på beroendefilen att generera"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inkludera phony-mål i den genererade beroendefilen"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "Skapa och registrera inte resursen automatiskt"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Exportera inte funktioner; deklarera dem som G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:748
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr ""
 "Bädda inte in resursdata i C-filen; anta att de är länkade externt istället"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "C-identifierarnamn som används för den genererade källkoden"
 
-#: gio/glib-compile-resources.c:772
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2355,7 +2380,7 @@ msgstr ""
 "Resursspecifikationsfiler har filändelsen .gresource.xml,\n"
 "och resursfilen har filändelsen .gresource."
 
-#: gio/glib-compile-resources.c:794
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "Du bör ange exakt ett filnamn\n"
 
@@ -2870,7 +2895,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Kan inte byta namn på filen, filnamnet finns redan"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Ogiltigt filnamn"
 
@@ -2944,129 +2969,125 @@ msgstr "Filsystemet saknar stöd för symboliska länkar"
 msgid "Error making symbolic link %s: %s"
 msgstr "Fel vid skapande av symboliska länken %s: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Symboliska länkar stöds inte"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Fel vid flyttning av filen %s: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Kan inte flytta katalog över katalog"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Misslyckades med att skapa säkerhetskopiefil"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Fel vid borttagning av målfil: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Flyttning mellan monteringar stöds inte"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Kunde inte bestämma diskanvändningen för %s: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Attributvärde måste vara icke-NULL"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Ogiltig attributtyp (sträng förväntades)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Ogiltigt utökat attributnamn"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Fel vid inställning av utökat attribut ”%s”: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (ogiltig kodning)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Fel vid hämtning av information om filen ”%s”: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Fel vid hämtning av information om filhandtag: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Ogiltig attributtyp (uint32 förväntades)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Ogiltig attributtyp (uint64 förväntades)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Ogiltig attributtyp (bytesträng förväntades)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Kan inte ställa in rättigheter på symboliska länkar"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Fel vid inställning av rättigheter: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Fel vid inställning av ägare: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "symbolisk länk måste vara icke-NULL"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Fel vid inställning av symbolisk länk: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Fel vid inställning av symbolisk länk: filen är inte en symbolisk länk"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Fel vid inställning av ändrings- eller åtkomsttid: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux-kontext måste vara icke-NULL"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Fel vid inställning av SELinux-kontext: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux är inte aktiverat på detta system"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Inställning av attributet %s stöds inte"
@@ -3089,7 +3110,7 @@ msgstr "Fel vid sökning i fil: %s"
 msgid "Error closing file: %s"
 msgstr "Fel vid stängning av fil: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Kunde inte hitta standardtyp för lokal filövervakare"
 
@@ -3232,11 +3253,11 @@ msgstr "mount har inte implementerat synkron estimering av innehållstyp"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Värdnamnet ”%s” innehåller ”[” men inte ”]”"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Nätverket är inte nåbart"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Värddatorn är inte nåbar"
 
@@ -3277,18 +3298,18 @@ msgstr "Summan av vektorer skickade till %s är för stor"
 msgid "Source stream is already closed"
 msgstr "Källströmmen är redan stängd"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Fel vid uppslag av ”%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s inte implementerad"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Ogiltig domän"
 
@@ -3662,172 +3683,172 @@ msgstr "Tomt schemanamn angavs\n"
 msgid "No such key “%s”\n"
 msgstr "Ingen sådan nyckel ”%s”\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Ogiltigt uttag, inte initierat"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ogiltigt uttag, initiering misslyckades på grund av: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Uttaget är redan stängt"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Tidsgräns för in/ut på uttaget överstegs"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "skapar GSocket från fd: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Kunde inte skapa uttag: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Okänd familj angavs"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Okänt protokoll angavs"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Kan inte använda datagramåtgärder på ett icke-datagram-uttag."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Kan inte använda datagramåtgärder på ett uttag med en satt tidsgräns."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "kunde inte få lokal adress: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "kunde inte få fjärradress: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "kunde inte lyssna: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Fel vid bindning till adress: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Fel vid bindning till adressen %s: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Fel vid medlemskap i multicast-grupp: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Fel vid lämnande av multicast-grupp: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Inget stöd för källspecifik multicast"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Uttagsfamiljen stöds inte"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "källspecifik är inte en IPv4-adress"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Gränssnittsnamnet är för långt"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Gränssnitt hittades inte: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Inget stöd för IPv4-källspecifik multicast"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Inget stöd för IPv6-källspecifik multicast"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fel vid godkännande av anslutning: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Anslutningsförsök pågår"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Kunde inte få tag på väntande fel: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fel vid mottagning av data: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fel vid sändning av data: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Kunde inte stänga ner uttag: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Fel vid stängning av uttag: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Väntar på uttagstillstånd: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fel vid sändning av meddelande: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage stöds inte på Windows"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fel vid mottagning av meddelande: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Kunde inte läsa uttagets inloggningsuppgifter: %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials har inte implementerats för detta operativsystem"
@@ -4036,7 +4057,7 @@ msgstr[1] "Förväntade 1 kontrollmeddelande, fick %d"
 
 #: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
-msgstr "Oväntad typ av underordnat data"
+msgstr "Oväntad typ av underordnade data"
 
 #: gio/gunixconnection.c:200
 #, c-format
@@ -4091,7 +4112,7 @@ msgstr "Fel vid läsning från filhandtag: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Fel vid stängning av filhandtag: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Filsystemsrot"
 
@@ -4147,7 +4168,7 @@ msgstr "Behöver mer inmatning"
 
 #: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
-msgstr "Ogiltigt komprimerat data"
+msgstr "Ogiltiga komprimerade data"
 
 #: gio/tests/gdbus-daemon.c:18
 msgid "Address to listen on"
@@ -4178,72 +4199,72 @@ msgstr "Fel argument\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Oväntat attribut ”%s” för elementet ”%s”"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Attributet ”%s” för elementet ”%s” hittades inte"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Oväntad tagg ”%s”, taggen ”%s” förväntades"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Oväntad tagg ”%s” inom ”%s”"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Ogiltigt datum/tid ”%s” i bokmärkesfil"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Ingen giltig bokmärkesfil hittades i datakataloger"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Ett bokmärke för URI ”%s” finns redan"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Inget bokmärke hittades för URI ”%s”"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Ingen Mime-typ definierad i bokmärket för URI ”%s”"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Ingen privat flagga har definierats i bokmärket för URI ”%s”"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Inga grupper inställda i bokmärket för URI ”%s”"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Inget program med namnet ”%s” registrerade ett bokmärke för ”%s”"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Misslyckades med att expandera exec-raden ”%s” med URI ”%s”"
@@ -4252,8 +4273,8 @@ msgstr "Misslyckades med att expandera exec-raden ”%s” med URI ”%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Tecken som ej går att uttrycka i konverteringsindata"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Ofullständig teckensekvens vid slutet av indata"
 
@@ -4800,24 +4821,24 @@ msgstr "Mallen ”%s” innehåller inte XXXXXX"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Misslyckades med att läsa den symboliska länken ”%s”: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Kunde inte öppna konverteraren från ”%s” till ”%s”: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Kan inte göra en rå läsning i g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
-msgstr "Överbliven okonverterad data i läsbufferten"
+msgstr "Överblivna okonverterade data i läsbufferten"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Kanalen slutar med ett ofullständigt tecken"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Kan inte göra en rå läsning i g_io_channel_read_to_end"
 
@@ -4857,8 +4878,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Nyckelfilen innehåller kodningen ”%s” som inte stöds"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Nyckelfilen har inte gruppen ”%s”"
@@ -4895,31 +4916,31 @@ msgstr ""
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Nyckeln ”%s” i gruppen ”%s” innehåller värdet ”%s” där %s förväntades"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Nyckelfilen innehåller kontrolltecken i slutet på en rad"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Nyckelfilen innehåller ogiltiga kontrollsekvensen ”%s”"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Värdet ”%s” kan inte tolkas som ett tal."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Heltalsvärdet ”%s” är utanför intervallet"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Värdet ”%s” kan inte tolkas som ett flyttal."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Värdet ”%s” kan inte tolkas som ett booleskt värde."
@@ -5009,11 +5030,11 @@ msgstr ""
 "Entiteten slutade inte med ett semikolon. Troligtvis använde du ett &-tecken "
 "utan att avse att starta en entitet. Skriv om &-tecknet som &amp;"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokumentet måste börja med ett element (exempelvis <book>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5022,7 +5043,7 @@ msgstr ""
 "”%s” är inte ett giltigt tecken efter ett ”<”-tecken. Det får inte inleda "
 "ett elementnamn"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5031,7 +5052,12 @@ msgstr ""
 "Konstigt tecken ”%s”, ett ”>”-tecken förväntades för att avsluta tomma "
 "elementtaggen ”%s”"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "För många attribut i elementet ”%s”"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5039,7 +5065,7 @@ msgstr ""
 "Konstigt tecken ”%s”, ett ”=” förväntades efter attributnamnet ”%s” till "
 "elementet ”%s”"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5050,7 +5076,7 @@ msgstr ""
 "starttaggen för elementet ”%s”, eller möjligtvis ett attribut. Du kanske "
 "använde ett ogiltigt tecken i ett attributnamn"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5059,7 +5085,7 @@ msgstr ""
 "Konstigt tecken ”%s”, ett startcitationstecken förväntades efter "
 "likhetstecknet när värdet av attributet ”%s” till elementet ”%s” tilldelades"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5068,7 +5094,7 @@ msgstr ""
 "”%s” är inte ett giltigt tecken efter tecknen ”</”. ”%s” får inte inleda ett "
 "elementnamn"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5077,26 +5103,26 @@ msgstr ""
 "”%s” är inte ett giltigt tecken efter stängelementnamnet ”%s”. Det tillåtna "
 "tecknet är ”>”"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Elementet ”%s” stängdes, inget element är öppet för tillfället"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr ""
 "Elementet ”%s” stängdes, men det element som är öppet för tillfället är ”%s”"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokumentet var tomt eller innehöll endast tomrum"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Dokumentet tog oväntat slut efter ett öppningsklammer ”<”"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5105,7 +5131,7 @@ msgstr ""
 "Dokumentet tog oväntat slut då element fortfarande var öppna. ”%s” var det "
 "senast öppnade elementet"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5114,19 +5140,19 @@ msgstr ""
 "Dokumentet tog oväntat slut, en stängningsklammer förväntades för att "
 "avsluta taggen <%s/>"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokumentet tog oväntat slut inuti ett elementnamn"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokumentet tog oväntat slut inuti ett attributnamn"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokumentet tog oväntat slut inuti en elementöppnande tagg."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5134,81 +5160,81 @@ msgstr ""
 "Dokumentet tog oväntat slut efter likhetstecknet som följde ett "
 "attributnamn. Inget attributvärde"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokumentet tog oväntat slut inuti ett attributvärde"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Dokumentet tog oväntat slut inuti stängningstaggen för elementet ”%s”"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Dokumentet tog oväntat slut inuti stängningstaggen för ett oöppnat element"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Dokumentet tog oväntat slut inuti en kommentar eller behandlingsinstruktion"
 
-#: glib/goption.c:865
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[FLAGGA…]"
 
-#: glib/goption.c:981
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Hjälpflaggor:"
 
-#: glib/goption.c:982
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Visa hjälpflaggor"
 
-#: glib/goption.c:988
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Visa alla hjälpflaggor"
 
-#: glib/goption.c:1051
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Programflaggor:"
 
-#: glib/goption.c:1053
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "Flaggor:"
 
-#: glib/goption.c:1117 glib/goption.c:1187
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "Kan inte tolka heltalsvärdet ”%s” för %s"
 
-#: glib/goption.c:1127 glib/goption.c:1195
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Heltalsvärdet ”%s” för %s är utanför intervallet"
 
-#: glib/goption.c:1152
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "Kan inte tolka dubbelvärdet ”%s” för %s"
 
-#: glib/goption.c:1160
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "Dubbelvärdet ”%s” för %s är utanför intervallet"
 
-#: glib/goption.c:1452 glib/goption.c:1531
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Fel vid tolkning av flaggan %s"
 
-#: glib/goption.c:1562 glib/goption.c:1675
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Argument saknas för %s"
 
-#: glib/goption.c:2181
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Okänd flagga %s"
@@ -5611,78 +5637,78 @@ msgstr "Texten var tom (eller innehöll bara tomrum)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Misslyckades med att läsa data från barnprocess (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Oväntat fel i select() vid läsning av data från en barnprocess (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Oväntat fel vid läsning av data från en barnprocess (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Oväntat fel i waitpid() (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Barnprocess avslutades med kod %ld"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Barnprocess dödat av signal %ld"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Barnprocess stoppad av signal %ld"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Barnprocess avslutades onormalt"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Misslyckades med att läsa från rör till barn (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Misslyckades med att starta barnprocessen ”%s” (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Misslyckades med att grena (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Misslyckades med att byta till katalogen ”%s” (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Misslyckades med att köra barnprocessen ”%s” (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr ""
 "Misslyckades med att dirigera om utdata eller indata från barnprocess (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Misslyckades med att skapa barnprocess (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Okänt fel vid körning av barnprocessen ”%s”"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5736,194 +5762,194 @@ msgstr ""
 "Oväntat fel i g_io_channel_win32_poll() vid inläsning av data från en "
 "barnprocess"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Tom sträng är inte ett tal"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "”%s” är inte ett tal med tecken"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Talet ”%s” är utanför gränserna [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "”%s” är inte ett teckenlöst tal"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Misslyckades med att allokera minne"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Tecknet är utanför intervallet för UTF-8"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Ogiltig sekvens i konverteringsindata"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Tecknet är utanför intervallet för UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2352
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2366
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2380
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2382
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2384
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2386
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2390
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2392
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2394
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2396
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2398
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2400
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2434 glib/gutils.c:2551
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2438
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5931,7 +5957,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bitar"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2505
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5939,7 +5965,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2510
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5951,36 +5977,45 @@ msgstr[1] "%s bitar"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2564
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2569
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2574
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2579
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2584
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2589
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+#~ msgstr "Denna GTlsBackend stöder inte skapande av PKCS #11-certifikat"
+
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "Fel i adressen ”%s” — familjeattributet är felformulerat"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "Monterade %s på %s\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; ignorerar åsidosättning för denna nyckel.\n"
 
index 0870efd..cf74603 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
 # Kaan Özdinçer <kaanozdincer@gmail.com>, 2015.
 # Muhammet Kara <muhammetk@gmail.com>, 2011, 2014, 2015, 2016.
 # Serdar Sağlam <teknomobil@yandex.com>, 2019.
-# Emin Tufan Çetin <etcetin@gmail.com>, 2017-2019.
+# Emin Tufan Çetin <etcetin@gmail.com>, 2017-2020.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2019-09-07 11:26+0000\n"
-"PO-Revision-Date: 2019-09-07 16:37+0300\n"
+"POT-Creation-Date: 2020-02-12 17:05+0000\n"
+"PO-Revision-Date: 2020-02-12 20:36+0300\n"
 "Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
 "Language-Team: Türkçe <gnome-turk@gnome.org>\n"
 "Language: tr\n"
@@ -25,7 +25,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 2.3\n"
 "X-POOTLE-MTIME: 1433280446.000000\n"
 
 #: gio/gapplication.c:500
@@ -286,7 +286,7 @@ msgstr "Akış zaten kapalı"
 msgid "Truncate not supported on base stream"
 msgstr "Taban akış üzerinde sonunun kesilmesi desteklenmiyor"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1409
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1871 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -306,22 +306,22 @@ msgstr "Hedefte yeterli alan yok"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
-#: glib/giochannel.c:1561 glib/giochannel.c:1603 glib/giochannel.c:2450
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2453
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Dönüşüm girdisinde geçersiz bayt dizisi"
 
 #: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
-#: glib/giochannel.c:1568 glib/giochannel.c:2462
+#: glib/giochannel.c:1571 glib/giochannel.c:2465
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Dönüşüm sırasında hata oluştu: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1094
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "İptal edilebilir başlatma desteklenmiyor"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1389
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "“%s” karakter kümesinden “%s” karakter kümesine dönüşüm desteklenmiyor"
@@ -345,19 +345,23 @@ msgstr "Bilinmeyen tür"
 msgid "%s filetype"
 msgstr "%s dosya türü"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials geçersiz veri içeriyor"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "Bu işletim sisteminde GCredentials sağlanmamış"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "Platformunuz için GCredentials desteği yok"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "Bu iştetim sisteminde GCredentials bir süreç kimliği içermez"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Bu işletim sisteminde kimlik sızdırma mümkün değildir"
 
@@ -365,7 +369,7 @@ msgstr "Bu işletim sisteminde kimlik sızdırma mümkün değildir"
 msgid "Unexpected early end-of-stream"
 msgstr "Beklenmeyen erken akış-sonu"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:313
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "“%2$s” adres girdisinde desteklenmeyen anahtar “%1$s”"
@@ -383,32 +387,28 @@ msgid ""
 msgstr ""
 "“%s” adresi geçersiz (tam bir yol, dir, tmpdir veya soyut anahtarlar gerekir)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:328
-#, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "“%s” adresinde hata — bağlantı noktası özniteliği hatalı oluşturulmuş"
-
-#: gio/gdbusaddress.c:258 gio/gdbusaddress.c:339
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "“%s” adresinde hata — grup özniteliği hatalı oluşturulmuş"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "“%s” adresinde hata — “%s” özniteliği hatalı oluşturulmuş"
 
-#: gio/gdbusaddress.c:409 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "“%2$s” adresi için bilinmeyen ya da desteklenmeyen aktarım “%1$s”"
 
-#: gio/gdbusaddress.c:453
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adres ögesi “%s” iki nokta üst üste (:) içermez"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:470
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "“%s” adres ögesindeki aktarım adı boş olmamalı"
 
-#: gio/gdbusaddress.c:483
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -417,7 +417,7 @@ msgstr ""
 "“%3$s” adres ögesi içindeki, Anahtar/Değer çifti %1$d, “%2$s” eşittir "
 "işareti içermiyor"
 
-#: gio/gdbusaddress.c:494
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -425,7 +425,7 @@ msgstr ""
 "“%3$s” adres ögesi içindeki, Anahtar/Değer çifti %1$d, “%2$s” boş anahtar "
 "olmamalıdır"
 
-#: gio/gdbusaddress.c:508
+#: gio/gdbusaddress.c:516
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -434,7 +434,7 @@ msgstr ""
 "“%3$s” adres ögesindeki, Anahtar/Değer çifti %1$d, “%2$s” içinde ters kaçış "
 "tuşu veya değeri hatası"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -443,78 +443,78 @@ msgstr ""
 "“%s” adresinde hata — unix aktarımı, “path” veya “abstract” anahtarlarından "
 "bir tanesinin kesinlikle ayarlanmış olmasını gerektirir"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "“%s” adresinde hata — host özniteliği eksik ya da hatalı oluşturulmuş"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "“%s” adresinde hata — bağlantı noktası özniteliği eksik ya da hatalı "
 "oluşturulmuş"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "“%s” adresinde hata — noncefile özniteliği eksik ya da hatalı oluşturulmuş"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Otomatik başlatmada hata: "
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Tek seferlik dosya “%s” açılırken hata: %s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Tek seferlik dosya “%s” okunurken hata: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Tek seferlik dosya “%s” okunurken hata, beklenen 16 bayt, alınan %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "“%s” tek seferlik dosyasının akış için içeriklerini yazmada hata:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Verilen adres boş"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "setuid gerektiğinde ileti veri yolu oluşturulamıyor"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "machine-id olmadan ileti veri yolu oluşturulamıyor: "
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "X11 $DISPLAY olmadan D-BUS kendiliğinden başlatılamaz"
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "“%s” komut satırı oluşturulurken hata: "
 
-#: gio/gdbusaddress.c:1211
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Oturum veri yolu adresi saptanamıyor (bu işletim sistemi için uygulanmadı)"
 
-#: gio/gdbusaddress.c:1349 gio/gdbusconnection.c:7178
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7191
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -523,7 +523,7 @@ msgstr ""
 "DBUS_STARTER_BUS_TYPE ortam değişkeninden veri yolu adresi saptanamıyor — "
 "bilinmeyen değer “%s”"
 
-#: gio/gdbusaddress.c:1358 gio/gdbusconnection.c:7187
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7200
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -531,20 +531,20 @@ msgstr ""
 "DBUS_STARTER_BUS_TYPE ortam değişkenine değer atanmadığından dolayı veri "
 "yolu adresi belirlenemiyor"
 
-#: gio/gdbusaddress.c:1368
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Bilinmeyen veriyolu türü %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Satır okunmaya çalışılırken beklenmeyen içerik eksikliği"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Satır okunmaya çalışılırken (güvenli) beklenmeyen içerik eksikliği"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -552,16 +552,16 @@ msgstr ""
 "Tüm olası kimlik doğrulama yöntemleri tükendi (denenen: %s) (kullanılabilir: "
 "%s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "GDBusAuthObserver::authorize-authenticated-peer yolu ile iptal edildi"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "“%s” dizini için bilgi alınırken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:276
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -569,22 +569,22 @@ msgstr ""
 "“%s” dizini üzerindeki izinler bozulmuştur. 0700 kipi beklenmiştir, ama 0%o "
 "alınmıştır"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "“%s” dizini oluşturulurken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Okumak için “%s” anahtarlığı açılırken hata: "
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%3$s” içerikli “%2$s” konumundaki anahtarlığın %1$d. satırı bozulmuş"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -592,7 +592,7 @@ msgstr ""
 "“%3$s” içerikli “%2$s” konumundaki anahtarlığın %1$d. satırının ilk "
 "belirteci bozulmuş"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -600,37 +600,37 @@ msgstr ""
 "“%3$s” içerikli “%2$s” konumundaki anahtarlığın %1$d. satırının ikinci "
 "belirteci bozulmuş"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "“%2$s” konumundaki anahtarlıkta %1$d kimlikli çerez bulunamadı"
 
-#: gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Eski kilit dosyası “%s” silinirken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Kilit dosyası “%s” oluşturulurken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "(Bağlantısı olmayan) kilit dosyası “%s” kapatılırken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "“%s” kilit dosyasının bağlantısı kaldırılırken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "“%s” anahtarlığını yazma için açarken hata: "
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Ayrıca, “%s” için kilidi açma başarısız oldu: %s) "
@@ -649,105 +649,105 @@ msgid ""
 msgstr ""
 "İstemci taraflı bağlantı kurulurken desteklenmeyen etiketlerle karşılaşıldı"
 
-#: gio/gdbusconnection.c:4151 gio/gdbusconnection.c:4498
+#: gio/gdbusconnection.c:4162 gio/gdbusconnection.c:4509
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "%s yolundaki nesnede “org.freedesktop.DBus.Properties” gibi bir arayüz yok"
 
-#: gio/gdbusconnection.c:4293
+#: gio/gdbusconnection.c:4304
 #, c-format
 msgid "No such property “%s”"
 msgstr "“%s” gibi bir özellik yok"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4316
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "“%s” özelliği okunabilir değil"
 
-#: gio/gdbusconnection.c:4316
+#: gio/gdbusconnection.c:4327
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "“%s” özelliği yazılabilir değil"
 
-#: gio/gdbusconnection.c:4336
+#: gio/gdbusconnection.c:4347
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "“%s” özelliği ayarlanırken hata: “%s” türü beklendi, “%s” elde edildi"
 
-#: gio/gdbusconnection.c:4441 gio/gdbusconnection.c:4649
-#: gio/gdbusconnection.c:6618
+#: gio/gdbusconnection.c:4452 gio/gdbusconnection.c:4660
+#: gio/gdbusconnection.c:6631
 #, c-format
 msgid "No such interface “%s”"
 msgstr "“%s” gibi bir arabirim yok"
 
-#: gio/gdbusconnection.c:4867 gio/gdbusconnection.c:7127
+#: gio/gdbusconnection.c:4878 gio/gdbusconnection.c:7140
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "%2$s yolundaki nesnede “%1$s” gibi bir arayüz yok"
 
-#: gio/gdbusconnection.c:4965
+#: gio/gdbusconnection.c:4976
 #, c-format
 msgid "No such method “%s”"
 msgstr "“%s” gibi bir anahtar yok"
 
-#: gio/gdbusconnection.c:4996
+#: gio/gdbusconnection.c:5007
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "“%s” iletisinin türü, beklenen “%s” türü ile örtüşmüyor"
 
-#: gio/gdbusconnection.c:5194
+#: gio/gdbusconnection.c:5205
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "%2$s konumundaki %1$s arayüzü için bir nesne zaten dışa aktarıldı"
 
-#: gio/gdbusconnection.c:5420
+#: gio/gdbusconnection.c:5431
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "%s.%s özelliği alınamadı"
 
-#: gio/gdbusconnection.c:5476
+#: gio/gdbusconnection.c:5487
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "%s.%s özelliği ayarlanamadı"
 
-#: gio/gdbusconnection.c:5654
+#: gio/gdbusconnection.c:5665
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "“%s” yöntemi “%s” türü döndürdü, ancak “%s” bekleniyordu"
 
-#: gio/gdbusconnection.c:6729
+#: gio/gdbusconnection.c:6742
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "“%3$s” imzalı “%2$s” arayüzü üzerinde “%1$s” yöntemi yok"
 
-#: gio/gdbusconnection.c:6850
+#: gio/gdbusconnection.c:6863
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "%s için bir alt ağaç zaten dışa aktarılmış"
 
-#: gio/gdbusmessage.c:1251
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "tür GEÇERSİZ"
 
-#: gio/gdbusmessage.c:1262
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL iletisi:  PATH ya da MEMBER başlık alanı eksik"
 
-#: gio/gdbusmessage.c:1273
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN iletisi: REPLY_SERIAL başlık alanı eksik"
 
-#: gio/gdbusmessage.c:1285
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR iletisi: REPLY_SERIAL ya da ERROR_NAME başlık alanı eksik"
 
-#: gio/gdbusmessage.c:1298
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL iletisi: PATH, INTERFACE ya da MEMBER başlık alanı eksik"
 
-#: gio/gdbusmessage.c:1306
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -755,7 +755,7 @@ msgstr ""
 "SIGNAL iletisi: PATH başlık alanı, ayrılmış olan /org/freedesktop/DBus/Local "
 "değerini kullanıyor"
 
-#: gio/gdbusmessage.c:1314
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -763,18 +763,18 @@ msgstr ""
 "SIGNAL iletisi: INTERFACE başlık alanı, ayrılmış olan org.freedesktop.DBus."
 "Local değerini kullanıyor"
 
-#: gio/gdbusmessage.c:1362 gio/gdbusmessage.c:1422
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "%lu bayt okumak istendi fakat yalnızca %lu var"
 
-#: gio/gdbusmessage.c:1376
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "“%s” dizgesinden sonra NUL baytı beklendi, ama %d baytı bulundu"
 
-#: gio/gdbusmessage.c:1395
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -783,17 +783,21 @@ msgstr ""
 "Geçerli bir UTF-8 dizgesi beklendi ama %d bayt konumunda geçersiz baytlar "
 "bulundu (dizge uzunluğu %d). Bu noktaya kadar geçerli olan dizge şudur: “%s”"
 
-#: gio/gdbusmessage.c:1598
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Değer çok derine yuvalanmış"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Ayrıştırılan değer “%s”, geçerli bir D-Bus nesne yolu değil"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Ayrıştırılan değer “%s”, geçerli bir D-Bus imzası değil"
 
-#: gio/gdbusmessage.c:1667
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -803,7 +807,7 @@ msgstr[0] ""
 "%u bayt uzunluğunda dizi ile karşılaşıldı. Olabilecek en çok uzunluk 2<<26 "
 "bayt (64 MiB)."
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -812,19 +816,19 @@ msgstr ""
 "“a%c” türünde dizi ile karşılaşıldı, birden çok %u bayt uzunluğu "
 "beklenmektedir fakat %u bayt uzunluk bulundu"
 
-#: gio/gdbusmessage.c:1857
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Varyant için ayrıştırılmış “%s” değeri geçeriz bir D-Bus imzasıdır"
 
-#: gio/gdbusmessage.c:1881
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "GVariant, D-Bus tel biçiminden “%s” dizge türüyle geri dönüştürülürken hata"
 
-#: gio/gdbusmessage.c:2066
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -833,57 +837,57 @@ msgstr ""
 "Geçersiz endian değeri. 0x6c (“l”) veya 0x42 (“B”) bekleniyordu fakat 0x%02x "
 "değeri bulundu"
 
-#: gio/gdbusmessage.c:2079
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Geçersiz önemli iletişim kuralı sürümü. 1 beklendi, %d bulundu"
 
-#: gio/gdbusmessage.c:2132 gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
 msgid "Signature header found but is not of type signature"
 msgstr "İmza başlığı bulundu, ancak tür imzası değil"
 
-#: gio/gdbusmessage.c:2144
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "“%s” imzalı bir imza başlığı bulundu ama ileti gövdesi boş"
 
-#: gio/gdbusmessage.c:2159
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Ayrıştırılan değer “%s” geçerli bir D-Bus imzası değil (gövde için)"
 
-#: gio/gdbusmessage.c:2190
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "İletide imza başlığı yok fakat ileti gövdesi %u bayt"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "İleti geri dönüştürülemiyor: "
 
-#: gio/gdbusmessage.c:2544
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "GVariant, D-Bus tel biçimine “%s” dizge türüyle dönüştürülürken hata"
 
-#: gio/gdbusmessage.c:2681
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "İletideki dosya açıklayıcı sayısı (%d) başlık alanından (%d) farklı"
 
-#: gio/gdbusmessage.c:2689
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "İleti dönüştürülemiyor: "
 
-#: gio/gdbusmessage.c:2742
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "İleti gövdesi “%s” imzasına sahip fakat imza başlığı yok"
 
-#: gio/gdbusmessage.c:2752
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -891,36 +895,36 @@ msgid ""
 msgstr ""
 "İleti gövdesi “%s” tür imzasına sahip fakat başlık alanındaki imza “%s”"
 
-#: gio/gdbusmessage.c:2768
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "İleti gövdesi boş, fakat başlık alanındaki imza “(%s)”"
 
-#: gio/gdbusmessage.c:3321
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "“%s” türünden bir gövdeyle dönüş hatası"
 
-#: gio/gdbusmessage.c:3329
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Boş gövdeyle dönüş hatası"
 
-#: gio/gdbusprivate.c:2243
+#: gio/gdbusprivate.c:2242
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Pencereyi kapatmak için herhangi bir karakter girin)\n"
 
-#: gio/gdbusprivate.c:2417
+#: gio/gdbusprivate.c:2416
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Dbus oturumu çalışmıyor ve otomatik başlatma başarısız oldu"
 
-#: gio/gdbusprivate.c:2440
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Donanım profili alınamıyor: %s"
 
-#: gio/gdbusprivate.c:2485
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr ""
 "/var/lib/dbus/makine-kimliği veya /etc/makine-kimliği konumuna yüklenemiyor: "
@@ -944,25 +948,25 @@ msgstr ""
 "Yöntem çağrılamıyor; vekil sunucu, sahibi olmayan bilindik %s adı için ve "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START bayrağı ile oluşturuldu"
 
-#: gio/gdbusserver.c:746
+#: gio/gdbusserver.c:755
 msgid "Abstract namespace not supported"
 msgstr "Soyut ad alanı desteklenmiyor"
 
-#: gio/gdbusserver.c:839
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Bir sunucu oluşturulurken nonce dosyası belirtilemez"
 
-#: gio/gdbusserver.c:921
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "“%s” konumundaki tek seferlik dosyaya yazma hatası: %s"
 
-#: gio/gdbusserver.c:1094
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "“%s” dizgesi, geçerli bir D-Bus GUID değil"
 
-#: gio/gdbusserver.c:1134
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Desteklenmeyen aktarım “%s” üzerinde dinlenemiyor"
@@ -1237,38 +1241,38 @@ msgstr "Hata: Çok fazla argüman.\n"
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Hata: %s geçerli bilinen bir veri yolu adı değil\n"
 
-#: gio/gdesktopappinfo.c:2045 gio/gdesktopappinfo.c:4843
+#: gio/gdesktopappinfo.c:2072 gio/gdesktopappinfo.c:4870
 msgid "Unnamed"
 msgstr "Adlandırılmamış"
 
-#: gio/gdesktopappinfo.c:2455
+#: gio/gdesktopappinfo.c:2482
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop dosyası Exec alanı belirtmemiş"
 
-#: gio/gdesktopappinfo.c:2727
+#: gio/gdesktopappinfo.c:2754
 msgid "Unable to find terminal required for application"
 msgstr "Uygulama için gerekli uçbirim bulunamadı"
 
-#: gio/gdesktopappinfo.c:3379
+#: gio/gdesktopappinfo.c:3406
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Kullanıcı uygulaması yapılandırma klasörü %s oluşturulamıyor: %s"
 
-#: gio/gdesktopappinfo.c:3383
+#: gio/gdesktopappinfo.c:3410
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Kullanıcı MIME yapılandırma klasörü %s oluşturulamıyor: %s"
 
-#: gio/gdesktopappinfo.c:3623 gio/gdesktopappinfo.c:3647
+#: gio/gdesktopappinfo.c:3650 gio/gdesktopappinfo.c:3674
 msgid "Application information lacks an identifier"
 msgstr "Uygulama bilgisi bir tanımlayıcıya sahip değildir"
 
-#: gio/gdesktopappinfo.c:3881
+#: gio/gdesktopappinfo.c:3908
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Kullanıcı masaüstü dosyası %s oluşturulamıyor"
 
-#: gio/gdesktopappinfo.c:4015
+#: gio/gdesktopappinfo.c:4042
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s için özel tanım"
@@ -1329,12 +1333,12 @@ msgstr "GEmblemedIcon kodlaması içerisinde bozuk sayıda token (%d)"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "GEmblemedIcon için bir Gemblem beklendi"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3739 gio/gfile.c:3794
-#: gio/gfile.c:4030 gio/gfile.c:4072 gio/gfile.c:4540 gio/gfile.c:4951
-#: gio/gfile.c:5036 gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310
-#: gio/gfile.c:5411 gio/gfile.c:8115 gio/gfile.c:8205 gio/gfile.c:8289
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "İşlem desteklenmiyor"
@@ -1343,71 +1347,75 @@ msgstr "İşlem desteklenmiyor"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Bağlama yok"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2446
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "Dizin üzerine kopyalanamıyor"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "Dizin dizin üzerine kopyalanamıyor"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Hedef dosya var"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "Dizin iç içe kopyalanamıyor"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "Splice desteklenmiyor"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Dosya uç uca eklenirken hata: %s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Bağlı sistemler arasında kopyalama (referans bağlantı/çoğaltmak) "
 "desteklenmiyor"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopyalama desteklenmiyor ya da geçersiz"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopyalama (bağlama/klonlama) destenlenmiyor ya da çalışmadı"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "Özel dosya kopyalanamıyor"
 
-#: gio/gfile.c:4020
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Geçersiz simgesel bağ değeri verildi"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Simgesel bağlar desteklenmiyor"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Çöp desteklenmiyor"
 
-#: gio/gfile.c:4293
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Dosya adları “%c” içeremez"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "bölüm, bağlamayı yerine getirmiyor"
 
-#: gio/gfile.c:6885 gio/gfile.c:6931
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
 msgstr "Bu dosyayı işlemek için hiçbir uygulama kayıtlı değil"
 
@@ -1452,7 +1460,7 @@ msgstr "Sonunu kesmeye giriş akışında izin verilmiyor"
 msgid "Truncate not supported on stream"
 msgstr "Akış üzerinde sonunun kesilmesi desteklenmiyor"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:386 gio/gresolver.c:538
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
 #: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "Geçersiz makine adı"
@@ -1655,10 +1663,10 @@ msgid "Error writing to stdout"
 msgstr "stdout’a yazılırken hata"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1678,56 +1686,60 @@ msgstr ""
 "yerine GIO konumlarını kullanır: örneğin, smb://server/resource/file.txt\n"
 "gibi bir şeyi konum olarak kullanabilirsiniz."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:96
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Konum verilmedi"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Hedef dizin yok"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "İlerlemeyi göster"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Üzerine yazmadan önce onay iste"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
 msgstr "Tüm öznitelikleri koru"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Var olan hedef dosyaları yedekle"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "Simgesel bağlantıları asla takip etme"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Hedef için öntanımlı izinleri kullan"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "%s/%s aktarıldı (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "KAYNAK"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "HEDEF"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Bir veya daha çok dosyayı KAYNAK’tan HEDEF’e taşı."
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1737,88 +1749,98 @@ msgstr ""
 "yerine GIO konumlarını kullanır: örneğin, smb://server/resource/file.txt\n"
 "gibi bir şeyi konum olarak kullanabilirsiniz."
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "%s konumu bir dizin değildir"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: “%s” üzerine yaz? "
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
 msgstr "Yazılabilir öznitelikleri listele"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "Dosya sistemi bilgisi al"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
 msgstr "Alınacak öznitelikler"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ÖZNİTELİKLER"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Simgesel bağlantıları takip etme"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
 msgstr "öznitelikler:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "gösterme adı: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "düzenleme adı: %s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "ad: %s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "tür: %s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "boyut: "
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "gizli\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "yerel yol: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix bağlaması: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
 msgstr "Belirlenebilir öznitelikler:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
 msgstr "Yazılabilir öznitelik ad boşlukları:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "Konumlar hakkında bilgi göster."
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1832,23 +1854,27 @@ msgstr ""
 "GIO adıyla birlikte belirtilebilir, örneğin standard::icon; veya yalnızca\n"
 "ad boşluğu, örneğin unix; veya tüm öznitelikleri eşleyen “*” gibi"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Gizli dosyaları göster"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "Uzun listeleme biçimini kullan"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Gösterme adlarını yazdır"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
 msgstr "Tam URI’leri yazdır"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "Konumların içeriklerini listele."
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1978,12 +2004,12 @@ msgid "Mount as mountable"
 msgstr "Bağlanabilir olarak bağla"
 
 #: gio/gio-tool-mount.c:64
-msgid "Mount volume with device file"
-msgstr "Aygıt dosyasıyla bölümü bağla"
+msgid "Mount volume with device file, or other identifier"
+msgstr "Aygıt dosyasıyla veya başka tanımlayıcıyla bölümü bağla"
 
-#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
-msgid "DEVICE"
-msgstr "AYGIT"
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "Kimlik"
 
 #: gio/gio-tool-mount.c:65
 msgid "Unmount"
@@ -1997,6 +2023,10 @@ msgstr "Çıkart"
 msgid "Stop drive with device file"
 msgstr "Aygıt dosyasıyla sürücüyü durdur"
 
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "AYGIT"
+
 #: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Verilen şemayla birlikte tüm bağları ayır"
@@ -2050,16 +2080,11 @@ msgstr "Anonim erişim engellendi"
 msgid "No drive for device file"
 msgstr "Aygıt dosyası için sürücü yok"
 
-#: gio/gio-tool-mount.c:975
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s, %s konumunda bağlandı\n"
-
-#: gio/gio-tool-mount.c:1027
-msgid "No volume for device file"
-msgstr "Bu aygıt dosyası için bölüm yok"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Bu kimlik için bölüm yok"
 
-#: gio/gio-tool-mount.c:1216
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "Konumları bağla veya ayır."
 
@@ -2871,7 +2896,7 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Dosya yeniden adlandırılamıyor, dosya adı zaten var"
 
 #: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
-#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:647
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "Geçersiz dosya adı"
 
@@ -2945,129 +2970,125 @@ msgstr "Dosya sistemi simgesel bağları desteklemiyor"
 msgid "Error making symbolic link %s: %s"
 msgstr "%s simgesel bağlantısı yapılırken hata: %s"
 
-#: gio/glocalfile.c:2363 glib/gfileutils.c:2172
-msgid "Symbolic links not supported"
-msgstr "Simgesel bağlar desteklenmiyor"
-
-#: gio/glocalfile.c:2418 gio/glocalfile.c:2453 gio/glocalfile.c:2510
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "%s dosyası taşınırken hata: %s"
 
-#: gio/glocalfile.c:2441
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "Dizin dizin üzerine taşınamıyor"
 
-#: gio/glocalfile.c:2467 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
 #: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
 #: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "Yedek dosyası oluşturma başarısız oldu"
 
-#: gio/glocalfile.c:2486
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Hedef dosya silerken hata: %s"
 
-#: gio/glocalfile.c:2500
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Bağlı sistemler arasında taşıma desteklenmiyor"
 
-#: gio/glocalfile.c:2691
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "%s’in disk kullanımı saptanamadı: %s"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
 msgstr "Öznitelik değeri NULL olmamalı"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
 msgstr "Geçersiz öznitelik türü (dizgi beklendi)"
 
-#: gio/glocalfileinfo.c:766
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
 msgstr "Geçersiz genişletilmiş öznitelik adı"
 
-#: gio/glocalfileinfo.c:806
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "“%s” genişletilmiş özniteliği atanırken hata: %s"
 
-#: gio/glocalfileinfo.c:1634
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr " (geçersiz kodlama)"
 
-#: gio/glocalfileinfo.c:1798 gio/glocalfileoutputstream.c:909
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "“%s” dosyası için bilgi alınırken hata: %s"
 
-#: gio/glocalfileinfo.c:2068
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Dosya tanımlayıcı için bilgi alındığında hata: %s"
 
-#: gio/glocalfileinfo.c:2113
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Geçersiz öznitelik türü (uint32 beklendi)"
 
-#: gio/glocalfileinfo.c:2131
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Geçersiz öznitelik türü (uint64 beklendi)"
 
-#: gio/glocalfileinfo.c:2150 gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Geçersiz öznitelik türü (byte dizisi beklendi)"
 
-#: gio/glocalfileinfo.c:2216
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "Simgesel bağlar üzerindeki yetkiler ayarlanamıyor"
 
-#: gio/glocalfileinfo.c:2232
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "İzinler atanırken hata: %s"
 
-#: gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Sahip atanırken hata: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "simgesel bağ NULL olmamalı"
 
-#: gio/glocalfileinfo.c:2316 gio/glocalfileinfo.c:2335
-#: gio/glocalfileinfo.c:2346
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Simgesel bağ atanırken hata: %s"
 
-#: gio/glocalfileinfo.c:2325
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Simgesel bağ atanırken hata: dosya bir simgesel bağ değil"
 
-#: gio/glocalfileinfo.c:2451
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Değiştirme veya erişim süresi atanırken hata: %s"
 
-#: gio/glocalfileinfo.c:2474
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux bağlamı NULL olmamalı"
 
-#: gio/glocalfileinfo.c:2489
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "SELinux bağlamı atanırken hata: %s"
 
-#: gio/glocalfileinfo.c:2496
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux bu sistede etkin değil"
 
-#: gio/glocalfileinfo.c:2588
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Öznitelik %s ataması desteklenmiyor"
@@ -3090,7 +3111,7 @@ msgstr "Dosya içinde atlama yapılırken hata: %s"
 msgid "Error closing file: %s"
 msgstr "Dosya kapatılırken hata: %s"
 
-#: gio/glocalfilemonitor.c:858
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "Öntanımlı yerel dosya izleme türü bulunamadı"
 
@@ -3235,11 +3256,11 @@ msgstr "bağlama, eş zamanlı içerik türü tahminini yerine getirmiyor"
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "“%s” ana makine adı “[” içeriyor ama “]” içermiyor"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Ağa erişilemiyor"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Makineye erişilemiyor"
 
@@ -3280,18 +3301,18 @@ msgstr "%s için geçilen vektörlerin toplamı çok büyük"
 msgid "Source stream is already closed"
 msgstr "Kaynak akışı zaten kapalı"
 
-#: gio/gresolver.c:351 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "“%s” çözülürken hata: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:398 gio/gresolver.c:556
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
 msgid "%s not implemented"
 msgstr "%s uygulanmadı"
 
-#: gio/gresolver.c:924 gio/gresolver.c:976
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
 msgstr "Geçersiz alan adı"
 
@@ -3667,173 +3688,173 @@ msgstr "Boş şema adı verildi\n"
 msgid "No such key “%s”\n"
 msgstr "“%s” gibi bir anahtar yok\n"
 
-#: gio/gsocket.c:374
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Geçersiz soket, başlatılmamış"
 
-#: gio/gsocket.c:381
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Geçersiz soket, başlatma başarısız oldu: %s"
 
-#: gio/gsocket.c:389
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Soket zaten kapalı"
 
-#: gio/gsocket.c:404 gio/gsocket.c:3134 gio/gsocket.c:4351 gio/gsocket.c:4409
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Soket Girdi/Çıktı zaman aşımı"
 
-#: gio/gsocket.c:539
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "fd’den GSocket oluşturuluyor: %s"
 
-#: gio/gsocket.c:568 gio/gsocket.c:622 gio/gsocket.c:629
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Soket oluşturulamadı: %s"
 
-#: gio/gsocket.c:622
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Bilinmeyen grup belirtildi"
 
-#: gio/gsocket.c:629
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Bilinmeyen iletişim kuralı belirtildi"
 
-#: gio/gsocket.c:1120
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Datagram olmayan bir yuva üzerinde datagram işlemleri kullanılamaz."
 
-#: gio/gsocket.c:1137
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Zamanaşımı ayarlanmış bir yuva üzerinde datagram işlemleri kullanılamaz."
 
-#: gio/gsocket.c:1944
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "yerel adres alınamadı: %s"
 
-#: gio/gsocket.c:1990
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "uzaktaki adres alınamadı: %s"
 
-#: gio/gsocket.c:2056
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "dinlenemedi: %s"
 
-#: gio/gsocket.c:2158
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Adrese bağlarken hata: %s"
+msgid "Error binding to address %s: %s"
+msgstr "%s adresine bağlanırken hata: %s"
 
-#: gio/gsocket.c:2332 gio/gsocket.c:2369 gio/gsocket.c:2479 gio/gsocket.c:2504
-#: gio/gsocket.c:2567 gio/gsocket.c:2625 gio/gsocket.c:2643
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Çok yöne yayın grubuna katılırken hata: %s"
 
-#: gio/gsocket.c:2333 gio/gsocket.c:2370 gio/gsocket.c:2480 gio/gsocket.c:2505
-#: gio/gsocket.c:2568 gio/gsocket.c:2626 gio/gsocket.c:2644
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Çok yöne yayın grubundan ayrılırken hata: %s"
 
-#: gio/gsocket.c:2334
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Kaynağa-özgü çok yöne yayın desteklenmiyor"
 
-#: gio/gsocket.c:2481
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
 msgstr "Desteklenmeyen soket ailesi"
 
-#: gio/gsocket.c:2506
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
 msgstr "kaynağa-özgü bir IPv4 adresi değil"
 
-#: gio/gsocket.c:2530
+#: gio/gsocket.c:2578
 #, c-format
 msgid "Interface name too long"
 msgstr "Arayüz adı çok uzun"
 
-#: gio/gsocket.c:2543 gio/gsocket.c:2593
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Arayüz bulunamadı: %s"
 
-#: gio/gsocket.c:2569
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
 msgstr "IPv4 kaynağa-özgü çok yöne yayın desteklenmiyor"
 
-#: gio/gsocket.c:2627
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
 msgstr "IPv6 kaynağa-özgü çok yöne yayın desteklenmiyor"
 
-#: gio/gsocket.c:2836
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Bağlantı kabul edilirken hata: %s"
 
-#: gio/gsocket.c:2962
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "Bağlantı devam ediyor"
 
-#: gio/gsocket.c:3013
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Bekleyen hata alınamadı: "
 
-#: gio/gsocket.c:3199
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Veri alırken hata: %s"
 
-#: gio/gsocket.c:3396
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Veri gönderirken hata: %s"
 
-#: gio/gsocket.c:3583
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Soket kapatılamadı: %s"
 
-#: gio/gsocket.c:3664
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Soket kapatılırken hata: %s"
 
-#: gio/gsocket.c:4344
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Soket durumu bekleniyor: %s"
 
-#: gio/gsocket.c:4722 gio/gsocket.c:4724 gio/gsocket.c:4871 gio/gsocket.c:4956
-#: gio/gsocket.c:5134 gio/gsocket.c:5174 gio/gsocket.c:5176
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "İleti gönderme hatası: %s"
 
-#: gio/gsocket.c:4898
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage Windows işletim sisteminde desteklenmiyor"
 
-#: gio/gsocket.c:5367 gio/gsocket.c:5440 gio/gsocket.c:5666
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "İleti alma hatası: %s"
 
-#: gio/gsocket.c:5947
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Soket kimliği okunamadı : %s"
 
-#: gio/gsocket.c:5956
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "bu işletim sistemi için g_socket_get_credentials uygulanmadı"
 
@@ -4094,7 +4115,7 @@ msgstr "Dosya tanımlayıcıdan okuma hatası: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Dosya tanımlayıcı kapatılırken hata: %s"
 
-#: gio/gunixmounts.c:2661 gio/gunixmounts.c:2714
+#: gio/gunixmounts.c:2664 gio/gunixmounts.c:2717
 msgid "Filesystem root"
 msgstr "Dosya sistemi kök dizini"
 
@@ -4181,72 +4202,72 @@ msgstr "Yanlış değişkenler\n"
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "“%2$s” ögesi için beklenmeyen “%1$s” özniteliği"
 
-#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:838 glib/gbookmarkfile.c:848
-#: glib/gbookmarkfile.c:960
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "“%2$s” ögesinde “%1$s” özniteliği bulunamadı"
 
-#: glib/gbookmarkfile.c:1169 glib/gbookmarkfile.c:1234
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1308
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Beklenmeyen etiket “%s”, “%s” bekleniyordu"
 
-#: glib/gbookmarkfile.c:1194 glib/gbookmarkfile.c:1208
-#: glib/gbookmarkfile.c:1276 glib/gbookmarkfile.c:1322
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "“%2$s” içinde beklenmeyen etiket “%1$s”"
 
-#: glib/gbookmarkfile.c:1616
+#: glib/gbookmarkfile.c:1625
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Yer imi dosyasında geçersiz tarih/saat ‘%s’"
 
-#: glib/gbookmarkfile.c:1822
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "Veri dizinlerinde geçerli bir yer imi dosyası bulunamadı"
 
-#: glib/gbookmarkfile.c:2023
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "“%s” URI’si için bir yer imi zaten var"
 
-#: glib/gbookmarkfile.c:2069 glib/gbookmarkfile.c:2227
-#: glib/gbookmarkfile.c:2312 glib/gbookmarkfile.c:2392
-#: glib/gbookmarkfile.c:2477 glib/gbookmarkfile.c:2560
-#: glib/gbookmarkfile.c:2638 glib/gbookmarkfile.c:2717
-#: glib/gbookmarkfile.c:2759 glib/gbookmarkfile.c:2856
-#: glib/gbookmarkfile.c:2977 glib/gbookmarkfile.c:3167
-#: glib/gbookmarkfile.c:3243 glib/gbookmarkfile.c:3411
-#: glib/gbookmarkfile.c:3500 glib/gbookmarkfile.c:3589
-#: glib/gbookmarkfile.c:3708
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "“%s” URI’si için bir yer imi bulunamadı"
 
-#: glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "“%s” URI’si için yer iminde hiçbir MIME türü belirtilmedi"
 
-#: glib/gbookmarkfile.c:2486
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "“%s” URI’si için yer iminde özel bayrak tanımlanmadı"
 
-#: glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "“%s” URI’si için yer iminde grup tanımlanmadı"
 
-#: glib/gbookmarkfile.c:3264 glib/gbookmarkfile.c:3421
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "“%s” adında hiçbir uygulama “%s” için yer imi kaydetmedi"
 
-#: glib/gbookmarkfile.c:3444
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Exec satırı “%s”, “%s” URI’si ile genişletilirken başarısız olundu"
@@ -4255,8 +4276,8 @@ msgstr "Exec satırı “%s”, “%s” URI’si ile genişletilirken başarıs
 msgid "Unrepresentable character in conversion input"
 msgstr "Dönüşüm girdisi içinde temsil edilemez karakter"
 
-#: glib/gconvert.c:493 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Girdinin sonunda parçalı karakter dizisi"
 
@@ -4801,24 +4822,24 @@ msgstr "“%s” şablonu XXXXXX içermiyor"
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "“%s” simgesel bağını okuma başarısız: %s"
 
-#: glib/giochannel.c:1393
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "“%s”-“%s” dönüştürücüsü açılamıyor: %s"
 
-#: glib/giochannel.c:1738
+#: glib/giochannel.c:1741
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "g_io_channel_read_line_string içinde ham okuma yapılamıyor"
 
-#: glib/giochannel.c:1785 glib/giochannel.c:2043 glib/giochannel.c:2130
+#: glib/giochannel.c:1788 glib/giochannel.c:2046 glib/giochannel.c:2133
 msgid "Leftover unconverted data in read buffer"
 msgstr "Okuma tampon belleğinde kalıntı çevrilmemiş veri"
 
-#: glib/giochannel.c:1866 glib/giochannel.c:1943
+#: glib/giochannel.c:1869 glib/giochannel.c:1946
 msgid "Channel terminates in a partial character"
 msgstr "Kanal kısmi bir karakterde sonlanıyor"
 
-#: glib/giochannel.c:1929
+#: glib/giochannel.c:1932
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "g_io_channel_read_to_end içinde ham okuma başarısız"
 
@@ -4858,8 +4879,8 @@ msgid "Key file contains unsupported encoding “%s”"
 msgstr "Anahtar dosya desteklenmeyen “%s” kodlamasını içeriyor"
 
 #: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3339 glib/gkeyfile.c:3469 glib/gkeyfile.c:3601
-#: glib/gkeyfile.c:3747 glib/gkeyfile.c:3976 glib/gkeyfile.c:4043
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Anahtar dosyasında “%s” grubu yok"
@@ -4896,31 +4917,31 @@ msgstr ""
 "“%2$s” grubundaki “%1$s” anahtarı “%4$s” değerine sahip olması beklenirken "
 "“%3$s” değerine sahip"
 
-#: glib/gkeyfile.c:4283
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Anahtar dosyası satır sonunda çıkış karakteri içeriyor"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "“%s” anahtar dosyası geçersiz çıkış dizisi içeriyor"
 
-#: glib/gkeyfile.c:4449
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "“%s” değeri bir sayı olarak yorumlanamıyor."
 
-#: glib/gkeyfile.c:4463
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "“%s”, tamsayı değeri aralık dışında"
 
-#: glib/gkeyfile.c:4496
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "“%s” değeri bir gerçel sayı olarak yorumlanamıyor."
 
-#: glib/gkeyfile.c:4535
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "“%s” değeri mantıksal değer olarak yorumlanamıyor."
@@ -5010,11 +5031,11 @@ msgstr ""
 "başlatmak istemeksizin “ve” işareti kullandınız — “ve” işaretini &amp; "
 "olarak kullanabilirsiniz"
 
-#: glib/gmarkup.c:1187
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Belge bir öge ile başlamalıdır (örneğin <kitap>)"
 
-#: glib/gmarkup.c:1227
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5023,7 +5044,7 @@ msgstr ""
 "“<” karakterinden sonra gelen “%s” geçerli bir karakter değil; bir öge adı "
 "başlatmamalı"
 
-#: glib/gmarkup.c:1270
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5031,7 +5052,12 @@ msgid ""
 msgstr ""
 "Tuhaf karakter “%s”, “%s” boş öge etiketinin sonunda “>” karakteri bekledi"
 
-#: glib/gmarkup.c:1352
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "“%s” ögesinde çok fazla öznitelik var"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5039,7 +5065,7 @@ msgstr ""
 "Tuhaf karakter “%1$s”, “%3$s” ögesinin “%2$s” özniteliğinin sonunda “=” "
 "karakteri bekledi"
 
-#: glib/gmarkup.c:1394
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5050,7 +5076,7 @@ msgstr ""
 "“>”, “/” karakteri veya bir öznitelik bekledi; öznitelik adında geçersiz bir "
 "karakter kullanmış olabilirsiniz"
 
-#: glib/gmarkup.c:1439
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5059,7 +5085,7 @@ msgstr ""
 "Tuhaf karakter “%1$s”, “%3$s” ögesindeki “%2$s” özniteliği için değer "
 "verildiğinde eşittir işaretinden sonra tırnak işareti beklendi"
 
-#: glib/gmarkup.c:1573
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5068,7 +5094,7 @@ msgstr ""
 "“</” karakterlerini takip eden “%s” geçerli bir karakter değildir; “%s”, öge "
 "adı ile başlamamalı"
 
-#: glib/gmarkup.c:1611
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5077,27 +5103,27 @@ msgstr ""
 "“%s”, kapalı öge adı “%s” ardından gelebilecek bir karakter değil; izin "
 "verilen karakter ise “>”"
 
-#: glib/gmarkup.c:1623
+#: glib/gmarkup.c:1637
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "“%s” ögesi kapatılmış, hiçbir öge şu anda açık değil"
 
-#: glib/gmarkup.c:1632
+#: glib/gmarkup.c:1646
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "“%s” ögesi kapatılmış, ancak “%s” şu an açık olan ögedir"
 
-#: glib/gmarkup.c:1785
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Belge boş veya yalnızca boşluk karakteri içeriyor"
 
-#: glib/gmarkup.c:1799
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "Belge, açık açı parantezi “<” işaretinden hemen sonra beklenmedik biçimde "
 "sonlandı"
 
-#: glib/gmarkup.c:1807 glib/gmarkup.c:1852
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5106,7 +5132,7 @@ msgstr ""
 "Belge, ögeleri hala açıkken beklenmedik biçimde sonlandı - son açılan öge: "
 "“%s”"
 
-#: glib/gmarkup.c:1815
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5115,19 +5141,19 @@ msgstr ""
 "Belge beklenmedik biçimde sonlandı, etiketi bitiren kapalı açı parantezi ile "
 "biten <%s/> beklendi"
 
-#: glib/gmarkup.c:1821
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Belge bir öge adının içinde beklenmedik biçimde sonlandı"
 
-#: glib/gmarkup.c:1827
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Belge bir öznitelik adı içinde beklenmedik biçimde sonlandı"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Belge bir öge-açma etiketi içinde beklenmedik biçimde sonlandı."
 
-#: glib/gmarkup.c:1838
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5135,24 +5161,24 @@ msgstr ""
 "Belge öznitelik adını takip eden eşittir işaretinden sonra beklenmedik "
 "biçimde sonlandı; öznitelik değeri yok"
 
-#: glib/gmarkup.c:1845
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Belge bir öznitelik değeri içinde iken beklenmedik biçimde sonlandı"
 
-#: glib/gmarkup.c:1862
+#: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Belge, “%s” ögesinin kapatma etiketi içinde beklenmedik biçimde sonlandı"
 
-#: glib/gmarkup.c:1866
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
 "Belge, açık olmayan bir öge için kapatma etiketi içinde beklenmedik biçimde "
 "sonlandı"
 
-#: glib/gmarkup.c:1872
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Belge bir yorum veya işlem talimatı içindeyken beklenmedik biçimde sonlandı"
@@ -5211,7 +5237,7 @@ msgstr "%s seçeneği işlenirken hata"
 msgid "Missing argument for %s"
 msgstr "%s için argüman eksik"
 
-#: glib/goption.c:2187
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Bilinmeyen seçenek %s"
@@ -5338,7 +5364,7 @@ msgstr "bellek alma başarısız oldu"
 
 #: glib/gregex.c:382
 msgid ") without opening ("
-msgstr "( açılmadan )"
+msgstr "( olmadan )"
 
 #: glib/gregex.c:386
 msgid "code overflow"
@@ -5613,77 +5639,77 @@ msgstr "Metin boştu (veya yalnızca boşluk içeriyordu)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Alt süreçten bilgi okuma başarısızlığı (%s)"
 
-#: glib/gspawn.c:463
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "Alt süreçten bilgi okurken select()’te beklenmeyen hata oluştu (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Alt süreçten bilgi okurken beklenmeyen hata oluştu (%s)"
 
-#: glib/gspawn.c:548
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "waitpid()’de beklenmeyen hata (%s)"
 
-#: glib/gspawn.c:1056 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Alt işlem %ld kodu ile sonlandı"
 
-#: glib/gspawn.c:1064
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Alt işlem, %ld sinyali ile sonlandı"
 
-#: glib/gspawn.c:1071
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Alt işlem %ld sinyali ile durduruldu"
 
-#: glib/gspawn.c:1078
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Alt işlem anormal bir biçimde sonlandı"
 
-#: glib/gspawn.c:1405 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Alt süreç borusundan okuma başarısızlığı (%s)"
 
-#: glib/gspawn.c:1653
+#: glib/gspawn.c:1723
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "“%s” alt süreci üretme başarısız (%s)"
 
-#: glib/gspawn.c:1692
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Çatallama başarısızlığı (%s)"
 
-#: glib/gspawn.c:1841 glib/gspawn-win32.c:381
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "“%s” dizinine değiştirme başarısızlığı (%s)"
 
-#: glib/gspawn.c:1851
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "“%s” alt süreci çalıştırılırken hata oluştu (%s)"
 
-#: glib/gspawn.c:1861
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Alt sürecin girdisi veya çıktısı yönlendirilemedi (%s)"
 
-#: glib/gspawn.c:1870
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Alt süreç çatallanamadı (%s)"
 
-#: glib/gspawn.c:1878
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Alt süreç “%s” çalıştırılırken bilinmeyen hata oluştu"
 
-#: glib/gspawn.c:1902
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Alt süreç borusundan yeterli bilgi okunamadı (%s)"
@@ -5735,207 +5761,207 @@ msgstr ""
 "Alt süreçten bilgi okurken g_io_channel_win32_poll() işleminde beklenmeyen "
 "hata"
 
-#: glib/gstrfuncs.c:3301 glib/gstrfuncs.c:3403
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
 msgstr "Boş dizge bir sayı değildir"
 
-#: glib/gstrfuncs.c:3325
+#: glib/gstrfuncs.c:3333
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” işaretli bir sayı değil"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3439
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "“%s” sayısı sınırların dışındadır [%s, %s]"
 
-#: glib/gstrfuncs.c:3429
+#: glib/gstrfuncs.c:3437
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” işaretsiz bir sayı değil"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "Bellek ayrılamadı"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Karakter UTF-8 için sınırlarının dışında"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Dönüşüm girdisi içinde geçersiz dizi"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Karakter UTF-16 sınırlarının dışında"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2326
+#: glib/gutils.c:2756
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2328
+#: glib/gutils.c:2758
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2330
+#: glib/gutils.c:2760
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2332
+#: glib/gutils.c:2762
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2334
+#: glib/gutils.c:2764
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2336
+#: glib/gutils.c:2766
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2340
+#: glib/gutils.c:2770
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2342
+#: glib/gutils.c:2772
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2344
+#: glib/gutils.c:2774
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2346
+#: glib/gutils.c:2776
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2348
+#: glib/gutils.c:2778
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2350
+#: glib/gutils.c:2780
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2354
+#: glib/gutils.c:2784
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2356
+#: glib/gutils.c:2786
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2358
+#: glib/gutils.c:2788
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2360
+#: glib/gutils.c:2790
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2362
+#: glib/gutils.c:2792
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2364
+#: glib/gutils.c:2794
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2368
+#: glib/gutils.c:2798
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2370
+#: glib/gutils.c:2800
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2372
+#: glib/gutils.c:2802
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2374
+#: glib/gutils.c:2804
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2376
+#: glib/gutils.c:2806
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2378
+#: glib/gutils.c:2808
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2412 glib/gutils.c:2529
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u bayt"
 
-#: glib/gutils.c:2416
+#: glib/gutils.c:2846
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2483
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s bayt"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2488
+#: glib/gutils.c:2918
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5946,36 +5972,42 @@ msgstr[0] "%s bit"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2542
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2547
+#: glib/gutils.c:2977
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2552
+#: glib/gutils.c:2982
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2557
+#: glib/gutils.c:2987
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2562
+#: glib/gutils.c:2992
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2567
+#: glib/gutils.c:2997
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "“%s” adresinde hata — grup özniteliği hatalı oluşturulmuş"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "%s, %s konumunda bağlandı\n"
+
 #~ msgid "; ignoring override for this key.\n"
 #~ msgstr "; bu anahtar için üzerine yazma göz ardı ediliyor.\n"
 
index 8f51b67..a659413 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
 # Ukrainian translation of GLIB library.
 # Copyright (C) 2001-2004 Free Software Foundation, Inc.
+#
 # Yuri Syrota <rasta@cvs.gnome.org>, 2001, 2004.
-# Maxim Dziumanenko <dziumanenko@gmail.com>, 2004-2009
+# Maxim Dziumanenko <dziumanenko@gmail.com>, 2004-2009.
 # wanderlust <wanderlust@ukr.net>, 2009.
 # Mykola Tkach <Stuartlittle1970@gmail.com>, 2014.
-#
+# Yuri Chornoivan <yurchor@ukr.net>, 2020.
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-04-06 16:28+0300\n"
-"PO-Revision-Date: 2014-03-27 18:44+0300\n"
-"Last-Translator: Mykola Tkach <Stuartlittle1970@gmail.com>\n"
-"Language-Team: Ukrainian <Ukrainian <uk@li.org>>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
+"POT-Creation-Date: 2020-03-06 12:58+0000\n"
+"PO-Revision-Date: 2020-03-17 16:47+0200\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<"
+"=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 20.03.70\n"
+
+#: gio/gapplication.c:500
+msgid "GApplication options"
+msgstr "Параметри GApplication"
+
+#: gio/gapplication.c:500
+msgid "Show GApplication options"
+msgstr "Показати параметри GApplication"
 
-#: ../gio/gapplication.c:509
+#: gio/gapplication.c:545
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 "Запустити GApplication у режимі сервісу (використовувати з сервісних файлів "
 "D-Bus)"
 
-#: ../gio/gapplication.c:514
-msgid "GApplication options"
-msgstr "Параметри GApplication"
+#: gio/gapplication.c:557
+#| msgid "List applications"
+msgid "Override the application’s ID"
+msgstr "Перевизначити ідентифікатор програми"
 
-#: ../gio/gapplication.c:514
-msgid "Show GApplication options"
-msgstr "Ð\9fоказаÑ\82и Ð¿Ð°Ñ\80амеÑ\82Ñ\80и GApplication"
+#: gio/gapplication.c:569
+msgid "Replace the running instance"
+msgstr "Ð\97амÑ\96ниÑ\82и Ð·Ð°Ð¿Ñ\83Ñ\89ений ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ\8fÑ\80"
 
-#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
-#: ../gio/gresource-tool.c:473 ../gio/gsettings-tool.c:508
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
 msgid "Print help"
 msgstr "Надрукувати довідку"
 
-#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:474
-#: ../gio/gresource-tool.c:542
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
 msgid "[COMMAND]"
 msgstr "[КОМАНДА]"
 
-#: ../gio/gapplication-tool.c:49
+#: gio/gapplication-tool.c:49 gio/gio-tool.c:228
 msgid "Print version"
 msgstr "Вивести номер версії"
 
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:514
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
 msgid "Print version information and exit"
 msgstr "Вивести інформацію про версію і вийти"
 
-#: ../gio/gapplication-tool.c:52
+#: gio/gapplication-tool.c:52
 msgid "List applications"
-msgstr "Вивести перелік додатків"
+msgstr "Вивести список програм"
 
-#: ../gio/gapplication-tool.c:53
+#: gio/gapplication-tool.c:53
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr ""
-"Ð\92ивеÑ\81Ñ\82и Ð¿ÐµÑ\80елÑ\96к Ð²Ñ\81Ñ\82ановлениÑ\85 Ð°ÐºÑ\82ивованиÑ\85 Ð¿Ð¾ D-Bus Ð´Ð¾Ð´Ð°Ñ\82кÑ\96в (по desktop-"
-"файлах)"
+"Ð\92ивеÑ\81Ñ\82и Ð¿ÐµÑ\80елÑ\96к Ð²Ñ\81Ñ\82ановлениÑ\85 Ð¿Ñ\80идаÑ\82ниÑ\85 Ð´Ð¾ Ð°ÐºÑ\82иваÑ\86Ñ\96Ñ\97 Ð·Ð° D-Bus Ð¿Ñ\80огÑ\80ам (за"
+" файлами desktop)"
 
-#: ../gio/gapplication-tool.c:55
+#: gio/gapplication-tool.c:55
 msgid "Launch an application"
-msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82и Ð´Ð¾Ð´Ð°Ñ\82ок"
+msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82и Ð¿Ñ\80огÑ\80амÑ\83"
 
-#: ../gio/gapplication-tool.c:56
+#: gio/gapplication-tool.c:56
 msgid "Launch the application (with optional files to open)"
-msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82и Ð´Ð¾Ð´Ð°Ñ\82ок (з Ð²Ñ\96дкÑ\80иÑ\82Ñ\82Ñ\8fм Ð½ÐµÐ¾Ð±Ð¾Ð²â\80\99Ñ\8fзковиÑ\85 файлів)"
+msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82и Ð¿Ñ\80огÑ\80амÑ\83 (Ñ\96з Ð½ÐµÐ¾Ð±Ð¾Ð²'Ñ\8fзковим Ð²Ñ\96дкÑ\80иÑ\82Ñ\82Ñ\8fм файлів)"
 
-#: ../gio/gapplication-tool.c:57
-msgid "APPID [FILE...]"
-msgstr "ІД_ДОДАТКИ [ФАЙЛ…]"
+#: gio/gapplication-tool.c:57
+#| msgid "APPID [FILE...]"
+msgid "APPID [FILE…]"
+msgstr "ІД_ПРОГРАМИ [ФАЙЛ…]"
 
-#: ../gio/gapplication-tool.c:59
+#: gio/gapplication-tool.c:59
 msgid "Activate an action"
 msgstr "Активувати дію"
 
-#: ../gio/gapplication-tool.c:60
+#: gio/gapplication-tool.c:60
 msgid "Invoke an action on the application"
-msgstr "Ð\92икликаÑ\82и Ð´Ñ\96Ñ\8e Ð´Ð¾Ð´Ð°Ñ\82кÑ\83"
+msgstr "Ð\92икликаÑ\82и Ð´Ñ\96Ñ\8e Ð¿Ñ\80огÑ\80ами"
 
-#: ../gio/gapplication-tool.c:61
+#: gio/gapplication-tool.c:61
 msgid "APPID ACTION [PARAMETER]"
-msgstr "Ð\86Ð\94\94Ð\9eÐ\94Ð\90ТÐ\9aУ ДІЯ [ПАРАМЕТР]"
+msgstr "Ð\86Ð\94\9fРÐ\9eÐ\93РÐ\90Ð\9cÐ\98 ДІЯ [ПАРАМЕТР]"
 
-#: ../gio/gapplication-tool.c:63
+#: gio/gapplication-tool.c:63
 msgid "List available actions"
 msgstr "Вивести перелік доступних дій"
 
-#: ../gio/gapplication-tool.c:64
+#: gio/gapplication-tool.c:64
 msgid "List static actions for an application (from .desktop file)"
-msgstr "Ð\92ивеÑ\81Ñ\82и Ð¿ÐµÑ\80елÑ\96к Ñ\81Ñ\82аÑ\82иÑ\87ниÑ\85 Ð´Ñ\96й Ð´Ð»Ñ\8f Ð´Ð¾Ð´Ð°Ñ\82кÑ\83 (з desktop-Ñ\84айлÑ\83)"
+msgstr "Ð\92ивеÑ\81Ñ\82и Ð¿ÐµÑ\80елÑ\96к Ñ\81Ñ\82аÑ\82иÑ\87ниÑ\85 Ð´Ñ\96й Ð´Ð»Ñ\8f Ð¿Ñ\80огÑ\80ами (з desktop-Ñ\84айла)"
 
-#: ../gio/gapplication-tool.c:65 ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
 msgid "APPID"
-msgstr "Ð\86Ð\94\94Ð\9eÐ\94Ð\90ТÐ\9aИ"
+msgstr "Ð\86Ð\94\9fРÐ\9eÐ\93РÐ\90Ð\9cИ"
 
-#: ../gio/gapplication-tool.c:70 ../gio/gapplication-tool.c:133
-#: ../gio/gdbus-tool.c:90
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
+#: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "КОМАНДА"
 
-#: ../gio/gapplication-tool.c:70
+#: gio/gapplication-tool.c:70
 msgid "The command to print detailed help for"
 msgstr "Команда, за якою виводиться детальна довідка"
 
-#: ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:71
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
-msgstr "Ð\86денÑ\82иÑ\84Ñ\96каÑ\82оÑ\80 Ð´Ð¾Ð´Ð°Ñ\82кÑ\83 у форматі D-Bus (напр.: org.example.viewer)"
+msgstr "Ð\86денÑ\82иÑ\84Ñ\96каÑ\82оÑ\80 Ð¿Ñ\80огÑ\80ами у форматі D-Bus (напр.: org.example.viewer)"
 
-#: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589
-#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:480
-#: ../gio/gresource-tool.c:546
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "ФАЙЛ"
 
-#: ../gio/gapplication-tool.c:72
-msgid "Optional relative or relative filenames, or URIs to open"
-msgstr "Необов’язкові відносні імена файлів або адреси URI для відкривання"
+#: gio/gapplication-tool.c:72
+#| msgid "Optional relative or relative filenames, or URIs to open"
+msgid "Optional relative or absolute filenames, or URIs to open"
+msgstr ""
+"Необов'язкові відносні або абсолютні назви файлів чи адреси URI для"
+" відкривання"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:73
 msgid "ACTION"
 msgstr "ДІЯ"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:73
 msgid "The action name to invoke"
-msgstr "Ð\86мâ\80\99Ñ\8f Ð´Ñ\96Ñ\97, Ñ\89о Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f"
+msgstr "Ð\9dазва Ð´Ñ\96Ñ\97, Ñ\8fкÑ\83 Ñ\81лÑ\96д Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ñ\82и"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:74
 msgid "PARAMETER"
 msgstr "ПАРАМЕТР"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:74
 msgid "Optional parameter to the action invocation, in GVariant format"
-msgstr "Необовязковий параметр для виклику дії у форматі GVariant"
+msgstr "Необов'язковий параметр для виклику дії у форматі GVariant"
 
-#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:511
-#: ../gio/gsettings-tool.c:594
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -147,103 +160,111 @@ msgstr ""
 "Невідома команда %s\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:101
+#: gio/gapplication-tool.c:101
 msgid "Usage:\n"
 msgstr "Використання:\n"
 
-#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:536
-#: ../gio/gsettings-tool.c:628
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
 msgid "Arguments:\n"
 msgstr "Аргументи:\n"
 
-#: ../gio/gapplication-tool.c:133
-msgid "[ARGS...]"
-msgstr "[АРГУМЕНТИ…]"
+#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
+#| msgid "[ARGS...]"
+msgid "[ARGS…]"
+msgstr "[ПАРАМЕТРИ…]"
 
-#: ../gio/gapplication-tool.c:134
+#: gio/gapplication-tool.c:134
 #, c-format
 msgid "Commands:\n"
 msgstr "Команди:\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
-#: ../gio/gapplication-tool.c:146
+#: gio/gapplication-tool.c:146
 #, c-format
+#| msgid ""
+#| "Use '%s help COMMAND' to get detailed help.\n"
+#| "\n"
 msgid ""
-"Use '%s help COMMAND' to get detailed help.\n"
+"Use “%s help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
-"Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83йÑ\82е ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\83 «%s help КОМАНДА» для отримання детальної довідки.\n"
+"СкоÑ\80иÑ\81Ñ\82айÑ\82еÑ\81Ñ\8f ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ñ\8e «%s help КОМАНДА» для отримання детальної довідки.\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:165
+#: gio/gapplication-tool.c:165
 #, c-format
 msgid ""
 "%s command requires an application id to directly follow\n"
 "\n"
 msgstr ""
-"командÑ\96 %s Ð¿Ð¾Ñ\82Ñ\80Ñ\96бен Ñ\96денÑ\82иÑ\84Ñ\96каÑ\82оÑ\80 Ð´Ð¾Ð´Ð°Ñ\82кÑ\83\n"
+"командÑ\96 %s Ð¿Ð¾Ñ\82Ñ\80Ñ\96бен Ñ\96денÑ\82иÑ\84Ñ\96каÑ\82оÑ\80 Ð¿Ñ\80огÑ\80ами\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:171
+#: gio/gapplication-tool.c:171
 #, c-format
-msgid "invalid application id: '%s'\n"
-msgstr "недприпустимий ідентифікатор додатку: «%s»\n"
+#| msgid "invalid application id: '%s'\n"
+msgid "invalid application id: “%s”\n"
+msgstr "некоректний ідентифікатор програми: «%s»\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
-#: ../gio/gapplication-tool.c:182
+#: gio/gapplication-tool.c:182
 #, c-format
+#| msgid ""
+#| "'%s' takes no arguments\n"
+#| "\n"
 msgid ""
-"'%s' takes no arguments\n"
+"“%s” takes no arguments\n"
 "\n"
 msgstr ""
 "«%s» не приймає аргументів\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:262
+#: gio/gapplication-tool.c:266
 #, c-format
 msgid "unable to connect to D-Bus: %s\n"
-msgstr "неможливо підєднатися до D-Bus: %s\n"
+msgstr "неможливо під'єднатися до D-Bus: %s\n"
 
-#: ../gio/gapplication-tool.c:282
+#: gio/gapplication-tool.c:286
 #, c-format
 msgid "error sending %s message to application: %s\n"
-msgstr "помилка Ð²Ñ\96дпÑ\80авки Ð¿Ð¾Ð²Ñ\96домленнÑ\8f %s Ð´Ð¾Ð´Ð°Ñ\82кÑ\83: %s\n"
+msgstr "помилка Ð½Ð°Ð´Ñ\81иланнÑ\8f Ð¿Ð¾Ð²Ñ\96домленнÑ\8f %s Ð´Ð¾ Ð¿Ñ\80огÑ\80ами %s\n"
 
-#: ../gio/gapplication-tool.c:313
-#, c-format
+#: gio/gapplication-tool.c:317
 msgid "action name must be given after application id\n"
-msgstr "ім’я дії повинно вказуватися після ідентифікатора додатку\n"
+msgstr "назву дії слід вказувати після ідентифікатора програми\n"
 
-#: ../gio/gapplication-tool.c:321
+#: gio/gapplication-tool.c:325
 #, c-format
+#| msgid ""
+#| "invalid action name: '%s'\n"
+#| "action names must consist of only alphanumerics, '-' and '.'\n"
 msgid ""
-"invalid action name: '%s'\n"
-"action names must consist of only alphanumerics, '-' and '.'\n"
+"invalid action name: “%s”\n"
+"action names must consist of only alphanumerics, “-” and “.”\n"
 msgstr ""
-"непÑ\80ипÑ\83Ñ\81Ñ\82име Ñ\96мâ\80\99Ñ\8f дії: «%s»\n"
-"ім’я може складатися лише з літер, цифр і символів «-» і «.»\n"
+"некоÑ\80екÑ\82на Ð½Ð°Ð·Ð²Ð° дії: «%s»\n"
+"Назва дії може складатися лише з літер, цифр і символів «-» і «.»\n"
 
-#: ../gio/gapplication-tool.c:340
+#: gio/gapplication-tool.c:344
 #, c-format
 msgid "error parsing action parameter: %s\n"
 msgstr "помилка розбору параметра дії: %s\n"
 
-#: ../gio/gapplication-tool.c:352
-#, c-format
+#: gio/gapplication-tool.c:356
 msgid "actions accept a maximum of one parameter\n"
 msgstr "дії приймають максимум один параметр\n"
 
-#: ../gio/gapplication-tool.c:407
-#, c-format
+#: gio/gapplication-tool.c:411
 msgid "list-actions command takes only the application id"
-msgstr "команда list-actions Ð¿Ñ\80иймаÑ\94 Ð»Ð¸Ñ\88е Ñ\96денÑ\82иÑ\84Ñ\96каÑ\82оÑ\80 Ð´Ð¾Ð´Ð°Ñ\82кÑ\83"
+msgstr "команда list-actions Ð¿Ñ\80иймаÑ\94 Ð»Ð¸Ñ\88е Ñ\96денÑ\82иÑ\84Ñ\96каÑ\82оÑ\80 Ð¿Ñ\80огÑ\80ами"
 
-#: ../gio/gapplication-tool.c:417
+#: gio/gapplication-tool.c:421
 #, c-format
 msgid "unable to find desktop file for application %s\n"
-msgstr "неможливо знайти desktop-файл для додатку %s\n"
+msgstr "не вдалося знайти desktop-файл для програми %s\n"
 
-#: ../gio/gapplication-tool.c:462
+#: gio/gapplication-tool.c:466
 #, c-format
 msgid ""
 "unrecognised command: %s\n"
@@ -252,291 +273,332 @@ msgstr ""
 "нерозпізнана команда %s\n"
 "\n"
 
-#: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498
-#: ../gio/ginputstream.c:173 ../gio/ginputstream.c:365
-#: ../gio/ginputstream.c:603 ../gio/ginputstream.c:819
-#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:823
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
+#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "До %s передано надто велике значення лічильника"
 
-#: ../gio/gbufferedinputstream.c:891 ../gio/gbufferedoutputstream.c:575
-#: ../gio/gdataoutputstream.c:562
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575
+#: gio/gdataoutputstream.c:562
 msgid "Seek not supported on base stream"
 msgstr "Перехід у базовому потоці не підтримується"
 
-#: ../gio/gbufferedinputstream.c:937
+#: gio/gbufferedinputstream.c:937
 msgid "Cannot truncate GBufferedInputStream"
 msgstr "Не вдалося урізати GMemoryInputStream"
 
-#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1008
-#: ../gio/giostream.c:278 ../gio/goutputstream.c:1464
+#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "Потік вже закрито"
 
-#: ../gio/gbufferedoutputstream.c:612 ../gio/gdataoutputstream.c:592
+#: gio/gbufferedoutputstream.c:612 gio/gdataoutputstream.c:592
 msgid "Truncate not supported on base stream"
 msgstr "Урізання не підтримується у базовому потоці"
 
-#: ../gio/gcancellable.c:310 ../gio/gdbusconnection.c:1896
-#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1417
-#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830
-#: ../gio/gsimpleasyncresult.c:856
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
+#: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
 msgstr "Операцію скасовано"
 
-#: ../gio/gcharsetconverter.c:260
+#: gio/gcharsetconverter.c:260
 msgid "Invalid object, not initialized"
 msgstr "Неправильний об'єкт, не ініціалізований"
 
-#: ../gio/gcharsetconverter.c:281 ../gio/gcharsetconverter.c:309
+#: gio/gcharsetconverter.c:281 gio/gcharsetconverter.c:309
 msgid "Incomplete multibyte sequence in input"
 msgstr "Неправильна багатобайтова послідовність у перетворюваних вхідних даних"
 
-#: ../gio/gcharsetconverter.c:315 ../gio/gcharsetconverter.c:324
+#: gio/gcharsetconverter.c:315 gio/gcharsetconverter.c:324
 msgid "Not enough space in destination"
 msgstr "Бракує простору для результату"
 
-#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:847
-#: ../gio/gdatainputstream.c:1255 ../glib/gconvert.c:438
-#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
-#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289
+#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Неправильна послідовність байтів у перетворюваних вхідних даних"
 
-#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446
-#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Помилка під час перетворення: %s"
 
-#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:975
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "Ініціалізація з можливістю скасування не підтримується"
 
-#: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321
-#: ../glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
-msgid "Conversion from character set '%s' to '%s' is not supported"
-msgstr "Перетворення з набору символів \"%s\" у \"%s\" не підтримується"
+#| msgid "Conversion from character set '%s' to '%s' is not supported"
+msgid "Conversion from character set “%s” to “%s” is not supported"
+msgstr "Підтримки перетворення з набору символів «%s» у «%s» не передбачено"
 
-#: ../gio/gcharsetconverter.c:458 ../glib/gconvert.c:325
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, c-format
-msgid "Could not open converter from '%s' to '%s'"
-msgstr "Не вдається відкрити модуль перетворення з \"%s\" у \"%s\""
+#| msgid "Could not open converter from '%s' to '%s'"
+msgid "Could not open converter from “%s” to “%s”"
+msgstr "Не вдалося відкрити модуль перетворення з «%s» у «%s»"
 
-#: ../gio/gcontenttype.c:335
+#: gio/gcontenttype.c:452
 #, c-format
 msgid "%s type"
 msgstr "тип %s"
 
-#: ../gio/gcontenttype-win32.c:160
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "Невідомий тип"
 
-#: ../gio/gcontenttype-win32.c:161
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
-msgstr "Ñ\82ип Ñ\84айлÑ\83 %s"
+msgstr "Ñ\82ип Ñ\84айлÑ\96в %s"
 
-#: ../gio/gcredentials.c:291 ../gio/gcredentials.c:542
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "У GCredentials містяться некоректні дані"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "Тип GCredentials не реалізовано для цієї ОС"
 
-#: ../gio/gcredentials.c:443
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
-msgstr "Ð\9fÑ\96дÑ\82Ñ\80имка GCredentials Ð´Ð»Ñ\8f Ð²Ð°Ñ\88оÑ\97 Ð¿Ð»Ð°Ñ\82Ñ\84оÑ\80ми Ð²Ñ\96дÑ\81Ñ\82Ñ\83нÑ\8f"
+msgstr "Ð\9fÑ\96дÑ\82Ñ\80имки GCredentials Ð´Ð»Ñ\8f Ð²Ð°Ñ\88оÑ\97 Ð¿Ð»Ð°Ñ\82Ñ\84оÑ\80ми Ð½Ðµ Ð¿ÐµÑ\80едбаÑ\87ено"
 
-#: ../gio/gcredentials.c:487
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "Тип GCredentials не містить ідентифікатора процесу для цієї ОС"
 
-#: ../gio/gcredentials.c:536
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Спуфінг облікових даних неможливий у цій ОС"
 
-#: ../gio/gdatainputstream.c:304
+#: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
 msgstr "Неочікуваний передчасний кінець потоку"
 
-#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236
-#: ../gio/gdbusaddress.c:317
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
-msgid "Unsupported key '%s' in address entry '%s'"
+#| msgid "Unsupported key '%s' in address entry '%s'"
+msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Непідтримуваний ключ «%s» у елементі адреси «%s»"
 
-#: ../gio/gdbusaddress.c:175
+#: gio/gdbusaddress.c:171
+#, c-format
+#| msgid "Meaningless key/value pair combination in address entry '%s'"
+msgid "Meaningless key/value pair combination in address entry “%s”"
+msgstr "Беззмістовна комбінація ключ/значення у елементі адреси «%s»"
+
+#: gio/gdbusaddress.c:180
 #, 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)"
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
 msgstr ""
-"Неправильна адреса «%s» (потрібен шлях, тимчасовий каталог або один з "
+"Неправильна адреса «%s» (потрібен шлях, каталог, тимчасовий каталог або один"
+" з "
 "абстрактних ключів)"
 
-#: ../gio/gdbusaddress.c:188
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Meaningless key/value pair combination in address entry '%s'"
-msgstr "Беззмістовна комбінація ключ/значення у елементі адреси «%s»"
+#| msgid "Error in address '%s' - the port attribute is malformed"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Помилка в адресі «%s» — неправильне форматування атрибута «%s»"
 
-#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
-msgid "Error in address '%s' - the port attribute is malformed"
-msgstr "Помилка у адресі «%s» — неправильний формат атрибуту порта"
+#| msgid "Unknown or unsupported transport '%s' for address '%s'"
+msgid "Unknown or unsupported transport “%s” for address “%s”"
+msgstr "Невідомий або непідтримуваний канал передавання «%s» для адреси «%s»"
 
-#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343
+#: gio/gdbusaddress.c:461
 #, c-format
-msgid "Error in address '%s' - the family attribute is malformed"
-msgstr "Помилка у адресі «%s» — неправильний формат атрибуту родини"
+#| msgid "Address element '%s' does not contain a colon (:)"
+msgid "Address element “%s” does not contain a colon (:)"
+msgstr "У елементі адреси «%s» немає двокрапки (:)"
 
-#: ../gio/gdbusaddress.c:452
+#: gio/gdbusaddress.c:470
 #, c-format
-msgid "Address element '%s' does not contain a colon (:)"
-msgstr "У ÐµÐ»ÐµÐ¼ÐµÐ½Ñ\82Ñ\96 Ð°Ð´Ñ\80еÑ\81и Â«%s» Ð²Ñ\96дÑ\81Ñ\83Ñ\82нÑ\8f Ð´Ð²Ð¾ÐºÑ\80апка (:)"
+msgid "Transport name in address element “%s” must not be empty"
+msgstr "Ð\9dазва ÐºÐ°Ð½Ð°Ð»Ñ\83 Ð¿ÐµÑ\80едаваннÑ\8f Ñ\83 ÐµÐ»ÐµÐ¼ÐµÐ½Ñ\82Ñ\96 Ð°Ð´Ñ\80еÑ\81и Â«%s» Ð¼Ð°Ñ\94 Ð±Ñ\83Ñ\82и Ð½ÐµÐ¿Ð¾Ñ\80ожнÑ\8cоÑ\8e"
 
-#: ../gio/gdbusaddress.c:473
+#: gio/gdbusaddress.c:491
 #, c-format
+#| msgid ""
+#| "Key/Value pair %d, '%s', in address element '%s' does not contain an "
+#| "equal sign"
 msgid ""
-"Key/Value pair %d, '%s', in address element '%s' does not contain an equal "
+"Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr ""
 "Пара ключ/значення %d, «%s», у елементі адреси «%s» не містить знака рівності"
 
-#: ../gio/gdbusaddress.c:487
+#: gio/gdbusaddress.c:502
+#, c-format
+#| msgid ""
+#| "Key/Value pair %d, '%s', in address element '%s' does not contain an "
+#| "equal sign"
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr ""
+"Пара ключ/значення %d, «%s», у елементі адреси «%s» має містити непорожній"
+" ключ"
+
+#: gio/gdbusaddress.c:516
 #, c-format
+#| msgid ""
+#| "Error unescaping key or value in Key/Value pair %d, '%s', in address "
+#| "element '%s'"
 msgid ""
-"Error unescaping key or value in Key/Value pair %d, '%s', in address element "
-"'%s'"
+"Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
+"“%s”"
 msgstr ""
 "Помилка зняття екранування ключа або значення у парі ключ/значення %d, «%s», "
 "у елементі адреси «%s»"
 
-#: ../gio/gdbusaddress.c:565
+#: gio/gdbusaddress.c:588
 #, c-format
+#| msgid ""
+#| "Error in address '%s' - the unix transport requires exactly one of the "
+#| "keys 'path' or 'abstract' to be set"
 msgid ""
-"Error in address '%s' - the unix transport requires exactly one of the keys "
-"'path' or 'abstract' to be set"
+"Error in address “%s” — the unix transport requires exactly one of the keys "
+"“path” or “abstract” to be set"
 msgstr ""
 "Помилка у адресі «%s» — для транспорту unix потрібен лише один встановлений "
 "ключ «path» або «abstract»"
 
-#: ../gio/gdbusaddress.c:601
+#: gio/gdbusaddress.c:624
 #, c-format
-msgid "Error in address '%s' - the host attribute is missing or malformed"
+#| msgid "Error in address '%s' - the host attribute is missing or malformed"
+msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
-"Помилка у адресі «%s» — атрибут вузла відсутній або має неправильний формат"
+"Помилка у адресі «%s» — немає атрибута вузла або вказано значення у"
+" помилковому форматі"
 
-#: ../gio/gdbusaddress.c:615
+#: gio/gdbusaddress.c:638
 #, c-format
-msgid "Error in address '%s' - the port attribute is missing or malformed"
+#| msgid "Error in address '%s' - the port attribute is missing or malformed"
+msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
-"Помилка у адресі «%s» — атрибут порта відсутній або має неправильний формат"
+"Помилка в адресі «%s» — атрибут не вказано атрибут порту або помилкове"
+" форматування атрибута"
 
-#: ../gio/gdbusaddress.c:629
+#: gio/gdbusaddress.c:652
 #, c-format
-msgid "Error in address '%s' - the noncefile attribute is missing or malformed"
+#| msgid ""
+#| "Error in address '%s' - the noncefile attribute is missing or malformed"
+msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
-"Помилка у адресі «%s» — атрибут noncefile відсутній або має неправильний "
-"формат"
+"Помилка в адресі «%s» — атрибут не вказано атрибут noncefile або помилкове"
+" форматування атрибута"
 
-#: ../gio/gdbusaddress.c:650
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "Помилка автоматичного запуску: "
 
-#: ../gio/gdbusaddress.c:658
-#, c-format
-msgid "Unknown or unsupported transport '%s' for address '%s'"
-msgstr "Невідомий або непідтримуваний транспорт «%s» для адреси «%s»"
-
-#: ../gio/gdbusaddress.c:694
+#: gio/gdbusaddress.c:726
 #, c-format
-msgid "Error opening nonce file '%s': %s"
-msgstr "Сталася помилка при відкриванні nonce-файлу «%s»: %s"
+#| msgid "Error opening nonce file '%s': %s"
+msgid "Error opening nonce file “%s”: %s"
+msgstr "Сталася помилка при відкриванні nonce-файла «%s»: %s"
 
-#: ../gio/gdbusaddress.c:712
+#: gio/gdbusaddress.c:745
 #, c-format
-msgid "Error reading from nonce file '%s': %s"
-msgstr "Сталася помилка при читанні nonce-файлу «%s»: %s"
+#| msgid "Error reading from nonce file '%s': %s"
+msgid "Error reading from nonce file “%s”: %s"
+msgstr "Сталася помилка при читанні nonce-файла «%s»: %s"
 
-#: ../gio/gdbusaddress.c:721
+#: gio/gdbusaddress.c:754
 #, c-format
-msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
+#| msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
+msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
-"Сталася помилка при читанні nonce-файлу «%s», очікувалося 16 байтів, "
+"Сталася помилка при читанні nonce-файла «%s», очікувалося 16 байтів, "
 "отримано %d"
 
-#: ../gio/gdbusaddress.c:739
+#: gio/gdbusaddress.c:772
 #, c-format
-msgid "Error writing contents of nonce file '%s' to stream:"
-msgstr "Сталася помилка запису вмісту nonce-файлу «%s» у потік:"
+#| msgid "Error writing contents of nonce file '%s' to stream:"
+msgid "Error writing contents of nonce file “%s” to stream:"
+msgstr "Сталася помилка запису вмісту nonce-файла «%s» до потоку:"
 
-#: ../gio/gdbusaddress.c:958
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "Вказана адреса порожня"
 
-#: ../gio/gdbusaddress.c:1028
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr ""
 "Неможливо породити процес шини повідомлень, якщо встановлений атрибут setuid"
 
-#: ../gio/gdbusaddress.c:1035
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Неможливо породити процес шини повідомлень без ідентифікатора машини:"
 
-#: ../gio/gdbusaddress.c:1077
-#, c-format
-msgid "Error spawning command line '%s': "
-msgstr "Сталася помилка при створенні процесу командного рядка «%s»: "
-
-#: ../gio/gdbusaddress.c:1294
+#: gio/gdbusaddress.c:1108
 #, c-format
-msgid "(Type any character to close this window)\n"
-msgstr "(Щоб закрити це вікно, уведіть будь-який символ)\n"
+msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
+msgstr "Неможливо автоматично запускати D-Bus без $DISPLAY у X11"
 
-#: ../gio/gdbusaddress.c:1425
+#: gio/gdbusaddress.c:1150
 #, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr "Сеанс dbus не запущений, і автозапуск не виконався"
+#| msgid "Error spawning command line '%s': "
+msgid "Error spawning command line “%s”: "
+msgstr "Помилка запуску рядка команди «%s»: "
 
-#: ../gio/gdbusaddress.c:1446
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Не вдалося визначити адресу сеансової шини (не реалізовано для цієї ОС)"
 
-#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
+#| msgid ""
+#| "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment "
+#| "variable - unknown value '%s'"
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"- unknown value '%s'"
+"— unknown value “%s”"
 msgstr ""
-"Не вдалося визначити адресу шини зі значення змінної оточення "
+"Не вдалося визначити адресу шини зі значення змінної середовища "
 "DBUS_STARTER_BUS_TYPE — невідоме значення «%s»"
 
-#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr ""
-"Не вдалося визначити адресу шини, оскільки значення змінної оточення "
+"Не вдалося визначити адресу шини, оскільки значення змінної середовища "
 "DBUS_STARTER_BUS_TYPE не встановлено"
 
-#: ../gio/gdbusaddress.c:1565
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Невідомий тип шини %d"
 
-#: ../gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Неочікувана відсутність вмісту при читанні рядка"
 
-#: ../gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Неочікувана відсутність вмісту при (надійному) читанні рядка"
 
-#: ../gio/gdbusauth.c:508
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -544,210 +606,253 @@ msgstr ""
 "Перепробувані усі доступні механізми автентифікації (проведено: %s) "
 "(доступно: %s)"
 
-#: ../gio/gdbusauth.c:1170
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Скасовано через GDBusAuthObserver::authorize-authenticated-peer"
 
-#: ../gio/gdbusauthmechanismsha1.c:261
+#: gio/gdbusauthmechanismsha1.c:264
 #, c-format
-msgid "Error when getting information for directory '%s': %s"
-msgstr "Помилка при отриманні інформації про каталог «%s»: %s"
+#| msgid "Error when getting information for directory '%s': %s"
+msgid "Error when getting information for directory “%s”: %s"
+msgstr "Помилка при отриманні відомостей для каталогу «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:273
+#: gio/gdbusauthmechanismsha1.c:276
 #, 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 "Ð\9fомилковÑ\96 Ð¿Ñ\80ава Ð½Ð° ÐºÐ°Ñ\82алог Â«%s». Ð\9eÑ\87Ñ\96кÑ\83валоÑ\81Ñ\8f 0700, отримано 0%o"
+"Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
+msgstr "Ð\9fомилковÑ\96 Ð¿Ñ\80ава Ð½Ð° ÐºÐ°Ñ\82алог Â«%s». Ð\9eÑ\87Ñ\96кÑ\83ваний Ñ\80ежим â\80\94 0700, отримано 0%o"
 
-#: ../gio/gdbusauthmechanismsha1.c:294
+#: gio/gdbusauthmechanismsha1.c:301
 #, c-format
-msgid "Error creating directory '%s': %s"
+#| msgid "Error creating directory '%s': %s"
+msgid "Error creating directory “%s”: %s"
 msgstr "Сталася помилка при створенні каталогу «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:377
+#: gio/gdbusauthmechanismsha1.c:348
 #, c-format
-msgid "Error opening keyring '%s' for reading: "
-msgstr "Сталася помилка при відкриванні в’язки ключів «%s» на читання: "
+#| msgid "Error opening keyring '%s' for reading: "
+msgid "Error opening keyring “%s” for reading: "
+msgstr "Сталася помилка при відкриванні зв'язки ключів «%s» на читання: "
 
-#: ../gio/gdbusauthmechanismsha1.c:401 ../gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:371 gio/gdbusauthmechanismsha1.c:689
 #, c-format
-msgid "Line %d of the keyring at '%s' with content '%s' is malformed"
-msgstr "Некоректний рядок %d у в’язці ключів біля «%s» з вмістом «%s»"
+#| msgid "Line %d of the keyring at '%s' with content '%s' is malformed"
+msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
+msgstr ""
+"Некоректне форматування у рядку %d у зв'язці ключів у «%s» з вмістом «%s»"
 
-#: ../gio/gdbusauthmechanismsha1.c:415 ../gio/gdbusauthmechanismsha1.c:728
+#: gio/gdbusauthmechanismsha1.c:385 gio/gdbusauthmechanismsha1.c:703
 #, c-format
+#| msgid ""
+#| "First token of line %d of the keyring at '%s' with content '%s' is "
+#| "malformed"
 msgid ""
-"First token of line %d of the keyring at '%s' with content '%s' is malformed"
+"First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
-"Некоректна перша лексема у рядку %d у в’язці ключів біля «%s» з вмістом «%s»"
+"Некоректне форматування першої лексеми у рядку %d у зв'язці ключів у «%s» з"
+" вмістом «%s»"
 
-#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:742
+#: gio/gdbusauthmechanismsha1.c:399 gio/gdbusauthmechanismsha1.c:717
 #, c-format
+#| msgid ""
+#| "Second token of line %d of the keyring at '%s' with content '%s' is "
+#| "malformed"
 msgid ""
-"Second token of line %d of the keyring at '%s' with content '%s' is malformed"
+"Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
-"Некоректна друга лексема у рядку %d у в’язці ключів біля «%s» з вмістом «%s»"
+"Некоректне форматування другої лексеми у рядку %d у зв'язці ключів у «%s» з"
+" вмістом «%s»"
 
-#: ../gio/gdbusauthmechanismsha1.c:454
+#: gio/gdbusauthmechanismsha1.c:423
 #, c-format
-msgid "Didn't find cookie with id %d in the keyring at '%s'"
-msgstr "Не вдалося знайти куки з ідентифікатором %d у в’язці ключів «%s»"
+#| msgid "Didn't find cookie with id %d in the keyring at '%s'"
+msgid "Didn’t find cookie with id %d in the keyring at “%s”"
+msgstr "Не вдалося знайти куки з ідентифікатором %d у зв'язці ключів «%s»"
 
-#: ../gio/gdbusauthmechanismsha1.c:532
+#: gio/gdbusauthmechanismsha1.c:505
 #, c-format
-msgid "Error deleting stale lock file '%s': %s"
-msgstr "Сталася помилка при вилученні застарілого файлу блокування «%s»: %s"
+#| msgid "Error deleting stale lock file '%s': %s"
+msgid "Error deleting stale lock file “%s”: %s"
+msgstr "Сталася помилка при вилученні застарілого файла блокування «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:564
+#: gio/gdbusauthmechanismsha1.c:537
 #, c-format
-msgid "Error creating lock file '%s': %s"
-msgstr "Сталася помилка при створенні файлу блокування «%s»: %s"
+#| msgid "Error creating lock file '%s': %s"
+msgid "Error creating lock file “%s”: %s"
+msgstr "Сталася помилка при створенні файла блокування «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:594
+#: gio/gdbusauthmechanismsha1.c:568
 #, c-format
-msgid "Error closing (unlinked) lock file '%s': %s"
-msgstr "Сталася помилка при закриванні (віддаленого) файлу блокування «%s»: %s"
+#| msgid "Error closing (unlinked) lock file '%s': %s"
+msgid "Error closing (unlinked) lock file “%s”: %s"
+msgstr ""
+"Сталася помилка при закриванні (від'єднаного) файла блокування «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:604
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
-msgid "Error unlinking lock file '%s': %s"
-msgstr "Сталася помилка при вилученні файлу блокування «%s»: %s"
+#| msgid "Error unlinking lock file '%s': %s"
+msgid "Error unlinking lock file “%s”: %s"
+msgstr "Сталася помилка при вилученні файла блокування «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:681
+#: gio/gdbusauthmechanismsha1.c:656
 #, c-format
-msgid "Error opening keyring '%s' for writing: "
-msgstr "Сталася помилка при відкриванні в’язки ключів «%s» на запис: "
+#| msgid "Error opening keyring '%s' for writing: "
+msgid "Error opening keyring “%s” for writing: "
+msgstr "Сталася помилка при відкриванні зв'язки ключів «%s» для запису: "
 
-#: ../gio/gdbusauthmechanismsha1.c:878
+#: gio/gdbusauthmechanismsha1.c:852
 #, c-format
-msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
+#| msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
+msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Також, не вдалося вивільнити блокування «%s»: %s) "
 
-#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
-msgstr "Зєднання закрито"
+msgstr "З'єднання закрито"
 
-#: ../gio/gdbusconnection.c:1942
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "Час очікування вичерпано"
 
-#: ../gio/gdbusconnection.c:2577
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
-msgstr "При створенні клієнтського зєднання виявлено непідтримувані прапорці"
+msgstr "При створенні клієнтського з'єднання виявлено непідтримувані прапорці"
 
-#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
 #, 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"
+"No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
-"Інтерфейс «org.freedesktop.DBus.Properties» для шляху %s об’єкту не знайдено"
+"Інтерфейс «org.freedesktop.DBus.Properties» для шляху об'єкта %s не знайдено"
 
-#: ../gio/gdbusconnection.c:4299
+#: gio/gdbusconnection.c:4303
 #, c-format
-msgid "No such property '%s'"
-msgstr "Властивість «%s» відсутня"
+#| msgid "No such property '%s'"
+msgid "No such property “%s”"
+msgstr "Немає властивості «%s»"
 
-#: ../gio/gdbusconnection.c:4311
+#: gio/gdbusconnection.c:4315
 #, c-format
-msgid "Property '%s' is not readable"
+#| msgid "Property '%s' is not readable"
+msgid "Property “%s” is not readable"
 msgstr "Властивість «%s» недоступна для читання"
 
-#: ../gio/gdbusconnection.c:4322
+#: gio/gdbusconnection.c:4326
 #, c-format
-msgid "Property '%s' is not writable"
+#| msgid "Property '%s' is not writable"
+msgid "Property “%s” is not writable"
 msgstr "Властивість «%s» недоступна для запису"
 
-#: ../gio/gdbusconnection.c:4342
+#: gio/gdbusconnection.c:4346
 #, c-format
-msgid "Error setting property '%s': Expected type '%s' but got '%s'"
+#| msgid "Error setting property '%s': Expected type '%s' but got '%s'"
+msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
-"Помилка встановлення властивості «%s»: очікувався тип «%s», але отриманий "
+"Помилка встановлення властивості «%s». Мало бути використано тип «%s», але"
+" отримано "
 "«%s»"
 
-#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
 #, c-format
-msgid "No such interface '%s'"
-msgstr "Інтерфейс «%s» відсутній"
-
-#: ../gio/gdbusconnection.c:4655
-msgid "No such interface"
-msgstr "Інтерфейс відсутній"
+#| msgid "No such interface '%s'"
+msgid "No such interface “%s”"
+msgstr "Немає інтерфейсу «%s»"
 
-#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
 #, c-format
-msgid "No such interface '%s' on object at path %s"
-msgstr "Інтерфейс «%s» для шляху %s об’єкту не знайдено"
+#| msgid "No such interface '%s' on object at path %s"
+msgid "No such interface “%s” on object at path %s"
+msgstr "Немає інтерфейсу «%s» на об'єкті зі шляхом %s"
 
-#: ../gio/gdbusconnection.c:4971
+#: gio/gdbusconnection.c:4975
 #, c-format
-msgid "No such method '%s'"
-msgstr "Метод «%s» відсутній"
+#| msgid "No such method '%s'"
+msgid "No such method “%s”"
+msgstr "Немає методу «%s»"
 
-#: ../gio/gdbusconnection.c:5002
+#: gio/gdbusconnection.c:5006
 #, c-format
-msgid "Type of message, '%s', does not match expected type '%s'"
+#| msgid "Type of message, '%s', does not match expected type '%s'"
+msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Тип повідомлення «%s» не збігається з очікуваним типом «%s»"
 
-#: ../gio/gdbusconnection.c:5200
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
-msgstr "Об’єкт інтерфейсу %s вже експортовано як %s"
+msgstr "Об'єкт інтерфейсу %s вже експортовано як %s"
+
+#: gio/gdbusconnection.c:5430
+#, c-format
+#| msgid "Unable to create socket: %s"
+msgid "Unable to retrieve property %s.%s"
+msgstr "Не вдалося отримати властивість %s.%s"
+
+#: gio/gdbusconnection.c:5486
+#, c-format
+#| msgid "Unable to create socket: %s"
+msgid "Unable to set property %s.%s"
+msgstr "Не вдалося встановити значення властивості %s.%s"
 
-#: ../gio/gdbusconnection.c:5399
+#: gio/gdbusconnection.c:5664
 #, c-format
-msgid "Method '%s' returned type '%s', but expected '%s'"
+#| msgid "Method '%s' returned type '%s', but expected '%s'"
+msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Метод «%s» повернув тип «%s», але очікувалося «%s»"
 
-#: ../gio/gdbusconnection.c:6482
+#: gio/gdbusconnection.c:6741
 #, c-format
-msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
-msgstr "Метод «%s» інтерфейсу «%s» з підписом «%s» не існує"
+#| msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
+msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
+msgstr "Методу «%s» інтерфейсу «%s» з підписом «%s» не існує"
 
-#: ../gio/gdbusconnection.c:6603
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Піддерево вже експортовано для %s"
 
-#: ../gio/gdbusmessage.c:1269
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "НЕПРАВИЛЬНИЙ тип"
 
-#: ../gio/gdbusmessage.c:1280
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
-msgstr "Ð\9fовÑ\96домленнÑ\8f METHOD_CALL: Ð²Ñ\96дÑ\81Ñ\83Ñ\82нÑ\94 Ð¿Ð¾Ð»Ðµ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ\83 PATH або MEMBER"
+msgstr "Ð\9fовÑ\96домленнÑ\8f METHOD_CALL: Ð½ÐµÐ¼Ð°Ñ\94 Ð¿Ð¾Ð»Ñ\8f Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° PATH або MEMBER"
 
-#: ../gio/gdbusmessage.c:1291
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
-msgstr "Ð\9fовÑ\96домленнÑ\8f METHOD_RETURN: Ð²Ñ\96дÑ\81Ñ\83Ñ\82нÑ\94 Ð¿Ð¾Ð»Ðµ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ\83 REPLY_SERIAL"
+msgstr "Ð\9fовÑ\96домленнÑ\8f METHOD_RETURN: Ð½ÐµÐ¼Ð°Ñ\94 Ð¿Ð¾Ð»Ñ\8f Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° REPLY_SERIAL"
 
-#: ../gio/gdbusmessage.c:1303
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
-msgstr ""
-"Повідомлення ERROR: відсутнє поле заголовку REPLY_SERIAL або ERROR_NAME"
+msgstr "Повідомлення ERROR: немає поля заголовка REPLY_SERIAL або ERROR_NAME"
 
-#: ../gio/gdbusmessage.c:1316
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
-msgstr ""
-"Повідомлення SIGNAL: відсутнє поле заголовку PATH, INTERFACE або MEMBER"
+msgstr "Повідомлення SIGNAL: немає поля заголовка PATH, INTERFACE або MEMBER"
 
-#: ../gio/gdbusmessage.c:1324
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 msgstr ""
-"Повідомлення SIGNAL: поле заголовку PATH використовує зарезервоване "
+"Повідомлення SIGNAL: поле заголовка PATH використовує зарезервоване "
 "значення /org/freedesktop/DBus/Local"
 
-#: ../gio/gdbusmessage.c:1332
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 msgstr ""
-"Повідомлення SIGNAL: поле заголовку INTERFACE використовує зарезервоване "
+"Повідомлення SIGNAL: поле заголовка INTERFACE використовує зарезервоване "
 "значення org.freedesktop.DBus.Local"
 
-#: ../gio/gdbusmessage.c:1381
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -755,31 +860,43 @@ msgstr[0] "Потрібно було прочитати %lu байт, але п
 msgstr[1] "Потрібно було прочитати %lu байти, але прочитано лише %lu"
 msgstr[2] "Потрібно було прочитати %lu байтів, але прочитано лише %lu"
 
-#: ../gio/gdbusmessage.c:1396
+#: gio/gdbusmessage.c:1380
 #, c-format
-msgid "Expected NUL byte after the string '%s' but found byte %d"
-msgstr "Очікувався байт NUL після рядка «%s», але знайдено байт %d"
+#| msgid "Expected NUL byte after the string '%s' but found byte %d"
+msgid "Expected NUL byte after the string “%s” but found byte %d"
+msgstr "Мало бути використано байт NUL після рядка «%s», але знайдено байт %d"
 
-#: ../gio/gdbusmessage.c:1415
+#: gio/gdbusmessage.c:1399
 #, 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'"
 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'"
+"(length of string is %d). The valid UTF-8 string up until that point was “%s”"
 msgstr ""
-"Очікувався коректний рядок UTF-8, але виявлено неприпустимі байти (зміщення "
-"%d, довжина рядка %d). Коректний рядок UTF-8 аж до цієї миті було: «%s»"
+"Мало бути вказано коректний рядок UTF-8, але виявлено неприпустимі байти"
+" (зміщення "
+"%d, довжина рядка %d). Коректний рядок UTF-8 аж до цієї миті був таким: «%s»"
 
-#: ../gio/gdbusmessage.c:1617
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "Рівень вкладеності значення є надто високим"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
-msgid "Parsed value '%s' is not a valid D-Bus object path"
-msgstr "Розібране значення «%s» не є припустимим шляхом об’єкту D-Bus"
+#| msgid "Parsed value '%s' is not a valid D-Bus object path"
+msgid "Parsed value “%s” is not a valid D-Bus object path"
+msgstr "Оброблене значення «%s» не є припустимим шляхом до об'єкта D-Bus"
 
-#: ../gio/gdbusmessage.c:1641
+#: gio/gdbusmessage.c:1631
 #, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature"
-msgstr "Розібране значення «%s» не є припустимим підписом D-Bus"
+#| msgid "Parsed value '%s' is not a valid D-Bus signature"
+msgid "Parsed value “%s” is not a valid D-Bus signature"
+msgstr "Оброблене значення «%s» не є припустимим підписом D-Bus"
 
-#: ../gio/gdbusmessage.c:1696
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -795,45 +912,68 @@ msgstr[2] ""
 "Виявлено масив довжиною %u байтів. Максимальна довжина дорівнює 2<<26 байт "
 "(64 МіБ)."
 
-#: ../gio/gdbusmessage.c:1849
+#: gio/gdbusmessage.c:1698
+#, c-format
+msgid ""
+"Encountered array of type “a%c”, expected to have a length a multiple of %u "
+"bytes, but found to be %u bytes in length"
+msgstr ""
+"Виявлено масив типу «a%c». Очікувалося, що довжина буде кратною до %u байтів,"
+" втім, виявлено довжину %u байтів"
+
+#: gio/gdbusmessage.c:1884
 #, c-format
-msgid "Parsed value '%s' for variant is not a valid D-Bus signature"
-msgstr "Розібране значення «%s» для варіанту не є припустимим підписом D-Bus"
+#| msgid "Parsed value '%s' for variant is not a valid D-Bus signature"
+msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
+msgstr "Оброблене значення «%s» для варіанта не є припустимим підписом D-Bus"
 
-#: ../gio/gdbusmessage.c:1873
+#: gio/gdbusmessage.c:1925
 #, 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"
+"Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
-"Помилка десериалізації GVariant з типом рядка «%s» з формату D-Bus wire"
+"Помилка десеріалізації GVariant з типом рядка «%s» з формату D-Bus wire"
 
-#: ../gio/gdbusmessage.c:2060
+#: gio/gdbusmessage.c:2110
 #, c-format
+#| msgid ""
+#| "Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found "
+#| "value 0x%02x"
 msgid ""
-"Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value "
+"Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr ""
-"Ð\9dепÑ\80авилÑ\8cний Ð¿Ð¾Ñ\80Ñ\8fдок Ð±Ð°Ð¹Ñ\82Ñ\96в Ñ\83 Ð·Ð½Ð°Ñ\87еннÑ\96. Ð\9eÑ\87Ñ\96кÑ\83вавÑ\81Ñ\8f 0x6c ('l') Ð°Ð±Ð¾ 0x42 "
-"('B'), але знайдено значення 0x%02x"
+"Ð\9dепÑ\80авилÑ\8cний Ð¿Ð¾Ñ\80Ñ\8fдок Ð±Ð°Ð¹Ñ\82Ñ\96в Ñ\83 Ð·Ð½Ð°Ñ\87еннÑ\96. Ð\9cало Ð±Ñ\83Ñ\82и 0x6c («l») Ð°Ð±Ð¾ 0x42 («B»),"
+" але знайдено значення 0x%02x"
 
-#: ../gio/gdbusmessage.c:2073
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Неправильний старший номер версії протоколу. Очікувався 1, але знайдено %d"
 
-#: ../gio/gdbusmessage.c:2129
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
+msgid "Signature header found but is not of type signature"
+msgstr ""
+"Виявлено заголовок підпису, але цей заголовок не належить до типу підписів"
+
+#: gio/gdbusmessage.c:2189
 #, c-format
-msgid "Signature header with signature '%s' found but message body is empty"
+#| msgid "Signature header with signature '%s' found but message body is empty"
+msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
-"Знайдено заголовок підпису з підписом «%s», але тіло повідомлення порожнє"
+"Знайдено заголовок підпису з підписом «%s», але вміст повідомлення є порожнім"
 
-#: ../gio/gdbusmessage.c:2143
+#: gio/gdbusmessage.c:2204
 #, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature (for body)"
-msgstr "Розібране значення «%s» не є припустимим підписом D-Bus (для тіла)"
+#| msgid "Parsed value '%s' is not a valid D-Bus signature (for body)"
+msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
+msgstr "Оброблене значення «%s» не є припустимим підписом D-Bus (для вмісту)"
 
-#: ../gio/gdbusmessage.c:2173
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -847,111 +987,146 @@ msgstr[2] ""
 "Відсутній заголовок підпису у повідомленні, але тіло повідомлення займає %u "
 "байтів"
 
-#: ../gio/gdbusmessage.c:2183
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
-msgstr "Не вдалося виконати десериалізацію повідомлення:"
+msgstr "Не вдалося виконати десеріалізацію повідомлення:"
 
-#: ../gio/gdbusmessage.c:2504
+#: gio/gdbusmessage.c:2590
 #, 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 "Помилка сериалізації GVariant з типом рядка «%s» у формат D-Bus wire"
+"Error serializing GVariant with type string “%s” to the D-Bus wire format"
+msgstr "Помилка серіалізації GVariant з типом рядка «%s» у формат D-Bus wire"
 
-#: ../gio/gdbusmessage.c:2641
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
-"Message has %d file descriptors but the header field indicates %d file "
-"descriptors"
+"Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
-"Ð\9fовÑ\96домленнÑ\8f Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c %d Ñ\84айловиÑ\85 Ð´ÐµÑ\81кÑ\80ипÑ\82оÑ\80Ñ\96в, Ð°Ð»Ðµ Ñ\83 Ð¿Ð¾Ð»Ñ\96 Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ\83 Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ "
-"%d"
+"Ð\9aÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8c Ð´ÐµÑ\81кÑ\80ипÑ\82оÑ\80Ñ\96в Ñ\84айлÑ\96в Ñ\83 Ð¿Ð¾Ð²Ñ\96домленнÑ\96 (%d) Ð²Ñ\96дÑ\80Ñ\96знÑ\8fÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ð²Ñ\96д Ð·Ð½Ð°Ñ\87еннÑ\8f"
+" у полі заголовка (%d)"
 
-#: ../gio/gdbusmessage.c:2649
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
-msgstr "Не вдалося сериалізувати повідомлення: "
+msgstr "Не вдалося серіалізувати повідомлення: "
 
-#: ../gio/gdbusmessage.c:2693
+#: gio/gdbusmessage.c:2788
 #, c-format
-msgid "Message body has signature '%s' but there is no signature header"
-msgstr "Тіло повідомлення має підпис «%s», але немає заголовку підпису"
+#| msgid "Message body has signature '%s' but there is no signature header"
+msgid "Message body has signature “%s” but there is no signature header"
+msgstr "Вміст повідомлення має підпис «%s», але немає заголовка підпису"
 
-#: ../gio/gdbusmessage.c:2703
+#: gio/gdbusmessage.c:2798
 #, c-format
+#| msgid ""
+#| "Message body has type signature '%s' but signature in the header field is "
+#| "'%s'"
 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 ""
-"ТÑ\96ло повідомлення має тип підпису «%s», але значення підпису у полі "
-"заголовку дорівнює «%s»"
+"Ð\92мÑ\96Ñ\81Ñ\82 повідомлення має тип підпису «%s», але значення підпису у полі "
+"заголовка дорівнює «%s»"
 
-#: ../gio/gdbusmessage.c:2719
+#: gio/gdbusmessage.c:2814
 #, c-format
-msgid "Message body is empty but signature in the header field is '(%s)'"
+#| msgid "Message body is empty but signature in the header field is '(%s)'"
+msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
-"ТÑ\96ло Ð¿Ð¾Ð²Ñ\96домленнÑ\8f Ð¿Ð¾Ñ\80ожнÑ\94, Ð°Ð»Ðµ Ð·Ð½Ð°Ñ\87еннÑ\8f Ð¿Ñ\96дпиÑ\81Ñ\83 Ñ\83 Ð¿Ð¾Ð»Ñ\96 Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ\83 Ð´Ð¾Ñ\80Ñ\96внÑ\8eÑ\94 "
-"«(%s)»"
+"Ð\92мÑ\96Ñ\81Ñ\82 Ð¿Ð¾Ð²Ñ\96домленнÑ\8f Ð¿Ð¾Ñ\80ожнÑ\96й, Ð°Ð»Ðµ Ð·Ð½Ð°Ñ\87еннÑ\8f Ð¿Ñ\96дпиÑ\81Ñ\83 Ñ\83 Ð¿Ð¾Ð»Ñ\96 Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° Ð´Ð¾Ñ\80Ñ\96внÑ\8eÑ\94"
+" «(%s)»"
 
-#: ../gio/gdbusmessage.c:3269
+#: gio/gdbusmessage.c:3367
 #, c-format
-msgid "Error return with body of type '%s'"
-msgstr "Повернена помилка з тілом типу «%s»"
+#| msgid "Error return with body of type '%s'"
+msgid "Error return with body of type “%s”"
+msgstr "Повернуто помилку для вмісту типу «%s»"
 
-#: ../gio/gdbusmessage.c:3277
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "Повернена помилка з порожнім тілом"
 
-#: ../gio/gdbusprivate.c:2067
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr "(Щоб закрити це вікно, уведіть будь-який символ)\n"
+
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr "Сеанс dbus не запущений, і автозапуск не виконався"
+
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Не вдалося отримати профіль апаратури: %s"
 
-#: ../gio/gdbusprivate.c:2112
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Не вдалося завантажити /var/lib/dbus/machine-id або /etc/machine-id: "
 
-#: ../gio/gdbusproxy.c:1630
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Помилка виклику StartServiceByName для %s: "
 
-#: ../gio/gdbusproxy.c:1653
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
-msgstr "Неочікувана відповідь %d з методу StartServiceByName(\"%s\")"
+msgstr "Неочікувана відповідь %d з методу StartServiceByName(«%s»)"
 
-#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
+#, c-format
+#| 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"
 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"
+"Cannot invoke method; proxy is for the well-known name %s without an owner, "
+"and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
-"Не вдалося викликати метод; у проксі з добре відомим іменем немає власника і "
-"проксі створити з прапорцем G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
+"Не вдалося викликати метод; у проксі з добре відомою назвою %s немає власника"
+" і "
+"проксі було побудовано із прапорцем G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: ../gio/gdbusserver.c:708
-msgid "Abstract name space not supported"
-msgstr "Абстрактний простір імен не підтримується"
+#: gio/gdbusserver.c:755
+#| msgid "Abstract name space not supported"
+msgid "Abstract namespace not supported"
+msgstr "Підтримки абстрактних просторів назв не передбачено"
 
-#: ../gio/gdbusserver.c:795
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Не вдалося вказати nonce-файл при створенні сервера"
 
-#: ../gio/gdbusserver.c:873
+#: gio/gdbusserver.c:930
 #, c-format
-msgid "Error writing nonce file at '%s': %s"
-msgstr "Сталася помилка при запису у nonce-файл у «%s»: %s"
+#| msgid "Error writing nonce file at '%s': %s"
+msgid "Error writing nonce file at “%s”: %s"
+msgstr "Сталася помилка при запису до nonce-файла у «%s»: %s"
 
-#: ../gio/gdbusserver.c:1044
+#: gio/gdbusserver.c:1103
 #, c-format
-msgid "The string '%s' is not a valid D-Bus GUID"
-msgstr "Рядок «%s» не є припустимим D-Bus GUID"
+#| msgid "The string '%s' is not a valid D-Bus GUID"
+msgid "The string “%s” is not a valid D-Bus GUID"
+msgstr "Рядок «%s» не є припустимим GUID D-Bus"
 
-#: ../gio/gdbusserver.c:1084
+#: gio/gdbusserver.c:1143
 #, c-format
-msgid "Cannot listen on unsupported transport '%s'"
-msgstr "Неможливо прослуховувати непідтримуваний транспорт «%s»"
+#| msgid "Cannot listen on unsupported transport '%s'"
+msgid "Cannot listen on unsupported transport “%s”"
+msgstr "Неможливо очікувати на дані на каналі передавання «%s», якого не існує"
 
-#: ../gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:107
 #, c-format
+#| msgid ""
+#| "Commands:\n"
+#| "  help         Shows this information\n"
+#| "  introspect   Introspect a remote object\n"
+#| "  monitor      Monitor a remote object\n"
+#| "  call         Invoke a method on a remote object\n"
+#| "  emit         Emit a signal\n"
+#| "\n"
+#| "Use \"%s COMMAND --help\" to get help on each command.\n"
 msgid ""
 "Commands:\n"
 "  help         Shows this information\n"
@@ -959,325 +1134,399 @@ msgid ""
 "  monitor      Monitor a remote object\n"
 "  call         Invoke a method on a remote object\n"
 "  emit         Emit a signal\n"
+"  wait         Wait for a bus name to appear\n"
 "\n"
-"Use \"%s COMMAND --help\" to get help on each command.\n"
+"Use “%s COMMAND --help” to get help on each command.\n"
 msgstr ""
 "Команди:\n"
 "  help         Показати цю довідку\n"
-"  introspect   Інтроспектувати віддалений об’єкт\n"
-"  monitor      Стежити за віддаленим об’єктом\n"
-"  call         Викликати метод віддаленого об’єкту\n"
-"  emit         Послати сигнал\n"
+"  introspect   Інтроспектувати віддалений об'єкт\n"
+"  monitor      Стежити за віддаленим об'єктом\n"
+"  call         Викликати метод віддаленого об'єкту\n"
+"  emit         Надіслати сигнал\n"
+"  wait         Очікувати на появу назви шини\n"
 "\n"
 "Для отримання довідки за командою використовуйте «%s КОМАНДА --help».\n"
 
-#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292
-#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031
-#: ../gio/gdbus-tool.c:1465
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "Помилка: %s\n"
 
-#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
-msgstr "Сталася помилка при розборі інтроспекції XML: %s\n"
+msgstr "Сталася помилка під час обробки інтроспекції XML: %s\n"
+
+#: gio/gdbus-tool.c:246
+#, c-format
+#| msgid "Error: %s is not a valid member name\n"
+msgid "Error: %s is not a valid name\n"
+msgstr "Помилка: %s не є припустимою назвою\n"
 
-#: ../gio/gdbus-tool.c:350
+#: gio/gdbus-tool.c:394
 msgid "Connect to the system bus"
-msgstr "Підєднатися до системної шини"
+msgstr "Під'єднатися до системної шини"
 
-#: ../gio/gdbus-tool.c:351
+#: gio/gdbus-tool.c:395
 msgid "Connect to the session bus"
-msgstr "Підєднатися до користувацької шини"
+msgstr "Під'єднатися до користувацької шини"
 
-#: ../gio/gdbus-tool.c:352
+#: gio/gdbus-tool.c:396
 msgid "Connect to given D-Bus address"
-msgstr "Підєднатися до вказаної адреси D-Bus"
+msgstr "Під'єднатися до вказаної адреси D-Bus"
 
-#: ../gio/gdbus-tool.c:362
+#: gio/gdbus-tool.c:406
 msgid "Connection Endpoint Options:"
-msgstr "Параметри кіцевої точки з’єднання:"
+msgstr "Параметри кінцевої точки з'єднання:"
 
-#: ../gio/gdbus-tool.c:363
+#: gio/gdbus-tool.c:407
 msgid "Options specifying the connection endpoint"
-msgstr "Параметри, що визначають кінцеву точку зєднання"
+msgstr "Параметри, що визначають кінцеву точку з'єднання"
 
-#: ../gio/gdbus-tool.c:385
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
-msgstr "Кінцева точка зєднання не вказана"
+msgstr "Кінцева точка з'єднання не вказана"
 
-#: ../gio/gdbus-tool.c:395
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
-msgstr "Вказано декілька кінцевих точок зєднання"
+msgstr "Вказано декілька кінцевих точок з'єднання"
 
-#: ../gio/gdbus-tool.c:465
+#: gio/gdbus-tool.c:513
 #, 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 "Ð\9fопеÑ\80едженнÑ\8f: Ð·Ð³Ñ\96дно Ð´Ð°Ð½Ð¸Ñ\85 Ñ\96нÑ\82Ñ\80оÑ\81пекÑ\86Ñ\96Ñ\97, Ñ\96нÑ\82еÑ\80Ñ\84ейÑ\81 «%s» не існує\n"
+"Warning: According to introspection data, interface “%s” does not exist\n"
+msgstr "Ð\9fопеÑ\80едженнÑ\8f: Ð·Ð³Ñ\96дно Ð· Ð´Ð°Ð½Ð¸Ð¼Ð¸ Ñ\96нÑ\82Ñ\80оÑ\81пекÑ\86Ñ\96Ñ\97, Ñ\96нÑ\82еÑ\80Ñ\84ейÑ\81Ñ\83 «%s» не існує\n"
 
-#: ../gio/gdbus-tool.c:474
+#: gio/gdbus-tool.c:522
 #, c-format
+#| msgid ""
+#| "Warning: According to introspection data, method '%s' does not exist on "
+#| "interface '%s'\n"
 msgid ""
-"Warning: According to introspection data, method '%s' does not exist on "
-"interface '%s'\n"
+"Warning: According to introspection data, method “%s” does not exist on "
+"interface “%s”\n"
 msgstr ""
-"Ð\9fопеÑ\80едженнÑ\8f: Ð·Ð³Ñ\96дно Ð´Ð°Ð½Ð¸Ñ\85 Ñ\96нÑ\82Ñ\80оÑ\81пекÑ\86Ñ\96Ñ\97, Ð¼ÐµÑ\82од Â«%s» Ñ\83 інтерфейсі «%s» не "
+"Ð\9fопеÑ\80едженнÑ\8f: Ð·Ð³Ñ\96дно Ð· Ð´Ð°Ð½Ð¸Ð¼Ð¸ Ñ\96нÑ\82Ñ\80оÑ\81пекÑ\86Ñ\96Ñ\97, Ð¼ÐµÑ\82одÑ\83 Â«%s» Ð² інтерфейсі «%s» не "
 "існує\n"
 
-#: ../gio/gdbus-tool.c:536
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
-msgstr "Необов’язковий отримувач сигналу (унікальне ім’я)"
+msgstr "Необов'язковий отримувач сигналу (унікальна назва)"
 
-#: ../gio/gdbus-tool.c:537
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
-msgstr "Обєктний шлях, для випуску сигналу"
+msgstr "Об'єктний шлях, для випуску сигналу"
 
-#: ../gio/gdbus-tool.c:538
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr "Назва сигналу і інтерфейсу"
 
-#: ../gio/gdbus-tool.c:570
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "Послати сигнал."
 
-#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571
-#: ../gio/gdbus-tool.c:1803
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
-msgstr "Сталася помилка при зєднанні: %s\n"
+msgstr "Сталася помилка при з'єднанні: %s\n"
 
-#: ../gio/gdbus-tool.c:616
+#: gio/gdbus-tool.c:694
 #, c-format
-msgid "Error: object path not specified.\n"
-msgstr "Помилка: не вказано об’єктний шлях.\n"
+msgid "Error: %s is not a valid unique bus name.\n"
+msgstr "Помилка: %s не є припустимою унікальною назвою шини.\n"
+
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
+msgid "Error: Object path is not specified\n"
+msgstr "Помилка: не вказано об'єктний шлях\n"
 
-#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629
-#: ../gio/gdbus-tool.c:1862
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
-msgstr "Помилка: %s не є припустимим обєктним шляхом\n"
+msgstr "Помилка: %s не є припустимим об'єктним шляхом\n"
 
-#: ../gio/gdbus-tool.c:627
-#, c-format
-msgid "Error: signal not specified.\n"
-msgstr "Помилка: не вказано сигнал.\n"
+#: gio/gdbus-tool.c:756
+#| msgid "Error: Method name is not specified\n"
+msgid "Error: Signal name is not specified\n"
+msgstr "Помилка: не вказано назви сигналу\n"
 
-#: ../gio/gdbus-tool.c:634
+#: gio/gdbus-tool.c:770
 #, c-format
-msgid "Error: signal must be the fully-qualified name.\n"
-msgstr ""
-"Помилка: сигнал повинен вказуватися повністю визначеним доменним ім’ям\n"
+#| msgid "Error: Method name '%s' is invalid\n"
+msgid "Error: Signal name “%s” is invalid\n"
+msgstr "Помилка: некоректна назва сигналу «%s»\n"
 
-#: ../gio/gdbus-tool.c:642
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
-msgstr "Ð\9fомилка: %s Ð½Ðµ Ñ\94 Ð¿Ñ\80ипÑ\83Ñ\81Ñ\82имим Ñ\96мâ\80\99Ñ\8fм інтерфейсу\n"
+msgstr "Ð\9fомилка: %s Ð½Ðµ Ñ\94 Ð¿Ñ\80ипÑ\83Ñ\81Ñ\82имоÑ\8e Ð½Ð°Ð·Ð²Ð¾Ñ\8e інтерфейсу\n"
 
-#: ../gio/gdbus-tool.c:648
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
-msgstr "Помилка: %s не є припустимим ім’ям члену\n"
-
-#: ../gio/gdbus-tool.c:654
-#, c-format
-msgid "Error: %s is not a valid unique bus name.\n"
-msgstr "Помилка: %s не є припустимим унікальним ім’ям шини.\n"
+msgstr "Помилка: %s не є припустимою назвою члену\n"
 
 #. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
-msgstr "СÑ\82алаÑ\81Ñ\8f Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ\80и Ñ\80озбоÑ\80Ñ\96 Ð¿Ð°Ñ\80амеÑ\82Ñ\80Ñ\83 %d: %s\n"
+msgstr "СÑ\82алаÑ\81Ñ\8f Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ\96д Ñ\87аÑ\81 Ð¾Ð±Ñ\80обки Ð¿Ð°Ñ\80амеÑ\82Ñ\80а %d: %s\n"
 
-#: ../gio/gdbus-tool.c:712
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
-msgstr "Сталася помилка при скиданні підєднання: %s\n"
+msgstr "Сталася помилка при скиданні під'єднання: %s\n"
 
-#: ../gio/gdbus-tool.c:739
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
-msgstr "Ð\86мâ\80\99Ñ\8f призначення, для якого викликається метод"
+msgstr "Ð\9dазва призначення, для якого викликається метод"
 
-#: ../gio/gdbus-tool.c:740
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
-msgstr "Обєктний шлях, для якого викликається метод"
+msgstr "Об'єктний шлях, для якого викликається метод"
 
-#: ../gio/gdbus-tool.c:741
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "Назва методу або інтерфейсу"
 
-#: ../gio/gdbus-tool.c:742
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "Час очікування у секундах"
 
-#: ../gio/gdbus-tool.c:781
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
-msgstr "Викликає метод на віддаленому обєкті."
+msgstr "Викликає метод на віддаленому об'єкті."
 
-#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1822
-#, c-format
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr "Помилка: не вказано призначення\n"
 
-#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
-msgid "Error: Object path is not specified\n"
-msgstr "Помилка: не вказано об’єктний шлях\n"
+#| msgid "Error: %s is not a valid member name\n"
+msgid "Error: %s is not a valid bus name\n"
+msgstr "Помилка: %s не є припустимою назвою шини\n"
 
-#: ../gio/gdbus-tool.c:912
-#, c-format
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
-msgstr "Помилка: не вказано ім’я методу\n"
+msgstr "Помилка: не вказано назви методу\n"
 
-#: ../gio/gdbus-tool.c:923
+#: gio/gdbus-tool.c:1070
 #, c-format
-msgid "Error: Method name '%s' is invalid\n"
-msgstr "Помилка: неправильне ім’я методу «%s»\n"
+#| msgid "Error: Method name '%s' is invalid\n"
+msgid "Error: Method name “%s” is invalid\n"
+msgstr "Помилка: некоректна назва методу «%s»\n"
 
-#: ../gio/gdbus-tool.c:991
+#: gio/gdbus-tool.c:1148
 #, c-format
-msgid "Error parsing parameter %d of type '%s': %s\n"
-msgstr "Сталася помилка при розборі параметру %d типу «%s»: %s\n"
+#| msgid "Error parsing parameter %d of type '%s': %s\n"
+msgid "Error parsing parameter %d of type “%s”: %s\n"
+msgstr "Сталася помилка під час обробки параметра %d типу «%s»: %s\n"
 
-#: ../gio/gdbus-tool.c:1428
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
-msgstr "Ð\86мâ\80\99Ñ\8f призначення для інтроспекції"
+msgstr "Ð\9dазва призначення для інтроспекції"
 
-#: ../gio/gdbus-tool.c:1429
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
-msgstr "Обєктний шлях для інтроспекції"
+msgstr "Об'єктний шлях для інтроспекції"
 
-#: ../gio/gdbus-tool.c:1430
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "Надрукувати XML"
 
-#: ../gio/gdbus-tool.c:1431
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr "Інтроспекція нащадка"
 
-#: ../gio/gdbus-tool.c:1432
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
 msgstr "Лише властивості друку"
 
-#: ../gio/gdbus-tool.c:1523
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
-msgstr "Виконати інтроспекцію віддаленого обєкту."
+msgstr "Виконати інтроспекцію віддаленого об'єкту."
 
-#: ../gio/gdbus-tool.c:1721
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
-msgstr "Ð\86мâ\80\99Ñ\8f призначення для спостерігання"
+msgstr "Ð\9dазва призначення для спостерігання"
 
-#: ../gio/gdbus-tool.c:1722
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
-msgstr "Обєктний шлях для спостерігання"
+msgstr "Об'єктний шлях для спостерігання"
 
-#: ../gio/gdbus-tool.c:1755
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
-msgstr "Спостерігати за віддаленим об’єктом."
+msgstr "Спостерігати за віддаленим об'єктом."
+
+#: gio/gdbus-tool.c:2017
+msgid "Error: can’t monitor a non-message-bus connection\n"
+msgstr ""
+"Помилка: спостереження за з'єднанням, яке не належить до типу message-bus, є"
+" неможливим\n"
+
+#: gio/gdbus-tool.c:2141
+msgid "Service to activate before waiting for the other one (well-known name)"
+msgstr ""
+"Служба, яку слід активувати, перш ніж очікувати на іншу (добре відома назва)"
+
+#: gio/gdbus-tool.c:2144
+msgid ""
+"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
+"(default)"
+msgstr ""
+"Час очікування до виходу із станом помилки (у секундах); 0 — не очікувати"
+" (типова поведінка)"
+
+#: gio/gdbus-tool.c:2192
+msgid "[OPTION…] BUS-NAME"
+msgstr "[ПАРАМЕТР…] НАЗВА-ШИНИ"
+
+#: gio/gdbus-tool.c:2193
+msgid "Wait for a bus name to appear."
+msgstr "Очікувати на появу назви шини."
 
-#: ../gio/gdesktopappinfo.c:1440 ../gio/gdesktopappinfo.c:4583
-#: ../gio/gwin32appinfo.c:219
+#: gio/gdbus-tool.c:2269
+#| msgid "Error: object path not specified.\n"
+msgid "Error: A service to activate for must be specified.\n"
+msgstr "Помилка: має бути вказано службу для активації.\n"
+
+#: gio/gdbus-tool.c:2274
+#| msgid "Error: object path not specified.\n"
+msgid "Error: A service to wait for must be specified.\n"
+msgstr "Помилка: має бути вказано службу для очікування.\n"
+
+#: gio/gdbus-tool.c:2279
+msgid "Error: Too many arguments.\n"
+msgstr "Помилка: забагато аргументів.\n"
+
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
+#, c-format
+#| msgid "Error: %s is not a valid unique bus name.\n"
+msgid "Error: %s is not a valid well-known bus name.\n"
+msgstr "Помилка: %s не є припустимим добре відомою назвою шини.\n"
+
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "Без назви"
 
-#: ../gio/gdesktopappinfo.c:1859
-msgid "Desktop file didn't specify Exec field"
-msgstr "У Desktop-файлі не визначено поле Exec"
+#: gio/gdesktopappinfo.c:2481
+#| msgid "Desktop file didn't specify Exec field"
+msgid "Desktop file didn’t specify Exec field"
+msgstr "У desktop-файлі не визначено поля Exec"
 
-#: ../gio/gdesktopappinfo.c:2144
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "Неможливо знайти термінал, що потрібен програмі"
 
-#: ../gio/gdesktopappinfo.c:2560
+#: gio/gdesktopappinfo.c:3413
 #, c-format
-msgid "Can't create user application configuration folder %s: %s"
-msgstr "Не вдається створити теку параметрів програми %s: %s"
+#| msgid "Can't create user application configuration folder %s: %s"
+msgid "Can’t create user application configuration folder %s: %s"
+msgstr "Не вдалося створити теку параметрів програми %s: %s"
 
-#: ../gio/gdesktopappinfo.c:2564
+#: gio/gdesktopappinfo.c:3417
 #, c-format
-msgid "Can't create user MIME configuration folder %s: %s"
-msgstr "Не вдається створити теку параметрів MIME %s: %s"
+#| msgid "Can't create user MIME configuration folder %s: %s"
+msgid "Can’t create user MIME configuration folder %s: %s"
+msgstr "Не вдалося створити теку параметрів MIME %s: %s"
 
-#: ../gio/gdesktopappinfo.c:2804 ../gio/gdesktopappinfo.c:2828
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
-msgstr "У Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97 Ð¿Ñ\80о Ð´Ð¾Ð´Ð°Ñ\82ок Ð²Ñ\96дÑ\81Ñ\83Ñ\82нÑ\96й ідентифікатор"
+msgstr "У Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97 Ð¿Ñ\80о Ð¿Ñ\80огÑ\80амÑ\83 Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ ідентифікатор"
 
-#: ../gio/gdesktopappinfo.c:3061
+#: gio/gdesktopappinfo.c:3915
 #, c-format
-msgid "Can't create user desktop file %s"
-msgstr "Не вдається створити для користувача desktop-файл %s"
+#| msgid "Can't create user desktop file %s"
+msgid "Can’t create user desktop file %s"
+msgstr "Не вдалося створити для користувача desktop-файл %s"
 
-#: ../gio/gdesktopappinfo.c:3195
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Власне визначення %s"
 
-#: ../gio/gdrive.c:392
-msgid "drive doesn't implement eject"
-msgstr "привід не має функції витягування носія"
+#: gio/gdrive.c:417
+#| msgid "drive doesn't implement eject"
+msgid "drive doesn’t implement eject"
+msgstr "для диска не реалізовано функцію виштовхування носія"
 
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:470
-msgid "drive doesn't implement eject or eject_with_operation"
+#: gio/gdrive.c:495
+#| msgid "drive doesn't implement eject or eject_with_operation"
+msgid "drive doesn’t implement eject or eject_with_operation"
 msgstr ""
-"привід не має функції витягування носія або витягування з подальшою операцією"
+"для диска не реалізовано операцію «eject» або "
+"«eject_with_operation»"
 
-#: ../gio/gdrive.c:546
-msgid "drive doesn't implement polling for media"
-msgstr "привід не має функції опитування наявності носія"
+#: gio/gdrive.c:571
+#| msgid "drive doesn't implement polling for media"
+msgid "drive doesn’t implement polling for media"
+msgstr "для диска не реалізовано опитування носія даних"
 
-#: ../gio/gdrive.c:751
-msgid "drive doesn't implement start"
-msgstr "у приводі не реалізована функція запуску"
+#: gio/gdrive.c:778
+#| msgid "drive doesn't implement start"
+msgid "drive doesn’t implement start"
+msgstr "для диска не реалізовано функцію запуску"
 
-#: ../gio/gdrive.c:853
-msgid "drive doesn't implement stop"
-msgstr "у приводі не реалізована функція зупинки"
+#: gio/gdrive.c:880
+#| msgid "drive doesn't implement stop"
+msgid "drive doesn’t implement stop"
+msgstr "для диска не реалізовано функції зупинки"
 
-#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:309
-#: ../gio/gdummytlsbackend.c:399
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
+#: gio/gdummytlsbackend.c:509
 msgid "TLS support is not available"
 msgstr "Підтримка TLS недоступна"
 
-#: ../gio/gemblem.c:323
+#: gio/gdummytlsbackend.c:419
+#| msgid "TLS support is not available"
+msgid "DTLS support is not available"
+msgstr "Підтримка DTLS є недоступною"
+
+#: gio/gemblem.c:323
 #, c-format
-msgid "Can't handle version %d of GEmblem encoding"
-msgstr "Версія %d кодування GEmblem не підтримується"
+#| msgid "Can't handle version %d of GEmblem encoding"
+msgid "Can’t handle version %d of GEmblem encoding"
+msgstr "Не вдалося опрацювати версію %d кодування GEmblem"
 
-#: ../gio/gemblem.c:333
+#: gio/gemblem.c:333
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Неправильна кількість лексем (%d) у кодуванні GEmblem"
 
-#: ../gio/gemblemedicon.c:362
+#: gio/gemblemedicon.c:362
 #, c-format
-msgid "Can't handle version %d of GEmblemedIcon encoding"
-msgstr "Кодування GEmblemedIcon (версія %d) не підтримується"
+#| msgid "Can't handle version %d of GEmblemedIcon encoding"
+msgid "Can’t handle version %d of GEmblemedIcon encoding"
+msgstr "Не вдалося обробити версію %d кодування GEmblemedIcon"
 
-#: ../gio/gemblemedicon.c:372
+#: gio/gemblemedicon.c:372
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Неправильна кількість лексем (%d) у кодуванні GEmblemedIcon"
 
-#: ../gio/gemblemedicon.c:395
+#: gio/gemblemedicon.c:395
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Очікується GEmblem для GEmblemedIcon"
 
-#: ../gio/gfile.c:957 ../gio/gfile.c:1195 ../gio/gfile.c:1333
-#: ../gio/gfile.c:1571 ../gio/gfile.c:1626 ../gio/gfile.c:1684
-#: ../gio/gfile.c:1768 ../gio/gfile.c:1825 ../gio/gfile.c:1889
-#: ../gio/gfile.c:1944 ../gio/gfile.c:3587 ../gio/gfile.c:3642
-#: ../gio/gfile.c:3849 ../gio/gfile.c:3891 ../gio/gfile.c:4354
-#: ../gio/gfile.c:4765 ../gio/gfile.c:4850 ../gio/gfile.c:4940
-#: ../gio/gfile.c:5037 ../gio/gfile.c:5124 ../gio/gfile.c:5225
-#: ../gio/gfile.c:7744 ../gio/gfile.c:7834 ../gio/gfile.c:7918
-#: ../gio/win32/gwinhttpfile.c:437
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8098 gio/gfile.c:8188 gio/gfile.c:8272
+#: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Операція не підтримується"
 
@@ -1285,184 +1534,226 @@ msgstr "Операція не підтримується"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#. Translators: This is an error message when trying to
-#. * find the enclosing (user visible) mount of a file, but
-#. * none exists.
-#. Translators: This is an error message when trying to find
-#. * the enclosing (user visible) mount of a file, but none
-#. * exists.
-#: ../gio/gfile.c:1456 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114
-#: ../gio/glocalfile.c:1127
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "Вкладена точка монтування не існує"
 
-#: ../gio/gfile.c:2503 ../gio/glocalfile.c:2337
-msgid "Can't copy over directory"
-msgstr "Не вдається копіювати у каталог"
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
+#| msgid "Can't copy over directory"
+msgid "Can’t copy over directory"
+msgstr "Не можна копіювати із заміною каталогу"
 
-#: ../gio/gfile.c:2563
-msgid "Can't copy directory over directory"
-msgstr "Не вдається копіювати каталог у каталог"
+#: gio/gfile.c:2650
+#| msgid "Can't copy directory over directory"
+msgid "Can’t copy directory over directory"
+msgstr "Не можна копіювати каталог поверх іншого каталогу"
 
-#: ../gio/gfile.c:2571 ../gio/glocalfile.c:2346
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "Цільовий файл існує"
 
-#: ../gio/gfile.c:2590
-msgid "Can't recursively copy directory"
-msgstr "Не вдається рекурсивно скопіювати каталог"
+#: gio/gfile.c:2677
+#| msgid "Can't recursively copy directory"
+msgid "Can’t recursively copy directory"
+msgstr "Не вдалося скопіювати каталог рекурсивно"
 
-#: ../gio/gfile.c:2872
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "З'єднання не підтримується"
 
-#: ../gio/gfile.c:2876
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
-msgstr "Помилка при з'єднанні файлу: %s"
+msgstr "Помилка при розрізанні файла: %s"
 
-#: ../gio/gfile.c:3007
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Копіювання (reflink/clone) між точками монтування не підтримується"
 
-#: ../gio/gfile.c:3011
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Копіювання (reflink/clone) не підтримується або некоректне"
 
-#: ../gio/gfile.c:3016
-msgid "Copy (reflink/clone) is not supported or didn't work"
-msgstr "Копіювання (reflink/clone) не підтримується або не працює"
+#: gio/gfile.c:3126
+#| msgid "Copy (reflink/clone) is not supported or didn't work"
+msgid "Copy (reflink/clone) is not supported or didn’t work"
+msgstr ""
+"Підтримки копіювання (reflink/clone) не передбачено або копіювання не працює"
 
-#: ../gio/gfile.c:3079
-msgid "Can't copy special file"
-msgstr "Не вдається скопіювати спеціальний файл"
+#: gio/gfile.c:3190
+#| msgid "Can't copy special file"
+msgid "Can’t copy special file"
+msgstr "Не вдалося скопіювати спеціальний файл"
 
-#: ../gio/gfile.c:3839
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "Неправильне значення символьного посилання"
 
-#: ../gio/gfile.c:4000
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "Символічні посилання не підтримуються"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "Смітник не підтримується"
 
-#: ../gio/gfile.c:4112
+#: gio/gfile.c:4276
 #, c-format
-msgid "File names cannot contain '%c'"
-msgstr "назви файлів не можуть містити символ '%c'"
+#| msgid "File names cannot contain '%c'"
+msgid "File names cannot contain “%c”"
+msgstr "Назви файлів не можуть містити символу «%c»"
 
-#: ../gio/gfile.c:6536 ../gio/gvolume.c:363
-msgid "volume doesn't implement mount"
-msgstr "том не підтримує операцію монтування"
+#: gio/gfile.c:6757 gio/gvolume.c:364
+#| msgid "volume doesn't implement mount"
+msgid "volume doesn’t implement mount"
+msgstr "для тому не реалізовано операцію монтування"
 
-#: ../gio/gfile.c:6645
+#: gio/gfile.c:6868 gio/gfile.c:6914
 msgid "No application is registered as handling this file"
-msgstr "Ð\9dе Ð·Ð°Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80овано Ð¿Ñ\80огÑ\80амÑ\83 Ð´Ð»Ñ\8f Ð¾Ð±Ñ\80обки Ñ\86Ñ\8cого Ñ\84айлÑ\83"
+msgstr "Ð\9fÑ\80огÑ\80ам Ð´Ð»Ñ\8f Ð¾Ð±Ñ\80обки Ñ\82акиÑ\85 Ñ\84айлÑ\96в Ð½Ðµ Ð·Ð°Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80овано"
 
-#: ../gio/gfileenumerator.c:211
+#: gio/gfileenumerator.c:212
 msgid "Enumerator is closed"
 msgstr "Лічильник закрито"
 
-#: ../gio/gfileenumerator.c:218 ../gio/gfileenumerator.c:277
-#: ../gio/gfileenumerator.c:376 ../gio/gfileenumerator.c:475
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
+#: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
 msgid "File enumerator has outstanding operation"
 msgstr "Лічильник файлів має невиконані операції"
 
-#: ../gio/gfileenumerator.c:367 ../gio/gfileenumerator.c:466
+#: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
 msgid "File enumerator is already closed"
 msgstr "Лічильник файлів вже закритий"
 
-#: ../gio/gfileicon.c:236
+#: gio/gfileicon.c:236
 #, c-format
-msgid "Can't handle version %d of GFileIcon encoding"
-msgstr "Версія %d кодування GFileIcon не підтримується"
+#| msgid "Can't handle version %d of GFileIcon encoding"
+msgid "Can’t handle version %d of GFileIcon encoding"
+msgstr "Підтримки версії %d кодування GFileIcon не передбачено"
 
-#: ../gio/gfileicon.c:246
+#: gio/gfileicon.c:246
 msgid "Malformed input data for GFileIcon"
 msgstr "Неправильні вхідні дані GFileIcon"
 
-#: ../gio/gfileinputstream.c:149 ../gio/gfileinputstream.c:394
-#: ../gio/gfileiostream.c:167 ../gio/gfileoutputstream.c:164
-#: ../gio/gfileoutputstream.c:497
-msgid "Stream doesn't support query_info"
-msgstr "Потік не підтримує query_info"
+#: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
+#: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
+#: gio/gfileoutputstream.c:497
+#| msgid "Stream doesn't support query_info"
+msgid "Stream doesn’t support query_info"
+msgstr "Для потоку не передбачено підтримки query_info"
 
-#: ../gio/gfileinputstream.c:325 ../gio/gfileiostream.c:379
-#: ../gio/gfileoutputstream.c:371
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379
+#: gio/gfileoutputstream.c:371
 msgid "Seek not supported on stream"
 msgstr "Операція встановлення позиції не підтримується для потоків"
 
-#: ../gio/gfileinputstream.c:369
+#: gio/gfileinputstream.c:369
 msgid "Truncate not allowed on input stream"
 msgstr "Операція урізання не підтримується для вхідного потоку"
 
-#: ../gio/gfileiostream.c:455 ../gio/gfileoutputstream.c:447
+#: gio/gfileiostream.c:455 gio/gfileoutputstream.c:447
 msgid "Truncate not supported on stream"
 msgstr "Операція урізання не підтримується для потоку"
 
-#: ../gio/gicon.c:290
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
+msgid "Invalid hostname"
+msgstr "Неправильна назва вузла"
+
+#: gio/ghttpproxy.c:143
+msgid "Bad HTTP proxy reply"
+msgstr "Помилкова відповідь проксі-сервера HTTP"
+
+#: gio/ghttpproxy.c:159
+#| msgid "The connection is closed"
+msgid "HTTP proxy connection not allowed"
+msgstr "З'єднання з використанням проксі-сервера HTTP заборонено"
+
+#: gio/ghttpproxy.c:164
+msgid "HTTP proxy authentication failed"
+msgstr "Не вдалося пройти розпізнавання на проксі-сервері HTTP"
+
+#: gio/ghttpproxy.c:167
+msgid "HTTP proxy authentication required"
+msgstr "Слід пройти розпізнавання на проксі-сервері HTTP"
+
+#: gio/ghttpproxy.c:171
+#, c-format
+#| msgid "The connection is closed"
+msgid "HTTP proxy connection failed: %i"
+msgstr "Не вдалося встановити з'єднання із проксі-сервером HTTP: %i"
+
+#: gio/ghttpproxy.c:269
+msgid "HTTP proxy server closed connection unexpectedly."
+msgstr "Проксі-сервер HTTP несподівано розірвав з'єднання."
+
+#: gio/gicon.c:298
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "Неправильна кількість лексем (%d)"
 
-#: ../gio/gicon.c:310
+#: gio/gicon.c:318
 #, c-format
 msgid "No type for class name %s"
 msgstr "Відсутній тип назви класу %s"
 
-#: ../gio/gicon.c:320
+#: gio/gicon.c:328
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr "Для типу %s не реалізовано інтерфейс GIcon"
 
-#: ../gio/gicon.c:331
+#: gio/gicon.c:339
 #, c-format
 msgid "Type %s is not classed"
 msgstr "Тип %s не класифікований"
 
-#: ../gio/gicon.c:345
+#: gio/gicon.c:353
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "Неправильний номер версії: %s"
 
-#: ../gio/gicon.c:359
+#: gio/gicon.c:367
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr "Для типу %s не реалізовано from_tokens() у інтерфейсі GIcon"
 
-#: ../gio/gicon.c:461
-msgid "Can't handle the supplied version of the icon encoding"
-msgstr "Не вдалося обробити дану версію текстового надання піктограми"
+#: gio/gicon.c:469
+#| msgid "Can't handle the supplied version of the icon encoding"
+msgid "Can’t handle the supplied version of the icon encoding"
+msgstr "Не вдалося обробити вказану версію кодування піктограми"
 
-#: ../gio/ginetaddressmask.c:182
+#: gio/ginetaddressmask.c:182
 msgid "No address specified"
 msgstr "Адреса не вказана"
 
-#: ../gio/ginetaddressmask.c:190
+#: gio/ginetaddressmask.c:190
 #, c-format
 msgid "Length %u is too long for address"
 msgstr "Значення довжини %u завелике для адреси"
 
-#: ../gio/ginetaddressmask.c:223
+#: gio/ginetaddressmask.c:223
 msgid "Address has bits set beyond prefix length"
 msgstr "У адресі встановлені біти поза межами довжини префіксу"
 
-#: ../gio/ginetaddressmask.c:300
+#: gio/ginetaddressmask.c:300
 #, c-format
-msgid "Could not parse '%s' as IP address mask"
-msgstr "Неможливо вважати «%s» маскою IP-адреси"
+#| msgid "Could not parse '%s' as IP address mask"
+msgid "Could not parse “%s” as IP address mask"
+msgstr "Не вдалося обробити «%s» як маску IP-адрес"
 
-#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213
-#: ../gio/gunixsocketaddress.c:209
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
 msgid "Not enough space for socket address"
 msgstr "Бракує простору для адреси сокету"
 
-#: ../gio/ginetsocketaddress.c:228
+#: gio/ginetsocketaddress.c:235
 msgid "Unsupported socket address"
 msgstr "Непідтримувана адреса сокету"
 
-#: ../gio/ginputstream.c:182
-msgid "Input stream doesn't implement read"
-msgstr "Вхідний потік не підтримує операцію читання"
+#: gio/ginputstream.c:188
+#| msgid "Input stream doesn't implement read"
+msgid "Input stream doesn’t implement read"
+msgstr "Для потоку вхідних даних не реалізовано читання"
 
 #. Translators: This is an error you get if there is already an
 #. * operation running against this stream when you try to start
@@ -1470,110 +1761,877 @@ msgstr "Вхідний потік не підтримує операцію чи
 #. 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:1018 ../gio/giostream.c:288
-#: ../gio/goutputstream.c:1474
+#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr "Для потоку є незавершена операція"
 
-#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453
+#: gio/gio-tool.c:160
+msgid "Copy with file"
+msgstr "Копіювати з файлом"
+
+#: gio/gio-tool.c:164
+msgid "Keep with file when moved"
+msgstr "Пересунути з файлом"
+
+#: gio/gio-tool.c:205
+#| msgid ""
+#| "'%s' takes no arguments\n"
+#| "\n"
+msgid "“version” takes no arguments"
+msgstr "«version» не потребує параметрів"
+
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
+msgid "Usage:"
+msgstr "Використання:"
+
+#: gio/gio-tool.c:210
+#| msgid "Print version information and exit"
+msgid "Print version information and exit."
+msgstr "Вивести версію та вийти."
+
+#: gio/gio-tool.c:226
+#| msgid "Commands:\n"
+msgid "Commands:"
+msgstr "Команди:"
+
+#: gio/gio-tool.c:229
+msgid "Concatenate files to standard output"
+msgstr "Об'єднати файли до стандартного виведення"
+
+#: gio/gio-tool.c:230
+msgid "Copy one or more files"
+msgstr "Копіювати один або декілька файлів"
+
+#: gio/gio-tool.c:231
+#| msgid "Show GApplication options"
+msgid "Show information about locations"
+msgstr "Показати відомості щодо місць"
+
+#: gio/gio-tool.c:232
+msgid "List the contents of locations"
+msgstr "Вивести список вмісту місць"
+
+#: gio/gio-tool.c:233
+msgid "Get or set the handler for a mimetype"
+msgstr "Отримати або встановити обробник для типу MIME"
+
+#: gio/gio-tool.c:234
+#| msgid "Can't open directory"
+msgid "Create directories"
+msgstr "Створити каталоги"
+
+#: gio/gio-tool.c:235
+msgid "Monitor files and directories for changes"
+msgstr "Стежити за змінами у файлах і каталогах"
+
+#: gio/gio-tool.c:236
+msgid "Mount or unmount the locations"
+msgstr "Змонтувати або демонтувати місця"
+
+#: gio/gio-tool.c:237
+msgid "Move one or more files"
+msgstr "Пересунути один або декілька файлів"
+
+#: gio/gio-tool.c:238
+msgid "Open files with the default application"
+msgstr "Відкрити файли за допомогою типової програми"
+
+#: gio/gio-tool.c:239
+msgid "Rename a file"
+msgstr "Перейменувати файл"
+
+#: gio/gio-tool.c:240
+msgid "Delete one or more files"
+msgstr "Вилучити один або декілька файлів"
+
+#: gio/gio-tool.c:241
+msgid "Read from standard input and save"
+msgstr "Прочитати дані зі стандартного джерела даних і зберегти їх"
+
+#: gio/gio-tool.c:242
+msgid "Set a file attribute"
+msgstr "Встановити атрибут файла"
+
+#: gio/gio-tool.c:243
+msgid "Move files or directories to the trash"
+msgstr "Пересунути файли або каталоги до смітника"
+
+#: gio/gio-tool.c:244
+msgid "Lists the contents of locations in a tree"
+msgstr "Вивести список вмісту усіх місць у ієрархії"
+
+#: gio/gio-tool.c:246
+#, c-format
+#| msgid ""
+#| "Use '%s help COMMAND' to get detailed help.\n"
+#| "\n"
+msgid "Use %s to get detailed help.\n"
+msgstr "Скористайтеся %s, щоб дізнатися більше.\n"
+
+#: gio/gio-tool-cat.c:87
+#| msgid "Error writing to file: %s"
+msgid "Error writing to stdout"
+msgstr "Помилка при записі до стандартного виведення (stdout)"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
+#: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
+#| msgid "ACTION"
+msgid "LOCATION"
+msgstr "МІСЦЕ"
+
+#: gio/gio-tool-cat.c:138
+msgid "Concatenate files and print to standard output."
+msgstr "З'єднати файли і вивести дані до стандартного виведення."
+
+#: gio/gio-tool-cat.c:140
+msgid ""
+"gio cat works just like the traditional cat utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location."
+msgstr ""
+"gio cat працює подібно до звичайної програми cat, але використовує місця\n"
+"GIO замість локальних файлів. Наприклад, ви можете вказати як місце\n"
+"щось таке: smb://сервер/ресурс/файл.txt."
+
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
+#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
+msgid "No locations given"
+msgstr "Не вказано місць"
+
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
+#| msgid "Target file is a directory"
+msgid "No target directory"
+msgstr "Немає каталогу призначення"
+
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
+msgid "Show progress"
+msgstr "Показувати поступ"
+
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
+msgid "Prompt before overwrite"
+msgstr "Запитувати перед перезаписом"
+
+#: gio/gio-tool-copy.c:46
+msgid "Preserve all attributes"
+msgstr "Зберегти усі атрибути"
+
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#| msgid "Backup file creation failed"
+msgid "Backup existing destination files"
+msgstr "Створити резервні копії наявних файлів призначення"
+
+#: gio/gio-tool-copy.c:48
+msgid "Never follow symbolic links"
+msgstr "Ніколи не переходити за символічними посиланнями"
+
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Використовувати типові права доступу для призначення"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
+#, c-format
+msgid "Transferred %s out of %s (%s/s)"
+msgstr "Перенесено %s з %s (%s/с)"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
+msgid "SOURCE"
+msgstr "ДЖЕРЕЛО"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+msgid "DESTINATION"
+msgstr "ПРИЗНАЧЕННЯ"
+
+#: gio/gio-tool-copy.c:105
+msgid "Copy one or more files from SOURCE to DESTINATION."
+msgstr "Копіювати один або декілька файлів з ДЖЕРЕЛО до ПРИЗНАЧЕННЯ."
+
+#: gio/gio-tool-copy.c:107
+msgid ""
+"gio copy is similar to the traditional cp utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location."
+msgstr ""
+"gio copy працює подібно до звичайної програми cp, але використовує місця\n"
+"GIO замість локальних файлів. Наприклад, ви можете вказати як місце\n"
+"щось таке: smb://сервер/ресурс/файл.txt."
+
+#: gio/gio-tool-copy.c:149
+#, c-format
+#| msgid "The resource at '%s' is not a directory"
+msgid "Destination %s is not a directory"
+msgstr "Призначення %s не є каталогом"
+
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
+#, c-format
+msgid "%s: overwrite “%s”? "
+msgstr "%s: переписати «%s»? "
+
+#: gio/gio-tool-info.c:37
+#| msgid "List available actions"
+msgid "List writable attributes"
+msgstr "Вивести список придатних до запису атрибутів"
+
+#: gio/gio-tool-info.c:38
+#| msgid "Error getting filesystem info: %s"
+msgid "Get file system info"
+msgstr "Отримати відомості щодо файлової системи"
+
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
+msgid "The attributes to get"
+msgstr "Атрибути, значення яких слід отримати"
+
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
+msgid "ATTRIBUTES"
+msgstr "АТРИБУТИ"
+
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
+msgid "Don’t follow symbolic links"
+msgstr "Не переходити за символічними посиланнями"
+
+#: gio/gio-tool-info.c:78
+msgid "attributes:\n"
+msgstr "атрибути:\n"
+
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:134
+#, c-format
+msgid "display name: %s\n"
+msgstr "показана назва: %s\n"
+
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:139
+#, c-format
+msgid "edit name: %s\n"
+msgstr "редагована назва: %s\n"
+
+#: gio/gio-tool-info.c:145
+#, c-format
+msgid "name: %s\n"
+msgstr "назва: %s\n"
+
+#: gio/gio-tool-info.c:152
+#, c-format
+msgid "type: %s\n"
+msgstr "тип: %s\n"
+
+#: gio/gio-tool-info.c:158
+msgid "size: "
+msgstr "розмір: "
+
+#: gio/gio-tool-info.c:163
+msgid "hidden\n"
+msgstr "прихований\n"
+
+#: gio/gio-tool-info.c:166
+#, c-format
+#| msgid "Error: %s\n"
+msgid "uri: %s\n"
+msgstr "адреса: %s\n"
+
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "локальний шлях: %s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "точка монтування unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
+msgid "Settable attributes:\n"
+msgstr "Придатні до встановлення атрибути:\n"
+
+#: gio/gio-tool-info.c:303
+msgid "Writable attribute namespaces:\n"
+msgstr "Придатні до запису простори назв атрибутів:\n"
+
+#: gio/gio-tool-info.c:338
+#| msgid "Show GApplication options"
+msgid "Show information about locations."
+msgstr "Показати відомості щодо місць."
+
+#: gio/gio-tool-info.c:340
+msgid ""
+"gio info is similar to the traditional ls utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location. File attributes can\n"
+"be specified with their GIO name, e.g. standard::icon, or just by\n"
+"namespace, e.g. unix, or by “*”, which matches all attributes"
+msgstr ""
+"gio info працює подібно до звичайної програми ls, але використовує місця\n"
+"GIO замість локальних файлів. Наприклад, ви можете вказати як місце\n"
+"щось таке: smb://сервер/ресурс/файл.txt. Атрибути файла можна задавати\n"
+"за їхніми назвами GIO, — наприклад, standard::icon, — або просто за"
+" простором\n"
+"назв, — наприклад, unix, — або просто «*», тобто обробити усі атрибути."
+
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
+msgid "Show hidden files"
+msgstr "Показати приховані файли"
+
+#: gio/gio-tool-list.c:38
+msgid "Use a long listing format"
+msgstr "Використовувати довгий формат списку"
+
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Вивести показані назви"
+
+#: gio/gio-tool-list.c:41
+msgid "Print full URIs"
+msgstr "Вивести повні адреси"
+
+#: gio/gio-tool-list.c:177
+msgid "List the contents of the locations."
+msgstr "Вивести список вмісту місць."
+
+#: gio/gio-tool-list.c:179
+msgid ""
+"gio list is similar to the traditional ls utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location. File attributes can\n"
+"be specified with their GIO name, e.g. standard::icon"
+msgstr ""
+"gio list працює подібно до звичайної програми ls, але використовує місця\n"
+"GIO замість локальних файлів. Наприклад, ви можете вказати як місце\n"
+"щось таке: smb://сервер/ресурс/файл.txt. Атрибути файла можна задавати\n"
+"за їхніми назвами GIO, — наприклад, standard::icon."
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-mime.c:71
+msgid "MIMETYPE"
+msgstr "ТИП_MIME"
+
+#: gio/gio-tool-mime.c:71
+msgid "HANDLER"
+msgstr "ОБРОБНИК"
+
+#: gio/gio-tool-mime.c:76
+msgid "Get or set the handler for a mimetype."
+msgstr "Отримати або встановити обробник для типу MIME."
+
+#: gio/gio-tool-mime.c:78
+msgid ""
+"If no handler is given, lists registered and recommended applications\n"
+"for the mimetype. If a handler is given, it is set as the default\n"
+"handler for the mimetype."
+msgstr ""
+"Якщо обробника не вказано, буде виведено список зареєстрованих і\n"
+"рекомендованих програм для типу MIME. Якщо вказано обробник, його буде\n"
+"встановлено як типовий обробник для типу MIME."
+
+#: gio/gio-tool-mime.c:100
+msgid "Must specify a single mimetype, and maybe a handler"
+msgstr "Слід вказати один тип MIME і, можливо, один обробник"
+
+#: gio/gio-tool-mime.c:116
+#, c-format
+msgid "No default applications for “%s”\n"
+msgstr "Немає типової програми для «%s»\n"
+
+#: gio/gio-tool-mime.c:122
+#, c-format
+#| msgid "invalid application id: '%s'\n"
+msgid "Default application for “%s”: %s\n"
+msgstr "Типова програма для «%s»: %s\n"
+
+#: gio/gio-tool-mime.c:127
+#| msgid "List applications"
+msgid "Registered applications:\n"
+msgstr "Зареєстровані програми:\n"
+
+#: gio/gio-tool-mime.c:129
+#| msgid "List applications"
+msgid "No registered applications\n"
+msgstr "Немає зареєстрованих програм\n"
+
+#: gio/gio-tool-mime.c:140
+#| msgid "List applications"
+msgid "Recommended applications:\n"
+msgstr "Рекомендовані програми:\n"
+
+#: gio/gio-tool-mime.c:142
+#| msgid "Can't find application"
+msgid "No recommended applications\n"
+msgstr "Немає рекомендованих програм\n"
+
+#: gio/gio-tool-mime.c:162
+#, c-format
+#| msgid "Failed to read from file '%s': %s"
+msgid "Failed to load info for handler “%s”"
+msgstr "не вдалося завантажити відомості для обробника «%s»"
+
+#: gio/gio-tool-mime.c:168
+#, c-format
+msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
+msgstr "Не вдалося встановити «%s» як типовий обробник для «%s»: %s\n"
+
+#: gio/gio-tool-mkdir.c:31
+#| msgid "Can't open directory"
+msgid "Create parent directories"
+msgstr "Створювати батьківські каталоги"
+
+#: gio/gio-tool-mkdir.c:52
+#| msgid "Can't open directory"
+msgid "Create directories."
+msgstr "Створити каталоги."
+
+#: gio/gio-tool-mkdir.c:54
+msgid ""
+"gio mkdir is similar to the traditional mkdir utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/mydir as location."
+msgstr ""
+"gio mkdir працює подібно до звичайної програми mkdir, але використовує місця\n"
+"GIO замість локальних файлів Наприклад, ви можете вказати як місце\n"
+"щось таке: smb://сервер/ресурс/каталог."
+
+#: gio/gio-tool-monitor.c:37
+msgid "Monitor a directory (default: depends on type)"
+msgstr "Стежити за каталогом (типова поведінка залежить від типу)"
+
+#: gio/gio-tool-monitor.c:39
+msgid "Monitor a file (default: depends on type)"
+msgstr "Спостерігати за файлом (типова поведінка залежить від типу)"
+
+#: gio/gio-tool-monitor.c:41
+msgid "Monitor a file directly (notices changes made via hardlinks)"
+msgstr ""
+"Спостерігати за файлом безпосередньо (зауважувати зміни, які внесено за"
+" допомогою жорстких посилань)"
+
+#: gio/gio-tool-monitor.c:43
+msgid "Monitors a file directly, but doesn’t report changes"
+msgstr "Спостерігати за файлом безпосередньо, але не повідомляти про зміни"
+
+#: gio/gio-tool-monitor.c:45
+msgid "Report moves and renames as simple deleted/created events"
+msgstr ""
+"Повідомляти про пересування та перейменовування як про прості події вилучення"
+" і створення"
+
+#: gio/gio-tool-monitor.c:47
+msgid "Watch for mount events"
+msgstr "Спостерігати за подіями монтування"
+
+#: gio/gio-tool-monitor.c:208
+msgid "Monitor files or directories for changes."
+msgstr "Стежити за змінами у файлах і каталогах."
+
+#: gio/gio-tool-mount.c:63
+msgid "Mount as mountable"
+msgstr "Монтувати як монтований"
+
+#: gio/gio-tool-mount.c:64
+msgid "Mount volume with device file, or other identifier"
+msgstr "Змонтувати том за вказаним файлом пристрою або іншим ідентифікатором"
+
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "Ід."
+
+#: gio/gio-tool-mount.c:65
+msgid "Unmount"
+msgstr "Демонтувати"
+
+#: gio/gio-tool-mount.c:66
+msgid "Eject"
+msgstr "Виштовхнути"
+
+#: gio/gio-tool-mount.c:67
+msgid "Stop drive with device file"
+msgstr "Зупинити роботу диска за вказаним файлом пристрою"
+
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "ПРИСТРІЙ"
+
+#: gio/gio-tool-mount.c:68
+msgid "Unmount all mounts with the given scheme"
+msgstr "Демонтувати усі точки монтування за заданою схемою"
+
+#: gio/gio-tool-mount.c:68
+msgid "SCHEME"
+msgstr "СХЕМА"
+
+#: gio/gio-tool-mount.c:69
+msgid "Ignore outstanding file operations when unmounting or ejecting"
+msgstr "Ігнорувати незвичні дії з файлами при демонтуванні або виштовхуванні"
+
+#: gio/gio-tool-mount.c:70
+msgid "Use an anonymous user when authenticating"
+msgstr "Використовувати анонімний обліковий запис при розпізнаванні"
+
+#. Translator: List here is a verb as in 'List all mounts'
+#: gio/gio-tool-mount.c:72
+msgid "List"
+msgstr "Список"
+
+#: gio/gio-tool-mount.c:73
+msgid "Monitor events"
+msgstr "Спостерігати за подіями"
+
+#: gio/gio-tool-mount.c:74
+#| msgid "Show help options"
+msgid "Show extra information"
+msgstr "Показати додаткові відомості"
+
+#: gio/gio-tool-mount.c:75
+msgid "The numeric PIM when unlocking a VeraCrypt volume"
+msgstr "Числовий PIM при розблокуванні тому VeraCrypt"
+
+#: gio/gio-tool-mount.c:75
+#| msgctxt "GDateTime"
+#| msgid "PM"
+msgid "PIM"
+msgstr "PIM"
+
+#: gio/gio-tool-mount.c:76
+msgid "Mount a TCRYPT hidden volume"
+msgstr "Змонтувати прихований том TCRYPT"
+
+#: gio/gio-tool-mount.c:77
+msgid "Mount a TCRYPT system volume"
+msgstr "Змонтувати системний том TCRYPT"
+
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
+msgid "Anonymous access denied"
+msgstr "Анонімний доступ заборонено"
+
+#: gio/gio-tool-mount.c:522
+msgid "No drive for device file"
+msgstr "Немає диска для файла диска"
+
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Немає тому із вказаним ідентифікатором"
+
+#: gio/gio-tool-mount.c:1203
+msgid "Mount or unmount the locations."
+msgstr "Змонтувати або демонтувати місця."
+
+#: gio/gio-tool-move.c:42
+msgid "Don’t use copy and delete fallback"
+msgstr "Не використовувати резервних варіантів копіювання і вилучення"
+
+#: gio/gio-tool-move.c:99
+msgid "Move one or more files from SOURCE to DEST."
+msgstr "Пересунути один або декілька файлів з ДЖЕРЕЛО до ПРИЗНАЧЕННЯ."
+
+#: gio/gio-tool-move.c:101
+msgid ""
+"gio move is similar to the traditional mv utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location"
+msgstr ""
+"gio move працює подібно до звичайної програми mv, але використовує місця\n"
+"GIO замість локальних файлів. Наприклад, ви можете вказати як місце\n"
+"щось таке: smb://сервер/ресурс/файл.txt"
+
+#: gio/gio-tool-move.c:143
+#, c-format
+#| msgid "Target file is a directory"
+msgid "Target %s is not a directory"
+msgstr "Призначення %s не є каталогом"
+
+#: gio/gio-tool-open.c:75
+msgid ""
+"Open files with the default application that\n"
+"is registered to handle files of this type."
+msgstr ""
+"Відкрити файли за допомогою типової програми, яку\n"
+"зареєстровано для обробки файлів відповідного типу."
+
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:31
+msgid "Ignore nonexistent files, never prompt"
+msgstr "Ігнорувати файли, яких не існує — не запитувати користувача"
+
+#: gio/gio-tool-remove.c:52
+msgid "Delete the given files."
+msgstr "Вилучити вказані файли."
+
+#: gio/gio-tool-rename.c:45
+msgid "NAME"
+msgstr "НАЗВА"
+
+#: gio/gio-tool-rename.c:50
+msgid "Rename a file."
+msgstr "Перейменувати файл."
+
+#: gio/gio-tool-rename.c:70
+#| msgid "Missing argument for %s"
+msgid "Missing argument"
+msgstr "Пропущено аргумент"
+
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
+#| msgid ""
+#| "'%s' takes no arguments\n"
+#| "\n"
+msgid "Too many arguments"
+msgstr "Забагато аргументів"
+
+#: gio/gio-tool-rename.c:95
+#, c-format
+msgid "Rename successful. New uri: %s\n"
+msgstr "Успішно перейменовано. Нова адреса: %s\n"
+
+#: gio/gio-tool-save.c:50
+msgid "Only create if not existing"
+msgstr "Створювати, лише якщо не існує"
+
+#: gio/gio-tool-save.c:51
+msgid "Append to end of file"
+msgstr "Дописати наприкінці файла"
+
+#: gio/gio-tool-save.c:52
+msgid "When creating, restrict access to the current user"
+msgstr "При створенні обмежити доступ до даних поточним користувачем"
+
+#: gio/gio-tool-save.c:53
+msgid "When replacing, replace as if the destination did not exist"
+msgstr "При заміні замінювати так, наче призначення не існувало"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:55
+msgid "Print new etag at end"
+msgstr "Вивести новий etag наприкінці"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:57
+msgid "The etag of the file being overwritten"
+msgstr "etag файла, який буде перезаписано"
+
+#: gio/gio-tool-save.c:57
+msgid "ETAG"
+msgstr "ETAG"
+
+#: gio/gio-tool-save.c:113
+#| msgid "Error reading from handle: %s"
+msgid "Error reading from standard input"
+msgstr "Помилка під час спроби читання зі стандартного джерела даних"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:139
+#| msgid "TLS support is not available"
+msgid "Etag not available\n"
+msgstr "Etag є недоступним\n"
+
+#: gio/gio-tool-save.c:163
+msgid "Read from standard input and save to DEST."
+msgstr ""
+"Прочитати дані зі стандартного джерела даних і зберегти їх до ПРИЗНАЧЕННЯ."
+
+#: gio/gio-tool-save.c:183
+msgid "No destination given"
+msgstr "Не вказано призначення"
+
+#: gio/gio-tool-set.c:33
+msgid "Type of the attribute"
+msgstr "Тип атрибута"
+
+#: gio/gio-tool-set.c:33
+msgid "TYPE"
+msgstr "ТИП"
+
+#: gio/gio-tool-set.c:89
+msgid "ATTRIBUTE"
+msgstr "АТРИБУТ"
+
+#: gio/gio-tool-set.c:89
+msgid "VALUE"
+msgstr "ЗНАЧЕННЯ"
+
+#: gio/gio-tool-set.c:93
+msgid "Set a file attribute of LOCATION."
+msgstr "Встановити атрибут файла для МІСЦЕ."
+
+#: gio/gio-tool-set.c:113
+#| msgid "No connection endpoint specified"
+msgid "Location not specified"
+msgstr "Не вказано місця"
+
+#: gio/gio-tool-set.c:120
+#| msgid "Error: signal not specified.\n"
+msgid "Attribute not specified"
+msgstr "Не вказано атрибута"
+
+#: gio/gio-tool-set.c:130
+#| msgid "Error: signal not specified.\n"
+msgid "Value not specified"
+msgstr "Не вказано значення"
+
+#: gio/gio-tool-set.c:180
+#, c-format
+#| msgid "Invalid attribute type (string expected)"
+msgid "Invalid attribute type “%s”"
+msgstr "Некоректний тип атрибута «%s»"
+
+#: gio/gio-tool-trash.c:32
+msgid "Empty the trash"
+msgstr "Спорожнити смітник"
+
+#: gio/gio-tool-trash.c:86
+msgid "Move files or directories to the trash."
+msgstr "Пересунути файли або каталоги до смітника."
+
+#: gio/gio-tool-tree.c:33
+msgid "Follow symbolic links, mounts and shortcuts"
+msgstr ""
+"Переходити за символічними посиланнями, до змонтованих тек та за скороченнями"
+
+#: gio/gio-tool-tree.c:244
+msgid "List contents of directories in a tree-like format."
+msgstr "Вивести вміст каталогів у форматі ієрархії."
+
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Елемент <%s> не може бути всередині <%s>"
 
-#: ../gio/glib-compile-resources.c:146
+#: gio/glib-compile-resources.c:144
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Елемент <%s> не може бути самим горішнім"
 
-#: ../gio/glib-compile-resources.c:236
+#: gio/glib-compile-resources.c:234
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "Файл %s вказано у ресурсі декілька разів"
 
-#: ../gio/glib-compile-resources.c:249
+#: gio/glib-compile-resources.c:245
 #, c-format
-msgid "Failed to locate '%s' in any source directory"
-msgstr "Не вдалося виявити «%s» у каталогах-джерелах"
+#| msgid "Failed to locate '%s' in any source directory"
+msgid "Failed to locate “%s” in any source directory"
+msgstr "Не вдалося виявити «%s» у каталозі-джерелі"
 
-#: ../gio/glib-compile-resources.c:260
+#: gio/glib-compile-resources.c:256
 #, c-format
-msgid "Failed to locate '%s' in current directory"
+#| msgid "Failed to locate '%s' in current directory"
+msgid "Failed to locate “%s” in current directory"
 msgstr "Не вдалося виявити «%s» у поточному каталозі"
 
-#: ../gio/glib-compile-resources.c:288
+#: gio/glib-compile-resources.c:290
 #, c-format
-msgid "Unknown processing option \"%s\""
+#| msgid "Unknown processing option \"%s\""
+msgid "Unknown processing option “%s”"
 msgstr "Невідомий параметр обробки «%s»"
 
-#: ../gio/glib-compile-resources.c:306 ../gio/glib-compile-resources.c:352
+#. Translators: the first %s is a gresource XML attribute,
+#. * the second %s is an environment variable, and the third
+#. * %s is a command line tool
+#.
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
 #, c-format
-msgid "Failed to create temp file: %s"
-msgstr "Не вдалося створити тимчасовий файл: %s"
+msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
+msgstr ""
+"Надіслано запит щодо попередньої обробки %s, але не встановлено %s, а %s"
+" немає серед каталогів PATH"
 
-#: ../gio/glib-compile-resources.c:380
+#: gio/glib-compile-resources.c:457
 #, c-format
 msgid "Error reading file %s: %s"
-msgstr "Помилка при читанні файлу %s: %s"
+msgstr "Помилка при читанні файла %s: %s"
 
-#: ../gio/glib-compile-resources.c:400
+#: gio/glib-compile-resources.c:477
 #, c-format
 msgid "Error compressing file %s"
-msgstr "Помилка при стисненні файлу %s"
+msgstr "Помилка при стисненні файла %s"
 
-#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "текст не може бути всередині <%s>"
 
-#: ../gio/glib-compile-resources.c:589
-msgid "name of the output file"
-msgstr "ім’я вихідного файлу"
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+msgid "Show program version and exit"
+msgstr "Вивести дані щодо версії програми і завершити роботу"
 
-#: ../gio/glib-compile-resources.c:590
+#: gio/glib-compile-resources.c:738
+#| msgid "name of the output file"
+msgid "Name of the output file"
+msgstr "Назва вихідного файла"
+
+#: gio/glib-compile-resources.c:739
+#| msgid ""
+#| "The directories where files are to be read from (default to current "
+#| "directory)"
 msgid ""
-"The directories where files are to be read from (default to current "
+"The directories to load files referenced in FILE from (default: current "
 "directory)"
-msgstr "Каталоги, у яких шукаються файли для читання (типово поточний каталог)"
+msgstr ""
+"Каталоги для завантаження файлів, на які посилається ФАЙЛ (типово поточний"
+" каталог)"
 
-#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994
-#: ../gio/glib-compile-schemas.c:2023
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "КАТАЛОГ"
 
-#: ../gio/glib-compile-resources.c:591
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
-"Генерувати результат у форматі у відповідності з розширенням цільового файлу"
+"Генерувати результат у форматі, який відповідає суфіксу назви файла"
+" призначення"
 
-#: ../gio/glib-compile-resources.c:592
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "Генерувати джерельний заголовок"
 
-#: ../gio/glib-compile-resources.c:593
-msgid "Generate sourcecode used to link in the resource file into your code"
+#: gio/glib-compile-resources.c:742
+#| msgid "Generate sourcecode used to link in the resource file into your code"
+msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
-"Генерувати sourcecode, який використовується для зв’язку з файлом ресурсів "
+"Генерувати початковий код, який використовується для зв'язку з файлом"
+" ресурсів "
 "вашого коду"
 
-#: ../gio/glib-compile-resources.c:594
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "Генерувати перелік залежностей"
 
-#: ../gio/glib-compile-resources.c:595
-msgid "Don't automatically create and register resource"
+#: gio/glib-compile-resources.c:744
+msgid "Name of the dependency file to generate"
+msgstr "Назва файла залежностей, який слід створити"
+
+#: gio/glib-compile-resources.c:745
+msgid "Include phony targets in the generated dependency file"
+msgstr "Включити фіктивні призначення у створений файл залежностей"
+
+#: gio/glib-compile-resources.c:746
+#| msgid "Don't automatically create and register resource"
+msgid "Don’t automatically create and register resource"
 msgstr "Не створювати або реєструвати ресурс автоматично"
 
-#: ../gio/glib-compile-resources.c:596
-msgid "Don't export functions; declare them G_GNUC_INTERNAL"
-msgstr "Не експортуйте функції; оголошуйте їх як G_GNUC_INTERNAL"
+#: gio/glib-compile-resources.c:747
+#| msgid "Don't export functions; declare them G_GNUC_INTERNAL"
+msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
+msgstr "Не експортувати функції; оголосити їх як G_GNUC_INTERNAL"
 
-#: ../gio/glib-compile-resources.c:597
+#: gio/glib-compile-resources.c:748
+msgid ""
+"Don’t embed resource data in the C file; assume it's linked externally "
+"instead"
+msgstr ""
+"Не вбудовувати дані ресурсу до файла Сі; припускати його зовнішнє компонування"
+
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr ""
-"Ім’я C-ідентифікатора, що використовується для генерації джерельного коду"
+"Назва C-ідентифікатора, який використовуватиметься для породження початкового"
+" коду"
 
-#: ../gio/glib-compile-resources.c:623
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -1583,244 +2641,522 @@ msgstr ""
 "Файли специфікації ресурсів мають розширення .gresource.xml,\n"
 "а файл ресурсу має розширення .gresource."
 
-#: ../gio/glib-compile-resources.c:639
-#, c-format
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
-msgstr "Ð\9fовинно Ð±Ñ\83Ñ\82и Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð»Ð¸Ñ\88е Ð¾Ð´Ð½Ðµ Ñ\96мâ\80\99Ñ\8f Ñ\84айлÑ\83\n"
+msgstr "Ð\92ам Ñ\81лÑ\96д Ð²ÐºÐ°Ð·Ð°Ñ\82и Ñ\82оÑ\87но Ð¾Ð´Ð½Ñ\83 Ð½Ð°Ð·Ð²Ñ\83 Ñ\84айла\n"
 
-#: ../gio/glib-compile-schemas.c:772
-msgid "empty names are not permitted"
-msgstr "порожні імена заборонено"
+#: gio/glib-compile-schemas.c:92
+#, c-format
+msgid "nick must be a minimum of 2 characters"
+msgstr "псевдонім має складатися принаймні з 2 символів"
 
-#: ../gio/glib-compile-schemas.c:782
+#: gio/glib-compile-schemas.c:103
 #, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
-msgstr "неправильне ім’я «%s»: імена повинні починатися з рядкової літери"
+#| msgid "Invalid symlink value given"
+msgid "Invalid numeric value"
+msgstr "Некоректне значення символічного посилання"
 
-#: ../gio/glib-compile-schemas.c:794
+#: gio/glib-compile-schemas.c:111
 #, c-format
-msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and hyphen ('-') are permitted."
-msgstr ""
-"неправильне ім’я «%s»: неправильний символ «%c»; допускаються лише рядкові "
-"літери, числа і дефіс («-»)."
+#| msgid "<%s id='%s'> already specified"
+msgid "<value nick='%s'/> already specified"
+msgstr "<value nick='%s'/> вже вказано"
 
-#: ../gio/glib-compile-schemas.c:803
+#: gio/glib-compile-schemas.c:119
 #, c-format
-msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
-msgstr "неправильне ім’я «%s»: неможна вказувати два дефіси одночасно («--»)."
+#| msgid "<key name='%s'> already specified"
+msgid "value='%s' already specified"
+msgstr "value='%s' вже вказано"
 
-#: ../gio/glib-compile-schemas.c:812
+#: gio/glib-compile-schemas.c:133
 #, c-format
-msgid "invalid name '%s': the last character may not be a hyphen ('-')."
-msgstr "неправильне ім’я «%s»: останній символ не може бути дефісом («-»)."
+msgid "flags values must have at most 1 bit set"
+msgstr "у значеннях прапорців має бути встановлено не більше одного біта"
 
-#: ../gio/glib-compile-schemas.c:820
+#: gio/glib-compile-schemas.c:158
 #, c-format
-msgid "invalid name '%s': maximum length is 1024"
-msgstr "неправильне ім’я «%s»: максимальна довжина дорівнює 1024"
+msgid "<%s> must contain at least one <value>"
+msgstr "<%s> має містити принаймні один елемент <value>"
 
-#: ../gio/glib-compile-schemas.c:889
+#: gio/glib-compile-schemas.c:314
 #, c-format
-msgid "<child name='%s'> already specified"
-msgstr "<child name='%s'> вже вказано"
+#| msgid "No connection endpoint specified"
+msgid "<%s> is not contained in the specified range"
+msgstr "<%s> не міститься у вказаному діапазоні"
 
-#: ../gio/glib-compile-schemas.c:915
-msgid "cannot add keys to a 'list-of' schema"
-msgstr "не вдалося додати ключі у схему «list-of»"
+#: gio/glib-compile-schemas.c:326
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr "<%s> не є коректним членом вказаного нумерованого типу"
 
-#: ../gio/glib-compile-schemas.c:926
+#: gio/glib-compile-schemas.c:332
 #, c-format
-msgid "<key name='%s'> already specified"
-msgstr "<key name='%s'> вже вказано"
+msgid "<%s> contains string not in the specified flags type"
+msgstr "<%s> містить рядок, якого немає у вказаному типі прапорців"
 
-#: ../gio/glib-compile-schemas.c:944
+#: gio/glib-compile-schemas.c:338
 #, c-format
-msgid ""
-"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
-"to modify value"
-msgstr ""
-"<key name='%s'> відтінює <key name='%s'> у <schema id='%s'>; для змінювання "
-"значення використовуйте <override>"
+msgid "<%s> contains a string not in <choices>"
+msgstr "<%s> містить рядок, якого немає у <choices>"
 
-#: ../gio/glib-compile-schemas.c:955
+#: gio/glib-compile-schemas.c:372
+#| msgid "<key name='%s'> already specified"
+msgid "<range/> already specified for this key"
+msgstr "<range/> для цього ключа вже вказано"
+
+#: gio/glib-compile-schemas.c:390
 #, c-format
-msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
-"to <key>"
-msgstr "у якості атрибуту <key> можна вказати лише «type», «enum» або «flags»"
+msgid "<range> not allowed for keys of type “%s”"
+msgstr "<range> не можна використовувати для ключів типу «%s»"
 
-#: ../gio/glib-compile-schemas.c:974
+#: gio/glib-compile-schemas.c:407
 #, c-format
-msgid "<%s id='%s'> not (yet) defined."
-msgstr "<%s id='%s'> не визначено (поки)."
+msgid "<range> specified minimum is greater than maximum"
+msgstr "вказане мінімальне значення <range> перевищує максимальне"
 
-#: ../gio/glib-compile-schemas.c:989
+#: gio/glib-compile-schemas.c:432
 #, c-format
-msgid "invalid GVariant type string '%s'"
-msgstr "непÑ\80ипÑ\83Ñ\81Ñ\82имий Ñ\80Ñ\8fдок Ñ\82ипÑ\83 GVariant Â«%s»"
+msgid "unsupported l10n category: %s"
+msgstr "непÑ\96дÑ\82Ñ\80имÑ\83вана ÐºÐ°Ñ\82егоÑ\80Ñ\96Ñ\8f l10n: %s"
 
-#: ../gio/glib-compile-schemas.c:1019
-msgid "<override> given but schema isn't extending anything"
-msgstr "<override> вказано, але схема нічого не розширює"
+#: gio/glib-compile-schemas.c:440
+msgid "l10n requested, but no gettext domain given"
+msgstr "надіслано запит щодо l10n, але не вказано домен gettext"
 
-#: ../gio/glib-compile-schemas.c:1032
-#, c-format
-msgid "no <key name='%s'> to override"
-msgstr "не вказано <key name='%s'> для заміщення"
+#: gio/glib-compile-schemas.c:452
+msgid "translation context given for value without l10n enabled"
+msgstr "вказано контекст перекладу для значення без вмикання l10n"
 
-#: ../gio/glib-compile-schemas.c:1040
+#: gio/glib-compile-schemas.c:474
 #, c-format
-msgid "<override name='%s'> already specified"
-msgstr "<override name='%s'> вже вказано"
+msgid "Failed to parse <default> value of type “%s”: "
+msgstr "Не вдалося обробити значення <default> типу «%s»: "
 
-#: ../gio/glib-compile-schemas.c:1111
-#, c-format
-msgid "<schema id='%s'> already specified"
-msgstr "<schema id='%s'> вже вказано"
+#: gio/glib-compile-schemas.c:491
+msgid ""
+"<choices> cannot be specified for keys tagged as having an enumerated type"
+msgstr ""
+"<choices> не можна вказувати для ключів, які позначено як такі, що мають"
+" нумерований тип"
 
-#: ../gio/glib-compile-schemas.c:1123
-#, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
-msgstr "<schema id='%s'> розширює схему  яка поки не існує «%s»"
+#: gio/glib-compile-schemas.c:500
+#| msgid "<child name='%s'> already specified"
+msgid "<choices> already specified for this key"
+msgstr "<choices> для цього ключа вже вказано"
 
-#: ../gio/glib-compile-schemas.c:1139
+#: gio/glib-compile-schemas.c:512
 #, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
-msgstr "<schema id='%s'> є переліком схеми яка поки не існує «%s»"
+msgid "<choices> not allowed for keys of type “%s”"
+msgstr "<choices> не можна використовувати для ключів типу «%s»"
 
-#: ../gio/glib-compile-schemas.c:1147
+#: gio/glib-compile-schemas.c:528
 #, c-format
-msgid "Can not be a list of a schema with a path"
-msgstr "Не може бути переліком схеми з шляхом"
+#| msgid "<child name='%s'> already specified"
+msgid "<choice value='%s'/> already given"
+msgstr "<choice value='%s'/> вже задано"
 
-#: ../gio/glib-compile-schemas.c:1157
+#: gio/glib-compile-schemas.c:543
 #, c-format
-msgid "Can not extend a schema with a path"
-msgstr "Не вдалося розширити схему шляхом"
+msgid "<choices> must contain at least one <choice>"
+msgstr "<choices> має містити принаймні один елемент <choice>"
 
-#: ../gio/glib-compile-schemas.c:1167
-#, c-format
+#: gio/glib-compile-schemas.c:557
+#| msgid "<child name='%s'> already specified"
+msgid "<aliases> already specified for this key"
+msgstr "<aliases> для цього ключа вже вказано"
+
+#: gio/glib-compile-schemas.c:561
 msgid ""
-"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+"<aliases> can only be specified for keys with enumerated or flags types or "
+"after <choices>"
 msgstr ""
-"<schema id='%s'> є переліком, що розширює <schema id='%s'>, який не є "
-"переліком"
+"<aliases> можна вказувати лише для ключів із нумерованими типами або типами"
+" прапорців чи після <choices>"
 
-#: ../gio/glib-compile-schemas.c:1177
+#: gio/glib-compile-schemas.c:580
 #, 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'> розширює <schema id='%s' list-of='%s'>, але "
+"<alias value='%s'/> given when “%s” is already a member of the enumerated "
+"type"
+msgstr "Вказано <alias value='%s'/>, коли «%s» вже є членом нумерованого типу"
+
+#: gio/glib-compile-schemas.c:586
+#, c-format
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
+msgstr "Вказано <alias value='%s'/>, коли вже вказано <choice value='%s'/>"
+
+#: gio/glib-compile-schemas.c:594
+#, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<alias value='%s'/> already specified"
+msgstr "<alias value='%s'/> вже вказано"
+
+#: gio/glib-compile-schemas.c:604
+#, c-format
+msgid "alias target “%s” is not in enumerated type"
+msgstr "призначення альтернативної назви «%s» не належить до нумерованого типу"
+
+#: gio/glib-compile-schemas.c:605
+#, c-format
+msgid "alias target “%s” is not in <choices>"
+msgstr "призначення альтернативи «%s» немає у <choices>"
+
+#: gio/glib-compile-schemas.c:620
+#, c-format
+msgid "<aliases> must contain at least one <alias>"
+msgstr "<aliases> має містити принаймні один елемент <alias>"
+
+#: gio/glib-compile-schemas.c:797
+#| msgid "empty names are not permitted"
+msgid "Empty names are not permitted"
+msgstr "Не можна використовувати порожні назви"
+
+#: gio/glib-compile-schemas.c:807
+#, c-format
+#| msgid "invalid name '%s': names must begin with a lowercase letter"
+msgid "Invalid name “%s”: names must begin with a lowercase letter"
+msgstr "Некоректна назва «%s»: назви мають починатися з малої літери"
+
+#: gio/glib-compile-schemas.c:819
+#, c-format
+#| msgid ""
+#| "invalid name '%s': invalid character '%c'; only lowercase letters, "
+#| "numbers and hyphen ('-') are permitted."
+msgid ""
+"Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
+"and hyphen (“-”) are permitted"
+msgstr ""
+"Некоректна назва «%s»: некоректний символ «%c». Можна використовувати лише"
+" малі літери, числа і дефіс («-»)."
+
+#: gio/glib-compile-schemas.c:828
+#, c-format
+#| msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
+msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
+msgstr "Некоректна назва «%s»: не можна вказувати два дефіси одночасно («--»)."
+
+#: gio/glib-compile-schemas.c:837
+#, c-format
+#| msgid "invalid name '%s': the last character may not be a hyphen ('-')."
+msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
+msgstr "Некоректна назва «%s»: останній символ не може бути дефісом («-»)."
+
+#: gio/glib-compile-schemas.c:845
+#, c-format
+#| msgid "invalid name '%s': maximum length is 1024"
+msgid "Invalid name “%s”: maximum length is 1024"
+msgstr "Некоректна назва «%s»: довжина має бути не більшою за 1024"
+
+#: gio/glib-compile-schemas.c:917
+#, c-format
+msgid "<child name='%s'> already specified"
+msgstr "<child name='%s'> вже вказано"
+
+#: gio/glib-compile-schemas.c:943
+#| msgid "cannot add keys to a 'list-of' schema"
+msgid "Cannot add keys to a “list-of” schema"
+msgstr "Не вдалося додати ключі до схеми «list-of»"
+
+#: gio/glib-compile-schemas.c:954
+#, c-format
+msgid "<key name='%s'> already specified"
+msgstr "<key name='%s'> вже вказано"
+
+#: gio/glib-compile-schemas.c:972
+#, c-format
+msgid ""
+"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
+"to modify value"
+msgstr ""
+"<key name='%s'> відтінює <key name='%s'> у <schema id='%s'>; для змінювання "
+"значення використовуйте <override>"
+
+#: gio/glib-compile-schemas.c:983
+#, c-format
+#| msgid ""
+#| "exactly one of 'type', 'enum' or 'flags' must be specified as an "
+#| "attribute to <key>"
+msgid ""
+"Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
+"to <key>"
+msgstr "Як атрибут <key> можна вказати лише «type», «enum» або «flags»"
+
+#: gio/glib-compile-schemas.c:1002
+#, c-format
+msgid "<%s id='%s'> not (yet) defined."
+msgstr "<%s id='%s'> не визначено (поки)."
+
+#: gio/glib-compile-schemas.c:1017
+#, c-format
+#| msgid "invalid GVariant type string '%s'"
+msgid "Invalid GVariant type string “%s”"
+msgstr "Некоректний рядок типу GVariant «%s»"
+
+#: gio/glib-compile-schemas.c:1047
+#| msgid "<override> given but schema isn't extending anything"
+msgid "<override> given but schema isn’t extending anything"
+msgstr "Вказано <override>, але схема нічого не розширює"
+
+#: gio/glib-compile-schemas.c:1060
+#, c-format
+#| msgid "no <key name='%s'> to override"
+msgid "No <key name='%s'> to override"
+msgstr "Немає <key name='%s'> для перевизначення"
+
+#: gio/glib-compile-schemas.c:1068
+#, c-format
+msgid "<override name='%s'> already specified"
+msgstr "<override name='%s'> вже вказано"
+
+#: gio/glib-compile-schemas.c:1141
+#, c-format
+msgid "<schema id='%s'> already specified"
+msgstr "<schema id='%s'> вже вказано"
+
+#: gio/glib-compile-schemas.c:1153
+#, c-format
+#| msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgid "<schema id='%s'> extends not yet existing schema “%s”"
+msgstr "<schema id='%s'> розширює схему, якої ще не існує — «%s»"
+
+#: gio/glib-compile-schemas.c:1169
+#, c-format
+#| msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgid "<schema id='%s'> is list of not yet existing schema “%s”"
+msgstr "<schema id='%s'> є списком схеми, якої ще не існує — «%s»"
+
+#: gio/glib-compile-schemas.c:1177
+#, c-format
+#| msgid "Can not be a list of a schema with a path"
+msgid "Cannot be a list of a schema with a path"
+msgstr "Не може бути списком схеми зі шляхом"
+
+#: gio/glib-compile-schemas.c:1187
+#, c-format
+#| msgid "Can not extend a schema with a path"
+msgid "Cannot extend a schema with a path"
+msgstr "Не вдалося розширити схему шляхом"
+
+#: gio/glib-compile-schemas.c:1197
+#, c-format
+msgid ""
+"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgstr ""
+"<schema id='%s'> є переліком, що розширює <schema id='%s'>, який не є "
+"переліком"
+
+#: gio/glib-compile-schemas.c:1207
+#, c-format
+#| msgid ""
+#| "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but "
+#| "'%s' does not extend '%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'> розширює <schema id='%s' list-of='%s'>, але "
 "«%s» не розширює «%s»"
 
-#: ../gio/glib-compile-schemas.c:1194
+#: gio/glib-compile-schemas.c:1224
 #, c-format
-msgid "a path, if given, must begin and end with a slash"
+#| msgid "a path, if given, must begin and end with a slash"
+msgid "A path, if given, must begin and end with a slash"
 msgstr ""
-"якщо вказується шлях, то він повинен починатися і закінчуватися символом "
-"косої риски"
+"Якщо вказано шлях, його запис має починатися і закінчуватися символом похилої"
+" риски"
+
+#: gio/glib-compile-schemas.c:1231
+#, c-format
+#| msgid "the path of a list must end with ':/'"
+msgid "The path of a list must end with “:/”"
+msgstr "Шлях у переліку має завершуватися на «:/»"
 
-#: ../gio/glib-compile-schemas.c:1201
+#: gio/glib-compile-schemas.c:1240
 #, c-format
-msgid "the path of a list must end with ':/'"
-msgstr "шлях у переліку повинен закінчуватися «:/»"
+msgid ""
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
+"desktop/” or “/system/” are deprecated."
+msgstr ""
+"Попередження: схема «%s» має шлях «%s». Шляхи, що починаються з «/apps/»,"
+" «/desktop/» та «/system/» вважаються застарілими."
 
-#: ../gio/glib-compile-schemas.c:1233
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> вже вказано"
 
-#: ../gio/glib-compile-schemas.c:1457
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
+#, c-format
+#| msgid "Element <%s> not allowed inside <%s>"
+msgid "Only one <%s> element allowed inside <%s>"
+msgstr "Можна використовувати лише один елемент <%s> всередині <%s>"
+
+#: gio/glib-compile-schemas.c:1518
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "Елемент <%s> не може бути самим горішнім"
 
+#: gio/glib-compile-schemas.c:1536
+msgid "Element <default> is required in <key>"
+msgstr "Потрібен елемент <default> у <key>"
+
+#: gio/glib-compile-schemas.c:1626
+#, c-format
+#| msgid "text may not appear inside <%s>"
+msgid "Text may not appear inside <%s>"
+msgstr "Текст може не показуватись усередині «%s»"
+
+#: gio/glib-compile-schemas.c:1694
+#, c-format
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr "Попередження: невизначене посилання на <schema id='%s'/>"
+
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823
-#: ../gio/glib-compile-schemas.c:1899
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+#| msgid "--strict was specified; exiting.\n"
+msgid "--strict was specified; exiting."
+msgstr "Було вказано параметр --strict; перериваємо обробку."
+
+#: gio/glib-compile-schemas.c:1845
+#| msgid "This entire file has been ignored.\n"
+msgid "This entire file has been ignored."
+msgstr "Увесь вміст файла було проігноровано."
+
+#: gio/glib-compile-schemas.c:1908
+#| msgid "Ignoring this file.\n"
+msgid "Ignoring this file."
+msgstr "Ігноруємо цей файл."
+
+#: gio/glib-compile-schemas.c:1963
 #, c-format
-msgid "--strict was specified; exiting.\n"
-msgstr "Був вказаний параметр --strict; закінчення роботи.\n"
+#| msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
+msgstr ""
+"Ключа «%s» у схемі «%s» немає, хоч вказаний у файлі замін «%s»; ігноруємо"
+" перевизначення для цього ключа."
 
-#: ../gio/glib-compile-schemas.c:1760
+#: gio/glib-compile-schemas.c:1971
 #, c-format
-msgid "This entire file has been ignored.\n"
-msgstr "Увесь вміст файлу був проігнорований.\n"
+#| msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
+msgstr ""
+"Немає ключа «%s» у схемі «%s», яку вказано у файлі замін «%s», а вказано"
+" параметр --"
+"strict — перериваємо обробку."
 
-#: ../gio/glib-compile-schemas.c:1819
+#: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "Ignoring this file.\n"
-msgstr "Цей файл ігнорується.\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
+msgstr ""
+"Не вдалося надати окремих перевизначень для окремих файлів desktop для"
+" локалізованого ключа «%s» у схемі «%s» (файл замін «%s»); ігноруємо заміну"
+" для цього ключа."
 
-#: ../gio/glib-compile-schemas.c:1859
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
-msgstr "Ключ «%s» у схемі «%s» відсутній, хоч вказаний у файлі замін «%s»"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
+msgstr ""
+"Не вдалося надати заміни для локалізованого ключа «%s» у схемі «%s» (файл"
+" заміни «%s»), а було задано --strict — перериваємо обробку."
 
-#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923
-#: ../gio/glib-compile-schemas.c:1951
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid "; ignoring override for this key.\n"
-msgstr "; ігнорується заміна для цього ключа.\n"
+#| msgid ""
+#| "error parsing key '%s' in schema '%s' as specified in override file '%s': "
+#| "%s."
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
+msgstr ""
+"Помилка під час обробки ключа «%s» у схемі «%s», яку визначено у файлі замін"
+" «%s»: %s. Ігноруємо заміну для цього ключа."
 
-#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927
-#: ../gio/glib-compile-schemas.c:1955
+#: gio/glib-compile-schemas.c:2038
 #, c-format
-msgid " and --strict was specified; exiting.\n"
-msgstr " і був вказаний параметр --strict; закінчення роботи.\n"
+#| msgid ""
+#| "error parsing key '%s' in schema '%s' as specified in override file '%s': "
+#| "%s."
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
+msgstr ""
+"Помилка обробки ключа «%s» у схемі «%s», яку визначено у файлі замін «%s»: "
+"%s. Було задано --strict — перериваємо обробку."
 
-#: ../gio/glib-compile-schemas.c:1885
+#: gio/glib-compile-schemas.c:2065
 #, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is outside the "
+#| "range given in the schema"
 msgid ""
-"error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 msgstr ""
-"помилка Ñ\80озбоÑ\80Ñ\83 ÐºÐ»Ñ\8eÑ\87а Â«%s» Ñ\83 Ñ\81Ñ\85емÑ\96 Â«%s», Ñ\8fка Ð²Ð¸Ð·Ð½Ð°Ñ\87ена Ñ\83 Ñ\84айлÑ\96 Ð·Ð°Ð¼Ñ\96н Â«%s»: "
-"%s."
+"Ð\97амÑ\96на ÐºÐ»Ñ\8eÑ\87а Â«%s» Ñ\83 Ñ\81Ñ\85емÑ\96 Â«%s» Ð²Ñ\96дповÑ\96дно Ð´Ð¾ Ñ\84айла Ð·Ð°Ð¼Ñ\96н Â«%s» Ð½Ðµ Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ\82Ñ\8c Ð´Ð¾"
+" вказаного у схемі діапазону — ігноруємо перевизначення цього ключа."
 
-#: ../gio/glib-compile-schemas.c:1895
+#: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "Ignoring override for this key.\n"
-msgstr "Ігнорується заміна для цього ключа.\n"
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is outside the "
+#| "range given in the schema"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
+msgstr ""
+"Заміна ключа «%s» у схемі «%s» відповідно до файла замін «%s» не належить до"
+" вказаного у схемі діапазону, а було задано --strict — перериваємо обробку."
 
-#: ../gio/glib-compile-schemas.c:1913
+#: gio/glib-compile-schemas.c:2101
 #, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is not in the "
+#| "list of valid choices"
 msgid ""
-"override for key '%s' in schema '%s' in override file '%s' is outside the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
 msgstr ""
-"замÑ\96на ÐºÐ»Ñ\8eÑ\87а  Â«%s» Ñ\83 Ñ\81Ñ\85емÑ\96 Â«%s» Ð²Ñ\96дповÑ\96дно Ñ\84айлÑ\83 Ð·Ð°Ð¼Ñ\96н Â«%s» Ð»ÐµÐ¶Ð¸Ñ\82Ñ\8c Ð¿Ð¾Ð·Ð° "
-"діапазоном даної схеми"
+"Ð\97амÑ\96на ÐºÐ»Ñ\8eÑ\87а  Â«%s» Ñ\83 Ñ\81Ñ\85емÑ\96 Â«%s» Ð²Ñ\96дповÑ\96дно Ð´Ð¾ Ñ\84айла Ð·Ð°Ð¼Ñ\96н Â«%s» Ð½Ðµ Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ\82Ñ\8c Ð´Ð¾"
+" списку припустимих значень; ігноруємо перевизначення для цього ключа."
 
-#: ../gio/glib-compile-schemas.c:1941
+#: gio/glib-compile-schemas.c:2111
 #, c-format
+#| msgid ""
+#| "override for key '%s' in schema '%s' in override file '%s' is not in the "
+#| "list of valid choices"
 msgid ""
-"override for key '%s' in schema '%s' in override file '%s' is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 msgstr ""
-"замÑ\96на ÐºÐ»Ñ\8eÑ\87а  Â«%s» Ñ\83 Ñ\81Ñ\85емÑ\96 Â«%s» Ð²Ñ\96дповÑ\96дно Ñ\84айлÑ\83 Ð·Ð°Ð¼Ñ\96н Â«%s» Ð»ÐµÐ¶Ð¸Ñ\82Ñ\8c Ð¿Ð¾Ð·Ð° "
-"переліком припустимих значень"
+"Ð\97амÑ\96на ÐºÐ»Ñ\8eÑ\87а Â«%s» Ñ\83 Ñ\81Ñ\85емÑ\96 Â«%s» Ð²Ñ\96дповÑ\96дно Ð´Ð¾ Ñ\84айла Ð·Ð°Ð¼Ñ\96н Â«%s» Ð½Ðµ Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ\82Ñ\8c Ð´Ð¾"
+" списку коректних варіантів, а задано параметр --strict — перериваємо обробку."
 
-#: ../gio/glib-compile-schemas.c:1994
-msgid "where to store the gschemas.compiled file"
-msgstr "місце зберігання файлу gschemas.compiled"
+#: gio/glib-compile-schemas.c:2173
+#| msgid "where to store the gschemas.compiled file"
+msgid "Where to store the gschemas.compiled file"
+msgstr "Місце зберігання файла gschemas.compiled"
 
-#: ../gio/glib-compile-schemas.c:1995
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
 msgstr "Зупиняти роботу при виникненні помилок у схемах"
 
-#: ../gio/glib-compile-schemas.c:1996
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
 msgstr "Не записувати файл gschema.compiled"
 
-#: ../gio/glib-compile-schemas.c:1997
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
-msgstr "Не встановлювати обмеження на ім’я ключа"
+msgstr "Не встановлювати обмеження на назву ключа"
 
-#: ../gio/glib-compile-schemas.c:2026
+#: gio/glib-compile-schemas.c:2205
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -1830,337 +3166,410 @@ msgstr ""
 "Файли схеми потрібні для розширення .gschema.xml,\n"
 "а файл кешу зветься gschemas.compiled."
 
-#: ../gio/glib-compile-schemas.c:2042
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr "Ð\9fовинне Ð±Ñ\83Ñ\82и Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð»Ð¸Ñ\88е Ð¾Ð´Ð½Ðµ Ñ\96мâ\80\99Ñ\8f ÐºÐ°Ñ\82алогÑ\83\n"
+#: gio/glib-compile-schemas.c:2226
+#| msgid "You should give exactly one directory name\n"
+msgid "You should give exactly one directory name"
+msgstr "Ð\92ам Ñ\81лÑ\96д Ð²ÐºÐ°Ð·Ð°Ñ\82и Ñ\82оÑ\87но Ð¾Ð´Ð½Ñ\83 Ð½Ð°Ð·Ð²Ñ\83 ÐºÐ°Ñ\82алогÑ\83"
 
-#: ../gio/glib-compile-schemas.c:2081
-#, c-format
-msgid "No schema files found: "
-msgstr "Файли Ñ\81Ñ\85еми Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾: "
+#: gio/glib-compile-schemas.c:2269
+#| msgid "No schema files found: "
+msgid "No schema files found: doing nothing."
+msgstr "Ð\9dе Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ\84айлÑ\96в Ñ\81Ñ\85ем: Ð½Ñ\96Ñ\87ого Ð½Ðµ Ñ\80обимо."
 
-#: ../gio/glib-compile-schemas.c:2084
-#, c-format
-msgid "doing nothing.\n"
-msgstr "нÑ\96Ñ\87ого Ð½Ðµ Ð²Ð¸ÐºÐ¾Ð½Ñ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f.\n"
+#: gio/glib-compile-schemas.c:2271
+#| msgid "removed existing output file.\n"
+msgid "No schema files found: removed existing output file."
+msgstr "Ð\9dе Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ\84айлÑ\96в Ñ\81Ñ\85еми: Ð²Ð¸Ð»Ñ\83Ñ\87ено Ð½Ð°Ñ\8fвний Ñ\84айл Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ\85 Ð´Ð°Ð½Ð¸Ñ\85."
 
-#: ../gio/glib-compile-schemas.c:2087
+#: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
-msgid "removed existing output file.\n"
-msgstr "вилучено існуючий вихідний файл.\n"
-
-#: ../gio/glocaldirectorymonitor.c:224
-msgid "Unable to find default local directory monitor type"
-msgstr "Не вдається знайти типовий різновид монітору локального каталогу"
+msgid "Invalid filename %s"
+msgstr "Некоректна назва файла %s"
 
-#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420
+#: gio/glocalfile.c:1013
 #, c-format
-msgid "Invalid filename %s"
-msgstr "Неправильна назва файлу %s"
+#| msgid "Error getting filesystem info: %s"
+msgid "Error getting filesystem info for %s: %s"
+msgstr "Помилка при отриманні відомостей щодо файлової системи для %s: %s"
 
-#: ../gio/glocalfile.c:981
+#. Translators: This is an error message when trying to find
+#. * the enclosing (user visible) mount of a file, but none
+#. * exists.
+#.
+#: gio/glocalfile.c:1152
 #, c-format
-msgid "Error getting filesystem info: %s"
-msgstr "Помилка при отриманні інформації з файлової системи: %s"
+#| msgid "Containing mount does not exist"
+msgid "Containing mount for file %s not found"
+msgstr "Вкладена точка монтування для файла %s не існує"
 
-#: ../gio/glocalfile.c:1149
-msgid "Can't rename root directory"
+#: gio/glocalfile.c:1175
+#| msgid "Can't rename root directory"
+msgid "Can’t rename root directory"
 msgstr "Не можна перейменовувати кореневий каталог"
 
-#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195
+#: gio/glocalfile.c:1193 gio/glocalfile.c:1216
 #, c-format
-msgid "Error renaming file: %s"
-msgstr "Помилка при перейменуванні файлу: %s"
+#| msgid "Error reading file %s: %s"
+msgid "Error renaming file %s: %s"
+msgstr "Помилка при перейменуванні файла %s: %s"
 
-#: ../gio/glocalfile.c:1178
-msgid "Can't rename file, filename already exists"
-msgstr "Не вдається перейменувати файл, файл з такою назвою вже існує"
+#: gio/glocalfile.c:1200
+#| msgid "Can't rename file, filename already exists"
+msgid "Can’t rename file, filename already exists"
+msgstr "Не вдалося перейменувати файл, файл із також назвою вже існує"
 
-#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239
-#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549
+#: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
-msgstr "Ð\9dепÑ\80авилÑ\8cна Ð½Ð°Ð·Ð²Ð° Ñ\84айлÑ\83"
+msgstr "Ð\9dекоÑ\80екÑ\82на Ð½Ð°Ð·Ð²Ð° Ñ\84айла"
 
-#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382
-msgid "Can't open directory"
-msgstr "Не вдається відкрити каталог"
-
-#: ../gio/glocalfile.c:1366
+#: gio/glocalfile.c:1381 gio/glocalfile.c:1396
 #, c-format
-msgid "Error opening file: %s"
-msgstr "Помилка при відкриванні файлу: %s"
+#| msgid "Error opening file '%s': %s"
+msgid "Error opening file %s: %s"
+msgstr "Помилка при відкритті файла «%s»: %s"
 
-#: ../gio/glocalfile.c:1507
+#: gio/glocalfile.c:1521
 #, c-format
-msgid "Error removing file: %s"
-msgstr "Помилка при видаленні файлу: %s"
+#| msgid "Error removing file: %s"
+msgid "Error removing file %s: %s"
+msgstr "Помилка під час спроби вилучити файл %s: %s"
 
-#: ../gio/glocalfile.c:1887
+#: gio/glocalfile.c:1963
 #, c-format
-msgid "Error trashing file: %s"
-msgstr "Помилка при переміщенні файлу до смітника: %s"
+#| msgid "Error trashing file: %s"
+msgid "Error trashing file %s: %s"
+msgstr "Помилка під час спроби надіслати файл %s до смітника: %s"
 
-#: ../gio/glocalfile.c:1910
+#: gio/glocalfile.c:2004
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "Помилка при створенні каталогу смітника %s: %s"
 
-#: ../gio/glocalfile.c:1931
-msgid "Unable to find toplevel directory for trash"
-msgstr "Не вдається знайти каталог верхнього рівня для смітника"
+#: gio/glocalfile.c:2025
+#, c-format
+#| msgid "Unable to find toplevel directory for trash"
+msgid "Unable to find toplevel directory to trash %s"
+msgstr "Не вдалося знайти каталог верхнього рівня для смітника %s"
 
-#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030
-msgid "Unable to find or create trash directory"
-msgstr "не вдається знайти чи створити каталог смітника"
+#: gio/glocalfile.c:2034
+#, c-format
+#| msgid "Copy (reflink/clone) between mounts is not supported"
+msgid "Trashing on system internal mounts is not supported"
+msgstr ""
+"Підтримки надсилання до смітника на внутрішніх точках монтування системи не"
+" передбачено"
 
-#: ../gio/glocalfile.c:2064
+#: gio/glocalfile.c:2118 gio/glocalfile.c:2138
 #, c-format
-msgid "Unable to create trashing info file: %s"
-msgstr "Помилка створення файл у смітнику: %s"
+#| msgid "Unable to find or create trash directory"
+msgid "Unable to find or create trash directory for %s"
+msgstr "Не вдалося знайти або створити каталог смітника для %s"
 
-#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180
-#: ../gio/glocalfile.c:2187
+#: gio/glocalfile.c:2173
 #, c-format
-msgid "Unable to trash file: %s"
-msgstr "Не вдається перемістити файл до смітника: %s"
+#| msgid "Unable to create trashing info file: %s"
+msgid "Unable to create trashing info file for %s: %s"
+msgstr ""
+"Не вдалося створити файл відомостей щодо надсилання до смітника для %s: %s"
 
-#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281
-msgid "internal error"
-msgstr "внутрішня помилка"
+#: gio/glocalfile.c:2233
+#, c-format
+#| msgid "Unable to trash file: %s"
+msgid "Unable to trash file %s across filesystem boundaries"
+msgstr "Не вдалося надіслати файл %s до смітника за межами файлової системи"
 
-#: ../gio/glocalfile.c:2214
+#: gio/glocalfile.c:2237 gio/glocalfile.c:2293
 #, c-format
-msgid "Error creating directory: %s"
-msgstr "Помилка при створенні каталогу: %s"
+#| msgid "Unable to trash file: %s"
+msgid "Unable to trash file %s: %s"
+msgstr "Не вдалося перемістити файл до смітника %s: %s"
 
-#: ../gio/glocalfile.c:2243
+#: gio/glocalfile.c:2299
+#, c-format
+#| msgid "Unable to trash file: %s"
+msgid "Unable to trash file %s"
+msgstr "Не вдалося перемістити файл до смітника %s"
+
+#: gio/glocalfile.c:2325
+#, c-format
+#| msgid "Error creating directory '%s': %s"
+msgid "Error creating directory %s: %s"
+msgstr "Сталася помилка при створенні каталогу «%s»: %s"
+
+#: gio/glocalfile.c:2354
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Файлова система не підтримує символічні посилання"
 
-#: ../gio/glocalfile.c:2247
+#: gio/glocalfile.c:2357
 #, c-format
-msgid "Error making symbolic link: %s"
-msgstr "Помилка при створенні символьного посилання: %s"
+#| msgid "Error making symbolic link: %s"
+msgid "Error making symbolic link %s: %s"
+msgstr "Помилка при створенні символічного посилання %s: %s"
 
-#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
-msgid "Error moving file: %s"
-msgstr "Помилка при переміщенні файлу: %s"
+#| msgid "Error moving file: %s"
+msgid "Error moving file %s: %s"
+msgstr "Помилка при переміщенні файла %s: %s"
 
-#: ../gio/glocalfile.c:2332
-msgid "Can't move directory over directory"
-msgstr "Не вдається перемістити каталог у каталог"
+#: gio/glocalfile.c:2423
+#| msgid "Can't move directory over directory"
+msgid "Can’t move directory over directory"
+msgstr "Не вдалося перемістити каталог поверх каталогу"
 
-#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925
-#: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954
-#: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
-msgstr "Помилка при створенні файлу резервної копії"
+msgstr "Помилка при створенні файла резервної копії"
 
-#: ../gio/glocalfile.c:2378
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
-msgstr "Ð\9fомилка Ð¿Ñ\80и Ð·Ñ\87иÑ\82Ñ\83ваннÑ\96 Ñ\86Ñ\96лÑ\8cового Ñ\84айлÑ\83: %s"
+msgstr "Ð\9fомилка Ð¿Ñ\80и Ð·Ñ\87иÑ\82Ñ\83ваннÑ\96 Ñ\84айла Ð¿Ñ\80изнаÑ\87еннÑ\8f: %s"
 
-#: ../gio/glocalfile.c:2392
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "Переміщення між різними точками монтування не підтримується"
 
-#: ../gio/glocalfile.c:2603
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Не вдалося визначити використання диска %s: %s"
 
-#: ../gio/glocalfileinfo.c:721
+#: gio/glocalfileinfo.c:760
 msgid "Attribute value must be non-NULL"
-msgstr "Значення атрибуту не можу бути NULL"
+msgstr "Значення атрибута не може бути NULL"
 
-#: ../gio/glocalfileinfo.c:728
+#: gio/glocalfileinfo.c:767
 msgid "Invalid attribute type (string expected)"
-msgstr "непÑ\80авилÑ\8cний Ñ\82ип Ð°Ñ\82Ñ\80ибÑ\83Ñ\82Ñ\83 (очікувався рядок)"
+msgstr "Ð\9dекоÑ\80екÑ\82ний Ñ\82ип Ð°Ñ\82Ñ\80ибÑ\83Ñ\82а (очікувався рядок)"
 
-#: ../gio/glocalfileinfo.c:735
+#: gio/glocalfileinfo.c:774
 msgid "Invalid extended attribute name"
-msgstr "Неправильна назва розширеного атрибуту"
+msgstr "Неправильна назва розширеного атрибута"
 
-#: ../gio/glocalfileinfo.c:775
+#: gio/glocalfileinfo.c:814
 #, c-format
-msgid "Error setting extended attribute '%s': %s"
-msgstr "Помилка при встановленні розширеного атрибуту \"%s\": %s"
+#| msgid "Error setting extended attribute '%s': %s"
+msgid "Error setting extended attribute “%s”: %s"
+msgstr "Помилка при встановленні розширеного атрибута «%s»: %s"
 
-#: ../gio/glocalfileinfo.c:1556
+#: gio/glocalfileinfo.c:1650
 msgid " (invalid encoding)"
 msgstr " (неправильне кодування)"
 
-#: ../gio/glocalfileinfo.c:1742 ../gio/glocalfileoutputstream.c:803
+#: gio/glocalfileinfo.c:1814 gio/glocalfileoutputstream.c:909
 #, c-format
-msgid "Error when getting information for file '%s': %s"
+#| msgid "Error when getting information for file '%s': %s"
+msgid "Error when getting information for file “%s”: %s"
 msgstr "Помилка при отриманні інформації про файл «%s»: %s"
 
-#: ../gio/glocalfileinfo.c:1993
+#: gio/glocalfileinfo.c:2084
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Помилка при отриманні інформації про файловий дескриптор: %s"
 
-#: ../gio/glocalfileinfo.c:2038
+#: gio/glocalfileinfo.c:2129
 msgid "Invalid attribute type (uint32 expected)"
-msgstr "Неправильний тип атрибуту (очікувався uint32)"
+msgstr "Неправильний тип атрибута (очікувався uint32)"
 
-#: ../gio/glocalfileinfo.c:2056
+#: gio/glocalfileinfo.c:2147
 msgid "Invalid attribute type (uint64 expected)"
-msgstr "Неправильний тип атрибуту (очікувався uint64)"
+msgstr "Неправильний тип атрибута (очікувався uint64)"
 
-#: ../gio/glocalfileinfo.c:2075 ../gio/glocalfileinfo.c:2094
+#: gio/glocalfileinfo.c:2166 gio/glocalfileinfo.c:2185
 msgid "Invalid attribute type (byte string expected)"
-msgstr "Неправильний тип атрибуту (очікувався рядок байтів)"
+msgstr "Неправильний тип атрибута (очікувався рядок байтів)"
 
-#: ../gio/glocalfileinfo.c:2129
+#: gio/glocalfileinfo.c:2232
 msgid "Cannot set permissions on symlinks"
 msgstr "Помилка при встановленні прав доступу на символічне посилання"
 
-#: ../gio/glocalfileinfo.c:2145
+#: gio/glocalfileinfo.c:2248
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Помилка встановлення прав доступу: %s"
 
-#: ../gio/glocalfileinfo.c:2196
+#: gio/glocalfileinfo.c:2299
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Помилка встановлення власник: %s"
 
-#: ../gio/glocalfileinfo.c:2219
+#: gio/glocalfileinfo.c:2322
 msgid "symlink must be non-NULL"
 msgstr "символьне посилання не може мати значення NULL"
 
-#: ../gio/glocalfileinfo.c:2229 ../gio/glocalfileinfo.c:2248
-#: ../gio/glocalfileinfo.c:2259
+#: gio/glocalfileinfo.c:2332 gio/glocalfileinfo.c:2351
+#: gio/glocalfileinfo.c:2362
 #, c-format
 msgid "Error setting symlink: %s"
-msgstr "Ð\9fомилка Ð¿Ñ\80и Ð²Ñ\81Ñ\82ановленнÑ\96 Ñ\81имволÑ\8cного посилання: %s"
+msgstr "Ð\9fомилка Ð¿Ñ\80и Ð²Ñ\81Ñ\82ановленнÑ\96 Ñ\81имволÑ\96Ñ\87ного посилання: %s"
 
-#: ../gio/glocalfileinfo.c:2238
+#: gio/glocalfileinfo.c:2341
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
-"помилка Ð¿Ñ\80и Ð²Ñ\81Ñ\82ановленнÑ\96 Ñ\81имволÑ\8cного Ð¿Ð¾Ñ\81иланнÑ\8f: Ñ\84айл Ð½Ðµ Ñ\94 Ñ\81имволÑ\8cним "
+"помилка Ð¿Ñ\80и Ð²Ñ\81Ñ\82ановленнÑ\96 Ñ\81имволÑ\96Ñ\87ного Ð¿Ð¾Ñ\81иланнÑ\8f: Ñ\84айл Ð½Ðµ Ñ\94 Ñ\81имволÑ\96Ñ\87ним "
 "посиланням"
 
-#: ../gio/glocalfileinfo.c:2364
+#: gio/glocalfileinfo.c:2413
+#, c-format
+msgid "Extra nanoseconds %d for UNIX timestamp %lld are negative"
+msgstr "Зайві наносекунди %d у часовій позначці UNIX %lld є від'ємними"
+
+#: gio/glocalfileinfo.c:2422
+#, c-format
+msgid "Extra nanoseconds %d for UNIX timestamp %lld reach 1 second"
+msgstr ""
+"Зайві наносекунди %d у часовій позначці UNIX %lld досягли значення у одну"
+" секунду"
+
+#: gio/glocalfileinfo.c:2432
+#, c-format
+msgid "UNIX timestamp %lld does not fit into 64 bits"
+msgstr "Часова позначка UNIX %lld не вкладається у 64 біти"
+
+#: gio/glocalfileinfo.c:2443
+#, c-format
+msgid "UNIX timestamp %lld is outside of the range supported by Windows"
+msgstr ""
+"Часова позначка UNIX %lld лежить поза діапазоном, підтримку якого передбачено"
+" у Windows"
+
+#: gio/glocalfileinfo.c:2507
+#, c-format
+msgid "File name “%s” cannot be converted to UTF-16"
+msgstr "Назву файла «%s» неможливо перетворити на назву у кодуванні UTF-16"
+
+#: gio/glocalfileinfo.c:2526
+#, c-format
+msgid "File “%s” cannot be opened: Windows Error %lu"
+msgstr "Не вдалося відкрити файл «%s»: помилка Windows %lu"
+
+#: gio/glocalfileinfo.c:2539
+#, c-format
+#| msgid "Error setting modification or access time: %s"
+msgid "Error setting modification or access time for file “%s”: %lu"
+msgstr "Помилка при встановленні часу зміни або доступу для файла «%s»: %lu"
+
+#: gio/glocalfileinfo.c:2640
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Помилка при встановленні часу зміни або доступу: %s"
 
-#: ../gio/glocalfileinfo.c:2387
+#: gio/glocalfileinfo.c:2663
 msgid "SELinux context must be non-NULL"
 msgstr "Контекст SELinux не може значення NULL"
 
-#: ../gio/glocalfileinfo.c:2402
+#: gio/glocalfileinfo.c:2678
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Помилка при встановленні контексту SELinux: %s"
 
-#: ../gio/glocalfileinfo.c:2409
+#: gio/glocalfileinfo.c:2685
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux не увімкнено у цій системі"
 
-#: ../gio/glocalfileinfo.c:2501
+#: gio/glocalfileinfo.c:2777
 #, c-format
 msgid "Setting attribute %s not supported"
-msgstr "Ð\92Ñ\81Ñ\82ановленнÑ\8f Ð°Ñ\82Ñ\80ибÑ\83Ñ\82Ñ\83 %s Ð½Ðµ Ð¿Ñ\96дÑ\82Ñ\80имÑ\83Ñ\8eÑ\82Ñ\8cÑ\81Ñ\8f"
+msgstr "Ð\9fÑ\96дÑ\82Ñ\80имки Ð²Ñ\81Ñ\82ановленнÑ\8f Ð°Ñ\82Ñ\80ибÑ\83Ñ\82а %s Ð½Ðµ Ð¿ÐµÑ\80едбаÑ\87ено"
 
-#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:694
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
 #, c-format
 msgid "Error reading from file: %s"
-msgstr "Помилка при читанні файлу: %s"
+msgstr "Помилка при читанні файла: %s"
 
-#: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
-#: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1002
+#: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
+#: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Помилка при встановленні позиції у файлі: %s"
 
-#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:246
-#: ../gio/glocalfileoutputstream.c:340
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
 #, c-format
 msgid "Error closing file: %s"
-msgstr "Помилка при закриванні файлу: %s"
+msgstr "Помилка при закриванні файла: %s"
 
-#: ../gio/glocalfilemonitor.c:145
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
-msgstr "Не вдається знайти типовий різновид монітору локального файлу"
+msgstr "Не вдалося знайти типовий різновид монітора локального файла"
 
-#: ../gio/glocalfileoutputstream.c:194 ../gio/glocalfileoutputstream.c:226
-#: ../gio/glocalfileoutputstream.c:715
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error writing to file: %s"
-msgstr "Помилка при записі до файлу: %s"
+msgstr "Помилка при записі до файла: %s"
 
-#: ../gio/glocalfileoutputstream.c:273
+#: gio/glocalfileoutputstream.c:371
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Помилка при видаленні старої резервної копії посилання: %s"
 
-#: ../gio/glocalfileoutputstream.c:287 ../gio/glocalfileoutputstream.c:300
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Помилка при створенні резервної копії: %s"
 
-#: ../gio/glocalfileoutputstream.c:318
+#: gio/glocalfileoutputstream.c:416
 #, c-format
 msgid "Error renaming temporary file: %s"
-msgstr "Помилка при перейменуванні тимчасового файлу: %s"
+msgstr "Помилка при перейменуванні тимчасового файла: %s"
 
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1053
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
 #, c-format
 msgid "Error truncating file: %s"
-msgstr "Помилка при усіканні файлу: %s"
+msgstr "Помилка при обрізанні файла: %s"
 
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:785
-#: ../gio/glocalfileoutputstream.c:1034 ../gio/gsubprocess.c:360
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
 #, c-format
-msgid "Error opening file '%s': %s"
-msgstr "Помилка при відкритті файлу \"%s\": %s"
+#| msgid "Error opening file '%s': %s"
+msgid "Error opening file “%s”: %s"
+msgstr "Помилка при відкритті файла «%s»: %s"
 
-#: ../gio/glocalfileoutputstream.c:816
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
 msgstr "Цільовий файл є каталогом"
 
-#: ../gio/glocalfileoutputstream.c:821
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
 msgstr "Цільовий файл не є звичайним файлом"
 
-#: ../gio/glocalfileoutputstream.c:833
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
 msgstr "Файл був змінений іншою програмою"
 
-#: ../gio/glocalfileoutputstream.c:1018
+#: gio/glocalfileoutputstream.c:1125
 #, c-format
 msgid "Error removing old file: %s"
-msgstr "Помилка при видаленні старого файлу: %s"
+msgstr "Помилка при видаленні старого файла: %s"
 
-#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
 msgid "Invalid GSeekType supplied"
 msgstr "Вказано неправильний GSeekType"
 
-#: ../gio/gmemoryinputstream.c:481
+#: gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
 msgstr "Неправильний тип операції зміни позиції у файлі"
 
-#: ../gio/gmemoryinputstream.c:505
+#: gio/gmemoryinputstream.c:508
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Не можна усікати GMemoryInputStream"
 
-#: ../gio/gmemoryoutputstream.c:565
+#: gio/gmemoryoutputstream.c:567
 msgid "Memory output stream not resizable"
 msgstr "Не можна змінювати розмір потоку виводу у пам'ять"
 
-#: ../gio/gmemoryoutputstream.c:581
+#: gio/gmemoryoutputstream.c:583
 msgid "Failed to resize memory output stream"
 msgstr "Помилка при зміні розміру потоку виводу у пам'ять"
 
-#: ../gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:673
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -2168,40 +3577,44 @@ msgstr ""
 "Кількість пам'яті, потрібна для процесу запису, більша ніж доступний "
 "адресний простір"
 
-#: ../gio/gmemoryoutputstream.c:781
+#: gio/gmemoryoutputstream.c:782
 msgid "Requested seek before the beginning of the stream"
 msgstr "Виконувати переміщення на початок потоку"
 
-#: ../gio/gmemoryoutputstream.c:796
+#: gio/gmemoryoutputstream.c:797
 msgid "Requested seek beyond the end of the stream"
 msgstr "Виконувати переміщення на кінець потоку"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
-#: ../gio/gmount.c:393
-msgid "mount doesn't implement \"unmount\""
+#: gio/gmount.c:399
+#| msgid "mount doesn't implement \"unmount\""
+msgid "mount doesn’t implement “unmount”"
 msgstr "для точки монтування не реалізовано операцію «unmount»"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
-#: ../gio/gmount.c:469
-msgid "mount doesn't implement \"eject\""
-msgstr "для точки монтування не реалізовано операцію витягування носія"
+#: gio/gmount.c:475
+#| msgid "mount doesn't implement \"eject\""
+msgid "mount doesn’t implement “eject”"
+msgstr "для точки монтування не реалізовано операцію виштовхування носія"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:547
-msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
+#: gio/gmount.c:553
+#| msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
+msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
 msgstr "У mount не реалізовано функцію «unmount» або «unmount_with_operation»"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gmount.c:632
-msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
+#: gio/gmount.c:638
+#| msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
+msgid "mount doesn’t implement “eject” or “eject_with_operation”"
 msgstr ""
 "для точки монтування не реалізовано операцію «eject» або "
 "«eject_with_operation»"
@@ -2209,94 +3622,131 @@ msgstr ""
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: ../gio/gmount.c:720
-msgid "mount doesn't implement \"remount\""
-msgstr "для точки монтування не «remount»"
+#: gio/gmount.c:726
+#| msgid "mount doesn't implement \"remount\""
+msgid "mount doesn’t implement “remount”"
+msgstr "для точки монтування не реалізовано «remount»"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:802
-msgid "mount doesn't implement content type guessing"
+#: gio/gmount.c:808
+#| msgid "mount doesn't implement content type guessing"
+msgid "mount doesn’t implement content type guessing"
 msgstr ""
 "для точки монтування не реалізовано автоматичне визначення типу контексту"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:889
-msgid "mount doesn't implement synchronous content type guessing"
+#: gio/gmount.c:895
+#| msgid "mount doesn't implement synchronous content type guessing"
+msgid "mount doesn’t implement synchronous content type guessing"
 msgstr ""
 "для точки монтування не реалізовано автоматичне визначення типу синхронного "
 "змісту"
 
-#: ../gio/gnetworkaddress.c:339
+#: gio/gnetworkaddress.c:415
 #, c-format
-msgid "Hostname '%s' contains '[' but not ']'"
-msgstr "Назва вузла '%s' містить '[' але не містить ']'"
+#| msgid "Hostname '%s' contains '[' but not ']'"
+msgid "Hostname “%s” contains “[” but not “]”"
+msgstr "Назва вузла «%s» містить «[», але не містить «]»"
 
-#: ../gio/gnetworkmonitorbase.c:189 ../gio/gnetworkmonitorbase.c:292
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Мережа недоступна"
 
-#: ../gio/gnetworkmonitorbase.c:227 ../gio/gnetworkmonitorbase.c:257
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
-msgstr "ХоÑ\81Ñ\82 Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пний"
+msgstr "Ð\92Ñ\83зол Ñ\94 Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пним"
 
-#: ../gio/gnetworkmonitornetlink.c:96 ../gio/gnetworkmonitornetlink.c:108
-#: ../gio/gnetworkmonitornetlink.c:127
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111
+#: gio/gnetworkmonitornetlink.c:130
 #, c-format
 msgid "Could not create network monitor: %s"
 msgstr "Не вдалося створити мережевий монітор: %s"
 
-#: ../gio/gnetworkmonitornetlink.c:117
+#: gio/gnetworkmonitornetlink.c:120
 msgid "Could not create network monitor: "
 msgstr "Не вдалося створити мережевий монітор: "
 
-#: ../gio/gnetworkmonitornetlink.c:175
+#: gio/gnetworkmonitornetlink.c:183
 msgid "Could not get network status: "
 msgstr "Не вдалося отримати стан мережі: "
 
-#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:550
-msgid "Output stream doesn't implement write"
-msgstr "У потоці виводу не реалізовано операцію запису"
+#: gio/gnetworkmonitornm.c:348
+#, c-format
+msgid "NetworkManager not running"
+msgstr "NetworkManager не запущено"
+
+#: gio/gnetworkmonitornm.c:359
+#, c-format
+msgid "NetworkManager version too old"
+msgstr "Версія NetworkManager є надто старою"
+
+#: gio/goutputstream.c:232 gio/goutputstream.c:775
+#| msgid "Output stream doesn't implement write"
+msgid "Output stream doesn’t implement write"
+msgstr "У потоці виводу не реалізовано операції запису"
+
+#: gio/goutputstream.c:472 gio/goutputstream.c:1533
+#, c-format
+msgid "Sum of vectors passed to %s too large"
+msgstr "Сума векторів, яку передано до %s, є надто великою"
 
-#: ../gio/goutputstream.c:511 ../gio/goutputstream.c:1028
+#: gio/goutputstream.c:736 gio/goutputstream.c:1761
 msgid "Source stream is already closed"
 msgstr "Вхідний потік вже закритий"
 
-#: ../gio/gresolver.c:318 ../gio/gthreadedresolver.c:108
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#, c-format
+#| msgid "Error resolving '%s': %s"
+msgid "Error resolving “%s”: %s"
+msgstr "Помилка перетворення назви на адресу «%s»: %s"
+
+#. Translators: The placeholder is for a function name.
+#: gio/gresolver.c:455 gio/gresolver.c:613
 #, c-format
-msgid "Error resolving '%s': %s"
-msgstr "Помилка розв'язання імені на адресу \"%s\": %s"
+#| msgid "Input stream doesn't implement read"
+msgid "%s not implemented"
+msgstr "%s не реалізовано"
+
+#: gio/gresolver.c:981 gio/gresolver.c:1033
+#| msgid "Invalid filename"
+msgid "Invalid domain"
+msgstr "Некоректний домен"
 
-#: ../gio/gresource.c:291 ../gio/gresource.c:539 ../gio/gresource.c:556
-#: ../gio/gresource.c:677 ../gio/gresource.c:746 ../gio/gresource.c:807
-#: ../gio/gresource.c:887 ../gio/gresourcefile.c:452
-#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655
+#: gio/gresource.c:665 gio/gresource.c:924 gio/gresource.c:963
+#: gio/gresource.c:1087 gio/gresource.c:1159 gio/gresource.c:1232
+#: gio/gresource.c:1313 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresourcefile.c:736
 #, c-format
-msgid "The resource at '%s' does not exist"
-msgstr "Ресурс з «%s» не існує"
+#| msgid "The resource at '%s' does not exist"
+msgid "The resource at “%s” does not exist"
+msgstr "Ресурсу у «%s» не існує"
 
-#: ../gio/gresource.c:456
+#: gio/gresource.c:830
 #, c-format
-msgid "The resource at '%s' failed to decompress"
-msgstr "Не вдалося розтиснути ресурс з «%s»"
+#| msgid "The resource at '%s' failed to decompress"
+msgid "The resource at “%s” failed to decompress"
+msgstr "Не вдалося розпакувати ресурс з «%s»"
 
-#: ../gio/gresourcefile.c:651
+#: gio/gresourcefile.c:732
 #, c-format
-msgid "The resource at '%s' is not a directory"
-msgstr "Ресурс з «%s» не є каталогом"
+#| msgid "The resource at '%s' is not a directory"
+msgid "The resource at “%s” is not a directory"
+msgstr "Ресурс у «%s» не є каталогом"
 
-#: ../gio/gresourcefile.c:859
-msgid "Input stream doesn't implement seek"
-msgstr "По вхідному потоку переміщення не підтримується"
+#: gio/gresourcefile.c:940
+#| msgid "Input stream doesn't implement seek"
+msgid "Input stream doesn’t implement seek"
+msgstr "У потоці вхідних даних не передбачено позиціювання"
 
-#: ../gio/gresource-tool.c:479
+#: gio/gresource-tool.c:499
 msgid "List sections containing resources in an elf FILE"
 msgstr "Вивести розділи, що містять ресурси у elf-ФАЙЛІ"
 
-#: ../gio/gresource-tool.c:485
+#: gio/gresource-tool.c:505
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -2306,39 +3756,51 @@ msgstr ""
 "Якщо вказано РОЗДІЛ, то виводиться перелік ресурсів лише з цього розділу\n"
 "Якщо вказано ШЛЯХ, то виводиться перелік ресурсів, що збігаються"
 
-#: ../gio/gresource-tool.c:488 ../gio/gresource-tool.c:498
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
 msgid "FILE [PATH]"
 msgstr "ФАЙЛ [ШЛЯХ]"
 
-#: ../gio/gresource-tool.c:489 ../gio/gresource-tool.c:499
-#: ../gio/gresource-tool.c:506
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
 msgid "SECTION"
 msgstr "РОЗДІЛ"
 
-#: ../gio/gresource-tool.c:494
+#: gio/gresource-tool.c:514
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources\n"
 "Details include the section, size and compression"
 msgstr ""
-"Вивід переліку ресурсів з подробицями\n"
-"Якщо вказано РОЗДІЛ, то виводиться перелік ресурсів лише з цього розділу\n"
-"Якщо вказано ШЛЯХ, то  виводиться перелік ресурсів, що збігаються\n"
-"Ð\94одаÑ\82ково Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ\82Ñ\8cÑ\81Ñ\8f розділ, розмір і стиснення"
+"Виведення списку ресурсів з подробицями\n"
+"Якщо вказано РОЗДІЛ, буде виведено список ресурсів лише з цього розділу\n"
+"Якщо вказано ШЛЯХ, буде виведено список відповідних ресурсів\n"
+"Ð\94одаÑ\82ково Ð±Ñ\83де Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¾ розділ, розмір і стиснення"
 
-#: ../gio/gresource-tool.c:504
+#: gio/gresource-tool.c:524
 msgid "Extract a resource file to stdout"
 msgstr "Витягнути файл ресурсу у stdout"
 
-#: ../gio/gresource-tool.c:505
+#: gio/gresource-tool.c:525
 msgid "FILE PATH"
 msgstr "ФАЙЛ ШЛЯХ"
 
-#: ../gio/gresource-tool.c:519
+#: gio/gresource-tool.c:539
+#| msgid ""
+#| "Usage:\n"
+#| "  gresource [--section SECTION] COMMAND [ARGS...]\n"
+#| "\n"
+#| "Commands:\n"
+#| "  help                      Show this information\n"
+#| "  sections                  List resource sections\n"
+#| "  list                      List resources\n"
+#| "  details                   List resources with details\n"
+#| "  extract                   Extract a resource\n"
+#| "\n"
+#| "Use 'gresource help COMMAND' to get detailed help.\n"
+#| "\n"
 msgid ""
 "Usage:\n"
-"  gresource [--section SECTION] COMMAND [ARGS...]\n"
+"  gresource [--section SECTION] COMMAND [ARGS]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2347,7 +3809,7 @@ msgid ""
 "  details                   List resources with details\n"
 "  extract                   Extract a resource\n"
 "\n"
-"Use 'gresource help COMMAND' to get detailed help.\n"
+"Use “gresource help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
 "Використання:\n"
@@ -2360,10 +3822,10 @@ msgstr ""
 "  details                   Вивести ресурси з подробицями\n"
 "  extract                   Витягнути ресурс\n"
 "\n"
-"Для отримання довідки використовуйте «gresource help КОМАНДА».\n"
+"Для отримання довідки скористайтеся «gresource help КОМАНДА».\n"
 "\n"
 
-#: ../gio/gresource-tool.c:533
+#: gio/gresource-tool.c:553
 #, c-format
 msgid ""
 "Usage:\n"
@@ -2378,19 +3840,19 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gresource-tool.c:540
+#: gio/gresource-tool.c:560
 msgid "  SECTION   An (optional) elf section name\n"
-msgstr "  Ð Ð\9eÐ\97Ð\94Ð\86Ð\9b    Ð\86мâ\80\99Ñ\8f Ñ\80оздÑ\96лÑ\83 elf (необовâ\80\99Ñ\8fзковий)\n"
+msgstr "  Ð Ð\9eÐ\97Ð\94Ð\86Ð\9b    Ð\9dазва Ñ\80оздÑ\96лÑ\83 elf (необов'Ñ\8fзкова)\n"
 
-#: ../gio/gresource-tool.c:544 ../gio/gsettings-tool.c:635
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
 msgid "  COMMAND   The (optional) command to explain\n"
-msgstr "  КОМАНДА   Команда для пояснення (необовязковий)\n"
+msgstr "  КОМАНДА   Команда для пояснення (необов'язковий)\n"
 
-#: ../gio/gresource-tool.c:550
+#: gio/gresource-tool.c:570
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr "  ФАЙЛ      Файл elf (виконуваний або спільна бібліотека)\n"
 
-#: ../gio/gresource-tool.c:553
+#: gio/gresource-tool.c:573
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -2398,90 +3860,86 @@ msgstr ""
 "  ФАЙЛ      Файл elf (виконуваний або спільна бібліотека)\n"
 "            або скомпільований файл ресурсів\n"
 
-#: ../gio/gresource-tool.c:557
+#: gio/gresource-tool.c:577
 msgid "[PATH]"
 msgstr "[ШЛЯХ]"
 
-#: ../gio/gresource-tool.c:559
+#: gio/gresource-tool.c:579
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr ""
-"  ШЛЯХ      Шлях ресурсу (необовязковий, можна вказати лише частину)\n"
+"  ШЛЯХ      Шлях ресурсу (необов'язковий, можна вказати лише частину)\n"
 
-#: ../gio/gresource-tool.c:560
+#: gio/gresource-tool.c:580
 msgid "PATH"
 msgstr "ШЛЯХ"
 
-#: ../gio/gresource-tool.c:562
+#: gio/gresource-tool.c:582
 msgid "  PATH      A resource path\n"
 msgstr "  ШЛЯХ      Шлях ресурсу\n"
 
-#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
 #, c-format
-msgid "No such schema '%s'\n"
-msgstr "Схема «%s» відсутня\n"
+#| msgid "No such schema '%s'\n"
+msgid "No such schema “%s”\n"
+msgstr "Немає схеми «%s»\n"
 
-#: ../gio/gsettings-tool.c:57
+#: gio/gsettings-tool.c:55
 #, c-format
-msgid "Schema '%s' is not relocatable (path must not be specified)\n"
-msgstr "Схема «%s» не є переміщуваноюй (вказування шляху неприпустиме)\n"
+#| msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+msgid "Schema “%s” is not relocatable (path must not be specified)\n"
+msgstr "Схема «%s» не є переміщуваною (не слід вказувати шлях)\n"
 
-#: ../gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:76
 #, c-format
-msgid "Schema '%s' is relocatable (path must be specified)\n"
+#| msgid "Schema '%s' is relocatable (path must be specified)\n"
+msgid "Schema “%s” is relocatable (path must be specified)\n"
 msgstr "Схема «%s» є переміщуваною (повинен бути вказаний шлях)\n"
 
-#: ../gio/gsettings-tool.c:92
-#, c-format
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "Вказано порожній шлях.\n"
 
-#: ../gio/gsettings-tool.c:98
-#, c-format
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
 msgstr "Шлях повинен починатися символом косої риски (/)\n"
 
-#: ../gio/gsettings-tool.c:104
-#, c-format
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
 msgstr "Шлях повинен закінчуватися символом косої риски (/)\n"
 
-#: ../gio/gsettings-tool.c:110
-#, c-format
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "У шляху не повинно бути дві стоячих поряд косих рисок (//)\n"
 
-#: ../gio/gsettings-tool.c:477
-#, c-format
+#: gio/gsettings-tool.c:536
 msgid "The provided value is outside of the valid range\n"
 msgstr "Надана величина лежить поза діапазоном припустимих значень\n"
 
-#: ../gio/gsettings-tool.c:484
-#, c-format
+#: gio/gsettings-tool.c:543
 msgid "The key is not writable\n"
 msgstr "Ключ недоступний для запису\n"
 
-#: ../gio/gsettings-tool.c:520
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Перелік встановлених (непереміщуваних) схем"
 
-#: ../gio/gsettings-tool.c:526
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
 msgstr "Перелік встановлених переміщуваних схем"
 
-#: ../gio/gsettings-tool.c:532
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
 msgstr "Перелік ключів у СХЕМІ"
 
-#: ../gio/gsettings-tool.c:533 ../gio/gsettings-tool.c:539
-#: ../gio/gsettings-tool.c:576
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
 msgstr "СХЕМА[:ШЛЯХ]"
 
-#: ../gio/gsettings-tool.c:538
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
 msgstr "Перелік нащадків СХЕМИ"
 
-#: ../gio/gsettings-tool.c:544
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -2489,44 +3947,49 @@ msgstr ""
 "Перерахувати ключі і значення рекурсивно\n"
 "Якщо вказана СХЕМА, то перерахувати усі ключі\n"
 
-#: ../gio/gsettings-tool.c:546
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
 msgstr "[СХЕМА[:ШЛЯХ]]"
 
-#: ../gio/gsettings-tool.c:551
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
 msgstr "Отримати значення КЛЮЧА"
 
-#: ../gio/gsettings-tool.c:552 ../gio/gsettings-tool.c:558
-#: ../gio/gsettings-tool.c:570 ../gio/gsettings-tool.c:582
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
 msgstr "СХЕМА[:ШЛЯХ] КЛЮЧ"
 
-#: ../gio/gsettings-tool.c:557
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
 msgstr "Запитати діапазон припустимих значень КЛЮЧА"
 
-#: ../gio/gsettings-tool.c:563
+#: gio/gsettings-tool.c:622
+#| msgid "Query the range of valid values for KEY"
+msgid "Query the description for KEY"
+msgstr "Запитати опис ключа КЛЮЧ"
+
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
 msgstr "Привласнити величину ЗНАЧЕННЯ КЛЮЧУ"
 
-#: ../gio/gsettings-tool.c:564
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "СХЕМА[:ШЛЯХ] КЛЮЧ ЗНАЧЕННЯ"
 
-#: ../gio/gsettings-tool.c:569
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
 msgstr "Призначити КЛЮЧУ його типове значення"
 
-#: ../gio/gsettings-tool.c:575
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Скинути усі ключі у СХЕМІ у їх типові значення"
 
-#: ../gio/gsettings-tool.c:581
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
 msgstr "Перевірити, що КЛЮЧ доступний для запису"
 
-#: ../gio/gsettings-tool.c:587
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -2536,15 +3999,37 @@ msgstr ""
 "Якщо КЛЮЧ не вказано, то стежити за усіма ключами СХЕМИ.\n"
 "Для зупинки стеження використовуйте ^C.\n"
 
-#: ../gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "СХЕМА[:ШЛЯХ] [КЛЮЧ]"
 
-#: ../gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:667
+#| msgid ""
+#| "Usage:\n"
+#| "  gsettings --version\n"
+#| "  gsettings [--schemadir SCHEMADIR] 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"
+#| "  reset-recursively         Reset all values in a given schema\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"
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
-"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]\n"
+"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2554,6 +4039,7 @@ msgid ""
 "  list-children             List children of a schema\n"
 "  list-recursively          List keys and values, recursively\n"
 "  range                     Queries the range of a key\n"
+"  describe                  Queries the description 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"
@@ -2561,7 +4047,7 @@ msgid ""
 "  writable                  Check if a key is writable\n"
 "  monitor                   Watch for changes\n"
 "\n"
-"Use 'gsettings help COMMAND' to get detailed help.\n"
+"Use “gsettings help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
 "Використання:\n"
@@ -2576,6 +4062,7 @@ msgstr ""
 "  list-children             Перелік нащадків схеми\n"
 "  list-recursively          Перелік ключів і значень, рекурсивно\n"
 "  range                     Запитати діапазон значень ключа\n"
+"  describe                  Запитати опис ключа\n"
 "  get                       Отримати значення ключа\n"
 "  set                       Змінити значення ключа\n"
 "  reset                     Скинути значення ключа\n"
@@ -2587,7 +4074,7 @@ msgstr ""
 "КОМАНДА».\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:625
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
@@ -2602,11 +4089,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:631
+#: gio/gsettings-tool.c:697
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  КАТ_СХЕМ  Каталог для пошуку додаткових схем\n"
 
-#: ../gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -2614,334 +4101,406 @@ msgstr ""
 "  СХЕМА     Ідентифікатор схеми\n"
 "  ШЛЯХ      Шлях, для переміщуваних схем\n"
 
-#: ../gio/gsettings-tool.c:644
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
-msgstr "  КЛЮЧ      (Необовязковий) ключ схеми\n"
+msgstr "  КЛЮЧ      (Необов'язковий) ключ схеми\n"
 
-#: ../gio/gsettings-tool.c:648
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
 msgstr "  КЛЮЧ      Ключ схеми\n"
 
-#: ../gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
 msgstr "  ЗНАЧЕННЯ  Значення, що привласнюється\n"
 
-#: ../gio/gsettings-tool.c:707
+#: gio/gsettings-tool.c:773
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Не вдалося завантажити схеми з «%s»: %s\n"
 
-#: ../gio/gsettings-tool.c:769
-#, c-format
+#: gio/gsettings-tool.c:785
+#| msgid "No schema files found: "
+msgid "No schemas installed\n"
+msgstr "Схем не встановлено\n"
+
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
-msgstr "Ð\92казано Ð¿Ð¾Ñ\80ожнÑ\94 Ñ\96мâ\80\99Ñ\8f схеми\n"
+msgstr "Ð\92казано Ð¿Ð¾Ñ\80ожнÑ\8e Ð½Ð°Ð·Ð²Ñ\83 схеми\n"
 
-#: ../gio/gsettings-tool.c:798
+#: gio/gsettings-tool.c:919
 #, c-format
-msgid "No such key '%s'\n"
-msgstr "Ключ «%s» відсутній\n"
+#| msgid "No such key '%s'\n"
+msgid "No such key “%s”\n"
+msgstr "Немає ключа «%s»\n"
 
-#: ../gio/gsocket.c:288
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "Неправильний сокет, не ініціалізований"
 
-#: ../gio/gsocket.c:295
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Неправильний сокет, помилка ініціалізації через : %s"
 
-#: ../gio/gsocket.c:303
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Сокет вже закритий"
 
-#: ../gio/gsocket.c:318 ../gio/gsocket.c:3610 ../gio/gsocket.c:3665
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Перевищено час очікування вводу-виводу сокета"
 
-#: ../gio/gsocket.c:465
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "створення GSocket з fd: %s"
 
-#: ../gio/gsocket.c:493 ../gio/gsocket.c:547 ../gio/gsocket.c:554
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
-msgstr "Не вдається створити сокет: %s"
+msgstr "Не вдалося створити сокет: %s"
 
-#: ../gio/gsocket.c:547
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "Вказано невідому родину"
 
-#: ../gio/gsocket.c:554
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "Вказано невідомий протокол"
 
-#: ../gio/gsocket.c:1712
+#: gio/gsocket.c:1164
+#, c-format
+msgid "Cannot use datagram operations on a non-datagram socket."
+msgstr ""
+"Неможливо скористатися операціями із датаграмами на сокеті без датаграм."
+
+#: gio/gsocket.c:1181
+#, c-format
+msgid "Cannot use datagram operations on a socket with a timeout set."
+msgstr ""
+"Неможливо скористатися операціями із датаграмами на сокеті із встановленим"
+" часом очікування."
+
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "не вдається отримати локальну адресу: %s"
 
-#: ../gio/gsocket.c:1755
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "не вдається отримати віддалену адресу: %s"
 
-#: ../gio/gsocket.c:1816
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "не вдається прослухати: %s"
 
-#: ../gio/gsocket.c:1915
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Помилка прив'язування до адреси: %s"
+#| msgid "Error binding to address: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Помилка прив'язування до адреси %s: %s"
 
-#: ../gio/gsocket.c:2027 ../gio/gsocket.c:2064
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Помилка при вступі до мультикастової групи: %s"
 
-#: ../gio/gsocket.c:2028 ../gio/gsocket.c:2065
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Помилка при виході з мультикастової групи: %s"
 
-#: ../gio/gsocket.c:2029
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "Відсутня підтримка мультикаста по джерелу"
 
-#: ../gio/gsocket.c:2251
+#: gio/gsocket.c:2529
+#| msgid "Unsupported socket address"
+msgid "Unsupported socket family"
+msgstr "Непідтримуване сімейство сокетів"
+
+#: gio/gsocket.c:2554
+msgid "source-specific not an IPv4 address"
+msgstr "source-specific не є адресою IPv4"
+
+#: gio/gsocket.c:2578
+#, c-format
+msgid "Interface name too long"
+msgstr "Назва інтерфейсу є надто довгою"
+
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Не знайдено інтерфейсу: %s"
+
+#: gio/gsocket.c:2617
+#| msgid "No support for source-specific multicast"
+msgid "No support for IPv4 source-specific multicast"
+msgstr ""
+"Підтримки специфічної для джерела неспрямованої трансляції для IPv4 не"
+" передбачено"
+
+#: gio/gsocket.c:2675
+#| msgid "No support for source-specific multicast"
+msgid "No support for IPv6 source-specific multicast"
+msgstr ""
+"Підтримки специфічної для джерела неспрямованої трансляції для IPv6 не"
+" передбачено"
+
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Помилка при прийнятті з'єднання: %s"
 
-#: ../gio/gsocket.c:2372
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "З'єднання триває"
 
-#: ../gio/gsocket.c:2422
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "Не вдалося отримати помилку очікування: "
 
-#: ../gio/gsocket.c:2623
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Помилка при отриманні даних: %s"
 
-#: ../gio/gsocket.c:2804
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Помилка при надсиланні даних: %s"
 
-#: ../gio/gsocket.c:2918
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Не вдалося вимкнути сокет: %s"
 
-#: ../gio/gsocket.c:2997
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Помилка при закриванні сокету: %s"
 
-#: ../gio/gsocket.c:3603
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Очікується умова сокету: %s"
 
-#: ../gio/gsocket.c:3884 ../gio/gsocket.c:3965
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Помилка при надсиланні повідомлення: %s"
 
-#: ../gio/gsocket.c:3909
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage не підтримується у windows"
 
-#: ../gio/gsocket.c:4246 ../gio/gsocket.c:4381
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Помилка при отриманні повідомлення: %s"
 
-#: ../gio/gsocket.c:4486
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Не вдалося прочитати повноваження сокета: %s"
 
-#: ../gio/gsocket.c:4495
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "Функція g_socket_get_credentials не реалізована у цій ОС"
 
-#: ../gio/gsocketclient.c:176
+#: gio/gsocketclient.c:182
 #, c-format
 msgid "Could not connect to proxy server %s: "
-msgstr "Не вдалося підєднатися до проксі-сервера %s: "
+msgstr "Не вдалося під'єднатися до проксі-сервера %s: "
 
-#: ../gio/gsocketclient.c:190
+#: gio/gsocketclient.c:196
 #, c-format
 msgid "Could not connect to %s: "
-msgstr "Не вдалося підєднатися до %s: "
+msgstr "Не вдалося під'єднатися до %s: "
 
-#: ../gio/gsocketclient.c:192
+#: gio/gsocketclient.c:198
 msgid "Could not connect: "
-msgstr "Не вдалося підєднатися до: "
+msgstr "Не вдалося під'єднатися до: "
 
-#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1597
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "Невідома помилка при з'єднанні"
 
-#: ../gio/gsocketclient.c:1082 ../gio/gsocketclient.c:1532
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
-msgstr "Проксування через не-TCP з’єднання не підтримується."
+msgstr ""
+"Підтримки передавання даних за допомогою проксі-сервера через не-TCP"
+" з'єднання не передбачено."
 
-#: ../gio/gsocketclient.c:1108 ../gio/gsocketclient.c:1553
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
 #, c-format
-msgid "Proxy protocol '%s' is not supported."
-msgstr "Протокол проксі «%s» не підтримується."
+#| msgid "Proxy protocol '%s' is not supported."
+msgid "Proxy protocol “%s” is not supported."
+msgstr "Підтримки протоколу проксі «%s» не передбачено."
 
-#: ../gio/gsocketlistener.c:186
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr "Прослуховувач з'єднання вже завершився"
 
-#: ../gio/gsocketlistener.c:227
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "Доданий сокет закритий"
 
-#: ../gio/gsocks4aproxy.c:118
+#: gio/gsocks4aproxy.c:118
 #, c-format
-msgid "SOCKSv4 does not support IPv6 address '%s'"
-msgstr "SOCKSv4 не підтримує адресу IPv6 «%s»"
+#| msgid "SOCKSv4 does not support IPv6 address '%s'"
+msgid "SOCKSv4 does not support IPv6 address “%s”"
+msgstr "Для SOCKSv4 не передбачено підтримки адреси IPv6 «%s»"
 
-#: ../gio/gsocks4aproxy.c:136
+#: gio/gsocks4aproxy.c:136
 msgid "Username is too long for SOCKSv4 protocol"
-msgstr "Імя користувача задовге для протоколу SOCKSv4"
+msgstr "Ім'я користувача задовге для протоколу SOCKSv4"
 
-#: ../gio/gsocks4aproxy.c:153
+#: gio/gsocks4aproxy.c:153
 #, c-format
-msgid "Hostname '%s' is too long for SOCKSv4 protocol"
-msgstr "Ім’я хосту «%s» задовге для протоколу SOCKSv4"
+#| msgid "Hostname '%s' is too long for SOCKSv4 protocol"
+msgid "Hostname “%s” is too long for SOCKSv4 protocol"
+msgstr "Назва вузла «%s» задовга для протоколу SOCKSv4"
 
-#: ../gio/gsocks4aproxy.c:179
+#: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
 msgstr "Сервер не є проксі-сервером SOCKSv4."
 
-#: ../gio/gsocks4aproxy.c:186
+#: gio/gsocks4aproxy.c:186
 msgid "Connection through SOCKSv4 server was rejected"
-msgstr "Підєднання через сервер SOCKSv4 було відхилено"
+msgstr "Під'єднання через сервер SOCKSv4 було відхилено"
 
-#: ../gio/gsocks5proxy.c:153 ../gio/gsocks5proxy.c:324
-#: ../gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr "Сервер не є проксі-сервером SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "Проксі SOCKSv5 вимагає автентифікацію."
 
-#: ../gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:177
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
 msgstr ""
 "Для проксі SOCKSv5 потрібен метод автентифікації, який не підтримується GLib."
 
-#: ../gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:206
 msgid "Username or password is too long for SOCKSv5 protocol."
-msgstr "Імя користувача або пароль задовгі для протоколу SOCKSv5."
+msgstr "Ім'я користувача або пароль задовгі для протоколу SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:236
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
-"Ð\90вÑ\82енÑ\82иÑ\84Ñ\96каÑ\86Ñ\96Ñ\8f SOCKSv5 Ð·Ð°ÐºÑ\96нÑ\87илаÑ\81Ñ\8f Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ Ð·-за Ð½ÐµÐ¿Ñ\80авилÑ\8cного Ñ\96мâ\80\99я "
-"коÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87а Ð°Ð±Ð¾ Ð¿Ð°Ñ\80олÑ\8e."
+"Ð\9dе Ð²Ð´Ð°Ð»Ð¾Ñ\81Ñ\8f Ð¿Ñ\80ойÑ\82и Ð°Ð²Ñ\82енÑ\82иÑ\84Ñ\96каÑ\86Ñ\96Ñ\8e SOCKSv5 Ñ\87еÑ\80ез Ð½ÐµÐ¿Ñ\80авилÑ\8cне Ñ\96м'я "
+"коÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87а Ð°Ð±Ð¾ Ð¿Ð°Ñ\80олÑ\8c."
 
-#: ../gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:286
 #, c-format
-msgid "Hostname '%s' is too long for SOCKSv5 protocol"
-msgstr "Ім’я хосту «%s» задовге для протоколу SOCKSv5"
+#| msgid "Hostname '%s' is too long for SOCKSv5 protocol"
+msgid "Hostname “%s” is too long for SOCKSv5 protocol"
+msgstr "Назва вузла «%s» задовга для протоколу SOCKSv5"
 
-#: ../gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:348
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr "Проксі-сервер SOCKSv5 використовує невідомий тип адреси."
 
-#: ../gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:355
 msgid "Internal SOCKSv5 proxy server error."
 msgstr "Внутрішня помилка проксі-сервера SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:361
 msgid "SOCKSv5 connection not allowed by ruleset."
-msgstr "Підєднання SOCKSv5 заборонено набором правил."
+msgstr "Під'єднання SOCKSv5 заборонено набором правил."
 
-#: ../gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:368
 msgid "Host unreachable through SOCKSv5 server."
-msgstr "ХоÑ\81Ñ\82 Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пний через сервер SOCKSv5."
+msgstr "Ð\9dемаÑ\94 Ð´Ð¾Ñ\81Ñ\82Ñ\83пÑ\83 Ð´Ð¾ Ð²Ñ\83зла через сервер SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:374
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr "Мережа недоступна через проксі SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:380
 msgid "Connection refused through SOCKSv5 proxy."
-msgstr "Підєднання через проксі SOCKSv5 відхилено."
+msgstr "Під'єднання через проксі SOCKSv5 відхилено."
 
-#: ../gio/gsocks5proxy.c:386
-msgid "SOCKSv5 proxy does not support 'connect' command."
-msgstr "Проксі SOCKSv5 не підтримує команду «connect»."
+#: gio/gsocks5proxy.c:386
+#| msgid "SOCKSv5 proxy does not support 'connect' command."
+msgid "SOCKSv5 proxy does not support “connect” command."
+msgstr ""
+"Для проксі-серверів SOCKSv5 не передбачено підтримки команди «connect»."
 
-#: ../gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:392
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr "Проксі SOCKSv5 не підтримує пропонований тип адреси."
 
-#: ../gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:398
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Невідома помилка проксі SOCKSv5."
 
-#: ../gio/gthemedicon.c:518
+#: gio/gthemedicon.c:595
 #, c-format
-msgid "Can't handle version %d of GThemedIcon encoding"
-msgstr "Версія %d кодування GThemedIcon не підтримується"
+#| msgid "Can't handle version %d of GThemedIcon encoding"
+msgid "Can’t handle version %d of GThemedIcon encoding"
+msgstr "Не вдалося обробити версію %d кодування GThemedIcon"
 
-#: ../gio/gthreadedresolver.c:193
-#, c-format
-msgid "Error reverse-resolving '%s': %s"
-msgstr "Помилка зворотного розв'язання імені за адресою \"%s\": %s"
+#: gio/gthreadedresolver.c:152
+msgid "No valid addresses were found"
+msgstr "Не знайдено коректних адрес"
 
-#: ../gio/gthreadedresolver.c:531 ../gio/gthreadedresolver.c:611
-#: ../gio/gthreadedresolver.c:711 ../gio/gthreadedresolver.c:761
+#: gio/gthreadedresolver.c:334
 #, c-format
-msgid "No DNS record of the requested type for '%s'"
-msgstr "Запис DNS з запитуваним типом «%s» відсутній"
+#| msgid "Error reverse-resolving '%s': %s"
+msgid "Error reverse-resolving “%s”: %s"
+msgstr "Помилка зворотного визначення назви за адресою «%s»: %s"
 
-#: ../gio/gthreadedresolver.c:536 ../gio/gthreadedresolver.c:716
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
 #, c-format
-msgid "Temporarily unable to resolve '%s'"
-msgstr "Тимчасово неможливо розв'язати '%s'"
+#| msgid "No DNS record of the requested type for '%s'"
+msgid "No DNS record of the requested type for “%s”"
+msgstr "Немає запису DNS з запитуваним типом «%s»"
 
-#: ../gio/gthreadedresolver.c:541 ../gio/gthreadedresolver.c:721
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
 #, c-format
-msgid "Error resolving '%s'"
-msgstr "Помилка при розв'язанні імені %s"
+#| msgid "Temporarily unable to resolve '%s'"
+msgid "Temporarily unable to resolve “%s”"
+msgstr "Тимчасово неможливо розв'язати «%s»"
 
-#: ../gio/gtlscertificate.c:247
-msgid "Cannot decrypt PEM-encoded private key"
-msgstr "Не вдалося розшифрувати секретний ключ у форматі PEM"
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
+#, c-format
+#| msgid "Error resolving '%s'"
+msgid "Error resolving “%s”"
+msgstr "Помилка при розв'язанні імені «%s»"
 
-#: ../gio/gtlscertificate.c:252
+#: gio/gtlscertificate.c:243
 msgid "No PEM-encoded private key found"
 msgstr "Не знайдено секретний ключ у форматі PEM"
 
-#: ../gio/gtlscertificate.c:262
+#: gio/gtlscertificate.c:253
+msgid "Cannot decrypt PEM-encoded private key"
+msgstr "Не вдалося розшифрувати секретний ключ у форматі PEM"
+
+#: gio/gtlscertificate.c:264
 msgid "Could not parse PEM-encoded private key"
 msgstr "Не вдалося розібрати секретний ключ у форматі PEM"
 
-#: ../gio/gtlscertificate.c:287
+#: gio/gtlscertificate.c:291
 msgid "No PEM-encoded certificate found"
 msgstr "Не знайдено сертифікат у форматі PEM"
 
-#: ../gio/gtlscertificate.c:296
+#: gio/gtlscertificate.c:300
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Не вдалося розібрати сертифікат у форматі PEM"
 
-#: ../gio/gtlspassword.c:111
+#: gio/gtlspassword.c:111
 msgid ""
 "This is the last chance to enter the password correctly before your access "
 "is locked out."
@@ -2949,20 +4508,25 @@ msgstr ""
 "Це остання можливість правильно увести пароль перед тим, як доступ буде "
 "заблоковано."
 
-#: ../gio/gtlspassword.c:113
+#. Translators: This is not the 'This is the last chance' string. It is
+#. * displayed when more than one attempt is allowed.
+#: gio/gtlspassword.c:115
+#| msgid ""
+#| "Several password entered have been incorrect, and your access will be "
+#| "locked out after further failures."
 msgid ""
-"Several password entered have been incorrect, and your access will be locked "
-"out after further failures."
+"Several passwords entered have been incorrect, and your access will be "
+"locked out after further failures."
 msgstr ""
-"Ð\9fаÑ\80олÑ\8c Ð±Ñ\83в Ð´ÐµÐºÑ\96лÑ\8cка Ñ\80азÑ\96в Ñ\83ведений неправильно, після наступних відмов ваш "
+"Ð\9fаÑ\80олÑ\8c Ð±Ñ\83ло Ð´ÐµÐºÑ\96лÑ\8cка Ñ\80азÑ\96в Ð²Ð²ÐµÐ´ÐµÐ½Ð¾ неправильно, після наступних відмов ваш "
 "доступ буде заблоковано."
 
-#: ../gio/gtlspassword.c:115
+#: gio/gtlspassword.c:117
 msgid "The password entered is incorrect."
-msgstr "Уведёний пароль неправильний."
+msgstr "Уведено неправильний пароль."
 
 # c-format
-#: ../gio/gunixconnection.c:159 ../gio/gunixconnection.c:554
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -2970,11 +4534,11 @@ msgstr[0] "Очікується 1 контрольне повідомлення,
 msgstr[1] "Очікується 1 контрольне повідомлення, отримано %d"
 msgstr[2] "Очікується 1 контрольне повідомлення, отримано %d"
 
-#: ../gio/gunixconnection.c:175 ../gio/gunixconnection.c:566
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
 msgstr "Неочікуваний тип допоміжних даних"
 
-#: ../gio/gunixconnection.c:193
+#: gio/gunixconnection.c:200
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -2982,922 +4546,1203 @@ msgstr[0] "Очікується один файловий дескриптор 
 msgstr[1] "Очікується один файловий дескриптор але отримано %d\n"
 msgstr[2] "Очікується один файловий дескриптор але отримано %d\n"
 
-#: ../gio/gunixconnection.c:212
+#: gio/gunixconnection.c:219
 msgid "Received invalid fd"
 msgstr "Отримано неправильний fd"
 
-#: ../gio/gunixconnection.c:348
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
-msgstr "Сталася помилка при відправлені мандату:"
+msgstr "Сталася помилка при відправленні мандату:"
 
-#: ../gio/gunixconnection.c:496
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Сталася помилка при перевірці вмикання SO_PASSCRED для сокета: %s"
 
-#: ../gio/gunixconnection.c:511
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Сталася помилка при вмиканні SO_PASSCRED: %s"
 
-#: ../gio/gunixconnection.c:540
+#: gio/gunixconnection.c:565
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Очікувалося прочитати один байт ідентифікаційної інформації (credentials), "
 "але не прочитано жодного байту"
 
-#: ../gio/gunixconnection.c:580
+#: gio/gunixconnection.c:605
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Контрольне повідомлення не очікувалося, але отримано %d"
 
-#: ../gio/gunixconnection.c:604
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Сталася помилка при вимкненні SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391
+#: gio/gunixinputstream.c:362 gio/gunixinputstream.c:383
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "Помилка при читанні з файлового дескриптора: %s"
 
-#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410
+#: gio/gunixinputstream.c:416 gio/gunixoutputstream.c:525
+#: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Помилка при закритті файлового дескриптора: %s"
 
-#: ../gio/gunixmounts.c:1991 ../gio/gunixmounts.c:2044
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "Корінь файлової системи"
 
-#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377
+#: gio/gunixoutputstream.c:362 gio/gunixoutputstream.c:382
+#: gio/gunixoutputstream.c:469 gio/gunixoutputstream.c:489
+#: gio/gunixoutputstream.c:635
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Помилка при запису у файловий дескриптор: %s"
 
-#: ../gio/gunixsocketaddress.c:232
+#: gio/gunixsocketaddress.c:243
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Абстрактні адреси доменних сокетів UNIX не підтримуються на цій системі"
 
-#: ../gio/gvolume.c:437
-msgid "volume doesn't implement eject"
-msgstr "том не підтримує операцію витягування носія"
+#: gio/gvolume.c:438
+#| msgid "volume doesn't implement eject"
+msgid "volume doesn’t implement eject"
+msgstr "для тому не реалізовано операції виштовхування носія"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gvolume.c:514
-msgid "volume doesn't implement eject or eject_with_operation"
+#: gio/gvolume.c:515
+#| msgid "volume doesn't implement eject or eject_with_operation"
+msgid "volume doesn’t implement eject or eject_with_operation"
 msgstr ""
-"том не підтримує операцію витягування носія або ж витягування з операцією"
-
-#: ../gio/gwin32appinfo.c:274
-msgid "Can't find application"
-msgstr "Не вдається знайти програму"
-
-#: ../gio/gwin32appinfo.c:306
-#, c-format
-msgid "Error launching application: %s"
-msgstr "Помилка при запусканні програми: %s"
+"для тому не реалізовано підтримку виштовхування носія або ж виштовхування з"
+" операцією"
 
-#: ../gio/gwin32appinfo.c:342
-msgid "URIs not supported"
-msgstr "URI не підтримуються"
-
-#: ../gio/gwin32appinfo.c:364
-msgid "association changes not supported on win32"
-msgstr "Зміни асоціацій розширень не підтримуються на win32"
-
-#: ../gio/gwin32appinfo.c:376
-msgid "Association creation not supported on win32"
-msgstr "Створення асоціацій розширень не підтримуються на win32"
-
-#: ../gio/gwin32inputstream.c:344
+#: gio/gwin32inputstream.c:185
 #, c-format
 msgid "Error reading from handle: %s"
 msgstr "Сталася помилка при читанні з дескриптора: %s"
 
-#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375
+#: gio/gwin32inputstream.c:232 gio/gwin32outputstream.c:219
 #, c-format
 msgid "Error closing handle: %s"
 msgstr "Сталася помилка при закритті дескриптора: %s"
 
-#: ../gio/gwin32outputstream.c:331
+#: gio/gwin32outputstream.c:172
 #, c-format
 msgid "Error writing to handle: %s"
 msgstr "Сталася помилка при запису у дескриптор: %s"
 
-#: ../gio/gzlibcompressor.c:394 ../gio/gzlibdecompressor.c:347
+#: gio/gzlibcompressor.c:394 gio/gzlibdecompressor.c:347
 msgid "Not enough memory"
 msgstr "Бракує пам'яті"
 
-#: ../gio/gzlibcompressor.c:401 ../gio/gzlibdecompressor.c:354
+#: gio/gzlibcompressor.c:401 gio/gzlibdecompressor.c:354
 #, c-format
 msgid "Internal error: %s"
 msgstr "Внутрішня помилка: %s"
 
-#: ../gio/gzlibcompressor.c:414 ../gio/gzlibdecompressor.c:368
+#: gio/gzlibcompressor.c:414 gio/gzlibdecompressor.c:368
 msgid "Need more input"
 msgstr "Потрібно більше вхідних даних"
 
-#: ../gio/gzlibdecompressor.c:340
+#: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
 msgstr "Неправильно стиснені дані"
 
-#: ../gio/tests/gdbus-daemon.c:18
+#: gio/tests/gdbus-daemon.c:18
 msgid "Address to listen on"
 msgstr "Прослуховувана адреса"
 
-#: ../gio/tests/gdbus-daemon.c:19
+#: gio/tests/gdbus-daemon.c:19
 msgid "Ignored, for compat with GTestDbus"
 msgstr "Ігнорується, для сумісності з GTestDbus"
 
-#: ../gio/tests/gdbus-daemon.c:20
+#: gio/tests/gdbus-daemon.c:20
 msgid "Print address"
 msgstr "Надрукувати адресу"
 
-#: ../gio/tests/gdbus-daemon.c:21
+#: gio/tests/gdbus-daemon.c:21
 msgid "Print address in shell mode"
 msgstr "Надрукувати адресу у режимі оболонки"
 
-#: ../gio/tests/gdbus-daemon.c:28
+#: gio/tests/gdbus-daemon.c:28
 msgid "Run a dbus service"
 msgstr "Запуск служби dbus"
 
-#: ../gio/tests/gdbus-daemon.c:42
-#, c-format
+#: gio/tests/gdbus-daemon.c:42
 msgid "Wrong args\n"
 msgstr "Неправильні параметри\n"
 
-#: ../glib/gbookmarkfile.c:755
+#: glib/gbookmarkfile.c:756
 #, c-format
-msgid "Unexpected attribute '%s' for element '%s'"
-msgstr "Неочікуваний атрибут \"%s\" для елемента \"%s\""
+#| msgid "Unexpected attribute '%s' for element '%s'"
+msgid "Unexpected attribute “%s” for element “%s”"
+msgstr "Неочікуваний атрибут «%s» для елемента «%s»"
 
-#: ../glib/gbookmarkfile.c:766 ../glib/gbookmarkfile.c:837
-#: ../glib/gbookmarkfile.c:847 ../glib/gbookmarkfile.c:954
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
-msgid "Attribute '%s' of element '%s' not found"
-msgstr "Атрибут \"%s\" для елемента \"%s\" не існує"
+#| msgid "Attribute '%s' of element '%s' not found"
+msgid "Attribute “%s” of element “%s” not found"
+msgstr "Атрибута «%s» для елемента «%s» не існує"
 
-#: ../glib/gbookmarkfile.c:1124 ../glib/gbookmarkfile.c:1189
-#: ../glib/gbookmarkfile.c:1253 ../glib/gbookmarkfile.c:1263
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
-msgid "Unexpected tag '%s', tag '%s' expected"
-msgstr "Неочікуваний тег \"%s\", очікувався тег \"%s\""
+#| msgid "Unexpected tag '%s', tag '%s' expected"
+msgid "Unexpected tag “%s”, tag “%s” expected"
+msgstr "Неочікуваний теґ «%s», мало бути використано теґ «%s»"
 
-#: ../glib/gbookmarkfile.c:1149 ../glib/gbookmarkfile.c:1163
-#: ../glib/gbookmarkfile.c:1231
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
-msgid "Unexpected tag '%s' inside '%s'"
-msgstr "Неочікуваний тег '%s' у '%s'"
+#| msgid "Unexpected tag '%s' inside '%s'"
+msgid "Unexpected tag “%s” inside “%s”"
+msgstr "Неочікуваний теґ «%s» у «%s»"
 
-#: ../glib/gbookmarkfile.c:1773
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr "Некоректний запис дати і часу «%s» у файлі закладок"
+
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
-msgstr "Не вдається знайти правильний файл закладок у каталогах даних"
+msgstr "Не вдалося знайти правильний файл закладок у каталогах даних"
 
-#: ../glib/gbookmarkfile.c:1974
+#: glib/gbookmarkfile.c:2032
 #, c-format
-msgid "A bookmark for URI '%s' already exists"
-msgstr "Файл закладок для URI '%s' вже існує"
+#| msgid "A bookmark for URI '%s' already exists"
+msgid "A bookmark for URI “%s” already exists"
+msgstr "Файл закладок для адреси «%s» вже існує"
 
-#: ../glib/gbookmarkfile.c:2020 ../glib/gbookmarkfile.c:2178
-#: ../glib/gbookmarkfile.c:2263 ../glib/gbookmarkfile.c:2343
-#: ../glib/gbookmarkfile.c:2428 ../glib/gbookmarkfile.c:2511
-#: ../glib/gbookmarkfile.c:2589 ../glib/gbookmarkfile.c:2668
-#: ../glib/gbookmarkfile.c:2710 ../glib/gbookmarkfile.c:2807
-#: ../glib/gbookmarkfile.c:2927 ../glib/gbookmarkfile.c:3117
-#: ../glib/gbookmarkfile.c:3193 ../glib/gbookmarkfile.c:3361
-#: ../glib/gbookmarkfile.c:3450 ../glib/gbookmarkfile.c:3539
-#: ../glib/gbookmarkfile.c:3655
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
-msgid "No bookmark found for URI '%s'"
-msgstr "Не знайдено закладки для URI '%s'"
+#| msgid "No bookmark found for URI '%s'"
+msgid "No bookmark found for URI “%s”"
+msgstr "Не знайдено закладки для адреси «%s»"
 
-#: ../glib/gbookmarkfile.c:2352
+#: glib/gbookmarkfile.c:2410
 #, c-format
-msgid "No MIME type defined in the bookmark for URI '%s'"
-msgstr "Не визначено тип MIME у закладці для URI '%s'"
+#| msgid "No MIME type defined in the bookmark for URI '%s'"
+msgid "No MIME type defined in the bookmark for URI “%s”"
+msgstr "Не визначено тип MIME у закладці для адреси «%s»"
 
-#: ../glib/gbookmarkfile.c:2437
+#: glib/gbookmarkfile.c:2495
 #, c-format
-msgid "No private flag has been defined in bookmark for URI '%s'"
-msgstr "Не вказано приватну ознаку у закладці для URI '%s'"
+#| msgid "No private flag has been defined in bookmark for URI '%s'"
+msgid "No private flag has been defined in bookmark for URI “%s”"
+msgstr "Не вказано приватну ознаку у закладці для адреси «%s»"
 
-#: ../glib/gbookmarkfile.c:2816
+#: glib/gbookmarkfile.c:2874
 #, c-format
-msgid "No groups set in bookmark for URI '%s'"
-msgstr "Не встановлено групи у закладці для URI '%s'"
+#| msgid "No groups set in bookmark for URI '%s'"
+msgid "No groups set in bookmark for URI “%s”"
+msgstr "Не встановлено групи у закладці для адреси «%s»"
 
-#: ../glib/gbookmarkfile.c:3214 ../glib/gbookmarkfile.c:3371
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
-msgid "No application with name '%s' registered a bookmark for '%s'"
-msgstr "Не зареєстровано програму з назвою '%s' для закладки '%s'"
+#| msgid "No application with name '%s' registered a bookmark for '%s'"
+msgid "No application with name “%s” registered a bookmark for “%s”"
+msgstr "Не зареєстровано програму з назвою «%s» для закладки «%s»"
 
-#: ../glib/gbookmarkfile.c:3394
+#: glib/gbookmarkfile.c:3453
 #, c-format
-msgid "Failed to expand exec line '%s' with URI '%s'"
-msgstr "Помилка розкривання рядка виконання \"%s\" для URI %s"
+#| msgid "Failed to expand exec line '%s' with URI '%s'"
+msgid "Failed to expand exec line “%s” with URI “%s”"
+msgstr "Помилка розгортання рядка виконуваного файла «%s» для адреси «%s»"
 
-#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044
-#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285
+#: glib/gconvert.c:466
+#| msgid "Invalid sequence in conversion input"
+msgid "Unrepresentable character in conversion input"
+msgstr "Невідтворюваний символ у вхідних даних перетворення"
+
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Незавершена символьна послідовність на кінці вводу"
 
-#: ../glib/gconvert.c:742
+#: glib/gconvert.c:762
 #, c-format
-msgid "Cannot convert fallback '%s' to codeset '%s'"
-msgstr "Неможливо коректно перетворити символ \"%s\" у символ з набору \"%s\""
+#| msgid "Cannot convert fallback '%s' to codeset '%s'"
+msgid "Cannot convert fallback “%s” to codeset “%s”"
+msgstr "Неможливо коректно перетворити символ «%s» у символ з набору «%s»"
 
-#: ../glib/gconvert.c:1566
-#, c-format
-msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
-msgstr ""
-"Ідентифікатор URI \"%s\" не є абсолютним ідентифікатором при використанні "
-"схеми \"file\""
+#: glib/gconvert.c:934
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion input"
+msgstr "Вбудований нульовий байт у вхідних даних перетворення"
 
-#: ../glib/gconvert.c:1576
-#, c-format
-msgid "The local file URI '%s' may not include a '#'"
-msgstr "Ð\86денÑ\82иÑ\84Ñ\96каÑ\82оÑ\80 URI \"%s\" Ð»Ð¾ÐºÐ°Ð»Ñ\8cного Ñ\84айла Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¼Ñ\96Ñ\81Ñ\82иÑ\82и Ñ\81имвол \"#\""
+#: glib/gconvert.c:955
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion output"
+msgstr "Ð\92бÑ\83дований Ð½Ñ\83лÑ\8cовий Ð±Ð°Ð¹Ñ\82 Ñ\83 Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82аÑ\85 Ð¿ÐµÑ\80еÑ\82воÑ\80еннÑ\8f"
 
-#: ../glib/gconvert.c:1593
+#: glib/gconvert.c:1640
 #, c-format
-msgid "The URI '%s' is invalid"
-msgstr "URI \"%s\" - неправильний"
+#| msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
+msgid "The URI “%s” is not an absolute URI using the “file” scheme"
+msgstr "Адреса «%s» не є абсолютною адресою із використанням схеми «file»"
 
-#: ../glib/gconvert.c:1605
+#: glib/gconvert.c:1650
 #, c-format
-msgid "The hostname of the URI '%s' is invalid"
-msgstr "Неправильна назва вузла в URI \"%s\""
+#| msgid "The local file URI '%s' may not include a '#'"
+msgid "The local file URI “%s” may not include a “#”"
+msgstr "Адреса «%s» локального файла не може містити символ «#»"
 
-#: ../glib/gconvert.c:1621
+#: glib/gconvert.c:1667
 #, c-format
-msgid "The URI '%s' contains invalidly escaped characters"
-msgstr "Ідентифікатор URI \"%s\" містить неправильно екранований символ"
+#| msgid "The URI '%s' is invalid"
+msgid "The URI “%s” is invalid"
+msgstr "Некоректна адреса «%s»"
 
-#: ../glib/gconvert.c:1716
+#: glib/gconvert.c:1679
 #, c-format
-msgid "The pathname '%s' is not an absolute path"
-msgstr "Шлях \"%s\" не є абсолютним"
-
-#: ../glib/gconvert.c:1726
-msgid "Invalid hostname"
-msgstr "Неправильна назва вузла"
+#| msgid "The hostname of the URI '%s' is invalid"
+msgid "The hostname of the URI “%s” is invalid"
+msgstr "Неправильна назва вузла в URI «%s»"
 
-#. Translators: 'before midday' indicator
-#: ../glib/gdatetime.c:201
-msgctxt "GDateTime"
-msgid "AM"
-msgstr "AM"
+#: glib/gconvert.c:1695
+#, c-format
+#| msgid "The URI '%s' contains invalidly escaped characters"
+msgid "The URI “%s” contains invalidly escaped characters"
+msgstr "Ідентифікатор URI «%s» містить неправильно екранований символ"
 
-#. Translators: 'after midday' indicator
-#: ../glib/gdatetime.c:203
-msgctxt "GDateTime"
-msgid "PM"
-msgstr "PM"
+#: glib/gconvert.c:1767
+#, c-format
+#| msgid "The pathname '%s' is not an absolute path"
+msgid "The pathname “%s” is not an absolute path"
+msgstr "Шлях «%s» не є абсолютним"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: ../glib/gdatetime.c:206
+#: glib/gdatetime.c:220
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%a %b %e %H:%M:%S %Y"
 
 #. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:209
+#: glib/gdatetime.c:223
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%m/%d/%y"
 
 #. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:212
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: ../glib/gdatetime.c:215
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%I:%M:%S %p"
 
-#: ../glib/gdatetime.c:228
+#. Translators: Some languages (Baltic, Slavic, Greek, and some more)
+#. * need different grammatical forms of month names depending on whether
+#. * they are standalone or in a complete date context, with the day
+#. * number.  Some other languages may prefer starting with uppercase when
+#. * they are standalone and with lowercase when they are in a complete
+#. * date context.  Here are full month names in a form appropriate when
+#. * they are used standalone.  If your system is Linux with the glibc
+#. * version 2.27 (released Feb 1, 2018) or newer or if it is from the BSD
+#. * family (which includes OS X) then you can refer to the date command
+#. * line utility and see what the command `date +%OB' produces.  Also in
+#. * the latest Linux the command `locale alt_mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  Note that in most of the languages (western European,
+#. * non-European) there is no difference between the standalone and
+#. * complete date form.
+#.
+#: glib/gdatetime.c:268
 msgctxt "full month name"
 msgid "January"
 msgstr "січень"
 
-#: ../glib/gdatetime.c:230
+#: glib/gdatetime.c:270
 msgctxt "full month name"
 msgid "February"
 msgstr "лютий"
 
-#: ../glib/gdatetime.c:232
+#: glib/gdatetime.c:272
 msgctxt "full month name"
 msgid "March"
 msgstr "березень"
 
-#: ../glib/gdatetime.c:234
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "April"
 msgstr "квітень"
 
-#: ../glib/gdatetime.c:236
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "May"
 msgstr "травень"
 
-#: ../glib/gdatetime.c:238
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "June"
 msgstr "червень"
 
-#: ../glib/gdatetime.c:240
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "July"
 msgstr "липень"
 
-#: ../glib/gdatetime.c:242
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "August"
 msgstr "серпень"
 
-#: ../glib/gdatetime.c:244
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "September"
 msgstr "вересень"
 
-#: ../glib/gdatetime.c:246
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "October"
 msgstr "жовтень"
 
-#: ../glib/gdatetime.c:248
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "November"
 msgstr "листопад"
 
-#: ../glib/gdatetime.c:250
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "December"
 msgstr "грудень"
 
-#: ../glib/gdatetime.c:265
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a complete
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  However, as these names are abbreviated
+#. * the grammatical difference is visible probably only in Belarusian
+#. * and Russian.  In other languages there is no difference between
+#. * the standalone and complete date form when they are abbreviated.
+#. * If your system is Linux with the glibc version 2.27 (released
+#. * Feb 1, 2018) or newer then you can refer to the date command line
+#. * utility and see what the command `date +%Ob' produces.  Also in
+#. * the latest Linux the command `locale ab_alt_mon' in your native
+#. * locale produces a complete list of month names almost ready to copy
+#. * and paste here.  Note that this feature is not yet supported by any
+#. * other platform.  Here are abbreviated month names in a form
+#. * appropriate when they are used standalone.
+#.
+#: glib/gdatetime.c:322
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "січ"
 
-#: ../glib/gdatetime.c:267
+#: glib/gdatetime.c:324
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "лют"
 
-#: ../glib/gdatetime.c:269
+#: glib/gdatetime.c:326
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "бер"
 
-#: ../glib/gdatetime.c:271
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "кві"
 
-#: ../glib/gdatetime.c:273
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "тра"
 
-#: ../glib/gdatetime.c:275
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "чер"
 
-#: ../glib/gdatetime.c:277
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "лип"
 
-#: ../glib/gdatetime.c:279
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "серп"
 
-#: ../glib/gdatetime.c:281
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "вер"
 
-#: ../glib/gdatetime.c:283
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "жовт"
 
-#: ../glib/gdatetime.c:285
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "лист"
 
-#: ../glib/gdatetime.c:287
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "груд"
 
-#: ../glib/gdatetime.c:302
+#: glib/gdatetime.c:359
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "понеділок"
 
-#: ../glib/gdatetime.c:304
+#: glib/gdatetime.c:361
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "вівторок"
 
-#: ../glib/gdatetime.c:306
+#: glib/gdatetime.c:363
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "середа"
 
-#: ../glib/gdatetime.c:308
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "четвер"
 
-#: ../glib/gdatetime.c:310
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "п'ятниця"
 
-#: ../glib/gdatetime.c:312
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "субота"
 
-#: ../glib/gdatetime.c:314
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "неділя"
 
-#: ../glib/gdatetime.c:329
+#: glib/gdatetime.c:386
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "пн"
 
-#: ../glib/gdatetime.c:331
+#: glib/gdatetime.c:388
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "вт"
 
-#: ../glib/gdatetime.c:333
+#: glib/gdatetime.c:390
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "ср"
 
-#: ../glib/gdatetime.c:335
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "чт"
 
-#: ../glib/gdatetime.c:337
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "пт"
 
-#: ../glib/gdatetime.c:339
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "сб"
 
-#: ../glib/gdatetime.c:341
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "нд"
 
-#: ../glib/gdir.c:155
-#, c-format
-msgid "Error opening directory '%s': %s"
-msgstr "Помилка відкривання каталогу \"%s\": %s"
-
-#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:791
-#, c-format
-msgid "Could not allocate %lu byte to read file \"%s\""
-msgid_plural "Could not allocate %lu bytes to read file \"%s\""
-msgstr[0] "Не вдається виділити %lu байтів для зчитування файла \"%s\""
-msgstr[1] "Не вдається виділити %lu байтів для зчитування файла \"%s\""
-msgstr[2] "Не вдається виділити %lu байтів для зчитування файла \"%s\""
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are full month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  If your system is Linux with the glibc version 2.27
+#. * (released Feb 1, 2018) or newer or if it is from the BSD family
+#. * (which includes OS X) then you can refer to the date command line
+#. * utility and see what the command `date +%B' produces.  Also in
+#. * the latest Linux the command `locale mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  In older Linux systems due to a bug the result is
+#. * incorrect in some languages.  Note that in most of the languages
+#. * (western European, non-European) there is no difference between the
+#. * standalone and complete date form.
+#.
+#: glib/gdatetime.c:462
+msgctxt "full month name with day"
+msgid "January"
+msgstr "січня"
 
-#: ../glib/gfileutils.c:716
-#, c-format
-msgid "Error reading file '%s': %s"
-msgstr "Ð\9fомилка Ð·Ñ\87иÑ\82Ñ\83ваннÑ\8f Ñ\84айлÑ\83 \"%s\": %s"
+#: glib/gdatetime.c:464
+msgctxt "full month name with day"
+msgid "February"
+msgstr "лÑ\8eÑ\82ого"
 
-#: ../glib/gfileutils.c:752
-#, c-format
-msgid "File \"%s\" is too large"
-msgstr "Файл \"%s\" Ð·Ð°Ð½Ð°Ð´Ñ\82о Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹"
+#: glib/gdatetime.c:466
+msgctxt "full month name with day"
+msgid "March"
+msgstr "беÑ\80езнÑ\8f"
 
-#: ../glib/gfileutils.c:816
-#, c-format
-msgid "Failed to read from file '%s': %s"
-msgstr "Ð\9fомилка Ð·Ñ\87иÑ\82Ñ\83ваннÑ\8f Ð· Ñ\84айлÑ\83 \"%s\": %s"
+#: glib/gdatetime.c:468
+msgctxt "full month name with day"
+msgid "April"
+msgstr "квÑ\96Ñ\82нÑ\8f"
 
-#: ../glib/gfileutils.c:863 ../glib/gfileutils.c:929
-#, c-format
-msgid "Failed to open file '%s': %s"
-msgstr "Помилка відкривання файлу \"%s\": %s"
+#: glib/gdatetime.c:470
+msgctxt "full month name with day"
+msgid "May"
+msgstr "травня"
 
-#: ../glib/gfileutils.c:873
-#, c-format
-msgid "Failed to get attributes of file '%s': fstat() failed: %s"
-msgstr "Помилка отримання атрибутів файлу \"%s\": помилка fstat(): %s"
+#: glib/gdatetime.c:472
+msgctxt "full month name with day"
+msgid "June"
+msgstr "червня"
 
-#: ../glib/gfileutils.c:901
-#, c-format
-msgid "Failed to open file '%s': fdopen() failed: %s"
-msgstr "Ð\9fомилка Ð²Ñ\96дкÑ\80иваннÑ\8f Ñ\84айлÑ\83 \"%s\": Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° fdopen(): %s"
+#: glib/gdatetime.c:474
+msgctxt "full month name with day"
+msgid "July"
+msgstr "липнÑ\8f"
 
-#: ../glib/gfileutils.c:997
-#, c-format
-msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
-msgstr "Помилка перейменування файлу \"%s\" на \"%s\": помилка g_rename(): %s"
+#: glib/gdatetime.c:476
+msgctxt "full month name with day"
+msgid "August"
+msgstr "серпня"
 
-#: ../glib/gfileutils.c:1030 ../glib/gfileutils.c:1519
+#: glib/gdatetime.c:478
+msgctxt "full month name with day"
+msgid "September"
+msgstr "вересня"
+
+#: glib/gdatetime.c:480
+msgctxt "full month name with day"
+msgid "October"
+msgstr "жовтня"
+
+#: glib/gdatetime.c:482
+msgctxt "full month name with day"
+msgid "November"
+msgstr "листопада"
+
+#: glib/gdatetime.c:484
+msgctxt "full month name with day"
+msgid "December"
+msgstr "грудня"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are abbreviated month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  However, as these names are abbreviated the grammatical
+#. * difference is visible probably only in Belarusian and Russian.
+#. * In other languages there is no difference between the standalone
+#. * and complete date form when they are abbreviated.  If your system
+#. * is Linux with the glibc version 2.27 (released Feb 1, 2018) or newer
+#. * then you can refer to the date command line utility and see what the
+#. * command `date +%b' produces.  Also in the latest Linux the command
+#. * `locale abmon' in your native locale produces a complete list of
+#. * month names almost ready to copy and paste here.  In other systems
+#. * due to a bug the result is incorrect in some languages.
+#.
+#: glib/gdatetime.c:549
+msgctxt "abbreviated month name with day"
+msgid "Jan"
+msgstr "січ"
+
+#: glib/gdatetime.c:551
+msgctxt "abbreviated month name with day"
+msgid "Feb"
+msgstr "лют"
+
+#: glib/gdatetime.c:553
+msgctxt "abbreviated month name with day"
+msgid "Mar"
+msgstr "бер"
+
+#: glib/gdatetime.c:555
+msgctxt "abbreviated month name with day"
+msgid "Apr"
+msgstr "квіт"
+
+#: glib/gdatetime.c:557
+msgctxt "abbreviated month name with day"
+msgid "May"
+msgstr "трав"
+
+#: glib/gdatetime.c:559
+msgctxt "abbreviated month name with day"
+msgid "Jun"
+msgstr "черв"
+
+#: glib/gdatetime.c:561
+msgctxt "abbreviated month name with day"
+msgid "Jul"
+msgstr "лип"
+
+#: glib/gdatetime.c:563
+msgctxt "abbreviated month name with day"
+msgid "Aug"
+msgstr "серп"
+
+#: glib/gdatetime.c:565
+msgctxt "abbreviated month name with day"
+msgid "Sep"
+msgstr "вер"
+
+#: glib/gdatetime.c:567
+msgctxt "abbreviated month name with day"
+msgid "Oct"
+msgstr "жовт"
+
+#: glib/gdatetime.c:569
+msgctxt "abbreviated month name with day"
+msgid "Nov"
+msgstr "лист"
+
+#: glib/gdatetime.c:571
+msgctxt "abbreviated month name with day"
+msgid "Dec"
+msgstr "груд"
+
+#. Translators: 'before midday' indicator
+#: glib/gdatetime.c:588
+msgctxt "GDateTime"
+msgid "AM"
+msgstr "AM"
+
+#. Translators: 'after midday' indicator
+#: glib/gdatetime.c:591
+msgctxt "GDateTime"
+msgid "PM"
+msgstr "PM"
+
+#: glib/gdir.c:154
 #, c-format
-msgid "Failed to create file '%s': %s"
-msgstr "Помилка створення файлу \"%s\": %s"
+#| msgid "Error opening directory '%s': %s"
+msgid "Error opening directory “%s”: %s"
+msgstr "Помилка відкривання каталогу «%s»: %s"
 
-#: ../glib/gfileutils.c:1054
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
-msgid "Failed to write file '%s': write() failed: %s"
-msgstr "Не вдалося записати файл «%s»: збій у функції write(): %s"
+#| msgid "Could not allocate %lu byte to read file \"%s\""
+#| msgid_plural "Could not allocate %lu bytes to read file \"%s\""
+msgid "Could not allocate %lu byte to read file “%s”"
+msgid_plural "Could not allocate %lu bytes to read file “%s”"
+msgstr[0] "Не вдалося виділити %lu байт для зчитування файла «%s»"
+msgstr[1] "Не вдалося виділити %lu байтів для зчитування файла «%s»"
+msgstr[2] "Не вдалося виділити %lu байтів для зчитування файла «%s»"
 
-#: ../glib/gfileutils.c:1094
+#: glib/gfileutils.c:750
 #, c-format
-msgid "Failed to write file '%s': fsync() failed: %s"
-msgstr "Помилка запису у файл '%s': помилка fsync(): %s"
+#| msgid "Error reading file %s: %s"
+msgid "Error reading file “%s”: %s"
+msgstr "Помилка при читанні файла «%s»: %s"
 
-#: ../glib/gfileutils.c:1216
+#: glib/gfileutils.c:786
 #, c-format
-msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
-msgstr "Не вдається видалити існуючий файл \"%s\": помилка g_unlink(): %s"
+#| msgid "File \"%s\" is too large"
+msgid "File “%s” is too large"
+msgstr "Файл «%s» занадто великий"
 
-#: ../glib/gfileutils.c:1486
+#: glib/gfileutils.c:850
 #, c-format
-msgid "Template '%s' invalid, should not contain a '%s'"
-msgstr "Шаблон \"%s\" неправильний, бо не може містити \"%s\""
+#| msgid "Failed to read from file '%s': %s"
+msgid "Failed to read from file “%s”: %s"
+msgstr "Помилка зчитування з файла «%s»: %s"
 
-#: ../glib/gfileutils.c:1499
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
 #, c-format
-msgid "Template '%s' doesn't contain XXXXXX"
-msgstr "Шаблон \"%s\" не містить XXXXXX"
+#| msgid "Failed to open file '%s': %s"
+msgid "Failed to open file “%s”: %s"
+msgstr "Не вдалося відкрити файл «%s»: %s"
 
-#: ../glib/gfileutils.c:2015
+#: glib/gfileutils.c:910
 #, c-format
-msgid "Failed to read the symbolic link '%s': %s"
-msgstr "Помилка читання символічного посилання \"%s\": %s"
+#| msgid "Failed to get attributes of file '%s': fstat() failed: %s"
+msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
+msgstr "Помилка отримання атрибутів файла «%s»: помилка fstat(): %s"
 
-#: ../glib/gfileutils.c:2033
-msgid "Symbolic links not supported"
-msgstr "Символічні посилання не підтримуються"
+#: glib/gfileutils.c:940
+#, c-format
+#| msgid "Failed to open file '%s': fdopen() failed: %s"
+msgid "Failed to open file “%s”: fdopen() failed: %s"
+msgstr "Помилка відкривання файла «%s»: помилка fdopen(): %s"
+
+#: glib/gfileutils.c:1039
+#, c-format
+#| msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
+msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
+msgstr "Помилка перейменування файла «%s» на «%s»: помилка g_rename(): %s"
+
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
+#, c-format
+#| msgid "Failed to create file '%s': %s"
+msgid "Failed to create file “%s”: %s"
+msgstr "Помилка створення файла «%s»: %s"
+
+#: glib/gfileutils.c:1101
+#, c-format
+#| msgid "Failed to write file '%s': write() failed: %s"
+msgid "Failed to write file “%s”: write() failed: %s"
+msgstr "Не вдалося записати файл «%s»: збій у функції write(): %s"
+
+#: glib/gfileutils.c:1144
+#, c-format
+#| msgid "Failed to write file '%s': fsync() failed: %s"
+msgid "Failed to write file “%s”: fsync() failed: %s"
+msgstr "Помилка запису у файл «%s»: помилка fsync(): %s"
+
+#: glib/gfileutils.c:1279
+#, c-format
+#| msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
+msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
+msgstr "Не вдалося вилучити наявний файл «%s»: помилка g_unlink(): %s"
+
+#: glib/gfileutils.c:1558
+#, c-format
+#| msgid "Template '%s' invalid, should not contain a '%s'"
+msgid "Template “%s” invalid, should not contain a “%s”"
+msgstr "Шаблон «%s» неправильний, бо не може містити «%s»"
+
+#: glib/gfileutils.c:1571
+#, c-format
+#| msgid "Template '%s' doesn't contain XXXXXX"
+msgid "Template “%s” doesn’t contain XXXXXX"
+msgstr "Шаблон «%s» не містить XXXXXX"
+
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
+#, c-format
+#| msgid "Failed to read the symbolic link '%s': %s"
+msgid "Failed to read the symbolic link “%s”: %s"
+msgstr "Помилка читання символічного посилання «%s»: %s"
 
-#: ../glib/giochannel.c:1389
+#: glib/giochannel.c:1396
 #, c-format
-msgid "Could not open converter from '%s' to '%s': %s"
-msgstr "Не вдається відкрити модуль перетворення з \"%s\" у \"%s\": %s"
+#| msgid "Could not open converter from '%s' to '%s': %s"
+msgid "Could not open converter from “%s” to “%s”: %s"
+msgstr "Не вдалося відкрити модуль перетворення з «%s» у «%s»: %s"
 
-#: ../glib/giochannel.c:1734
-msgid "Can't do a raw read in g_io_channel_read_line_string"
+#: glib/giochannel.c:1749
+#| msgid "Can't do a raw read in g_io_channel_read_line_string"
+msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
-"Не вдається виконати безпосереднє зчитування у функції "
+"Не вдалося виконати безпосереднє зчитування у функції "
 "g_io_channel_read_line_string"
 
-#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039
-#: ../glib/giochannel.c:2126
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "В буфері зчитування лишились не перетворені дані"
 
-#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "Канал завершується на неповному символі"
 
-#: ../glib/giochannel.c:1925
-msgid "Can't do a raw read in g_io_channel_read_to_end"
+#: glib/giochannel.c:1940
+#| msgid "Can't do a raw read in g_io_channel_read_to_end"
+msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr ""
 "Не можна виконувати безпосереднє зчитування у функції "
 "g_io_channel_read_to_end"
 
-#: ../glib/gkeyfile.c:719
+#: glib/gkeyfile.c:789
 msgid "Valid key file could not be found in search dirs"
-msgstr "Не вдається знайти правильний ключовий файл у каталогах ключів"
+msgstr "Не вдалося знайти правильний ключовий файл у каталогах ключів"
 
-#: ../glib/gkeyfile.c:755
+#: glib/gkeyfile.c:826
 msgid "Not a regular file"
 msgstr "Не є звичайним файлом"
 
-#: ../glib/gkeyfile.c:1155
+#: glib/gkeyfile.c:1275
 #, c-format
+#| msgid ""
+#| "Key file contains line '%s' which is not a key-value pair, group, or "
+#| "comment"
 msgid ""
-"Key file contains line '%s' which is not a key-value pair, group, or comment"
+"Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
-"Ð\9aлÑ\8eÑ\87овий Ñ\84айл Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\80Ñ\8fдок '%s, який не є парою ключ-значення, групою або "
+"Файл ÐºÐ»Ñ\8eÑ\87а Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\80Ñ\8fдок Â«%s», який не є парою ключ-значення, групою або "
 "коментарем"
 
-#: ../glib/gkeyfile.c:1212
+#: glib/gkeyfile.c:1332
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Неправильна назва групи: %s"
 
-#: ../glib/gkeyfile.c:1234
+#: glib/gkeyfile.c:1354
 msgid "Key file does not start with a group"
 msgstr "Ключовий файл не починається з групи"
 
-#: ../glib/gkeyfile.c:1260
+#: glib/gkeyfile.c:1380
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Неправильна назва ключа: %s"
 
-#: ../glib/gkeyfile.c:1287
+#: glib/gkeyfile.c:1407
 #, c-format
-msgid "Key file contains unsupported encoding '%s'"
-msgstr "Ключовий фал містить кодування, що не підтримується '%s'"
+#| msgid "Key file contains unsupported encoding '%s'"
+msgid "Key file contains unsupported encoding “%s”"
+msgstr "Файл ключа містить кодування, підтримки якого не передбачено — «%s»"
 
-#: ../glib/gkeyfile.c:1530 ../glib/gkeyfile.c:1692 ../glib/gkeyfile.c:3072
-#: ../glib/gkeyfile.c:3138 ../glib/gkeyfile.c:3264 ../glib/gkeyfile.c:3397
-#: ../glib/gkeyfile.c:3539 ../glib/gkeyfile.c:3768 ../glib/gkeyfile.c:3835
+#: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
-msgid "Key file does not have group '%s'"
-msgstr "Ключовий файл не містить групи '%s'"
+#| msgid "Key file does not have group '%s'"
+msgid "Key file does not have group “%s”"
+msgstr "Файл ключа не містить групи «%s»"
 
-#: ../glib/gkeyfile.c:1704
+#: glib/gkeyfile.c:1778
 #, c-format
-msgid "Key file does not have key '%s'"
-msgstr "Ключовий файл не містить ключ '%s'"
+#| msgid "Key file does not have key '%s' in group '%s'"
+msgid "Key file does not have key “%s” in group “%s”"
+msgstr "Файл ключа не містить ключ «%s» у групі «%s»"
 
-#: ../glib/gkeyfile.c:1811 ../glib/gkeyfile.c:1927
+#: glib/gkeyfile.c:1940 glib/gkeyfile.c:2056
 #, c-format
-msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
+#| msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
+msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
-"Ключовий файл містить ключ '%s' зі значенням '%s', кодування якого не UTF-8"
+"Файл ключа містить ключ «%s» зі значенням «%s», кодування якого не є"
+" кодуванням UTF-8"
 
-#: ../glib/gkeyfile.c:1831 ../glib/gkeyfile.c:1947 ../glib/gkeyfile.c:2316
+#: glib/gkeyfile.c:1960 glib/gkeyfile.c:2076 glib/gkeyfile.c:2518
 #, 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."
+"Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
-"Ключ '%s' з файлу ключів містить значення, яке не вдається проаналізувати."
+"Ключ «%s» з файла ключів містить значення, яке не вдається проаналізувати."
 
-#: ../glib/gkeyfile.c:2533 ../glib/gkeyfile.c:2901
+#: glib/gkeyfile.c:2736 glib/gkeyfile.c:3105
 #, c-format
+#| msgid ""
+#| "Key file contains key '%s' in group '%s' which has a value that cannot be "
+#| "interpreted."
 msgid ""
-"Key file contains key '%s' in group '%s' which has a value that cannot be "
+"Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 msgstr ""
 "Файл ключів містить ключ «%s» у групі «%s», значення якого не "
-"вдалосярозпізнати."
+"вдалося розпізнати."
 
-#: ../glib/gkeyfile.c:2611 ../glib/gkeyfile.c:2688
+#: glib/gkeyfile.c:2814 glib/gkeyfile.c:2891
 #, c-format
-msgid "Key '%s' in group '%s' has value '%s' where %s was expected"
+#| msgid "Key '%s' in group '%s' has value '%s' where %s was expected"
+msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Значення ключа «%s» у групі «%s» дорівнює «%s», але очікувалося «%s»"
 
-#: ../glib/gkeyfile.c:3087 ../glib/gkeyfile.c:3279 ../glib/gkeyfile.c:3846
-#, c-format
-msgid "Key file does not have key '%s' in group '%s'"
-msgstr "Ключовий файл не містить ключ '%s' у групі '%s'"
-
-#: ../glib/gkeyfile.c:4078
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
 msgstr "Ключовий файл містить escape-символ наприкінці рядка"
 
-#: ../glib/gkeyfile.c:4100
+#: glib/gkeyfile.c:4306
 #, c-format
-msgid "Key file contains invalid escape sequence '%s'"
-msgstr "Ключовий файл містить неправильну escape-послідовність '%s'"
+#| msgid "Key file contains invalid escape sequence '%s'"
+msgid "Key file contains invalid escape sequence “%s”"
+msgstr "Файл ключа містить неправильну послідовність екранування «%s»"
 
-#: ../glib/gkeyfile.c:4242
+#: glib/gkeyfile.c:4450
 #, c-format
-msgid "Value '%s' cannot be interpreted as a number."
-msgstr "Не вдається розібрати значення '%s' як число."
+#| msgid "Value '%s' cannot be interpreted as a number."
+msgid "Value “%s” cannot be interpreted as a number."
+msgstr "Не вдалося розібрати значення «%s» як число."
 
-#: ../glib/gkeyfile.c:4256
+#: glib/gkeyfile.c:4464
 #, c-format
-msgid "Integer value '%s' out of range"
-msgstr "Числове ціле значення '%s' поза межами діапазону"
+#| msgid "Integer value '%s' out of range"
+msgid "Integer value “%s” out of range"
+msgstr "Числове ціле значення «%s» поза межами діапазону"
 
-#: ../glib/gkeyfile.c:4289
+#: glib/gkeyfile.c:4497
 #, c-format
-msgid "Value '%s' cannot be interpreted as a float number."
-msgstr "Значення '%s' не вдається перетворити у число з рухомою комою."
+#| msgid "Value '%s' cannot be interpreted as a float number."
+msgid "Value “%s” cannot be interpreted as a float number."
+msgstr "Значення «%s» не вдалося перетворити на число з рухомою комою."
 
-#: ../glib/gkeyfile.c:4313
+#: glib/gkeyfile.c:4536
 #, c-format
-msgid "Value '%s' cannot be interpreted as a boolean."
-msgstr "Не вдається розібрати значення '%s' як логічне значення."
+#| msgid "Value '%s' cannot be interpreted as a boolean."
+msgid "Value “%s” cannot be interpreted as a boolean."
+msgstr "Не вдалося обробити значення «%s» як логічне значення."
 
-#: ../glib/gmappedfile.c:129
+#: glib/gmappedfile.c:129
 #, c-format
-msgid "Failed to get attributes of file '%s%s%s%s': fstat() failed: %s"
+#| msgid "Failed to get attributes of file '%s%s%s%s': fstat() failed: %s"
+msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
 msgstr ""
-"Не вдалося отримати атрибути файлу «%s%s%s%s»: збій у функції fstat(): %s"
+"Не вдалося отримати атрибути файла «%s%s%s%s»: збій у функції fstat(): %s"
 
-#: ../glib/gmappedfile.c:195
+#: glib/gmappedfile.c:195
 #, c-format
 msgid "Failed to map %s%s%s%s: mmap() failed: %s"
 msgstr "Не вдалося показати файл «%s%s%s%s»: збій у функції mmap(): %s"
 
-#: ../glib/gmappedfile.c:261
+#: glib/gmappedfile.c:262
 #, c-format
-msgid "Failed to open file '%s': open() failed: %s"
-msgstr "Помилка відкривання файлу \"%s\": помилка open(): %s"
+#| msgid "Failed to open file '%s': open() failed: %s"
+msgid "Failed to open file “%s”: open() failed: %s"
+msgstr "Помилка відкривання файла «%s»: помилка open(): %s"
 
-#: ../glib/gmarkup.c:397 ../glib/gmarkup.c:439
+#: glib/gmarkup.c:398 glib/gmarkup.c:440
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "Помилка в рядку %d на символі %d: "
 
-#: ../glib/gmarkup.c:461 ../glib/gmarkup.c:544
+#: glib/gmarkup.c:462 glib/gmarkup.c:545
 #, c-format
-msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
-msgstr ""
-"Текст закодований як UTF-8 неприпустимим способом - некоректна послідовність "
-"'%s'"
+#| msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
+msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
+msgstr "Некоректний текст у кодуванні UTF-8 у назві — не є коректним «%s»"
 
-#: ../glib/gmarkup.c:472
+#: glib/gmarkup.c:473
 #, c-format
-msgid "'%s' is not a valid name"
-msgstr "Ім’я «%s» неприпустиме"
+#| msgid "'%s' is not a valid name"
+msgid "“%s” is not a valid name"
+msgstr "«%s» не є коректною назвою"
 
-#: ../glib/gmarkup.c:488
+#: glib/gmarkup.c:489
 #, c-format
-msgid "'%s' is not a valid name: '%c'"
-msgstr "Ім’я «%s» неприпустиме: «%c»"
+#| msgid "'%s' is not a valid name: '%c'"
+msgid "“%s” is not a valid name: “%c”"
+msgstr "«%s» не є коректною назвою: «%c»"
 
-#: ../glib/gmarkup.c:598
+#: glib/gmarkup.c:613
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "Помилка в рядку %d: %s"
 
-#: ../glib/gmarkup.c:682
+#: glib/gmarkup.c:690
 #, 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"
 msgid ""
-"Failed to parse '%-.*s', which should have been a digit inside a character "
-"reference (&#234; for example) - perhaps the digit is too large"
+"Failed to parse “%-.*s”, which should have been a digit inside a character "
+"reference (&#234; for example)  perhaps the digit is too large"
 msgstr ""
-"Помилка аналізу '%-.*s', де має бути число у символьному посиланні "
-"(наприклад, &#234), можливо, число надто велике"
-
-#: ../glib/gmarkup.c:694
+"Помилка аналізу виразу «%-.*s», де має бути число у символічному посиланні "
+"(наприклад, &#234). Можливо, число є надто великим."
+
+#: glib/gmarkup.c:702
+#| 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;"
 msgid ""
 "Character reference did not end with a semicolon; most likely you used an "
-"ampersand character without intending to start an entity - escape ampersand "
+"ampersand character without intending to start an entity  escape ampersand "
 "as &amp;"
 msgstr ""
 "Посилання на символ не закінчується крапкою з комою, схоже символ \"&\" було "
-"використано не для позначення початку предикату – екрануйте його як &amp;."
+"використано не для позначення початку предиката – екрануйте його як &amp;."
 
-#: ../glib/gmarkup.c:720
+#: glib/gmarkup.c:728
 #, c-format
-msgid "Character reference '%-.*s' does not encode a permitted character"
-msgstr "Посилання на символ \"%-.*s\" не визначає дозволений символ"
+#| msgid "Character reference '%-.*s' does not encode a permitted character"
+msgid "Character reference “%-.*s” does not encode a permitted character"
+msgstr "Посилання на символ «%-.*s» не визначає жоден дозволений символ"
 
-#: ../glib/gmarkup.c:758
+#: glib/gmarkup.c:766
+#| msgid ""
+#| "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgid ""
-"Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+"Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr ""
-"Виявлено порожній предикат \"&;\"; допустимими предикатами є: &amp; &quot; "
+"Виявлено порожній предикат «&;»; допустимими предикатами є: &amp; &quot; "
 "&lt; &gt; &apos;"
 
-#: ../glib/gmarkup.c:766
+#: glib/gmarkup.c:774
 #, c-format
-msgid "Entity name '%-.*s' is not known"
-msgstr "Назва елементу '%-.*s' невідома"
+#| msgid "Entity name '%-.*s' is not known"
+msgid "Entity name “%-.*s” is not known"
+msgstr "Назва предиката «%-.*s» є невідомою програмі"
 
-#: ../glib/gmarkup.c:771
+#: glib/gmarkup.c:779
+#| 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;"
 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;"
+"character without intending to start an entity  escape ampersand as &amp;"
 msgstr ""
 "Предикат не закінчується крапкою з комою; очевидно, що символ & було "
-"використано не для позначення початку предикату – екрануйте його як &amp;"
+"використано не для позначення початку предиката – екрануйте його як &amp;"
 
-#: ../glib/gmarkup.c:1177
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Документ має починатися з елемента (наприклад, <book>)"
 
-#: ../glib/gmarkup.c:1217
+#: glib/gmarkup.c:1233
 #, c-format
+#| msgid ""
+#| "'%s' is not a valid character following a '<' character; it may not begin "
+#| "an element name"
 msgid ""
-"'%s' is not a valid character following a '<' character; it may not begin an "
+"“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 msgstr ""
-"Символ \"%s\" не дозволяється вживати після символу \"<\", він не може "
+"Символ «%s» не можна вживати після символу «<», він не може "
 "починати назву елемента"
 
-#: ../glib/gmarkup.c:1259
+#: glib/gmarkup.c:1276
 #, c-format
+#| msgid ""
+#| "Odd character '%s', expected a '>' character to end the empty-element tag "
+#| "'%s'"
 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\""
+"Зайвий символ «%s», очікувався символ «>» для закриття теґу порожнього "
+"елементу «%s»"
 
-#: ../glib/gmarkup.c:1340
+#: glib/gmarkup.c:1346
 #, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Забагато атрибутів у елементі «%s»"
+
+#: glib/gmarkup.c:1366
+#, c-format
+#| msgid ""
+#| "Odd character '%s', expected a '=' after attribute name '%s' of element "
+#| "'%s'"
 msgid ""
-"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
+"Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr ""
-"Зайвий символ \"%s\", очікувався символ \"=\" після назви ознаки \"%s\" "
-"елемента \"%s\""
+"Зайвий символ «%s», очікувався символ «=» після назви ознаки «%s» "
+"елемента «%s»"
 
-#: ../glib/gmarkup.c:1381
+#: glib/gmarkup.c:1408
 #, 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"
 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 "
+"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 ""
-"Зайвий символ \"%s\", очікувались символи \">\" чи \"/\", для закриття "
-"початкового тегу елементу \"%s\", чи додаткова ознака; можливо, було "
+"Зайвий символ «%s», очікувались символи «>» чи «/», для закриття "
+"початкового теґу елемента «%s», чи додаткова ознака; можливо, було "
 "використано неприпустимий символ в назві ознаки"
 
-#: ../glib/gmarkup.c:1425
+#: glib/gmarkup.c:1453
 #, c-format
+#| msgid ""
+#| "Odd character '%s', expected an open quote mark after the equals sign "
+#| "when giving value for attribute '%s' of element '%s'"
 msgid ""
-"Odd character '%s', expected an open quote mark after the equals sign when "
-"giving value for attribute '%s' of element '%s'"
+"Odd character “%s”, expected an open quote mark after the equals sign when "
+"giving value for attribute “%s” of element “%s”"
 msgstr ""
-"Зайвий символ \"%s\", очікувались відкриваючі лапки після знаку рівності на "
-"присвоєнні значення ознаці \"%s\" елементу \"%s\""
+"Зайвий символ «%s», мало бути вказано початкові лапки після знаку рівності на "
+"присвоєнні значення ознаці «%s» елемента «%s»"
 
-#: ../glib/gmarkup.c:1558
+#: glib/gmarkup.c:1587
 #, c-format
+#| msgid ""
+#| "'%s' is not a valid character following the characters '</'; '%s' may not "
+#| "begin an element name"
 msgid ""
-"'%s' is not a valid character following the characters '</'; '%s' may not "
+"“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
 msgstr ""
-"Символ \"%s\" неприпустимий після символів \"</\"; символ \"%s\" не може "
-"починати назву елементу"
+"Символ «%s» неприпустимий після символів «</»; символ «%s» не може "
+"починати назву елемента"
 
-#: ../glib/gmarkup.c:1594
+#: glib/gmarkup.c:1625
 #, c-format
+#| msgid ""
+#| "'%s' is not a valid character following the close element name '%s'; the "
+#| "allowed character is '>'"
 msgid ""
-"'%s' is not a valid character following the close element name '%s'; the "
-"allowed character is '>'"
+"“%s” is not a valid character following the close element name “%s”; the "
+"allowed character is “>”"
 msgstr ""
-"Символ \"%s\" неприпустимий на закритті назви елемента \"%s\"; припустимим "
-"символом є \">\""
+"Символ «%s» неприпустимий на закритті назви елемента «%s»; припустимим "
+"символом є «>»"
 
-#: ../glib/gmarkup.c:1605
+#: glib/gmarkup.c:1637
 #, c-format
-msgid "Element '%s' was closed, no element is currently open"
-msgstr "Було закрито не відкритий елемент \"%s\""
+#| msgid "Element '%s' was closed, no element is currently open"
+msgid "Element “%s” was closed, no element is currently open"
+msgstr "Було закрито не відкритий елемент «%s»"
 
-#: ../glib/gmarkup.c:1614
+#: glib/gmarkup.c:1646
 #, c-format
-msgid "Element '%s' was closed, but the currently open element is '%s'"
-msgstr "Було закрито елемент \"%s\", але зараз відрито елемент \"%s\""
+#| msgid "Element '%s' was closed, but the currently open element is '%s'"
+msgid "Element “%s” was closed, but the currently open element is “%s”"
+msgstr "Було закрито елемент «%s», але зараз відрито елемент «%s»"
 
-#: ../glib/gmarkup.c:1767
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Документ порожній чи містить лише пропуски"
 
-#: ../glib/gmarkup.c:1781
-msgid "Document ended unexpectedly just after an open angle bracket '<'"
-msgstr ""
-"Документ раптово закінчився відразу після початкової кутової дужки \"<\""
+#: glib/gmarkup.c:1813
+#| msgid "Document ended unexpectedly just after an open angle bracket '<'"
+msgid "Document ended unexpectedly just after an open angle bracket “<”"
+msgstr "Документ раптово закінчився відразу після початкової кутової дужки «<»"
 
-#: ../glib/gmarkup.c:1789 ../glib/gmarkup.c:1834
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
+#| msgid ""
+#| "Document ended unexpectedly with elements still open - '%s' was the last "
+#| "element opened"
 msgid ""
-"Document ended unexpectedly with elements still open - '%s' was the last "
+"Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 msgstr ""
-"Документ раптово закінчився, коли деякі елементи ще були відкритими – \"%s\" "
+"Документ раптово закінчився, коли деякі елементи ще були відкритими – «%s» "
 "був останнім відкритим елементом"
 
-#: ../glib/gmarkup.c:1797
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
 "the tag <%s/>"
 msgstr ""
 "Документ раптово закінчився, очікувалась кінцева кутова дужка для закриття "
-"тегу <%s/>"
+"теґу <%s/>"
 
-#: ../glib/gmarkup.c:1803
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Документ раптово закінчився посеред назви елемента"
 
-#: ../glib/gmarkup.c:1809
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Документ раптово закінчився посеред назви ознаки"
 
-#: ../glib/gmarkup.c:1814
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
-msgstr "Документ раптово закінчився у середині тегу, що відкривав елемент"
+msgstr "Документ раптово закінчився у середині теґу, що відкривав елемент"
 
-#: ../glib/gmarkup.c:1820
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -3905,593 +5750,623 @@ msgstr ""
 "Документ раптово закінчився після знака рівності, що йшов за назвою ознаки; "
 "значення ознаки не вказано"
 
-#: ../glib/gmarkup.c:1827
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Документ раптово закінчився посеред значення ознаки"
 
-#: ../glib/gmarkup.c:1843
+#: glib/gmarkup.c:1876
 #, c-format
-msgid "Document ended unexpectedly inside the close tag for element '%s'"
-msgstr ""
-"Документ раптово закінчився у середині тегу, що закривав елемент \"%s\""
+#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid "Document ended unexpectedly inside the close tag for element “%s”"
+msgstr "Документ раптово закінчився у середині теґу, що закривав елемент «%s»"
 
-#: ../glib/gmarkup.c:1849
+#: glib/gmarkup.c:1880
+#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid ""
+"Document ended unexpectedly inside the close tag for an unopened element"
+msgstr "Документ раптово закінчився у середині теґу для невідкритого елемента"
+
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Документ раптово закінчився у середині коментарю чи інструкції обробки"
 
-#: ../glib/goption.c:797
-msgid "Usage:"
-msgstr "Використання:"
-
-#: ../glib/goption.c:797
-msgid "[OPTION...]"
-msgstr "[ПАРАМЕТР...]"
+#: glib/goption.c:868
+#| msgid "[OPTION...]"
+msgid "[OPTION…]"
+msgstr "[ПАРАМЕТР…]"
 
-#: ../glib/goption.c:913
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "Параметри довідки:"
 
-#: ../glib/goption.c:914
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "Показати параметри довідки"
 
-#: ../glib/goption.c:920
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "Показати усі параметри довідки"
 
-#: ../glib/goption.c:982
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "Параметри програми:"
 
-#: ../glib/goption.c:1046 ../glib/goption.c:1116
+#: glib/goption.c:1056
+#| msgid "Help Options:"
+msgid "Options:"
+msgstr "Параметри:"
+
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
-msgid "Cannot parse integer value '%s' for %s"
-msgstr "Не вдається розібрати числове ціле значення '%s' для %s"
+#| msgid "Cannot parse integer value '%s' for %s"
+msgid "Cannot parse integer value “%s” for %s"
+msgstr "Не вдалося розібрати числове ціле значення «%s» для %s"
 
-#: ../glib/goption.c:1056 ../glib/goption.c:1124
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
-msgid "Integer value '%s' for %s out of range"
-msgstr "Числове ціле значення '%s' для %s поза межами діапазону"
+#| msgid "Integer value '%s' for %s out of range"
+msgid "Integer value “%s” for %s out of range"
+msgstr "Числове ціле значення «%s» для %s поза межами діапазону"
 
-#: ../glib/goption.c:1081
+#: glib/goption.c:1155
 #, c-format
-msgid "Cannot parse double value '%s' for %s"
-msgstr "Не вдається розібрати числове значення подвійної точності '%s' для %s"
+#| msgid "Cannot parse double value '%s' for %s"
+msgid "Cannot parse double value “%s” for %s"
+msgstr "Не вдалося розібрати числове значення подвійної точності «%s» для %s"
 
-#: ../glib/goption.c:1089
+#: glib/goption.c:1163
 #, c-format
-msgid "Double value '%s' for %s out of range"
-msgstr "Числове значення подвійної точності '%s' для %s поза межами діапазону"
+#| msgid "Double value '%s' for %s out of range"
+msgid "Double value “%s” for %s out of range"
+msgstr "Числове значення подвійної точності «%s» для %s поза межами діапазону"
 
-#: ../glib/goption.c:1375 ../glib/goption.c:1454
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Помилка розбору параметра %s"
 
-#: ../glib/goption.c:1485 ../glib/goption.c:1598
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Відсутній аргумент %s"
 
-#: ../glib/goption.c:2055
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "Невідомий параметр %s"
 
-#: ../glib/gregex.c:258
+#: glib/gregex.c:257
 msgid "corrupted object"
 msgstr "пошкоджений об'єкт"
 
-#: ../glib/gregex.c:260
+#: glib/gregex.c:259
 msgid "internal error or corrupted object"
 msgstr "внутрішня помилка або пошкоджений об'єкт"
 
-#: ../glib/gregex.c:262
+#: glib/gregex.c:261
 msgid "out of memory"
 msgstr "недостатньо пам'яті"
 
-#: ../glib/gregex.c:267
+#: glib/gregex.c:266
 msgid "backtracking limit reached"
 msgstr "закінчилося обмеження зворотного ходу"
 
-#: ../glib/gregex.c:279 ../glib/gregex.c:287
+#: glib/gregex.c:278 glib/gregex.c:286
 msgid "the pattern contains items not supported for partial matching"
 msgstr ""
 "шаблон містить елементи, які не підтримуються при пошуку часткової "
 "відповідності"
 
-#: ../glib/gregex.c:289
+#: glib/gregex.c:280
+msgid "internal error"
+msgstr "внутрішня помилка"
+
+#: glib/gregex.c:288
 msgid "back references as conditions are not supported for partial matching"
 msgstr ""
 "умови у вигляді зворотних посилань при пошуку часткової відповідності не "
 "підтримуються"
 
-#: ../glib/gregex.c:298
+#: glib/gregex.c:297
 msgid "recursion limit reached"
 msgstr "досягнуто межу рекурсії"
 
-#: ../glib/gregex.c:300
+#: glib/gregex.c:299
 msgid "invalid combination of newline flags"
 msgstr "некоректна комбінація ознак переведення рядка"
 
-#: ../glib/gregex.c:302
+#: glib/gregex.c:301
 msgid "bad offset"
 msgstr "неправильне зміщення"
 
-#: ../glib/gregex.c:304
+#: glib/gregex.c:303
 msgid "short utf8"
 msgstr "короткий utf8"
 
-#: ../glib/gregex.c:306
+#: glib/gregex.c:305
 msgid "recursion loop"
 msgstr "зациклювання рекурсії"
 
-#: ../glib/gregex.c:310
+#: glib/gregex.c:309
 msgid "unknown error"
 msgstr "невідома помилка"
 
-#: ../glib/gregex.c:330
+#: glib/gregex.c:329
 msgid "\\ at end of pattern"
 msgstr "\\ наприкінці шаблону"
 
-#: ../glib/gregex.c:333
+#: glib/gregex.c:332
 msgid "\\c at end of pattern"
 msgstr "\\c наприкінці шаблону"
 
-#: ../glib/gregex.c:336
+#: glib/gregex.c:335
 msgid "unrecognized character following \\"
 msgstr "нерозпізнаний символ слідує за \\"
 
-#: ../glib/gregex.c:339
+#: glib/gregex.c:338
 msgid "numbers out of order in {} quantifier"
 msgstr "неправильний порядок чисел у специфікаторі {}"
 
-#: ../glib/gregex.c:342
+#: glib/gregex.c:341
 msgid "number too big in {} quantifier"
 msgstr "надто велике число у специфікаторі {}"
 
-#: ../glib/gregex.c:345
+#: glib/gregex.c:344
 msgid "missing terminating ] for character class"
 msgstr "відсутній завершальний символ ] для класу символів"
 
-#: ../glib/gregex.c:348
+#: glib/gregex.c:347
 msgid "invalid escape sequence in character class"
 msgstr "Неправильна escape-послідовність у класі символів"
 
-#: ../glib/gregex.c:351
+#: glib/gregex.c:350
 msgid "range out of order in character class"
 msgstr "неправильний порядок у діапазоні у класі символів"
 
-#: ../glib/gregex.c:354
+#: glib/gregex.c:353
 msgid "nothing to repeat"
 msgstr "немає що повторювати"
 
-#: ../glib/gregex.c:358
+#: glib/gregex.c:357
 msgid "unexpected repeat"
 msgstr "неочікуваний повтор"
 
-#: ../glib/gregex.c:361
+#: glib/gregex.c:360
 msgid "unrecognized character after (? or (?-"
 msgstr "нерозпізнаний символ після (? або (?-"
 
-#: ../glib/gregex.c:364
+#: glib/gregex.c:363
 msgid "POSIX named classes are supported only within a class"
 msgstr "назви класів у стилі POSIX підтримуються лише у межах класі"
 
-#: ../glib/gregex.c:367
+#: glib/gregex.c:366
 msgid "missing terminating )"
 msgstr "відсутній завершальний символ )"
 
-#: ../glib/gregex.c:370
+#: glib/gregex.c:369
 msgid "reference to non-existent subpattern"
-msgstr "поÑ\81иланнÑ\8f Ð½Ð° Ð½ÐµÑ\96Ñ\81нÑ\83Ñ\8eÑ\87ий Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð¸Ð¹ Ñ\88аблон"
+msgstr "поÑ\81иланнÑ\8f Ð½Ð° Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð¸Ð¹ Ñ\88аблон, Ñ\8fкого Ð½Ðµ Ñ\96Ñ\81нÑ\83Ñ\94"
 
-#: ../glib/gregex.c:373
+#: glib/gregex.c:372
 msgid "missing ) after comment"
 msgstr "відсутня дужка ) після коментаря"
 
-#: ../glib/gregex.c:376
+#: glib/gregex.c:375
 msgid "regular expression is too large"
 msgstr "задовгий регулярний вираз"
 
-#: ../glib/gregex.c:379
+#: glib/gregex.c:378
 msgid "failed to get memory"
 msgstr "не вдається отримати пам'ять"
 
-#: ../glib/gregex.c:383
+#: glib/gregex.c:382
 msgid ") without opening ("
 msgstr ") без початкової дужки ("
 
-#: ../glib/gregex.c:387
+#: glib/gregex.c:386
 msgid "code overflow"
 msgstr "переповнення коду"
 
-#: ../glib/gregex.c:391
+#: glib/gregex.c:390
 msgid "unrecognized character after (?<"
 msgstr "нерозпізнаний символ після (?<"
 
-#: ../glib/gregex.c:394
+#: glib/gregex.c:393
 msgid "lookbehind assertion is not fixed length"
 msgstr "твердження lookbehind має не фіксовану довжину"
 
-#: ../glib/gregex.c:397
+#: glib/gregex.c:396
 msgid "malformed number or name after (?("
 msgstr "неправильне число або назва після (?("
 
-#: ../glib/gregex.c:400
+#: glib/gregex.c:399
 msgid "conditional group contains more than two branches"
 msgstr "група умови містить більше ніж дві гілки"
 
-#: ../glib/gregex.c:403
+#: glib/gregex.c:402
 msgid "assertion expected after (?("
 msgstr "після (?( очікується твердження"
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: ../glib/gregex.c:410
+#: glib/gregex.c:409
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "(за ?R або (?[+-]цифри має бути вказано дужку )"
 
-#: ../glib/gregex.c:413
+#: glib/gregex.c:412
 msgid "unknown POSIX class name"
 msgstr "невідома POSIX-назва класу"
 
-#: ../glib/gregex.c:416
+#: glib/gregex.c:415
 msgid "POSIX collating elements are not supported"
 msgstr "елементи порівняння у стилі POSIX не підтримуються"
 
-#: ../glib/gregex.c:419
+#: glib/gregex.c:418
 msgid "character value in \\x{...} sequence is too large"
 msgstr "значення символу у послідовності \\x{...} надто велике"
 
-#: ../glib/gregex.c:422
+#: glib/gregex.c:421
 msgid "invalid condition (?(0)"
 msgstr "неправильний вираз (?(0)"
 
-#: ../glib/gregex.c:425
+#: glib/gregex.c:424
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "\\C неприпустимий у твердженні lookbehind"
 
-#: ../glib/gregex.c:432
+#: glib/gregex.c:431
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr "екранування \\L, \\l, \\N{name}, \\U і \\u не підтримується"
 
-#: ../glib/gregex.c:435
+#: glib/gregex.c:434
 msgid "recursive call could loop indefinitely"
 msgstr "рекурсивний виклик може увійти у нескінчений цикл"
 
-#: ../glib/gregex.c:439
+#: glib/gregex.c:438
 msgid "unrecognized character after (?P"
 msgstr "нерозпізнаний символ після (?P"
 
-#: ../glib/gregex.c:442
+#: glib/gregex.c:441
 msgid "missing terminator in subpattern name"
 msgstr "відсутній завершальний символ у назві вкладеного шаблону"
 
-#: ../glib/gregex.c:445
+#: glib/gregex.c:444
 msgid "two named subpatterns have the same name"
 msgstr "два іменовані вкладені шаблони мають однакову назву"
 
-#: ../glib/gregex.c:448
+#: glib/gregex.c:447
 msgid "malformed \\P or \\p sequence"
 msgstr "неправильна послідовність \\P чи \\p"
 
-#: ../glib/gregex.c:451
+#: glib/gregex.c:450
 msgid "unknown property name after \\P or \\p"
 msgstr "невідома назва властивості після \\P чи \\p"
 
-#: ../glib/gregex.c:454
+#: glib/gregex.c:453
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "вкладена назва шаблону надто довга (максимум 32 символів)"
 
-#: ../glib/gregex.c:457
+#: glib/gregex.c:456
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "надто багато іменованих вкладених шаблонів (максимум 10,000)"
 
-#: ../glib/gregex.c:460
+#: glib/gregex.c:459
 msgid "octal value is greater than \\377"
 msgstr "вісімкове значення більше ніж \\377"
 
-#: ../glib/gregex.c:464
+#: glib/gregex.c:463
 msgid "overran compiling workspace"
 msgstr "переповнення при компіляції робочого простору"
 
-#: ../glib/gregex.c:468
+#: glib/gregex.c:467
 msgid "previously-checked referenced subpattern not found"
 msgstr ""
 "раніше перевірений вкладений шаблон, на який йде посилання не знайдений"
 
-#: ../glib/gregex.c:471
+#: glib/gregex.c:470
 msgid "DEFINE group contains more than one branch"
 msgstr "група DEFINE містить більш ніж одну гілку"
 
-#: ../glib/gregex.c:474
+#: glib/gregex.c:473
 msgid "inconsistent NEWLINE options"
 msgstr "неузгоджені параметри NEWLINE"
 
-#: ../glib/gregex.c:477
+#: glib/gregex.c:476
 msgid ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
 msgstr ""
-"за \\g не супроводжується ім’я або число у дужках, кутових дужках або "
-"лапках, або просто число"
+"\\g не супроводжується назвою або числом у дужках, кутових дужках або "
+"лапках, або просто числом"
 
-#: ../glib/gregex.c:481
+#: glib/gregex.c:480
 msgid "a numbered reference must not be zero"
 msgstr "номерне посилання не може бути нулем"
 
-#: ../glib/gregex.c:484
+#: glib/gregex.c:483
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
-msgstr "неможна вказати параметр для (*ACCEPT), (*FAIL) або (*COMMIT)"
+msgstr "не можна вказувати параметр для (*ACCEPT), (*FAIL) або (*COMMIT)"
 
-#: ../glib/gregex.c:487
+#: glib/gregex.c:486
 msgid "(*VERB) not recognized"
 msgstr "значення (*VERB) не розпізнано"
 
-#: ../glib/gregex.c:490
+#: glib/gregex.c:489
 msgid "number is too big"
 msgstr "завелике число"
 
-#: ../glib/gregex.c:493
+#: glib/gregex.c:492
 msgid "missing subpattern name after (?&"
-msgstr "вÑ\96дÑ\81Ñ\83Ñ\82нÑ\94 Ñ\96мâ\80\99Ñ\8f підшаблону після (?&"
+msgstr "немаÑ\94 Ð½Ð°Ð·Ð²Ð¸ підшаблону після (?&"
 
-#: ../glib/gregex.c:496
+#: glib/gregex.c:495
 msgid "digit expected after (?+"
 msgstr "очікувалася цифра після (?+"
 
-#: ../glib/gregex.c:499
+#: glib/gregex.c:498
 msgid "] is an invalid data character in JavaScript compatibility mode"
-msgstr "неможна використати символ ] у режимі сумісності JavaScript"
+msgstr "не можна використовувати символ ] у режимі сумісності із JavaScript"
 
-#: ../glib/gregex.c:502
+#: glib/gregex.c:501
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr ""
 "не припускається використовувати різні імена для підшаблонів з однаковим "
 "номером"
 
-#: ../glib/gregex.c:505
+#: glib/gregex.c:504
 msgid "(*MARK) must have an argument"
 msgstr "для (*MARK) потрібен параметр"
 
-#: ../glib/gregex.c:508
+#: glib/gregex.c:507
 msgid "\\c must be followed by an ASCII character"
 msgstr "за \\з повинен бути символ ASCII"
 
-#: ../glib/gregex.c:511
+#: glib/gregex.c:510
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
-msgstr "за \\k не слідує ім’я у дужках, кутових дужках або лапках"
+msgstr "за \\k не слідує назва у дужках, кутових дужках або лапках"
 
-#: ../glib/gregex.c:514
+#: glib/gregex.c:513
 msgid "\\N is not supported in a class"
 msgstr "\\N у класі не підтримується"
 
-#: ../glib/gregex.c:517
+#: glib/gregex.c:516
 msgid "too many forward references"
 msgstr "забагато прямих посилань"
 
-#: ../glib/gregex.c:520
+#: glib/gregex.c:519
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
-msgstr "задовге Ñ\96мâ\80\99Ñ\8f у (*MARK), (*PRUNE), (*SKIP) або (*THEN)"
+msgstr "задовга Ð½Ð°Ð·Ð²Ð° у (*MARK), (*PRUNE), (*SKIP) або (*THEN)"
 
-#: ../glib/gregex.c:523
+#: glib/gregex.c:522
 msgid "character value in \\u.... sequence is too large"
 msgstr "завелике значення символу у \\u…"
 
-#: ../glib/gregex.c:746 ../glib/gregex.c:1915
+#: glib/gregex.c:745 glib/gregex.c:1983
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Помилка під час пошуку відповідності регулярному виразу %s: %s"
 
-#: ../glib/gregex.c:1312
+#: glib/gregex.c:1316
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "Бібліотека PCRE не підтримує UTF8"
 
-#: ../glib/gregex.c:1316
+#: glib/gregex.c:1320
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "Бібліотека PCRE не підтримує властивості у кодуванні UTF8"
 
-#: ../glib/gregex.c:1324
+#: glib/gregex.c:1328
 msgid "PCRE library is compiled with incompatible options"
 msgstr "Бібліотека PCRE зібрана з несумісними параметрами"
 
-#: ../glib/gregex.c:1383
-#, c-format
-msgid "Error while compiling regular expression %s at char %d: %s"
-msgstr "Помилка при компіляції регулярного виразу %s на символі %d: %s"
-
-#: ../glib/gregex.c:1425
+#: glib/gregex.c:1357
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "При оптимізації регулярного виразу %s виникла помилка: %s"
 
-#: ../glib/gregex.c:2347
-msgid "hexadecimal digit or '}' expected"
-msgstr "очікується шістнадцяткова цифра або символ '}'"
+#: glib/gregex.c:1437
+#, c-format
+msgid "Error while compiling regular expression %s at char %d: %s"
+msgstr "Помилка при компіляції регулярного виразу %s на символі %d: %s"
+
+#: glib/gregex.c:2419
+#| msgid "hexadecimal digit or '}' expected"
+msgid "hexadecimal digit or “}” expected"
+msgstr "мало бути використано шістнадцяткову цифру або символ «}»"
 
-#: ../glib/gregex.c:2363
+#: glib/gregex.c:2435
 msgid "hexadecimal digit expected"
 msgstr "очікується шістнадцяткова цифра"
 
-#: ../glib/gregex.c:2403
-msgid "missing '<' in symbolic reference"
-msgstr "у символьному рядку відсутня '<'"
+#: glib/gregex.c:2475
+#| msgid "missing '<' in symbolic reference"
+msgid "missing “<” in symbolic reference"
+msgstr "у символічному посиланні пропущено «<»"
 
-#: ../glib/gregex.c:2412
+#: glib/gregex.c:2484
 msgid "unfinished symbolic reference"
 msgstr "незакінчене символьне посилання"
 
-#: ../glib/gregex.c:2419
+#: glib/gregex.c:2491
 msgid "zero-length symbolic reference"
 msgstr "символьне посилання нульової довжини"
 
-#: ../glib/gregex.c:2430
+#: glib/gregex.c:2502
 msgid "digit expected"
 msgstr "очікується цифра"
 
-#: ../glib/gregex.c:2448
+#: glib/gregex.c:2520
 msgid "illegal symbolic reference"
 msgstr "некоректне символьне посилання"
 
-#: ../glib/gregex.c:2510
-msgid "stray final '\\'"
-msgstr "відкидати кінцеві '\\'"
+#: glib/gregex.c:2583
+#| msgid "stray final '\\'"
+msgid "stray final “\\”"
+msgstr "відкидати кінцеві «\\»"
 
-#: ../glib/gregex.c:2514
+#: glib/gregex.c:2587
 msgid "unknown escape sequence"
 msgstr "невідома escape-послідовність"
 
-#: ../glib/gregex.c:2524
+#: glib/gregex.c:2597
 #, c-format
-msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
+#| msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
+msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr ""
-"Під час розбору тексту заміни \"%s\" виникла помилка у символі з номером "
+"Під час розбору тексту заміни «%s» сталася помилка у символі з номером "
 "%lu: %s"
 
-#: ../glib/gshell.c:88
-msgid "Quoted text doesn't begin with a quotation mark"
+#: glib/gshell.c:94
+#| msgid "Quoted text doesn't begin with a quotation mark"
+msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "Текст в лапках не починається з лапок"
 
-#: ../glib/gshell.c:178
+#: glib/gshell.c:184
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "Невідповідні лапки у командному рядку чи іншому тексті оболонки"
 
-#: ../glib/gshell.c:574
+#: glib/gshell.c:580
 #, c-format
-msgid "Text ended just after a '\\' character. (The text was '%s')"
-msgstr "Текст закінчився перед символом \"\\\". (Текст був таким: \"%s\")"
+#| msgid "Text ended just after a '\\' character. (The text was '%s')"
+msgid "Text ended just after a “\\” character. (The text was “%s”)"
+msgstr "Текст закінчився перед символом «\\». (Текст був таким: «%s»)"
 
-#: ../glib/gshell.c:581
+#: glib/gshell.c:587
 #, c-format
-msgid "Text ended before matching quote was found for %c. (The text was '%s')"
+#| msgid ""
+#| "Text ended before matching quote was found for %c. (The text was '%s')"
+msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
-"Текст закінчився перед відповідними лапками для %c. (Текст був таким: \"%s\")"
+"Текст закінчився перед відповідними лапками для %c. (Текст був таким: «%s»)"
 
-#: ../glib/gshell.c:593
+#: glib/gshell.c:599
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Текст порожній (чи містить лише пропуски)"
 
-#: ../glib/gspawn.c:198
+#: glib/gspawn.c:315
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Помилка зчитування даних з дочірнього процесу (%s)"
 
-#: ../glib/gspawn.c:342
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Неочікувана помилка під час очікування на зміну стану файлового дескриптора "
-"дочірнього процесу (%s)"
+#| msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "Неочікувана помилка під час читання даних з дочірнього процесу (%s)"
 
-#: ../glib/gspawn.c:427
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Неочікувана помилка у waitpid() (%s)"
 
-#: ../glib/gspawn.c:838 ../glib/gspawn-win32.c:1233
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Дочірній процес закінчився з кодом %ld"
 
-#: ../glib/gspawn.c:846
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Дочірній процес вбитий за сигналом %ld"
 
-#: ../glib/gspawn.c:853
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Дочірній процес зупинений за сигналом %ld"
 
-#: ../glib/gspawn.c:860
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Дочірній процес аварійно закінчив роботу"
 
-#: ../glib/gspawn.c:1265 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Помилка зчитування з дочірнього каналу (%s)"
 
-#: ../glib/gspawn.c:1335
+#: glib/gspawn.c:1723
+#, c-format
+#| msgid "Failed to fork child process (%s)"
+msgid "Failed to spawn child process “%s” (%s)"
+msgstr "Не вдалося запустити дочірній процес «%s» (%s)"
+
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Помилка створення процесу (%s)"
 
-#: ../glib/gspawn.c:1484 ../glib/gspawn-win32.c:370
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
-msgid "Failed to change to directory '%s' (%s)"
-msgstr "Помилка переходу в каталог \"%s\" (%s)"
+#| msgid "Failed to change to directory '%s' (%s)"
+msgid "Failed to change to directory “%s” (%s)"
+msgstr "Не вдалося змінити каталог на «%s» (%s)"
 
-#: ../glib/gspawn.c:1494
+#: glib/gspawn.c:1921
 #, c-format
-msgid "Failed to execute child process \"%s\" (%s)"
-msgstr "Помилка виконання дочірнього процесу \"%s\" (%s)"
+#| msgid "Failed to execute child process \"%s\" (%s)"
+msgid "Failed to execute child process “%s” (%s)"
+msgstr "Не вдалося виконати дочірній процес «%s» (%s)"
 
-#: ../glib/gspawn.c:1504
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Помилка перенаправлення виводу чи вводу дочірнього процесу (%s)"
 
-#: ../glib/gspawn.c:1513
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Помилка запуску дочірнього процесу (%s)"
 
-#: ../glib/gspawn.c:1521
+#: glib/gspawn.c:1948
 #, c-format
-msgid "Unknown error executing child process \"%s\""
-msgstr "Невідома помилка виконання дочірнього процесу \"%s\""
+#| msgid "Unknown error executing child process \"%s\""
+msgid "Unknown error executing child process “%s”"
+msgstr "Невідома помилка виконання дочірнього процесу «%s»"
 
-#: ../glib/gspawn.c:1545
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
-msgstr "Не вдається зчитати достатню кількість даних з дочірнього каналу (%s)"
+msgstr "Не вдалося зчитати достатню кількість даних з дочірнього каналу (%s)"
 
-#: ../glib/gspawn-win32.c:283
+#: glib/gspawn-win32.c:294
 msgid "Failed to read data from child process"
 msgstr "Помилка зчитування даних з дочірнього процесу"
 
-#: ../glib/gspawn-win32.c:300
+#: glib/gspawn-win32.c:311
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Помилка створення каналу для обміну з дочірнім процесом (%s)"
 
-#: ../glib/gspawn-win32.c:376 ../glib/gspawn-win32.c:495
+#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Помилка виконання дочірнього процесу (%s)"
 
-#: ../glib/gspawn-win32.c:445
+#: glib/gspawn-win32.c:461
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Неправильна назва програми: %s"
 
-#: ../glib/gspawn-win32.c:455 ../glib/gspawn-win32.c:722
-#: ../glib/gspawn-win32.c:1297
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Неправильний рядок у векторі аргументів %d: %s"
 
-#: ../glib/gspawn-win32.c:466 ../glib/gspawn-win32.c:737
-#: ../glib/gspawn-win32.c:1330
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
 #, c-format
 msgid "Invalid string in environment: %s"
-msgstr "Неправильний рядок у оточенні: %s"
+msgstr "Неправильний рядок у середовищі: %s"
 
-#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1278
+#: glib/gspawn-win32.c:721
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Неправильний робочий каталог: %s"
 
-#: ../glib/gspawn-win32.c:783
+#: glib/gspawn-win32.c:783
 #, c-format
 msgid "Failed to execute helper program (%s)"
-msgstr "Не вдається виконати допоміжну програму (%s)"
+msgstr "Не вдалося виконати допоміжну програму (%s)"
 
-#: ../glib/gspawn-win32.c:997
+#: glib/gspawn-win32.c:1056
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -4499,258 +6374,281 @@ msgstr ""
 "Неочікувана помилка в зчитуванні даних з дочірнього процесу через "
 "g_io_channel_win32_poll() "
 
-#: ../glib/gutf8.c:780
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
+msgid "Empty string is not a number"
+msgstr "Порожній рядок не є числом"
+
+#: glib/gstrfuncs.c:3333
+#, c-format
+#| msgid "'%s' is not a valid name"
+msgid "“%s” is not a signed number"
+msgstr "«%s» не є числом зі знаком"
+
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
+#, c-format
+msgid "Number “%s” is out of bounds [%s, %s]"
+msgstr "Число «%s» не належить до діапазону [%s, %s]"
+
+#: glib/gstrfuncs.c:3437
+#, c-format
+#| msgid "'%s' is not a valid name"
+msgid "“%s” is not an unsigned number"
+msgstr "«%s» не є числом без знаку"
+
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
-msgstr "Не вдалося виділити память"
+msgstr "Не вдалося виділити пам'ять"
 
-#: ../glib/gutf8.c:912
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "Символ не входить в набір UTF-8"
 
-#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151
-#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "Неправильна послідовність у перетворюваному вводі"
 
-#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "Символ не входить в набір UTF-16"
 
-#: ../glib/gutils.c:2118 ../glib/gutils.c:2145 ../glib/gutils.c:2251
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2756
 #, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] "%u байт"
-msgstr[1] "%u байти"
-msgstr[2] "%u байтів"
+#| msgid "%.1f kB"
+msgid "%.1f kB"
+msgstr "%.1f кБ"
 
-#: ../glib/gutils.c:2124
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2758
 #, c-format
-msgid "%.1f KiB"
-msgstr "%.1f КіБ"
+#| msgid "%.1f MB"
+msgid "%.1f MB"
+msgstr "%.1f МБ"
 
-#: ../glib/gutils.c:2126
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2760
 #, c-format
-msgid "%.1f MiB"
-msgstr "%.1f МіБ"
+#| msgid "%.1f GB"
+msgid "%.1f GB"
+msgstr "%.1f ГБ"
 
-#: ../glib/gutils.c:2129
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2762
 #, c-format
-msgid "%.1f GiB"
-msgstr "%.1f ГіБ"
+#| msgid "%.1f TB"
+msgid "%.1f TB"
+msgstr "%.1f ТБ"
 
-#: ../glib/gutils.c:2132
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2764
 #, c-format
-msgid "%.1f TiB"
-msgstr "%.1f ТіБ"
+#| msgid "%.1f PB"
+msgid "%.1f PB"
+msgstr "%.1f ПБ"
 
-#: ../glib/gutils.c:2135
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2766
 #, c-format
-msgid "%.1f PiB"
-msgstr "%.1f ПіБ"
+#| msgid "%.1f EB"
+msgid "%.1f EB"
+msgstr "%.1f ЕБ"
 
-#: ../glib/gutils.c:2138
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2770
 #, c-format
-msgid "%.1f EiB"
-msgstr "%.1f ЕіБ"
+#| msgid "%.1f KiB"
+msgid "%.1f KiB"
+msgstr "%.1f КіБ"
 
-#: ../glib/gutils.c:2151
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2772
 #, c-format
-msgid "%.1f kB"
-msgstr "%.1f кБ"
+#| msgid "%.1f MiB"
+msgid "%.1f MiB"
+msgstr "%.1f МіБ"
 
-#: ../glib/gutils.c:2154 ../glib/gutils.c:2269
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2774
 #, c-format
-msgid "%.1f MB"
-msgstr "%.1f МБ"
+#| msgid "%.1f GiB"
+msgid "%.1f GiB"
+msgstr "%.1f ГіБ"
 
-#: ../glib/gutils.c:2157 ../glib/gutils.c:2274
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2776
 #, c-format
-msgid "%.1f GB"
-msgstr "%.1f ГБ"
+#| msgid "%.1f TiB"
+msgid "%.1f TiB"
+msgstr "%.1f ТіБ"
 
-#: ../glib/gutils.c:2159 ../glib/gutils.c:2279
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2778
 #, c-format
-msgid "%.1f TB"
-msgstr "%.1f ТБ"
+#| msgid "%.1f PiB"
+msgid "%.1f PiB"
+msgstr "%.1f ПіБ"
 
-#: ../glib/gutils.c:2162 ../glib/gutils.c:2284
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2780
 #, c-format
-msgid "%.1f PB"
-msgstr "%.1f ПБ"
+#| msgid "%.1f EiB"
+msgid "%.1f EiB"
+msgstr "%.1f ЕіБ"
 
-#: ../glib/gutils.c:2165 ../glib/gutils.c:2289
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2784
 #, c-format
-msgid "%.1f EB"
-msgstr "%.1f ЕБ"
+#| msgid "%.1f kB"
+msgid "%.1f kb"
+msgstr "%.1f кбіт"
 
-#. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2202
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2786
 #, c-format
-msgid "%s byte"
-msgid_plural "%s bytes"
-msgstr[0] "%s байт"
-msgstr[1] "%s байти"
-msgstr[2] "%s байтів"
+#| msgid "%.1f MB"
+msgid "%.1f Mb"
+msgstr "%.1f Мбіт"
 
-#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
-#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
-#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
-#. * Please translate as literally as possible.
-#.
-#: ../glib/gutils.c:2264
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2788
 #, c-format
-msgid "%.1f KB"
-msgstr "%.1f КБ"
-
-msgctxt "full month name with day"
-msgid "January"
-msgstr "січня"
-
-msgctxt "full month name with day"
-msgid "February"
-msgstr "лютого"
-
-msgctxt "full month name with day"
-msgid "March"
-msgstr "березня"
-
-msgctxt "full month name with day"
-msgid "April"
-msgstr "квітня"
-
-msgctxt "full month name with day"
-msgid "May"
-msgstr "травня"
-
-msgctxt "full month name with day"
-msgid "June"
-msgstr "червня"
-
-msgctxt "full month name with day"
-msgid "July"
-msgstr "липня"
-
-msgctxt "full month name with day"
-msgid "August"
-msgstr "серпня"
-
-msgctxt "full month name with day"
-msgid "September"
-msgstr "вересня"
-
-msgctxt "full month name with day"
-msgid "October"
-msgstr "жовтня"
-
-msgctxt "full month name with day"
-msgid "November"
-msgstr "листопада"
-
-msgctxt "full month name with day"
-msgid "December"
-msgstr "грудня"
-
-msgctxt "abbreviated month name with day"
-msgid "Jan"
-msgstr "січ"
-
-msgctxt "abbreviated month name with day"
-msgid "Feb"
-msgstr "лют"
-
-msgctxt "abbreviated month name with day"
-msgid "Mar"
-msgstr "бер"
-
-msgctxt "abbreviated month name with day"
-msgid "Apr"
-msgstr "квіт"
-
-msgctxt "abbreviated month name with day"
-msgid "May"
-msgstr "трав"
+#| msgid "%.1f GB"
+msgid "%.1f Gb"
+msgstr "%.1f Гбіт"
 
-msgctxt "abbreviated month name with day"
-msgid "Jun"
-msgstr "черв"
-
-msgctxt "abbreviated month name with day"
-msgid "Jul"
-msgstr "лип"
-
-msgctxt "abbreviated month name with day"
-msgid "Aug"
-msgstr "серп"
-
-msgctxt "abbreviated month name with day"
-msgid "Sep"
-msgstr "вер"
-
-msgctxt "abbreviated month name with day"
-msgid "Oct"
-msgstr "жовт"
-
-msgctxt "abbreviated month name with day"
-msgid "Nov"
-msgstr "лист"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2790
+#, c-format
+#| msgid "%.1f TB"
+msgid "%.1f Tb"
+msgstr "%.1f Тбіт"
 
-msgctxt "abbreviated month name with day"
-msgid "Dec"
-msgstr "груд"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2792
+#, c-format
+#| msgid "%.1f PB"
+msgid "%.1f Pb"
+msgstr "%.1f Пбіт"
 
-#~ msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
-#~ msgstr "Помилка відкривання файлу \"%s\" для запису: помилка fdopen(): %s"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2794
+#, c-format
+#| msgid "%.1f EB"
+msgid "%.1f Eb"
+msgstr "%.1f Ебіт"
 
-#~ msgid "Failed to write file '%s': fflush() failed: %s"
-#~ msgstr "Помилка запису у файл '%s': помилка fflush(): %s"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2798
+#, c-format
+#| msgid "%.1f KiB"
+msgid "%.1f Kib"
+msgstr "%.1f Кібіт"
 
-#~ msgid "Failed to close file '%s': fclose() failed: %s"
-#~ msgstr "Помилка закривання файлу \"%s\": помилка fclose(): %s"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2800
+#, c-format
+#| msgid "%.1f MiB"
+msgid "%.1f Mib"
+msgstr "%.1f Мібіт"
 
-#~ msgid "workspace limit for empty substrings reached"
-#~ msgstr "досягнуто межу робочого простору для порожніх підрядків"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2802
+#, c-format
+#| msgid "%.1f GiB"
+msgid "%.1f Gib"
+msgstr "%.1f Гібіт"
 
-#~ msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here"
-#~ msgstr "escape-символи (\\l, \\L, \\u, \\U) неприпустимі тут"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2804
+#, c-format
+#| msgid "%.1f TiB"
+msgid "%.1f Tib"
+msgstr "%.1f Тібіт"
 
-#~ msgid "repeating a DEFINE group is not allowed"
-#~ msgstr "повтор групи DEFINE неприпустимий"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2806
+#, c-format
+#| msgid "%.1f PiB"
+msgid "%.1f Pib"
+msgstr "%.1f Пібіт"
 
-#~ msgid "File is empty"
-#~ msgstr "Файл порожній"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2808
+#, c-format
+#| msgid "%.1f EiB"
+msgid "%.1f Eib"
+msgstr "%.1f Еібіт"
 
-#~ msgid ""
-#~ "Key file contains key '%s' which has value that cannot be interpreted."
-#~ msgstr ""
-#~ "Ключовий файл містить ключ '%s', що має значення, яке не вдається "
-#~ "розібрати."
+#: glib/gutils.c:2842 glib/gutils.c:2959
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u байт"
+msgstr[1] "%u байти"
+msgstr[2] "%u байтів"
 
-#, fuzzy
-#~ msgid "Error statting directory '%s': %s"
-#~ msgstr "Помилка відкривання каталогу \"%s\": %s"
+#: glib/gutils.c:2846
+#, c-format
+#| msgid "%u byte"
+#| msgid_plural "%u bytes"
+msgid "%u bit"
+msgid_plural "%u bits"
+msgstr[0] "%u байт"
+msgstr[1] "%u бітів"
+msgstr[2] "%u байтів"
 
-#~ msgid "Error stating file '%s': %s"
-#~ msgstr "Помилка отримання інформації про файл \"%s\": %s"
+#. Translators: the %s in "%s bytes" will always be replaced by a number.
+#: glib/gutils.c:2913
+#, c-format
+msgid "%s byte"
+msgid_plural "%s bytes"
+msgstr[0] "%s байт"
+msgstr[1] "%s байти"
+msgstr[2] "%s байтів"
 
-#~ msgid "No service record for '%s'"
-#~ msgstr "Немає службового запису для '%s'"
+#. Translators: the %s in "%s bits" will always be replaced by a number.
+#: glib/gutils.c:2918
+#, c-format
+#| msgid "%s byte"
+#| msgid_plural "%s bytes"
+msgid "%s bit"
+msgid_plural "%s bits"
+msgstr[0] "%s біт"
+msgstr[1] "%s біти"
+msgstr[2] "%s бітів"
 
-#~ msgid "Error connecting: "
-#~ msgstr "Помилка при з'єднанні:"
+#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
+#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
+#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
+#. * Please translate as literally as possible.
+#.
+#: glib/gutils.c:2972
+#, c-format
+msgid "%.1f KB"
+msgstr "%.1f КБ"
 
-#~ msgid "Error connecting: %s"
-#~ msgstr "Помилка при з'єднанні: %s"
+#: glib/gutils.c:2977
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f МБ"
 
-#~ msgid "Error reading from unix: %s"
-#~ msgstr "Помилка при зчитуванні unix-сокету: %s"
+#: glib/gutils.c:2982
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f ГБ"
 
-#~ msgid "Error closing unix: %s"
-#~ msgstr "Помилка при закриванні unix-сокету: %s"
+#: glib/gutils.c:2987
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f ТБ"
 
-#~ msgid "Error writing to unix: %s"
-#~ msgstr "Помилка при записі до unix-сокету: %s"
+#: glib/gutils.c:2992
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f ПБ"
 
-#, fuzzy
-#~ msgid "Do not give error for empty directory"
-#~ msgstr "Не вдається перемістити каталог у каталог"
+#: glib/gutils.c:2997
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f ЕБ"
index b66bbd4..c1cdf53 100644 (file)
@@ -1,48 +1,52 @@
 # Chinese (Taiwan) translation for glib 2.x
-# Copyright (C) 2001, 02, 03, 05, 07 Free Software Foundation, Inc.
+# Copyright (C) 2001, 02, 03, 05, 07, 10, 20 Free Software Foundation, Inc.
 # XML glossary from http://xml.ascc.net/zh/big5/gloss.html
 # Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2005, 2010.
 # Abel Cheung <abel@oaka.org>, 2001-2003, 2005.
 # Woodman Tuen <wmtuen@gmail.com>, 2005-07.
 # Wei-Lun Chao <chaoweilun@gmail.com>, 2010.
-#
+# Yi-Jyun Pan <pan93412@gmail.com>, 2020.
 msgid ""
 msgstr ""
-"Project-Id-Version: glib 2.31.21\n"
+"Project-Id-Version: glib 2.64\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2018-07-30 18:46+0000\n"
-"PO-Revision-Date: 2018-08-21 23:53+0800\n"
+"POT-Creation-Date: 2020-05-14 14:05+0000\n"
+"PO-Revision-Date: 2020-05-18 01:10+0800\n"
 "Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
-"Language-Team: Chinese (traditional)\n"
+"Language-Team: Chinese (Traditional) <zh-l10n@lists.linux.org.tw>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.1.1\n"
+"X-Generator: Poedit 2.3\n"
 
-#: gio/gapplication.c:496
+#: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication 選項"
 
-#: gio/gapplication.c:496
+#: gio/gapplication.c:500
 msgid "Show GApplication options"
 msgstr "顯示 GApplication  選項"
 
-#: gio/gapplication.c:541
+#: gio/gapplication.c:545
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr "進入 GApplication 服務模式 (用於來自 D-Bus 服務檔案)"
 
-#: gio/gapplication.c:553
+#: gio/gapplication.c:557
 msgid "Override the application’s ID"
 msgstr "覆蓋此應用程式 ID"
 
+#: gio/gapplication.c:569
+msgid "Replace the running instance"
+msgstr "取代執行中的實體"
+
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:488 gio/gsettings-tool.c:569
+#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
 msgid "Print help"
 msgstr "顯示求助"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:489 gio/gresource-tool.c:557
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
 msgid "[COMMAND]"
 msgstr "[指令]"
 
@@ -50,7 +54,7 @@ msgstr "[指令]"
 msgid "Print version"
 msgstr "顯示版本"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:575
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
 msgid "Print version information and exit"
 msgstr "輸出版本資訊並離開"
 
@@ -98,7 +102,7 @@ msgstr "列出應用程式的靜態動作 (從 .desktop 檔案)"
 msgid "APPID"
 msgstr "APPID"
 
-#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:90
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
 #: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "指令"
@@ -109,11 +113,11 @@ msgstr "顯示詳細求助的指令"
 
 #: gio/gapplication-tool.c:71
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
-msgstr "D-Bus æ ¼å¼\8fç\9a\84æ\87\89ç\94¨ç¨\8bå¼\8f辨å\88¥ç¢¼(ä¾\8bå¦\82ï¼\9aorg.example.viewer)"
+msgstr "D-Bus æ ¼å¼\8fç\9a\84æ\87\89ç\94¨ç¨\8bå¼\8fè­\98å\88¥ç¢¼ï¼\88ä¾\8bå¦\82ï¼\9aorg.example.viewerï¼\89"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:737
-#: gio/glib-compile-resources.c:743 gio/glib-compile-resources.c:770
-#: gio/gresource-tool.c:495 gio/gresource-tool.c:561
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
 msgid "FILE"
 msgstr "FILE"
 
@@ -137,7 +141,7 @@ msgstr "參數"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "動作呼叫時選擇性的參數,以 GVariant 格式"
 
-#: gio/gapplication-tool.c:96 gio/gresource-tool.c:526 gio/gsettings-tool.c:661
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -150,8 +154,8 @@ msgstr ""
 msgid "Usage:\n"
 msgstr "用法:\n"
 
-#: gio/gapplication-tool.c:114 gio/gresource-tool.c:551
-#: gio/gsettings-tool.c:696
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
+#: gio/gsettings-tool.c:694
 msgid "Arguments:\n"
 msgstr "引數:\n"
 
@@ -250,8 +254,8 @@ msgstr ""
 
 #: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
 #: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
-#: gio/ginputstream.c:1019 gio/goutputstream.c:203 gio/goutputstream.c:834
-#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:209
+#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "傳給 %s 的計數值太大"
@@ -266,7 +270,7 @@ msgid "Cannot truncate GBufferedInputStream"
 msgstr "不能截短 GBufferedInputStream"
 
 #: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
-#: gio/goutputstream.c:1661
+#: gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "串流已經關閉"
 
@@ -274,7 +278,7 @@ msgstr "串流已經關閉"
 msgid "Truncate not supported on base stream"
 msgstr "在基礎串流中不支援截短(truncate)"
 
-#: gio/gcancellable.c:317 gio/gdbusconnection.c:1840 gio/gdbusprivate.c:1402
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1411
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -293,59 +297,63 @@ msgid "Not enough space in destination"
 msgstr "在目的端中沒有足夠的空間"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1261 glib/gconvert.c:454 glib/gconvert.c:883
-#: glib/giochannel.c:1557 glib/giochannel.c:1599 glib/giochannel.c:2443
-#: glib/gutf8.c:869 glib/gutf8.c:1322
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:447 glib/gconvert.c:877
+#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "轉換輸入資料時遇到不正確的位元組組合"
 
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:462 glib/gconvert.c:797
-#: glib/giochannel.c:1564 glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:455 glib/gconvert.c:791
+#: glib/giochannel.c:1571 glib/giochannel.c:2473
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "轉換時發生錯誤:%s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1104
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1138
 msgid "Cancellable initialization not supported"
 msgstr "不支援可取消的初始化"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:327 glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:320 glib/giochannel.c:1392
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "不支援將字元集「%s」轉換成「%s」"
 
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:331
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:324
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "無法開啟「%s」至「%s」的轉換"
 
-#: gio/gcontenttype.c:358
+#: gio/gcontenttype.c:452
 #, c-format
 msgid "%s type"
 msgstr "%s 類型"
 
-#: gio/gcontenttype-win32.c:177
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "不明的類型"
 
-#: gio/gcontenttype-win32.c:179
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
 msgstr "%s 檔案類型"
 
-#: gio/gcredentials.c:315 gio/gcredentials.c:574
+#: gio/gcredentials.c:289
+msgid "GCredentials contains invalid data"
+msgstr "GCredentials 有無效資料"
+
+#: gio/gcredentials.c:345 gio/gcredentials.c:609
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials 沒有在這個 OS 上實作"
 
-#: gio/gcredentials.c:470
+#: gio/gcredentials.c:503
 msgid "There is no GCredentials support for your platform"
 msgstr "您的平臺沒有 GCredentials 支援"
 
-#: gio/gcredentials.c:516
+#: gio/gcredentials.c:552
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials 沒有包含在這個 OS 上的程序 ID"
 
-#: gio/gcredentials.c:568
+#: gio/gcredentials.c:603
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "在這個 OS 無法做到憑證偽裝"
 
@@ -353,397 +361,382 @@ msgstr "在這個 OS 無法做到憑證偽裝"
 msgid "Unexpected early end-of-stream"
 msgstr "未預期的串流過早結束"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:246 gio/gdbusaddress.c:327
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
-msgstr "位址項目「%2$s」有不支援的設定鍵「%1$s」"
-
-#: gio/gdbusaddress.c:185
-#, c-format
-msgid ""
-"Address “%s” is invalid (need exactly one of path, tmpdir or abstract keys)"
-msgstr "位址「%s」是無效的 (需要有明確的 path、tmpdir 或 abstract 設定鍵之一)"
+msgstr "「%2$s」位址條目有不支援的「%1$s」鍵"
 
-#: gio/gdbusaddress.c:198
+#: gio/gdbusaddress.c:171
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
-msgstr "在位址項「%s」有無意義的設定鍵/數值組合配對"
+msgstr "在「%s」位址條目中有無意義的鍵/值組合配對"
 
-#: gio/gdbusaddress.c:261 gio/gdbusaddress.c:342
+#: gio/gdbusaddress.c:180
 #, c-format
-msgid "Error in address “%s” — the port attribute is malformed"
-msgstr "位址「%s」有錯誤 — port 屬性的格式不良"
+msgid ""
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
+msgstr "「%s」位址無效 (需要有明確的 path、dir、tmpdir 或 abstract 鍵之一)"
 
-#: gio/gdbusaddress.c:272 gio/gdbusaddress.c:353
+#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
+#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
 #, c-format
-msgid "Error in address “%s” — the family attribute is malformed"
-msgstr "位址「%s」有錯誤 — family 屬性的格式不良"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "「%s」位址有錯誤 —「%s」特性的格式不良"
 
-#: gio/gdbusaddress.c:423 gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
-msgstr "位址「%2$s」有不明或不支援的傳輸「%1$s」"
+msgstr "「%2$s」位址有不明或不支援的「%1$s」傳輸"
 
-#: gio/gdbusaddress.c:467
+#: gio/gdbusaddress.c:461
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
-msgstr "位址元素「%s」,並未包含分號 (:)"
+msgstr "「%s」位址元素中並未包含分號 (:)"
 
-#: gio/gdbusaddress.c:488
+#: gio/gdbusaddress.c:470
+#, c-format
+msgid "Transport name in address element “%s” must not be empty"
+msgstr "「%s」位址元素中的傳輸名稱不能空白"
+
+#: gio/gdbusaddress.c:491
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
-msgstr "設定鍵/數值配對 %d,「%s」,於位址元素「%s」,並未包含等於符號"
+msgstr "在鍵/值配對 %d,「%s」,「%s」位址元素中,並未包含等於符號"
 
 #: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr "在鍵/值配對 %d,「%s」,「%s」位址元素中,不能有空白的鍵"
+
+#: gio/gdbusaddress.c:516
+#, c-format
+msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
-msgstr "在設定鍵/數值配對 %d,「%s」,位址元素「%s」中有錯誤的反轉義設定鍵"
+msgstr "在鍵/值配對 %d,「%s」,「%s」位址元素中有錯誤的反轉義鍵"
 
-#: gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
-msgstr ""
-"位址「%s」有錯誤 — unix 傳輸需要明確的設定一個「path」或「abstract」設定鍵"
+msgstr "「%s」位址有錯誤 — unix 傳輸需要明確的設定一個「path」或「abstract」鍵"
 
-#: gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:624
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
-msgstr "位址「%s」有錯誤 — host 屬性遺失或格式不良"
+msgstr "「%s」位址有錯誤 — host 特性遺失或格式不良"
 
-#: gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:638
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
-msgstr "位址「%s」有錯誤 — port 屬性遺失或格式不良"
+msgstr "「%s」位址有錯誤 — port 特性遺失或格式不良"
 
-#: gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:652
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
-msgstr "位址「%s」有錯誤 — noncefile 屬性遺失或格式不良"
+msgstr "「%s」位址有錯誤 — noncefile 特性遺失或格式不良"
 
-#: gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:673
 msgid "Error auto-launching: "
 msgstr "自動執行失敗:"
 
-#: gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:726
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "開啟臨時檔案「%s」時發生錯誤:%s"
 
-#: gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:745
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "讀取臨時檔案「%s」時發生錯誤:%s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:754
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "讀取臨時檔案「%s」時發生錯誤,預期為 16 位元組,卻得到 %d"
 
-#: gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:772
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "寫入臨時檔案「%s」的內容到串流時發生錯誤:"
 
-#: gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:981
 msgid "The given address is empty"
 msgstr "指定的位址是空白的"
 
-#: gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1094
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "在 setuid 時不能產生訊息匯流排"
 
-#: gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1101
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "沒有 machine-id 不能產生訊息匯流排:"
 
-#: gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1108
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "沒有 X11 $DISPLAY 不能自動執行 D-Bus "
 
-#: gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1150
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "產生命令列「%s」時出現錯誤:"
 
-#: gio/gdbusaddress.c:1359
-#, c-format
-msgid "(Type any character to close this window)\n"
-msgstr "(輸入任何字元以關閉這個視窗)\n"
-
-#: gio/gdbusaddress.c:1513
-#, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr "作業階段 dbus 尚未執行,且自動執行失敗"
-
-#: gio/gdbusaddress.c:1524
+#: gio/gdbusaddress.c:1219
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "不能判斷作業階段匯流排位址(沒有在這個 OS 實作)"
 
-#: gio/gdbusaddress.c:1662 gio/gdbusconnection.c:7142
+#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7190
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
-msgstr "不能從 DBUS_STARTER_BUS_TYPE 環境變數判斷匯流排位址 — 不明的數值「%s」"
+msgstr "不能從 DBUS_STARTER_BUS_TYPE 環境變數判斷匯流排位址 — 不明的「%s」值"
 
-#: gio/gdbusaddress.c:1671 gio/gdbusconnection.c:7151
+#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7199
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr "不能判斷匯流排位址,因為尚未設定 DBUS_STARTER_BUS_TYPE 環境變數"
 
-#: gio/gdbusaddress.c:1681
+#: gio/gdbusaddress.c:1376
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "不明的匯流排類型 %d"
 
-#: gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "未預期的內容缺乏嘗試讀取行"
 
-#: gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "未預期的內容缺乏嘗試(安全的)讀取行"
 
-#: gio/gdbusauth.c:481
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr "竭盡所有可用的核對機制 (已嘗試:%s) (可用:%s)"
 
-#: gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1167
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "已透過 GDBusAuthObserver::authorize-authenticated-peer 取消"
 
-#: gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:265
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "從目錄「%s」取得資訊時發生錯誤:%s"
 
-#: gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:280
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr "目錄「%s」的權限格式下良。預期的模式為 0700,卻得到 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:310
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "建立目錄「%s」時發生錯誤:%s"
 
-#: gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:355
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "開啟鑰匙圈「%s」讀取時發生錯誤:"
 
-#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:378 gio/gdbusauthmechanismsha1.c:700
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "位於「%2$s」內容「%3$s」的鑰匙圈第 %1$d 列格式不良"
 
-#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:392 gio/gdbusauthmechanismsha1.c:714
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "位於「%2$s」內容「%3$s」的鑰匙圈第 %1$d 列第一記號格式不良"
 
-#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:406 gio/gdbusauthmechanismsha1.c:728
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "位於「%2$s」內容「%3$s」的鑰匙圈第 %1$d 列第二記號格式不良"
 
-#: gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:430
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "在「%2$s」鑰匙圈找不到 id %1$d 的 cookie"
 
-#: gio/gdbusauthmechanismsha1.c:503
-#, c-format
-msgid "Error deleting stale lock file “%s”: %s"
-msgstr "刪除舊的鎖定檔案「%s」時發生錯誤:%s"
-
-#: gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:476
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "建立鎖定檔案「%s」時發生錯誤:%s"
 
-#: gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:540
+#, c-format
+msgid "Error deleting stale lock file “%s”: %s"
+msgstr "刪除舊的鎖定檔案「%s」時發生錯誤:%s"
+
+#: gio/gdbusauthmechanismsha1.c:579
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "關閉 (取消連結) 鎖定檔案時發生錯誤「%s」:%s"
 
-#: gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:590
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "取消連結鎖定檔案時發生錯誤「%s」:%s"
 
-#: gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:667
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "開啟鑰匙圈「%s」寫入時發生錯誤:"
 
-#: gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:863
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(另外,釋放「%s」的鎖定失敗:%s)"
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2369
+#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
 msgid "The connection is closed"
 msgstr "這個連線已關閉"
 
-#: gio/gdbusconnection.c:1870
+#: gio/gdbusconnection.c:1892
 msgid "Timeout was reached"
 msgstr "已達逾時時間"
 
-#: gio/gdbusconnection.c:2491
+#: gio/gdbusconnection.c:2513
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "當建立客戶端連線時遇到不支援的旗標"
 
-#: gio/gdbusconnection.c:4115 gio/gdbusconnection.c:4462
-#, fuzzy, c-format
-#| msgid ""
-#| "No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
+#: gio/gdbusconnection.c:4161 gio/gdbusconnection.c:4508
+#, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
-msgstr "在路徑 %s 的物件沒有「org.freedesktop.DBus.Properties」這個介面"
+msgstr "在 %s 路徑的物件沒有「org.freedesktop.DBus.Properties」這個介面"
 
-#: gio/gdbusconnection.c:4257
-#, fuzzy, c-format
-#| msgid "No such property '%s'"
+#: gio/gdbusconnection.c:4303
+#, c-format
 msgid "No such property “%s”"
 msgstr "沒有這個屬性「%s」"
 
-#: gio/gdbusconnection.c:4269
-#, fuzzy, c-format
-#| msgid "Property '%s' is not readable"
+#: gio/gdbusconnection.c:4315
+#, c-format
 msgid "Property “%s” is not readable"
-msgstr "屬性「%s」無法讀取"
+msgstr "無法讀取「%s」屬性"
 
-#: gio/gdbusconnection.c:4280
-#, fuzzy, c-format
-#| msgid "Property '%s' is not writable"
+#: gio/gdbusconnection.c:4326
+#, c-format
 msgid "Property “%s” is not writable"
-msgstr "屬性「%s」無法寫入"
+msgstr "無法寫入「%s」屬性"
 
-#: gio/gdbusconnection.c:4300
-#, fuzzy, c-format
-#| msgid "Error setting property '%s': Expected type '%s' but got '%s'"
+#: gio/gdbusconnection.c:4346
+#, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
-msgstr "設定屬性「%s」錯誤:預期的類型為「%s」但得到「%s」"
+msgstr "「%s」屬性設定錯誤:預期的類型為「%s」但得到「%s」"
 
-#: gio/gdbusconnection.c:4405 gio/gdbusconnection.c:4613
-#: gio/gdbusconnection.c:6582
-#, fuzzy, c-format
-#| msgid "No such interface '%s'"
+#: gio/gdbusconnection.c:4451 gio/gdbusconnection.c:4659
+#: gio/gdbusconnection.c:6630
+#, c-format
 msgid "No such interface “%s”"
-msgstr "沒有這個介面「%s」"
+msgstr "沒有這個「%s」介面"
 
-#: gio/gdbusconnection.c:4831 gio/gdbusconnection.c:7091
-#, fuzzy, c-format
-#| msgid "No such interface '%s' on object at path %s"
+#: gio/gdbusconnection.c:4877 gio/gdbusconnection.c:7139
+#, c-format
 msgid "No such interface “%s” on object at path %s"
-msgstr "在路徑 %2$s 的物件沒有「%1$s」這個介面"
+msgstr "在 %2$s 路徑的物件沒有「%1$s」這個介面"
 
-#: gio/gdbusconnection.c:4929
-#, fuzzy, c-format
-#| msgid "No such key “%s”\n"
+#: gio/gdbusconnection.c:4975
+#, c-format
 msgid "No such method “%s”"
-msgstr "沒有設定鍵「%s」\n"
+msgstr "沒有「%s」方法"
 
-#: gio/gdbusconnection.c:4960
-#, fuzzy, c-format
-#| msgid "Type of message, '%s', does not match expected type '%s'"
+#: gio/gdbusconnection.c:5006
+#, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "訊息的類型,「%s」,不符合預期的類型「%s」"
 
-#: gio/gdbusconnection.c:5158
+#: gio/gdbusconnection.c:5204
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "有物件已為介面 %s 匯出於 %s"
 
-#: gio/gdbusconnection.c:5384
+#: gio/gdbusconnection.c:5430
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "無法取回屬性 %s.%s"
 
-#: gio/gdbusconnection.c:5440
+#: gio/gdbusconnection.c:5486
 #, c-format
 msgid "Unable to set property %s.%s"
-msgstr "無法設定屬性%s.%s"
+msgstr "無法設定屬性 %s.%s"
 
-#: gio/gdbusconnection.c:5618
-#, fuzzy, c-format
-#| msgid "Method '%s' returned type '%s', but expected '%s'"
+#: gio/gdbusconnection.c:5664
+#, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "方法「%s」傳回類型「%s」,但預期為「%s」"
 
-#: gio/gdbusconnection.c:6693
-#, fuzzy, c-format
-#| msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
+#: gio/gdbusconnection.c:6741
+#, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "介面「%2$s」簽章「%3$s」的方法「%1$s」不存在"
 
-#: gio/gdbusconnection.c:6814
+#: gio/gdbusconnection.c:6862
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "子樹狀目錄已為 %s 匯出"
 
-#: gio/gdbusmessage.c:1248
+#: gio/gdbusmessage.c:1255
 msgid "type is INVALID"
 msgstr "類型為無效"
 
-#: gio/gdbusmessage.c:1259
+#: gio/gdbusmessage.c:1266
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL 訊息:缺少 PATH 或 MEMBER 標頭欄位"
 
-#: gio/gdbusmessage.c:1270
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN 訊息:缺少 REPLY_SERIAL 標頭欄位"
 
-#: gio/gdbusmessage.c:1282
+#: gio/gdbusmessage.c:1289
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR 訊息:缺少 REPLY_SERIAL 或 ERROR_NAME 標頭欄位"
 
-#: gio/gdbusmessage.c:1295
+#: gio/gdbusmessage.c:1302
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL 訊息:缺少 PATH、INTERFACE 或 MEMBER 標頭欄位"
 
-#: gio/gdbusmessage.c:1303
+#: gio/gdbusmessage.c:1310
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
-msgstr "SIGNAL 訊息:PATH 標頭欄位使用了保留的值 /org/freedesktop/DBus/Local"
+msgstr "SIGNAL 訊息:PATH 標頭欄位使用了保留的值 /org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1318
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 msgstr ""
-"SIGNAL 訊息:INTERFACE 標頭欄位使用了保留的值 org.freedesktop.DBus.Local"
+"SIGNAL 訊息:INTERFACE 標頭欄位使用了保留的值 org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1359 gio/gdbusmessage.c:1419
+#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "嘗試讀取 %lu 位元組卻只得到 %lu"
 
-#: gio/gdbusmessage.c:1373
+#: gio/gdbusmessage.c:1380
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "預期在字串「%s」之後為 NUL 位元組,但是發現位元組 %d"
 
-#: gio/gdbusmessage.c:1392
+#: gio/gdbusmessage.c:1399
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -752,17 +745,21 @@ msgstr ""
 "預期為有效的 UTF-8 字串但是在位元組 %d 處發現無效的位元組 (字串的長度為 %d)。"
 "到那一點之前的有效 UTF-8 字串為「%s」"
 
-#: gio/gdbusmessage.c:1595
+#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+msgid "Value nested too deeply"
+msgstr "值的巢狀層次過深"
+
+#: gio/gdbusmessage.c:1609
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
-msgstr "已解析數值「%s」不是有效的 D-Bus 物件路徑"
+msgstr "已解析「%s」值不是有效的 D-Bus 物件路徑"
 
-#: gio/gdbusmessage.c:1617
+#: gio/gdbusmessage.c:1631
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
-msgstr "已解析數值「%s」不是一個有效的 D-Bus 簽章"
+msgstr "已解析「%s」值不是一個有效的 D-Bus 簽章"
 
-#: gio/gdbusmessage.c:1664
+#: gio/gdbusmessage.c:1678
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -770,7 +767,7 @@ msgid_plural ""
 "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 msgstr[0] "遇到長度為 %u 位元組的陣列。最大長度為 2<<26 位元組 (64 MiB)。"
 
-#: gio/gdbusmessage.c:1684
+#: gio/gdbusmessage.c:1698
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -778,153 +775,158 @@ msgid ""
 msgstr ""
 "遇到類型「a%c」的陣列,預期長度應為 %u 位元組的倍數,但發現長度為 %u 位元組"
 
-#: gio/gdbusmessage.c:1851
+#: gio/gdbusmessage.c:1884
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
-msgstr "已分析數值「%s」不是有效的 D-Bus 簽章"
+msgstr "已解析「%s」值不是有效的 D-Bus 簽章"
 
-#: gio/gdbusmessage.c:1875
+#: gio/gdbusmessage.c:1925
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr "從 D-Bus 線性格式以類型字串「%s」反序列化 GVariant 時發生錯誤"
 
-#: gio/gdbusmessage.c:2057
+#: gio/gdbusmessage.c:2110
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
-msgstr ""
-"無效的字節順序數值。預期為 0x6c (「I」)或 0x42 (「B」)卻得到數值 0x%02x"
+msgstr "無效的字節順序值。預期為 0x6c (「I」) 或 0x42 (「B」) 卻得到值 0x%02x"
 
-#: gio/gdbusmessage.c:2070
+#: gio/gdbusmessage.c:2123
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "無效的主通訊協定版本。預期為 1 但找到 %d"
 
-#: gio/gdbusmessage.c:2126
+#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
+msgid "Signature header found but is not of type signature"
+msgstr "找到簽章標頭,但不是一種類型簽章"
+
+#: gio/gdbusmessage.c:2189
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "發現簽章「%s」的簽章標頭但訊息主體是空的"
 
-#: gio/gdbusmessage.c:2140
+#: gio/gdbusmessage.c:2204
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
-msgstr "已解析數值「%s」不是有效的 D-Bus 簽章 (於主體)"
+msgstr "已解析「%s」值不是有效的 D-Bus 簽章 (於主體)"
 
-#: gio/gdbusmessage.c:2170
+#: gio/gdbusmessage.c:2236
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
 msgstr[0] "在訊息中沒有簽章標頭但訊息主體有 %u 位元組"
 
-#: gio/gdbusmessage.c:2180
+#: gio/gdbusmessage.c:2246
 msgid "Cannot deserialize message: "
 msgstr "不能反序列化訊息:"
 
-#: gio/gdbusmessage.c:2521
+#: gio/gdbusmessage.c:2590
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "從 D-Bus 線性格式以類型字串「%s」序列化 GVariant 時發生錯誤"
 
-#: gio/gdbusmessage.c:2658
+#: gio/gdbusmessage.c:2727
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
-msgstr ""
+msgstr "訊息 (%d) 中的檔案描述狀態數量跟標頭欄位 (%d) 的不同"
 
-#: gio/gdbusmessage.c:2666
+#: gio/gdbusmessage.c:2735
 msgid "Cannot serialize message: "
 msgstr "不能序列化訊息:"
 
-#: gio/gdbusmessage.c:2710
+#: gio/gdbusmessage.c:2788
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "訊息主體有簽章「%s」但是沒有簽章標頭"
 
-#: gio/gdbusmessage.c:2720
+#: gio/gdbusmessage.c:2798
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr "訊息主體有類型簽章「%s」但是標頭欄位中的簽章為「%s」"
 
-#: gio/gdbusmessage.c:2736
+#: gio/gdbusmessage.c:2814
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "訊息主體是空的但是標頭欄位中的簽章為「%s」"
 
-#: gio/gdbusmessage.c:3289
+#: gio/gdbusmessage.c:3367
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "傳回類型「%s」主體時發生錯誤"
 
-#: gio/gdbusmessage.c:3297
+#: gio/gdbusmessage.c:3375
 msgid "Error return with empty body"
 msgstr "傳回空白主體錯誤"
 
-#: gio/gdbusprivate.c:2066
+#: gio/gdbusprivate.c:2242
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr "(輸入任何字元以關閉這個視窗)\n"
+
+#: gio/gdbusprivate.c:2416
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr "作業階段 dbus 尚未執行,且自動執行失敗"
+
+#: gio/gdbusprivate.c:2439
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "無法取得硬體設定檔:%s"
 
-#: gio/gdbusprivate.c:2111
+#: gio/gdbusprivate.c:2484
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "無法載入 /var/lib/dbus/machine-id 或 /etc/machine-id:"
 
-#: gio/gdbusproxy.c:1612
+#: gio/gdbusproxy.c:1562
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "呼叫 %s StartServiceByName 時發生錯誤:"
 
-#: gio/gdbusproxy.c:1635
+#: gio/gdbusproxy.c:1585
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "來自 StartServiceByName(\"%2$s\") 方法的未預期回應 %1$d"
 
-#: gio/gdbusproxy.c:2726 gio/gdbusproxy.c:2860
+#: gio/gdbusproxy.c:2685 gio/gdbusproxy.c:2820
+#, c-format
 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"
+"Cannot invoke method; proxy is for the well-known name %s without an owner, "
+"and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
-"不能呼叫方法;proxy 是沒有擁有者的知名名稱,而 proxy 是以 "
-"G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START 旗標建構"
+"不能呼叫方法;Proxy 是沒有擁有者的 %s 已知名稱,而 Proxy 以 "
+"G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START 旗標建構"
 
-#: gio/gdbusserver.c:708
-msgid "Abstract name space not supported"
+#: gio/gdbusserver.c:755
+msgid "Abstract namespace not supported"
 msgstr "不支援抽象命名空間"
 
-#: gio/gdbusserver.c:795
+#: gio/gdbusserver.c:848
 msgid "Cannot specify nonce file when creating a server"
 msgstr "當建立伺服器時不能指定臨時檔案"
 
-#: gio/gdbusserver.c:876
+#: gio/gdbusserver.c:930
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "在「%s」寫入臨時檔案時發生錯誤:%s"
 
-#: gio/gdbusserver.c:1047
+#: gio/gdbusserver.c:1103
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "字串「%s」不是一個有效的 D-Bus GUID"
 
-#: gio/gdbusserver.c:1087
+#: gio/gdbusserver.c:1143
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "不能聽取不支援的傳輸「%s」"
 
-#: gio/gdbus-tool.c:95
-#, fuzzy, c-format
-#| msgid ""
-#| "Commands:\n"
-#| "  help         Shows this information\n"
-#| "  introspect   Introspect a remote object\n"
-#| "  monitor      Monitor a remote object\n"
-#| "  call         Invoke a method on a remote object\n"
-#| "  emit         Emit a signal\n"
-#| "\n"
-#| "Use “%s COMMAND --help” to get help on each command.\n"
+#: gio/gdbus-tool.c:107
+#, c-format
 msgid ""
 "Commands:\n"
 "  help         Shows this information\n"
@@ -942,298 +944,287 @@ msgstr ""
 "  monitor      監控遠端物件\n"
 "  call         呼叫遠端物件的方法\n"
 "  emit         發出信號\n"
-"\n"
+"  wait         等待匯流排名稱出現\n"
+"  \n"
 "使用「%s COMMAND --help」來取得每個指令的求助資訊。\n"
 
-#: gio/gdbus-tool.c:185 gio/gdbus-tool.c:252 gio/gdbus-tool.c:324
-#: gio/gdbus-tool.c:348 gio/gdbus-tool.c:834 gio/gdbus-tool.c:1171
-#: gio/gdbus-tool.c:1613
+#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
+#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
+#: gio/gdbus-tool.c:1672
 #, c-format
 msgid "Error: %s\n"
 msgstr "錯誤:%s\n"
 
-#: gio/gdbus-tool.c:196 gio/gdbus-tool.c:265 gio/gdbus-tool.c:1629
+#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "解析檢討 XML 時出現錯誤:%s\n"
 
-#: gio/gdbus-tool.c:234
+#: gio/gdbus-tool.c:246
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "錯誤:%s 不是有效的名稱\n"
 
-#: gio/gdbus-tool.c:382
+#: gio/gdbus-tool.c:394
 msgid "Connect to the system bus"
 msgstr "連線到系統匯流排"
 
-#: gio/gdbus-tool.c:383
+#: gio/gdbus-tool.c:395
 msgid "Connect to the session bus"
 msgstr "連線到作業階段匯流排"
 
-#: gio/gdbus-tool.c:384
+#: gio/gdbus-tool.c:396
 msgid "Connect to given D-Bus address"
 msgstr "連線到指定的 D-Bus 位址"
 
-#: gio/gdbus-tool.c:394
+#: gio/gdbus-tool.c:406
 msgid "Connection Endpoint Options:"
 msgstr "連線端點選項:"
 
-#: gio/gdbus-tool.c:395
+#: gio/gdbus-tool.c:407
 msgid "Options specifying the connection endpoint"
 msgstr "指定連線端點的選項"
 
-#: gio/gdbus-tool.c:417
+#: gio/gdbus-tool.c:430
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "沒有指定連線端點"
 
-#: gio/gdbus-tool.c:427
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "指定了多重連線端點"
 
-#: gio/gdbus-tool.c:497
+#: gio/gdbus-tool.c:513
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "警告:根據檢討資料,介面「%s」不存在\n"
 
-#: gio/gdbus-tool.c:506
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
 msgstr "警告:根據檢討資料,介面「%2$s」的方法「%1$s」不存在\n"
 
-#: gio/gdbus-tool.c:568
+#: gio/gdbus-tool.c:584
 msgid "Optional destination for signal (unique name)"
 msgstr "信號的選擇性目的端 (獨特名稱)"
 
-#: gio/gdbus-tool.c:569
+#: gio/gdbus-tool.c:585
 msgid "Object path to emit signal on"
 msgstr "要發出信號的物件路徑"
 
-#: gio/gdbus-tool.c:570
+#: gio/gdbus-tool.c:586
 msgid "Signal and interface name"
 msgstr "信號和介面名稱"
 
-#: gio/gdbus-tool.c:603
+#: gio/gdbus-tool.c:619
 msgid "Emit a signal."
 msgstr "發出信號。"
 
-#: gio/gdbus-tool.c:658 gio/gdbus-tool.c:965 gio/gdbus-tool.c:1715
-#: gio/gdbus-tool.c:1944 gio/gdbus-tool.c:2164
+#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
+#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "連線錯誤:%s\n"
 
-#: gio/gdbus-tool.c:678
+#: gio/gdbus-tool.c:694
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "錯誤:%s 不是有效的獨特匯流排名稱。\n"
 
-#: gio/gdbus-tool.c:697 gio/gdbus-tool.c:1008 gio/gdbus-tool.c:1758
+#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
 msgid "Error: Object path is not specified\n"
 msgstr "錯誤:沒有指定物件路徑\n"
 
-#: gio/gdbus-tool.c:720 gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1778
-#: gio/gdbus-tool.c:2015
+#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
+#: gio/gdbus-tool.c:2078
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "錯誤:%s 不是有效的物件路徑\n"
 
-#: gio/gdbus-tool.c:740
-#, fuzzy
-#| msgid "Error: Method name is not specified\n"
+#: gio/gdbus-tool.c:756
 msgid "Error: Signal name is not specified\n"
-msgstr "錯誤:沒有指定方法名稱\n"
+msgstr "錯誤:沒有指定信號名稱\n"
 
-#: gio/gdbus-tool.c:754
-#, fuzzy, c-format
-#| msgid "Error: Method name “%s” is invalid\n"
+#: gio/gdbus-tool.c:770
+#, c-format
 msgid "Error: Signal name “%s” is invalid\n"
-msgstr "錯誤:方法名稱「%s」是無效的\n"
+msgstr "錯誤:「%s」信號名稱無效\n"
 
-#: gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:782
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "錯誤:%s 不是有效的介面名稱\n"
 
-#: gio/gdbus-tool.c:772
+#: gio/gdbus-tool.c:788
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "錯誤:%s 不是有效的成員名稱\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:809 gio/gdbus-tool.c:1140
+#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "解析參數 %d 時發生錯誤:%s\n"
 
-#: gio/gdbus-tool.c:841
+#: gio/gdbus-tool.c:857
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "清除連線時發生錯誤:%s\n"
 
-#: gio/gdbus-tool.c:868
+#: gio/gdbus-tool.c:884
 msgid "Destination name to invoke method on"
 msgstr "要呼叫方法的目的端名稱"
 
-#: gio/gdbus-tool.c:869
+#: gio/gdbus-tool.c:885
 msgid "Object path to invoke method on"
 msgstr "要呼叫方法的物件路徑"
 
-#: gio/gdbus-tool.c:870
+#: gio/gdbus-tool.c:886
 msgid "Method and interface name"
 msgstr "方法和介面名稱"
 
-#: gio/gdbus-tool.c:871
+#: gio/gdbus-tool.c:887
 msgid "Timeout in seconds"
 msgstr "逾時時間(秒)"
 
-#: gio/gdbus-tool.c:910
+#: gio/gdbus-tool.c:926
 msgid "Invoke a method on a remote object."
 msgstr "呼叫遠端物件的方法。"
 
-#: gio/gdbus-tool.c:982 gio/gdbus-tool.c:1732 gio/gdbus-tool.c:1969
+#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
 msgid "Error: Destination is not specified\n"
 msgstr "錯誤:尚未指定目的端\n"
 
-#: gio/gdbus-tool.c:993 gio/gdbus-tool.c:1749 gio/gdbus-tool.c:1980
+#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "錯誤:%s 不是有效的匯流排名稱\n"
 
-#: gio/gdbus-tool.c:1043
+#: gio/gdbus-tool.c:1059
 msgid "Error: Method name is not specified\n"
 msgstr "錯誤:沒有指定方法名稱\n"
 
-#: gio/gdbus-tool.c:1054
+#: gio/gdbus-tool.c:1070
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "錯誤:方法名稱「%s」是無效的\n"
 
-#: gio/gdbus-tool.c:1132
+#: gio/gdbus-tool.c:1148
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "解析類型「%2$s」的參數 %1$d 時發生錯誤:%3$s\n"
 
-#: gio/gdbus-tool.c:1576
+#: gio/gdbus-tool.c:1634
 msgid "Destination name to introspect"
 msgstr "要檢討的目的端名稱"
 
-#: gio/gdbus-tool.c:1577
+#: gio/gdbus-tool.c:1635
 msgid "Object path to introspect"
 msgstr "要檢討的物件路徑"
 
-#: gio/gdbus-tool.c:1578
+#: gio/gdbus-tool.c:1636
 msgid "Print XML"
 msgstr "顯示 XML"
 
-#: gio/gdbus-tool.c:1579
+#: gio/gdbus-tool.c:1637
 msgid "Introspect children"
 msgstr "Introspect 子項目"
 
-#: gio/gdbus-tool.c:1580
+#: gio/gdbus-tool.c:1638
 msgid "Only print properties"
-msgstr "只有列印性"
+msgstr "只有列印性"
 
-#: gio/gdbus-tool.c:1667
+#: gio/gdbus-tool.c:1727
 msgid "Introspect a remote object."
 msgstr "檢查遠端物件。"
 
-#: gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:1933
 msgid "Destination name to monitor"
 msgstr "要監控的目的端名稱"
 
-#: gio/gdbus-tool.c:1871
+#: gio/gdbus-tool.c:1934
 msgid "Object path to monitor"
 msgstr "要監控的物件路徑"
 
-#: gio/gdbus-tool.c:1896
+#: gio/gdbus-tool.c:1959
 msgid "Monitor a remote object."
 msgstr "監控遠端物件。"
 
-#: gio/gdbus-tool.c:1954
+#: gio/gdbus-tool.c:2017
 msgid "Error: can’t monitor a non-message-bus connection\n"
-msgstr ""
+msgstr "錯誤:無法監控非訊息匯流排的連線\n"
 
-#: gio/gdbus-tool.c:2078
+#: gio/gdbus-tool.c:2141
 msgid "Service to activate before waiting for the other one (well-known name)"
-msgstr ""
+msgstr "在等待其他前要啟用的服務(已知名稱)"
 
-#: gio/gdbus-tool.c:2081
+#: gio/gdbus-tool.c:2144
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
-msgstr ""
+msgstr "發生錯誤結束前的等待逾時(秒);0 表示沒有逾時(預設值)"
 
-#: gio/gdbus-tool.c:2129
-#, fuzzy
-#| msgid "[OPTION…]"
+#: gio/gdbus-tool.c:2192
 msgid "[OPTION…] BUS-NAME"
-msgstr "[選項…]"
+msgstr "[OPTION…] BUS-NAME"
 
-#: gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:2193
 msgid "Wait for a bus name to appear."
-msgstr ""
+msgstr "等待匯流排名稱顯示。"
 
-#: gio/gdbus-tool.c:2206
-#, fuzzy
-#| msgid "Error: object path not specified.\n"
+#: gio/gdbus-tool.c:2269
 msgid "Error: A service to activate for must be specified.\n"
-msgstr "錯誤:沒有指定物件路徑。\n"
+msgstr "錯誤:需要指定要啟用的服務。\n"
 
-#: gio/gdbus-tool.c:2211
-#, fuzzy
-#| msgid "Error: object path not specified.\n"
+#: gio/gdbus-tool.c:2274
 msgid "Error: A service to wait for must be specified.\n"
-msgstr "錯誤:沒有指定物件路徑。\n"
+msgstr "錯誤:需要指定要等待的服務。\n"
 
-#: gio/gdbus-tool.c:2216
-#, fuzzy
-#| msgid "Too many arguments"
+#: gio/gdbus-tool.c:2279
 msgid "Error: Too many arguments.\n"
-msgstr "引數太多"
+msgstr "錯誤:引數太多。\n"
 
-#: gio/gdbus-tool.c:2224 gio/gdbus-tool.c:2231
-#, fuzzy, c-format
-#| msgid "Error: %s is not a valid bus name\n"
+#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
+#, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
-msgstr "é\8c¯èª¤ï¼\9a%s ä¸\8dæ\98¯æ\9c\89æ\95\88ç\9a\84å\8c¯æµ\81æ\8e\92å\90\8d稱\n"
+msgstr "é\8c¯èª¤ï¼\9a%s ä¸\8dæ\98¯æ\9c\89æ\95\88ç\9a\84å·²ç\9f¥å\8c¯æµ\81æ\8e\92å\90\8d稱ã\80\82\n"
 
-#: gio/gdesktopappinfo.c:2023 gio/gdesktopappinfo.c:4633
+#: gio/gdesktopappinfo.c:2071 gio/gdesktopappinfo.c:4877
 msgid "Unnamed"
 msgstr "未命名的"
 
-#: gio/gdesktopappinfo.c:2433
+#: gio/gdesktopappinfo.c:2481
 msgid "Desktop file didn’t specify Exec field"
 msgstr "桌面(Desktop)檔案未指定 Exec 欄位"
 
-#: gio/gdesktopappinfo.c:2692
+#: gio/gdesktopappinfo.c:2761
 msgid "Unable to find terminal required for application"
 msgstr "無法找到應用程式要求的終端機"
 
-#: gio/gdesktopappinfo.c:3202
+#: gio/gdesktopappinfo.c:3413
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "不能建立使用者應用程式設定資料夾 %s:%s"
 
-#: gio/gdesktopappinfo.c:3206
+#: gio/gdesktopappinfo.c:3417
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "不能建立使用者 MIME 設定資料夾 %s:%s"
 
-#: gio/gdesktopappinfo.c:3446 gio/gdesktopappinfo.c:3470
+#: gio/gdesktopappinfo.c:3657 gio/gdesktopappinfo.c:3681
 msgid "Application information lacks an identifier"
 msgstr "應用程式資訊缺少識別碼"
 
-#: gio/gdesktopappinfo.c:3704
+#: gio/gdesktopappinfo.c:3915
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "不能建立使用者桌面檔案 %s"
 
-#: gio/gdesktopappinfo.c:3838
+#: gio/gdesktopappinfo.c:4049
 #, c-format
 msgid "Custom definition for %s"
 msgstr "自訂 %s 的定義"
@@ -1261,12 +1252,12 @@ msgstr "裝置無法實作啟動功能(start)"
 msgid "drive doesn’t implement stop"
 msgstr "裝置無法實作停止功能(stop)"
 
-#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
-#: gio/gdummytlsbackend.c:509
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321
+#: gio/gdummytlsbackend.c:513
 msgid "TLS support is not available"
 msgstr "TLS 支援無法使用"
 
-#: gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:423
 msgid "DTLS support is not available"
 msgstr "DTLS 支援無法使用"
 
@@ -1294,12 +1285,12 @@ msgstr "GEmblemedIcon 編碼中記號 (%d) 的數量格式不正確"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "預期為 GEmblemedIcon 的 GEmblem"
 
-#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
-#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
-#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3738 gio/gfile.c:3793
-#: gio/gfile.c:4029 gio/gfile.c:4071 gio/gfile.c:4539 gio/gfile.c:4950
-#: gio/gfile.c:5035 gio/gfile.c:5125 gio/gfile.c:5222 gio/gfile.c:5309
-#: gio/gfile.c:5410 gio/gfile.c:7988 gio/gfile.c:8078 gio/gfile.c:8162
+#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
+#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
+#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
+#: gio/gfile.c:4055 gio/gfile.c:4523 gio/gfile.c:4934 gio/gfile.c:5019
+#: gio/gfile.c:5109 gio/gfile.c:5206 gio/gfile.c:5293 gio/gfile.c:5394
+#: gio/gfile.c:8104 gio/gfile.c:8194 gio/gfile.c:8278
 #: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "不支援的操作"
@@ -1308,69 +1299,73 @@ msgstr "不支援的操作"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1575
+#: gio/gfile.c:1543
 msgid "Containing mount does not exist"
 msgstr "包含了不存在的掛載點"
 
-#: gio/gfile.c:2622 gio/glocalfile.c:2391
+#: gio/gfile.c:2590 gio/glocalfile.c:2428
 msgid "Can’t copy over directory"
 msgstr "不能複製整個目錄"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2650
 msgid "Can’t copy directory over directory"
 msgstr "不能將目錄複製到目錄上"
 
-#: gio/gfile.c:2690
+#: gio/gfile.c:2658
 msgid "Target file exists"
 msgstr "目標檔案已存在"
 
-#: gio/gfile.c:2709
+#: gio/gfile.c:2677
 msgid "Can’t recursively copy directory"
 msgstr "不能遞廻複製目錄"
 
-#: gio/gfile.c:2984
+#: gio/gfile.c:2952
 msgid "Splice not supported"
 msgstr "不支援拼接"
 
-#: gio/gfile.c:2988 gio/gfile.c:3033
+#: gio/gfile.c:2956 gio/gfile.c:3001
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "拼接檔案時發生錯誤:%s"
 
-#: gio/gfile.c:3149
+#: gio/gfile.c:3117
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "不支援在掛載點之間複製 (參照連結/重製)"
 
-#: gio/gfile.c:3153
+#: gio/gfile.c:3121
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "複製 (參照連結/重製) 不支援或無效"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3126
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "複製 (參照連結/重製) 不支援或無法運作"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3190
 msgid "Can’t copy special file"
 msgstr "不能複製特殊的檔案"
 
-#: gio/gfile.c:4019
+#: gio/gfile.c:4003
 msgid "Invalid symlink value given"
 msgstr "提供了無效的符號連結值"
 
-#: gio/gfile.c:4180
+#: gio/gfile.c:4013 glib/gfileutils.c:2172
+msgid "Symbolic links not supported"
+msgstr "不支援符號連結"
+
+#: gio/gfile.c:4164
 msgid "Trash not supported"
 msgstr "不支援垃圾桶"
 
-#: gio/gfile.c:4292
+#: gio/gfile.c:4276
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "檔案名稱不能包含「%c」"
 
-#: gio/gfile.c:6773 gio/gvolume.c:364
+#: gio/gfile.c:6757 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "儲存區尚未實作掛載功能"
 
-#: gio/gfile.c:6882
+#: gio/gfile.c:6871 gio/gfile.c:6919
 msgid "No application is registered as handling this file"
 msgstr "沒有應用程式註冊為用以處理這個檔案"
 
@@ -1415,8 +1410,8 @@ msgstr "在輸入串流中不允許截短(truncate)"
 msgid "Truncate not supported on stream"
 msgstr "在串流中不支援截短(truncate)"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:410 gio/gresolver.c:476
-#: glib/gconvert.c:1786
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:595
+#: glib/gconvert.c:1777
 msgid "Invalid hostname"
 msgstr "主機名稱無效"
 
@@ -1445,37 +1440,37 @@ msgstr "HTTP 代理伺服器連線失敗:%i"
 msgid "HTTP proxy server closed connection unexpectedly."
 msgstr "HTTP 代理伺服器未預期關閉連線。"
 
-#: gio/gicon.c:290
+#: gio/gicon.c:298
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "記號數量 (%d) 錯誤"
 
-#: gio/gicon.c:310
+#: gio/gicon.c:318
 #, c-format
 msgid "No type for class name %s"
 msgstr "類別名稱 %s 沒有類型"
 
-#: gio/gicon.c:320
+#: gio/gicon.c:328
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr "類型 %s 沒有實作 GIcon 介面"
 
-#: gio/gicon.c:331
+#: gio/gicon.c:339
 #, c-format
 msgid "Type %s is not classed"
 msgstr "類型 %s 尚未歸類"
 
-#: gio/gicon.c:345
+#: gio/gicon.c:353
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "格式不良的版本號碼:%s"
 
-#: gio/gicon.c:359
+#: gio/gicon.c:367
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr "類型 %s 沒有實作 GIcon 介面的 from_tokens()"
 
-#: gio/gicon.c:461
+#: gio/gicon.c:469
 msgid "Can’t handle the supplied version of the icon encoding"
 msgstr "不能處理提供的圖示編碼版本"
 
@@ -1516,7 +1511,7 @@ msgstr "輸入串流尚未實作讀取"
 #. Translators: This is an error you get if there is
 #. * already an operation running against this stream when
 #. * you try to start one
-#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:1671
+#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr "串流有異常操作"
 
@@ -1532,7 +1527,7 @@ msgstr "移動時保持檔案"
 msgid "“version” takes no arguments"
 msgstr "「version」不需要引數"
 
-#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:857
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:864
 msgid "Usage:"
 msgstr "用法:"
 
@@ -1598,7 +1593,7 @@ msgstr "從標準輸入讀取並儲存"
 
 #: gio/gio-tool.c:242
 msgid "Set a file attribute"
-msgstr "設定檔案性"
+msgstr "設定檔案性"
 
 #: gio/gio-tool.c:243
 msgid "Move files or directories to the trash"
@@ -1614,16 +1609,14 @@ msgid "Use %s to get detailed help.\n"
 msgstr "使用 %s 以取得詳細的求助。\n"
 
 #: gio/gio-tool-cat.c:87
-#, fuzzy
-#| msgid "Error writing to file: %s"
 msgid "Error writing to stdout"
-msgstr "寫å\85¥è\87³æª\94æ¡\88æ\99\82ç\99¼ç\94\9fé\8c¯èª¤ï¼\9a%s"
+msgstr "寫å\85¥è\87³æ¨\99æº\96輸å\87ºæ\99\82ç\99¼ç\94\9fé\8c¯èª¤"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
 #: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
 #: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
-#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1235 gio/gio-tool-open.c:113
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1643,56 +1636,60 @@ msgstr ""
 "位置來取代本地端檔案:例如您可以使用類似\n"
 " smb://server/resource/file.txt 做為位置。"
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1285 gio/gio-tool-open.c:139
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "未提供位置"
 
-#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "不是目標目錄"
 
-#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "顯示進度"
 
-#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "在覆蓋前提示"
 
-#: gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:46
 msgid "Preserve all attributes"
-msgstr "保留所有性"
+msgstr "保留所有性"
 
-#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "備份既有的目的檔案"
 
-#: gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
 msgstr "永不追蹤符號連結"
 
-#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "目的地使用預設權限"
+
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "已傳輸 %s / %s (%s/s)"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "SOURCE"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINATION"
 
-#: gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:105
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "將一或多個檔案從 SOURCE 複製到 DESTINATION。"
 
-#: gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:107
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1702,88 +1699,98 @@ msgstr ""
 "位置來取代本地端檔案:例如您可以使用類似\n"
 " smb://server/resource/file.txt 做為位置。"
 
-#: gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:149
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "目的端 %s 不是一個目錄"
 
-#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s:覆寫「%s」?"
 
-#: gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:37
 msgid "List writable attributes"
-msgstr "列出可寫性"
+msgstr "列出可寫性"
 
-#: gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:38
 msgid "Get file system info"
 msgstr "取得檔案系統資訊"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "The attributes to get"
-msgstr "要取得的性"
+msgstr "要取得的性"
 
-#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTES"
 
-#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "不要追蹤符號連結"
 
-#: gio/gio-tool-info.c:75
+#: gio/gio-tool-info.c:78
 msgid "attributes:\n"
-msgstr "性:\n"
+msgstr "性:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:134
 #, c-format
 msgid "display name: %s\n"
 msgstr "顯示名稱:%s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:139
 #, c-format
 msgid "edit name: %s\n"
 msgstr "編輯名稱:%s\n"
 
-#: gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "name: %s\n"
 msgstr "名稱:%s\n"
 
-#: gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:152
 #, c-format
 msgid "type: %s\n"
 msgstr "類型:%s\n"
 
-#: gio/gio-tool-info.c:151
+#: gio/gio-tool-info.c:158
 msgid "size: "
 msgstr "大小:"
 
-#: gio/gio-tool-info.c:156
+#: gio/gio-tool-info.c:163
 msgid "hidden\n"
 msgstr "隱藏\n"
 
-#: gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:166
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri: %s\n"
 
-#: gio/gio-tool-info.c:228
+#: gio/gio-tool-info.c:172
+#, c-format
+msgid "local path: %s\n"
+msgstr "本機路徑:%s\n"
+
+#: gio/gio-tool-info.c:199
+#, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "unix 掛載:%s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:279
 msgid "Settable attributes:\n"
-msgstr "可設定性:\n"
+msgstr "可設定性:\n"
 
-#: gio/gio-tool-info.c:252
+#: gio/gio-tool-info.c:303
 msgid "Writable attribute namespaces:\n"
-msgstr "可寫入性命名空間:\n"
+msgstr "可寫入性命名空間:\n"
 
-#: gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:338
 msgid "Show information about locations."
 msgstr "顯示位置的相關資訊。"
 
-#: gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:340
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1794,26 +1801,30 @@ msgstr ""
 "gio info 類似傳統的 ls 工具程式,只是使用 GIO\n"
 "位置來取代本地端檔案:例如您可以使用類似\n"
 " smb://server/resource/file.txt 做為位置。檔案\n"
-"性可以使用它們的 GIO 名稱來指定,如 standard::icon\n"
+"性可以使用它們的 GIO 名稱來指定,如 standard::icon\n"
 "或只使用命名空間,像 unix,或「*」比對所有的屬性"
 
-#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "顯示隱藏檔案"
 
-#: gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:38
 msgid "Use a long listing format"
 msgstr "使用長式表列格式"
 
-#: gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "列印顯示名稱"
+
+#: gio/gio-tool-list.c:41
 msgid "Print full URIs"
-msgstr "顯示完整 URI"
+msgstr "列印完整 URI"
 
-#: gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
 msgstr "列出位置的內容。"
 
-#: gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:179
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1823,7 +1834,7 @@ msgstr ""
 "gio list 類似傳統的 ls 工具程式,只是使用 GIO\n"
 "位置來取代本地端檔案:例如您可以使用類似\n"
 " smb://server/resource/file.txt 做為位置。檔案\n"
-"性可以使用它們的 GIO 名稱來指定,如 standard::icon"
+"性可以使用它們的 GIO 名稱來指定,如 standard::icon"
 
 #. Translators: commandline placeholder
 #: gio/gio-tool-mime.c:71
@@ -1879,10 +1890,9 @@ msgid "No recommended applications\n"
 msgstr "沒有建議的應用程式\n"
 
 #: gio/gio-tool-mime.c:162
-#, fuzzy, c-format
-#| msgid "Failed to load info for handler “%s”\n"
+#, c-format
 msgid "Failed to load info for handler “%s”"
-msgstr "無法載入處理程式「%s」的資訊\n"
+msgstr "無法載入處理程式「%s」的資訊"
 
 #: gio/gio-tool-mime.c:168
 #, c-format
@@ -1935,104 +1945,92 @@ msgstr "監看掛載事件"
 msgid "Monitor files or directories for changes."
 msgstr "監控檔案或目錄的變更。"
 
-#: gio/gio-tool-mount.c:62
+#: gio/gio-tool-mount.c:63
 msgid "Mount as mountable"
 msgstr "掛載為可掛載形式"
 
-#: gio/gio-tool-mount.c:63
-msgid "Mount volume with device file"
-msgstr "以裝置檔案掛載儲存區"
-
-#: gio/gio-tool-mount.c:63 gio/gio-tool-mount.c:66
-msgid "DEVICE"
-msgstr "DEVICE"
+#: gio/gio-tool-mount.c:64
+msgid "Mount volume with device file, or other identifier"
+msgstr "以裝置檔案或其他識別碼掛載儲存區"
 
 #: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ID"
+
+#: gio/gio-tool-mount.c:65
 msgid "Unmount"
 msgstr "卸載"
 
-#: gio/gio-tool-mount.c:65
+#: gio/gio-tool-mount.c:66
 msgid "Eject"
 msgstr "退出"
 
-#: gio/gio-tool-mount.c:66
-#, fuzzy
-#| msgid "Mount volume with device file"
+#: gio/gio-tool-mount.c:67
 msgid "Stop drive with device file"
-msgstr "以裝置檔案掛載儲存區"
+msgstr "以裝置檔案停止裝置"
 
 #: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "DEVICE"
+
+#: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "以指定的方式卸載所有的掛載"
 
-#: gio/gio-tool-mount.c:67
+#: gio/gio-tool-mount.c:68
 msgid "SCHEME"
 msgstr "SCHEME"
 
-#: gio/gio-tool-mount.c:68
+#: gio/gio-tool-mount.c:69
 msgid "Ignore outstanding file operations when unmounting or ejecting"
 msgstr "在卸載或退出時忽略優先的檔案操作"
 
-#: gio/gio-tool-mount.c:69
+#: gio/gio-tool-mount.c:70
 msgid "Use an anonymous user when authenticating"
 msgstr "核對時使用匿名使用者"
 
 #. Translator: List here is a verb as in 'List all mounts'
-#: gio/gio-tool-mount.c:71
+#: gio/gio-tool-mount.c:72
 msgid "List"
 msgstr "列出"
 
-#: gio/gio-tool-mount.c:72
+#: gio/gio-tool-mount.c:73
 msgid "Monitor events"
 msgstr "監視事件"
 
-#: gio/gio-tool-mount.c:73
+#: gio/gio-tool-mount.c:74
 msgid "Show extra information"
 msgstr "顯示額外的資訊"
 
-#: gio/gio-tool-mount.c:74
+#: gio/gio-tool-mount.c:75
 msgid "The numeric PIM when unlocking a VeraCrypt volume"
-msgstr ""
+msgstr "解鎖 VeraCrypt 儲存區時的數字 PIM"
 
-#: gio/gio-tool-mount.c:74
-#, fuzzy
-#| msgctxt "GDateTime"
-#| msgid "PM"
+#: gio/gio-tool-mount.c:75
 msgid "PIM"
-msgstr "下午"
+msgstr "PIM"
 
-#: gio/gio-tool-mount.c:75
+#: gio/gio-tool-mount.c:76
 msgid "Mount a TCRYPT hidden volume"
-msgstr ""
+msgstr "掛載 TCRYPT 隱藏儲存區"
 
-#: gio/gio-tool-mount.c:76
+#: gio/gio-tool-mount.c:77
 msgid "Mount a TCRYPT system volume"
-msgstr ""
+msgstr "隱藏 TCRYPT 系統儲存區"
 
-#: gio/gio-tool-mount.c:264 gio/gio-tool-mount.c:296
-#, fuzzy
-#| msgid "Error mounting location: Anonymous access denied\n"
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
 msgid "Anonymous access denied"
-msgstr "掛載位置時發生錯誤:匿名存取已被拒絕\n"
+msgstr "匿名存取被拒"
 
-#: gio/gio-tool-mount.c:524
-#, fuzzy
-#| msgid "No volume for device file %s\n"
+#: gio/gio-tool-mount.c:522
 msgid "No drive for device file"
-msgstr "裝置檔案 %s 中沒有儲存區\n"
+msgstr "裝置檔案沒有裝置"
 
-#: gio/gio-tool-mount.c:989
-#, c-format
-msgid "Mounted %s at %s\n"
-msgstr "%s 已掛載於 %s\n"
-
-#: gio/gio-tool-mount.c:1044
-#, fuzzy
-#| msgid "No volume for device file %s\n"
-msgid "No volume for device file"
-msgstr "裝置檔案 %s 中沒有儲存區\n"
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "提供的 ID 沒有儲存區"
 
-#: gio/gio-tool-mount.c:1239
+#: gio/gio-tool-mount.c:1203
 msgid "Mount or unmount the locations."
 msgstr "掛載或卸載位置。"
 
@@ -2059,7 +2057,7 @@ msgstr ""
 msgid "Target %s is not a directory"
 msgstr "目標 %s 不是目錄"
 
-#: gio/gio-tool-open.c:118
+#: gio/gio-tool-open.c:75
 msgid ""
 "Open files with the default application that\n"
 "is registered to handle files of this type."
@@ -2127,10 +2125,8 @@ msgid "ETAG"
 msgstr "ETAG"
 
 #: gio/gio-tool-save.c:113
-#, fuzzy
-#| msgid "Error reading from handle: %s"
 msgid "Error reading from standard input"
-msgstr "從處理器讀取時發生錯誤:%s"
+msgstr "從標準輸入讀取時發生錯誤"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
 #: gio/gio-tool-save.c:139
@@ -2147,7 +2143,7 @@ msgstr "沒有指定目的端"
 
 #: gio/gio-tool-set.c:33
 msgid "Type of the attribute"
-msgstr "性的類型"
+msgstr "性的類型"
 
 #: gio/gio-tool-set.c:33
 msgid "TYPE"
@@ -2163,7 +2159,7 @@ msgstr "VALUE"
 
 #: gio/gio-tool-set.c:93
 msgid "Set a file attribute of LOCATION."
-msgstr "設定 LOCATION 的檔案性。"
+msgstr "設定 LOCATION 的檔案性。"
 
 #: gio/gio-tool-set.c:113
 msgid "Location not specified"
@@ -2171,17 +2167,16 @@ msgstr "尚未指定位置"
 
 #: gio/gio-tool-set.c:120
 msgid "Attribute not specified"
-msgstr "尚未指定性"
+msgstr "尚未指定性"
 
 #: gio/gio-tool-set.c:130
 msgid "Value not specified"
-msgstr "尚未指定值"
+msgstr "尚未指定值"
 
 #: gio/gio-tool-set.c:180
-#, fuzzy, c-format
-#| msgid "Invalid attribute type %s\n"
+#, c-format
 msgid "Invalid attribute type “%s”"
-msgstr "無效的屬性類型 %s\n"
+msgstr "無效的特性類型「%s」"
 
 #: gio/gio-tool-trash.c:32
 msgid "Empty the trash"
@@ -2199,32 +2194,32 @@ msgstr "追蹤符號連結、掛載和捷徑"
 msgid "List contents of directories in a tree-like format."
 msgstr "以樹狀格式列出目錄的內容。"
 
-#: gio/glib-compile-resources.c:143 gio/glib-compile-schemas.c:1515
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
-msgstr "元素 <%s> 不可出現在 <%s> 內"
+msgstr "<%s> 元素不可出現在 <%s> 之內"
 
-#: gio/glib-compile-resources.c:147
+#: gio/glib-compile-resources.c:144
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
-msgstr "元素 <%s> 不允許在頂端層級"
+msgstr "<%s> 元素不允許在頂端層級"
 
-#: gio/glib-compile-resources.c:237
+#: gio/glib-compile-resources.c:234
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "檔案 %s 似乎在這個資源出出現多次"
 
-#: gio/glib-compile-resources.c:248
+#: gio/glib-compile-resources.c:245
 #, c-format
 msgid "Failed to locate “%s” in any source directory"
 msgstr "無法在任何來源目錄中定位「%s」"
 
-#: gio/glib-compile-resources.c:259
+#: gio/glib-compile-resources.c:256
 #, c-format
 msgid "Failed to locate “%s” in current directory"
 msgstr "無法在目前的目錄中定位「%s」"
 
-#: gio/glib-compile-resources.c:293
+#: gio/glib-compile-resources.c:290
 #, c-format
 msgid "Unknown processing option “%s”"
 msgstr "不明的處理選項「%s」"
@@ -2233,18 +2228,18 @@ msgstr "不明的處理選項「%s」"
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
 #.
-#: gio/glib-compile-resources.c:313 gio/glib-compile-resources.c:370
-#: gio/glib-compile-resources.c:427
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
 #, c-format
 msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
-msgstr ""
+msgstr "要求 %s 預處理,但未設定 %s,且 %s 不在 PATH 中"
 
-#: gio/glib-compile-resources.c:460
+#: gio/glib-compile-resources.c:457
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "讀取檔案 %s 時發生錯誤:%s"
 
-#: gio/glib-compile-resources.c:480
+#: gio/glib-compile-resources.c:477
 #, c-format
 msgid "Error compressing file %s"
 msgstr "壓縮檔案 %s 時發生錯誤"
@@ -2254,73 +2249,69 @@ msgstr "壓縮檔案 %s 時發生錯誤"
 msgid "text may not appear inside <%s>"
 msgstr "在 <%s> 內不能出現文字"
 
-#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2138
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "顯示程式的版本並離開"
 
-#: gio/glib-compile-resources.c:737
-#, fuzzy
-#| msgid "name of the output file"
+#: gio/glib-compile-resources.c:738
 msgid "Name of the output file"
 msgstr "輸出檔案的名稱"
 
-#: gio/glib-compile-resources.c:738
-#, fuzzy
-#| msgid ""
-#| "The directories where files are to be read from (default to current "
-#| "directory)"
+#: gio/glib-compile-resources.c:739
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
-msgstr "用來讀取檔案的目錄 (預設為目前的目錄)"
+msgstr "要載入 FILE 中參照檔案的來源目錄(預設:目前目錄)"
 
-#: gio/glib-compile-resources.c:738 gio/glib-compile-schemas.c:2139
-#: gio/glib-compile-schemas.c:2168
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "目錄"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:740
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "以目標檔案名稱的延伸檔名來選擇要產生輸出的格式"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:741
 msgid "Generate source header"
 msgstr "產生來源標頭"
 
-#: gio/glib-compile-resources.c:741
-#, fuzzy
-#| msgid "Generate sourcecode used to link in the resource file into your code"
+#: gio/glib-compile-resources.c:742
 msgid "Generate source code used to link in the resource file into your code"
-msgstr "產生源碼用來連結資源檔到您的程式碼中"
+msgstr "產生用來連結資源檔至程式碼的源始碼"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:743
 msgid "Generate dependency list"
 msgstr "產生相依性清單"
 
-#: gio/glib-compile-resources.c:743
-#, fuzzy
-#| msgid "name of the dependency file to generate"
+#: gio/glib-compile-resources.c:744
 msgid "Name of the dependency file to generate"
-msgstr "要產生的相依檔案的名稱"
+msgstr "要產生之依賴檔案的名稱"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:745
 msgid "Include phony targets in the generated dependency file"
 msgstr "在產生的相依檔案中包含假目標"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:746
 msgid "Don’t automatically create and register resource"
 msgstr "不要自動建立與註冊資源"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:747
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "不要匯出函式;宣告他們為 G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:748
+msgid ""
+"Don’t embed resource data in the C file; assume it's linked externally "
+"instead"
+msgstr "不要將資源資料嵌入 C 檔案;假設資料已改在外部連結"
+
+#: gio/glib-compile-resources.c:749
 msgid "C identifier name used for the generated source code"
 msgstr "用於產生源碼的 C 識別碼名稱"
 
-#: gio/glib-compile-resources.c:773
+#: gio/glib-compile-resources.c:775
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2330,316 +2321,276 @@ msgstr ""
 "資源規格檔案的延伸檔名必須為 .gresource.xml,\n"
 "而資源檔案的延伸檔名叫做 .gresource。"
 
-#: gio/glib-compile-resources.c:795
+#: gio/glib-compile-resources.c:797
 msgid "You should give exactly one file name\n"
 msgstr "您應該明確指定一個檔案名稱\n"
 
-#: gio/glib-compile-schemas.c:95
+#: gio/glib-compile-schemas.c:92
 #, c-format
 msgid "nick must be a minimum of 2 characters"
-msgstr ""
+msgstr "nick (暱稱) 至少需要 2 個字元"
 
-#: gio/glib-compile-schemas.c:106
-#, fuzzy, c-format
-#| msgid "Invalid symlink value given"
+#: gio/glib-compile-schemas.c:103
+#, c-format
 msgid "Invalid numeric value"
-msgstr "æ\8f\90ä¾\9bäº\86ç\84¡æ\95\88ç\9a\84符è\99\9fé\80£çµ\90å\80¼"
+msgstr "æ\95¸å­\97å\80¼ç\84¡æ\95\88"
 
-#: gio/glib-compile-schemas.c:114
-#, fuzzy, c-format
-#| msgid "<%s id='%s'> already specified"
+#: gio/glib-compile-schemas.c:111
+#, c-format
 msgid "<value nick='%s'/> already specified"
-msgstr "<%s id='%s'> 已經指定了"
+msgstr "<value nick='%s'/> 已經指定"
 
-#: gio/glib-compile-schemas.c:122
-#, fuzzy, c-format
-#| msgid "<key name='%s'> already specified"
+#: gio/glib-compile-schemas.c:119
+#, c-format
 msgid "value='%s' already specified"
-msgstr "<key name='%s'> 已經指定了"
+msgstr "value='%s' 已經指定"
 
-#: gio/glib-compile-schemas.c:136
+#: gio/glib-compile-schemas.c:133
 #, c-format
 msgid "flags values must have at most 1 bit set"
-msgstr ""
+msgstr "旗標的值至多需要設定 1 個位元"
 
-#: gio/glib-compile-schemas.c:161
+#: gio/glib-compile-schemas.c:158
 #, c-format
 msgid "<%s> must contain at least one <value>"
-msgstr ""
+msgstr "<%s> 必須包含至少一個 <value>"
 
-#: gio/glib-compile-schemas.c:317
-#, fuzzy, c-format
-#| msgid "No connection endpoint specified"
+#: gio/glib-compile-schemas.c:314
+#, c-format
 msgid "<%s> is not contained in the specified range"
-msgstr "沒有指定連線端點"
+msgstr "<%s> 未包含在指定的範圍中"
 
-#: gio/glib-compile-schemas.c:329
+#: gio/glib-compile-schemas.c:326
 #, c-format
 msgid "<%s> is not a valid member of the specified enumerated type"
-msgstr ""
+msgstr "<%s> 非指定列舉類型的有效成員"
 
-#: gio/glib-compile-schemas.c:335
+#: gio/glib-compile-schemas.c:332
 #, c-format
 msgid "<%s> contains string not in the specified flags type"
-msgstr ""
+msgstr "<%s> 包含不在指定旗標類型中的字串"
 
-#: gio/glib-compile-schemas.c:341
+#: gio/glib-compile-schemas.c:338
 #, c-format
 msgid "<%s> contains a string not in <choices>"
-msgstr ""
+msgstr "<%s> 包含不在 <choices> 中的字串"
 
-#: gio/glib-compile-schemas.c:375
-#, fuzzy
-#| msgid "<key name='%s'> already specified"
+#: gio/glib-compile-schemas.c:372
 msgid "<range/> already specified for this key"
-msgstr "<key name='%s'> 已經指定了"
+msgstr "<range/> 早已指定給此鍵"
 
-#: gio/glib-compile-schemas.c:393
+#: gio/glib-compile-schemas.c:390
 #, c-format
 msgid "<range> not allowed for keys of type “%s”"
-msgstr ""
+msgstr "<range> 不允許用於「%s」類型的鍵"
 
-#: gio/glib-compile-schemas.c:410
+#: gio/glib-compile-schemas.c:407
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
-msgstr ""
+msgstr "<range> 指定的最小值比最大值還大"
 
-#: gio/glib-compile-schemas.c:435
+#: gio/glib-compile-schemas.c:432
 #, c-format
 msgid "unsupported l10n category: %s"
-msgstr ""
+msgstr "不支援的 l10n 分類:%s"
 
-#: gio/glib-compile-schemas.c:443
+#: gio/glib-compile-schemas.c:440
 msgid "l10n requested, but no gettext domain given"
-msgstr ""
+msgstr "要求 l10n,但未提供 gettext 領域"
 
-#: gio/glib-compile-schemas.c:455
+#: gio/glib-compile-schemas.c:452
 msgid "translation context given for value without l10n enabled"
-msgstr ""
+msgstr "提供給值的翻譯情境未啟用 l10n"
 
-#: gio/glib-compile-schemas.c:477
-#, fuzzy, c-format
-#| msgid "Failed to create file “%s”: %s"
+#: gio/glib-compile-schemas.c:474
+#, c-format
 msgid "Failed to parse <default> value of type “%s”: "
-msgstr "建立檔案「%s」失敗:%s"
+msgstr "無法解析「%s」類型的 <default> 值: "
 
-#: gio/glib-compile-schemas.c:494
+#: gio/glib-compile-schemas.c:491
 msgid ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
-msgstr ""
+msgstr "<choices> 無法指定給標記為有列舉的類型的鍵"
 
-#: gio/glib-compile-schemas.c:503
-#, fuzzy
-#| msgid "<child name='%s'> already specified"
+#: gio/glib-compile-schemas.c:500
 msgid "<choices> already specified for this key"
-msgstr "<child name='%s'> 已經指定了"
+msgstr "<choices> 早已指定給此鍵"
 
-#: gio/glib-compile-schemas.c:515
+#: gio/glib-compile-schemas.c:512
 #, c-format
 msgid "<choices> not allowed for keys of type “%s”"
-msgstr ""
+msgstr "<choices> 不允許「%s」類型的鍵"
 
-#: gio/glib-compile-schemas.c:531
-#, fuzzy, c-format
-#| msgid "<child name='%s'> already specified"
+#: gio/glib-compile-schemas.c:528
+#, c-format
 msgid "<choice value='%s'/> already given"
-msgstr "<child name='%s'> 已經指定了"
+msgstr "<choice value='%s'/> 早已指定"
 
-#: gio/glib-compile-schemas.c:546
+#: gio/glib-compile-schemas.c:543
 #, c-format
 msgid "<choices> must contain at least one <choice>"
-msgstr ""
+msgstr "<choices> 至少要有至少一個 <choice>"
 
-#: gio/glib-compile-schemas.c:560
-#, fuzzy
-#| msgid "<child name='%s'> already specified"
+#: gio/glib-compile-schemas.c:557
 msgid "<aliases> already specified for this key"
-msgstr "<child name='%s'> 已經指定了"
+msgstr "<aliases> 早已指定給此鍵"
 
-#: gio/glib-compile-schemas.c:564
+#: gio/glib-compile-schemas.c:561
 msgid ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
-msgstr ""
+msgstr "<aliases> 只能指定給有列舉的鍵,或旗標類型,或在 <choices> 後"
 
-#: gio/glib-compile-schemas.c:583
+#: gio/glib-compile-schemas.c:580
 #, c-format
 msgid ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
 "type"
-msgstr ""
+msgstr "當「%s」已經是列舉類型的成員時,提供了 <alias value='%s'/>"
 
-#: gio/glib-compile-schemas.c:589
+#: gio/glib-compile-schemas.c:586
 #, c-format
 msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
-msgstr ""
+msgstr "當 <choice value='%s'/> 早已提供時,提供了 <alias value='%s'/>"
 
-#: gio/glib-compile-schemas.c:597
-#, fuzzy, c-format
-#| msgid "<%s id='%s'> already specified"
+#: gio/glib-compile-schemas.c:594
+#, c-format
 msgid "<alias value='%s'/> already specified"
-msgstr "<%s id='%s'> 已經指定了"
+msgstr "<alias value='%s'/> 已經指定"
 
-#: gio/glib-compile-schemas.c:607
-#, fuzzy, c-format
-#| msgid "The pathname “%s” is not an absolute path"
+#: gio/glib-compile-schemas.c:604
+#, c-format
 msgid "alias target “%s” is not in enumerated type"
-msgstr "路徑名稱「%s」不是絕對路徑"
+msgstr "「%s」別名目標不在列舉類型中"
 
-#: gio/glib-compile-schemas.c:608
+#: gio/glib-compile-schemas.c:605
 #, c-format
 msgid "alias target “%s” is not in <choices>"
-msgstr ""
+msgstr "「%s」別名目標不在 <choices> 中"
 
-#: gio/glib-compile-schemas.c:623
+#: gio/glib-compile-schemas.c:620
 #, c-format
 msgid "<aliases> must contain at least one <alias>"
-msgstr ""
+msgstr "<aliases> 必須包含至少一個 <alias>"
 
-#: gio/glib-compile-schemas.c:798
-#, fuzzy
-#| msgid "empty names are not permitted"
+#: gio/glib-compile-schemas.c:797
 msgid "Empty names are not permitted"
-msgstr "不允許空名稱"
+msgstr "不允許空名稱"
 
-#: gio/glib-compile-schemas.c:808
-#, fuzzy, c-format
-#| msgid "invalid name '%s': names must begin with a lowercase letter"
+#: gio/glib-compile-schemas.c:807
+#, c-format
 msgid "Invalid name “%s”: names must begin with a lowercase letter"
 msgstr "無效的名稱「%s」:名稱必須以小寫字母開頭"
 
-#: gio/glib-compile-schemas.c:820
-#, fuzzy, c-format
-#| msgid ""
-#| "invalid name '%s': invalid character '%c'; only lowercase letters, "
-#| "numbers and hyphen ('-') are permitted."
+#: gio/glib-compile-schemas.c:819
+#, c-format
 msgid ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
 "and hyphen (“-”) are permitted"
-msgstr ""
-"無效的名稱「%s」:無效的字元「%c」;只允許小寫字母、數字和破折號 ('-')。"
+msgstr "無效的名稱「%s」:無效的字元「%c」;只允許小寫字母、數字和破折號 ('-')"
 
-#: gio/glib-compile-schemas.c:829
-#, fuzzy, c-format
-#| msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
+#: gio/glib-compile-schemas.c:828
+#, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
-msgstr "無效的名稱「%s」:不允許兩個破折號 ('--')"
+msgstr "無效的名稱「%s」:不允許兩個破折號 ('--')"
 
-#: gio/glib-compile-schemas.c:838
-#, fuzzy, c-format
-#| msgid "invalid name '%s': the last character may not be a hyphen ('-')."
+#: gio/glib-compile-schemas.c:837
+#, c-format
 msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
-msgstr "無效的名稱「%s」:最後一個字元不能是破折號 ('-')"
+msgstr "無效的名稱「%s」:最後一個字元不能是破折號 ('-')"
 
-#: gio/glib-compile-schemas.c:846
-#, fuzzy, c-format
-#| msgid "invalid name '%s': maximum length is 1024"
+#: gio/glib-compile-schemas.c:845
+#, c-format
 msgid "Invalid name “%s”: maximum length is 1024"
 msgstr "無效的名稱「%s」:最大長度為 1024"
 
-#: gio/glib-compile-schemas.c:918
+#: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr "<child name='%s'> 已經指定了"
 
-#: gio/glib-compile-schemas.c:944
-#, fuzzy
-#| msgid "cannot add keys to a 'list-of' schema"
+#: gio/glib-compile-schemas.c:943
 msgid "Cannot add keys to a “list-of” schema"
-msgstr "不能將設定鍵加入 'list-of' schema"
+msgstr "不能將鍵加入「list-of」schema"
 
-#: gio/glib-compile-schemas.c:955
+#: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr "<key name='%s'> 已經指定了"
 
-#: gio/glib-compile-schemas.c:973
+#: gio/glib-compile-schemas.c:972
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
 "to modify value"
 msgstr ""
 "<key name='%s'> 遮蔽 <key name='%s'> 於 <schema id='%s'>;使用 <override> 來"
-"修改值"
+"修改值"
 
-#: gio/glib-compile-schemas.c:984
-#, fuzzy, c-format
-#| msgid ""
-#| "exactly one of 'type', 'enum' or 'flags' must be specified as an "
-#| "attribute to <key>"
+#: gio/glib-compile-schemas.c:983
+#, c-format
 msgid ""
 "Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
-msgstr "必須明確指定「type」、「enum」或「flags」之一做為 <key> 的性"
+msgstr "必須明確指定「type」、「enum」或「flags」之一做為 <key> 的性"
 
-#: gio/glib-compile-schemas.c:1003
+#: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> 尚未定義。"
 
-#: gio/glib-compile-schemas.c:1018
-#, fuzzy, c-format
-#| msgid "invalid GVariant type string '%s'"
+#: gio/glib-compile-schemas.c:1017
+#, c-format
 msgid "Invalid GVariant type string “%s”"
 msgstr "無效的 GVariant 類型字串「%s」"
 
-#: gio/glib-compile-schemas.c:1048
-#, fuzzy
-#| msgid "<override> given but schema isn't extending anything"
+#: gio/glib-compile-schemas.c:1047
 msgid "<override> given but schema isn’t extending anything"
 msgstr "指定了 <override> 但 schema 並未延伸任何東西"
 
-#: gio/glib-compile-schemas.c:1061
-#, fuzzy, c-format
-#| msgid "no <key name='%s'> to override"
+#: gio/glib-compile-schemas.c:1060
+#, c-format
 msgid "No <key name='%s'> to override"
 msgstr "沒有 <key name='%s'> 要覆蓋"
 
-#: gio/glib-compile-schemas.c:1069
+#: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr "<override name='%s'> 已經指定了"
 
-#: gio/glib-compile-schemas.c:1142
+#: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr "<schema id='%s'> 已經指定了"
 
-#: gio/glib-compile-schemas.c:1154
-#, fuzzy, c-format
-#| msgid "<schema id='%s'> extends not yet existing schema '%s'"
+#: gio/glib-compile-schemas.c:1153
+#, c-format
 msgid "<schema id='%s'> extends not yet existing schema “%s”"
-msgstr "<schema id='%s'> 延伸了尚不存在的 schema「%s」"
+msgstr "<schema id='%s'> 延伸了尚不存在的「%s」schema"
 
-#: gio/glib-compile-schemas.c:1170
-#, fuzzy, c-format
-#| msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+#: gio/glib-compile-schemas.c:1169
+#, c-format
 msgid "<schema id='%s'> is list of not yet existing schema “%s”"
-msgstr "<schema id='%s'> 是尚不存在的 schema「%s」的清單"
+msgstr "<schema id='%s'> 是尚不存在的「%s」schema 的清單"
 
-#: gio/glib-compile-schemas.c:1178
-#, fuzzy, c-format
-#| msgid "Can not be a list of a schema with a path"
+#: gio/glib-compile-schemas.c:1177
+#, c-format
 msgid "Cannot be a list of a schema with a path"
 msgstr "不能成為有路徑 schema 的清單"
 
-#: gio/glib-compile-schemas.c:1188
-#, fuzzy, c-format
-#| msgid "Can not extend a schema with a path"
+#: gio/glib-compile-schemas.c:1187
+#, c-format
 msgid "Cannot extend a schema with a path"
 msgstr "不能延伸有路徑的 schema"
 
-#: gio/glib-compile-schemas.c:1198
+#: gio/glib-compile-schemas.c:1197
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr "<schema id='%s'> 是清單,卻延伸了不是清單的 <schema id='%s'>"
 
-#: gio/glib-compile-schemas.c:1208
-#, fuzzy, c-format
-#| msgid ""
-#| "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but "
-#| "'%s' does not extend '%s'"
+#: gio/glib-compile-schemas.c:1207
+#, c-format
 msgid ""
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
 "does not extend “%s”"
@@ -2647,152 +2598,173 @@ msgstr ""
 "<schema id='%s' list-of='%s'> 延伸了 <schema id='%s' list-of='%s'> 但是 '%s' "
 "並未延伸 '%s'"
 
-#: gio/glib-compile-schemas.c:1225
-#, fuzzy, c-format
-#| msgid "a path, if given, must begin and end with a slash"
+#: gio/glib-compile-schemas.c:1224
+#, c-format
 msgid "A path, if given, must begin and end with a slash"
-msgstr "如果指定了路徑,開頭與結尾都要加上斜線"
+msgstr "如果指定了路徑,開頭與結尾都必須是斜線"
 
-#: gio/glib-compile-schemas.c:1232
-#, fuzzy, c-format
-#| msgid "the path of a list must end with ':/'"
+#: gio/glib-compile-schemas.c:1231
+#, c-format
 msgid "The path of a list must end with “:/”"
-msgstr "清單的路徑不能以‘:/’為結尾"
+msgstr "清單的路徑必須以「:/」為結尾"
 
-#: gio/glib-compile-schemas.c:1241
+#: gio/glib-compile-schemas.c:1240
 #, c-format
 msgid ""
 "Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
 "desktop/” or “/system/” are deprecated."
 msgstr ""
+"警告:「%s」schema 有「%s」路徑。“/apps/”、“/desktop/” 或 “/system/” 開頭的路"
+"徑已經棄用。"
 
-#: gio/glib-compile-schemas.c:1271
+#: gio/glib-compile-schemas.c:1270
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> 已經指定了"
 
-#: gio/glib-compile-schemas.c:1421 gio/glib-compile-schemas.c:1437
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
-msgstr "只有一個 <%s> 元素可在其內 <%s>"
+msgstr "只有一個 <%s> 元素可以在 <%s> 之內"
 
-#: gio/glib-compile-schemas.c:1519
+#: gio/glib-compile-schemas.c:1518
 #, c-format
 msgid "Element <%s> not allowed at the top level"
-msgstr "元素 <%s> 不允許在頂端層級"
+msgstr "<%s> 元素不允許在頂端層級"
 
-#: gio/glib-compile-schemas.c:1537
+#: gio/glib-compile-schemas.c:1536
 msgid "Element <default> is required in <key>"
-msgstr ""
+msgstr "<key> 中需要 <default> 元素"
 
-#: gio/glib-compile-schemas.c:1627
-#, fuzzy, c-format
-#| msgid "text may not appear inside <%s>"
+#: gio/glib-compile-schemas.c:1626
+#, c-format
 msgid "Text may not appear inside <%s>"
 msgstr "在 <%s> 內不能出現文字"
 
-#: gio/glib-compile-schemas.c:1695
+#: gio/glib-compile-schemas.c:1694
 #, c-format
 msgid "Warning: undefined reference to <schema id='%s'/>"
-msgstr ""
+msgstr "警告:未定義,參考至 <schema id='%s'/> 的參照"
 
 #. Translators: Do not translate "--strict".
-#: gio/glib-compile-schemas.c:1834 gio/glib-compile-schemas.c:1910
-#: gio/glib-compile-schemas.c:2025
-#, c-format
-msgid "--strict was specified; exiting.\n"
-msgstr "並且指定了 --strict;正在結束。\n"
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+msgid "--strict was specified; exiting."
+msgstr "指定了 --strict;結束。"
+
+#: gio/glib-compile-schemas.c:1845
+msgid "This entire file has been ignored."
+msgstr "這整個檔案都被忽略了。"
 
-#: gio/glib-compile-schemas.c:1844
+#: gio/glib-compile-schemas.c:1908
+msgid "Ignoring this file."
+msgstr "忽略這個檔案。"
+
+#: gio/glib-compile-schemas.c:1963
 #, c-format
-msgid "This entire file has been ignored.\n"
-msgstr "這整個檔案都被忽略了。\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
+msgstr ""
+"在覆蓋「%3$s」檔案的「%2$s」schema 中沒有指定這個「%1$s」鍵;忽略此鍵的覆蓋。"
 
-#: gio/glib-compile-schemas.c:1906
+#: gio/glib-compile-schemas.c:1971
 #, c-format
-msgid "Ignoring this file.\n"
-msgstr "忽略這個檔案。\n"
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
+msgstr ""
+"在覆蓋「%3$s」檔案的「%2$s」schema 中沒有指定這個「%1$s」鍵且指定了 --"
+"strict;結束。"
 
-#: gio/glib-compile-schemas.c:1959
-#, fuzzy, c-format
-#| msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
-msgid "No such key “%s” in schema “%s” as specified in override file “%s”"
-msgstr "在覆蓋檔案「%3$s」的 schema「%2$s」中沒有指定這個設定鍵「%1$s」"
+#: gio/glib-compile-schemas.c:1993
+#, c-format
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
+msgstr ""
+"無法在「%2$s」schema(覆蓋「%3$s」檔案)提供每個桌面的「%1$s」在地化鍵覆蓋;"
+"忽略此鍵的覆蓋。"
 
-#: gio/glib-compile-schemas.c:1965 gio/glib-compile-schemas.c:1990
-#: gio/glib-compile-schemas.c:2050 gio/glib-compile-schemas.c:2079
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "; ignoring override for this key.\n"
-msgstr ";忽略這個設定鍵的覆蓋。\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
+msgstr ""
+"無法在「%2$s」schema(覆蓋「%3$s」檔案)提供每個桌面的「%1$s」在地化鍵覆蓋,"
+"而且指定了 --strict;結束。"
 
-#: gio/glib-compile-schemas.c:1969 gio/glib-compile-schemas.c:1994
-#: gio/glib-compile-schemas.c:2054 gio/glib-compile-schemas.c:2083
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid " and --strict was specified; exiting.\n"
-msgstr "並且指定了 --strict;正在結束。\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
+msgstr ""
+"在覆蓋「%3$s」檔案指定的「%2$s」schema 分析「%1$s」鍵時發生錯誤:%4$s。忽略此"
+"鍵的覆蓋。"
 
-#: gio/glib-compile-schemas.c:1984
+#: gio/glib-compile-schemas.c:2038
 #, c-format
 msgid ""
-"cannot provide per-desktop overrides for localised key “%s” in schema "
-"“%s” (override file “%s”)"
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
 msgstr ""
+"在覆蓋「%3$s」檔案指定的「%2$s」schema 分析「%1$s」鍵時發生錯誤:%4$s。指定"
+"了 --strict;結束。"
 
-#: gio/glib-compile-schemas.c:2011
-#, fuzzy, c-format
-#| msgid ""
-#| "error parsing key '%s' in schema '%s' as specified in override file '%s': "
-#| "%s."
+#: gio/glib-compile-schemas.c:2065
+#, c-format
 msgid ""
-"error parsing key “%s” in schema “%s” as specified in override file “%s”: %s."
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
 msgstr ""
-"在覆蓋檔案「%3$s」指定的 schema「%2$s」分析設定鍵「%1$s」時發生錯誤:%4$s。"
+"在覆蓋「%3$s」檔案中覆蓋「%2$s」schema 的「%1$s」鍵超出了 schema 指定的範圍;"
+"忽略此鍵的覆蓋。"
 
-#: gio/glib-compile-schemas.c:2021
+#: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "Ignoring override for this key.\n"
-msgstr "忽略這個設定鍵的覆蓋。\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
+msgstr ""
+"在覆蓋「%3$s」檔案中覆蓋「%2$s」schema 的「%1$s」鍵超出了 schema 指定的範圍,"
+"且指定了 --strict;結束。"
 
-#: gio/glib-compile-schemas.c:2040
-#, fuzzy, c-format
-#| msgid ""
-#| "override for key '%s' in schema '%s' in override file '%s' is outside the "
-#| "range given in the schema"
+#: gio/glib-compile-schemas.c:2101
+#, c-format
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is outside the "
-"range given in the schema"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
 msgstr ""
-"在覆蓋檔案「%3$s」中覆蓋 schema「%2$s」的設定鍵「%1$s」超出了 schema 指定的範"
-"圍"
-
-#: gio/glib-compile-schemas.c:2069
-#, fuzzy, c-format
-#| msgid ""
-#| "override for key '%s' in schema '%s' in override file '%s' is not in the "
-#| "list of valid choices"
+"在覆蓋「%3$s」檔案中覆蓋「%2$s」schema 的「%1$s」鍵不在有效的選擇清單中;忽略"
+"此鍵的覆蓋。"
+
+#: gio/glib-compile-schemas.c:2111
+#, c-format
 msgid ""
-"override for key “%s” in schema “%s” in override file “%s” is not in the "
-"list of valid choices"
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
 msgstr ""
-"在覆蓋檔案「%3$s」中覆蓋 schema「%2$s」的設定鍵「%1$s」不在有效的選擇清單中"
+"在覆蓋「%3$s」檔案中覆蓋「%2$s」schema 的「%1$s」鍵不在有效的選擇清單中,且指"
+"定了 --strict;結束。"
 
-#: gio/glib-compile-schemas.c:2139
-msgid "where to store the gschemas.compiled file"
+#: gio/glib-compile-schemas.c:2173
+msgid "Where to store the gschemas.compiled file"
 msgstr "要將 gschemas.compiled 檔案儲存到哪裡"
 
-#: gio/glib-compile-schemas.c:2140
+#: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
 msgstr "在 schema 中有任何錯誤即中止"
 
-#: gio/glib-compile-schemas.c:2141
+#: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
 msgstr "不要寫入 gschemas.compiled 檔案"
 
-#: gio/glib-compile-schemas.c:2142
+#: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
-msgstr "不要強制設定鍵名稱限制"
+msgstr "不要強制鍵名限制"
 
-#: gio/glib-compile-schemas.c:2171
+#: gio/glib-compile-schemas.c:2205
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -2802,32 +2774,24 @@ msgstr ""
 "Schema 檔案的延伸檔名必須為 .gschema.xml,\n"
 "而快取檔案叫做 gschemas.compiled。"
 
-#: gio/glib-compile-schemas.c:2192
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr "您應該明確指定一個目錄名稱\n"
-
-#: gio/glib-compile-schemas.c:2234
-#, c-format
-msgid "No schema files found: "
-msgstr "找不到 schema 檔案:"
+#: gio/glib-compile-schemas.c:2226
+msgid "You should give exactly one directory name"
+msgstr "您應該明確指定一個目錄名稱"
 
-#: gio/glib-compile-schemas.c:2237
-#, c-format
-msgid "doing nothing.\n"
-msgstr "不做任何事。\n"
+#: gio/glib-compile-schemas.c:2269
+msgid "No schema files found: doing nothing."
+msgstr "找不到 schema 檔案:什麼都不做。"
 
-#: gio/glib-compile-schemas.c:2240
-#, c-format
-msgid "removed existing output file.\n"
-msgstr "移除現有的輸出檔案。\n"
+#: gio/glib-compile-schemas.c:2271
+msgid "No schema files found: removed existing output file."
+msgstr "找不到 schema 檔案:已經移除現有的輸出檔案。"
 
-#: gio/glocalfile.c:544 gio/win32/gwinhttpfile.c:420
+#: gio/glocalfile.c:546 gio/win32/gwinhttpfile.c:420
 #, c-format
 msgid "Invalid filename %s"
 msgstr "無效的檔案名稱 %s"
 
-#: gio/glocalfile.c:1006
+#: gio/glocalfile.c:1013
 #, c-format
 msgid "Error getting filesystem info for %s: %s"
 msgstr "取得 %s 的檔案系統資訊時發生錯誤:%s"
@@ -2836,294 +2800,289 @@ msgstr "取得 %s 的檔案系統資訊時發生錯誤:%s"
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
 #.
-#: gio/glocalfile.c:1145
+#: gio/glocalfile.c:1152
 #, c-format
 msgid "Containing mount for file %s not found"
 msgstr "包含了找不到的掛載點檔案 %s"
 
-#: gio/glocalfile.c:1168
+#: gio/glocalfile.c:1175
 msgid "Can’t rename root directory"
 msgstr "不能重新命名根目錄"
 
-#: gio/glocalfile.c:1186 gio/glocalfile.c:1209
+#: gio/glocalfile.c:1193 gio/glocalfile.c:1216
 #, c-format
 msgid "Error renaming file %s: %s"
 msgstr "讀取檔案 %s 時發生錯誤:%s"
 
-#: gio/glocalfile.c:1193
+#: gio/glocalfile.c:1200
 msgid "Can’t rename file, filename already exists"
 msgstr "不能重新命名檔案,該檔案名稱已存在"
 
-#: gio/glocalfile.c:1206 gio/glocalfile.c:2267 gio/glocalfile.c:2295
-#: gio/glocalfile.c:2452 gio/glocalfileoutputstream.c:551
+#: gio/glocalfile.c:1213 gio/glocalfile.c:2322 gio/glocalfile.c:2350
+#: gio/glocalfile.c:2489 gio/glocalfileoutputstream.c:647
 msgid "Invalid filename"
 msgstr "無效的檔案名稱"
 
-#: gio/glocalfile.c:1374 gio/glocalfile.c:1389
+#: gio/glocalfile.c:1381 gio/glocalfile.c:1396
 #, c-format
 msgid "Error opening file %s: %s"
 msgstr "開啟檔案 %s 時發生錯誤:%s"
 
-#: gio/glocalfile.c:1514
+#: gio/glocalfile.c:1521
 #, c-format
 msgid "Error removing file %s: %s"
 msgstr "移除檔案 %s 時發生錯誤:%s"
 
-#: gio/glocalfile.c:1925
+#: gio/glocalfile.c:1963
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "移動檔案 %s 至垃圾桶時發生錯誤:%s"
 
-#: gio/glocalfile.c:1948
+#: gio/glocalfile.c:2004
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "無法建立垃圾桶目錄 %s:%s"
 
-#: gio/glocalfile.c:1970
+#: gio/glocalfile.c:2025
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "無法找到垃圾桶 %s 的頂端層級目錄"
 
-#: gio/glocalfile.c:1979
-#, fuzzy, c-format
-#| msgid "Copy (reflink/clone) between mounts is not supported"
+#: gio/glocalfile.c:2034
+#, c-format
 msgid "Trashing on system internal mounts is not supported"
-msgstr "不支援在掛載點之間複製 (參照連結/重製)"
+msgstr "不支援在系統內部掛載點使用垃圾桶"
 
-#: gio/glocalfile.c:2063 gio/glocalfile.c:2083
+#: gio/glocalfile.c:2118 gio/glocalfile.c:2138
 #, c-format
 msgid "Unable to find or create trash directory for %s"
 msgstr "無法找到或建立 %s 的垃圾桶目錄"
 
-#: gio/glocalfile.c:2118
+#: gio/glocalfile.c:2173
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "無法建立 %s 垃圾桶資訊檔案:%s"
 
-#: gio/glocalfile.c:2178
+#: gio/glocalfile.c:2233
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "無法將檔案 %s 跨檔案系統邊界移至垃圾桶"
 
-#: gio/glocalfile.c:2182 gio/glocalfile.c:2238
+#: gio/glocalfile.c:2237 gio/glocalfile.c:2293
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "無法將檔案 %s 移至垃圾桶:%s"
 
-#: gio/glocalfile.c:2244
+#: gio/glocalfile.c:2299
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "無法將檔案 %s 移至垃圾桶"
 
-#: gio/glocalfile.c:2270
+#: gio/glocalfile.c:2325
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "建立目錄 %s 時發生錯誤:%s"
 
-#: gio/glocalfile.c:2299
+#: gio/glocalfile.c:2354
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "檔案系統不支援符號連結"
 
-#: gio/glocalfile.c:2302
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "建立符號連結 %s 時發生錯誤:%s"
 
-#: gio/glocalfile.c:2308 glib/gfileutils.c:2138
-msgid "Symbolic links not supported"
-msgstr "不支援符號連結"
-
-#: gio/glocalfile.c:2363 gio/glocalfile.c:2398 gio/glocalfile.c:2455
+#: gio/glocalfile.c:2400 gio/glocalfile.c:2435 gio/glocalfile.c:2492
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "移動檔案 %s 時發生錯誤:%s"
 
-#: gio/glocalfile.c:2386
+#: gio/glocalfile.c:2423
 msgid "Can’t move directory over directory"
 msgstr "不能將目錄移動至目錄上"
 
-#: gio/glocalfile.c:2412 gio/glocalfileoutputstream.c:935
-#: gio/glocalfileoutputstream.c:949 gio/glocalfileoutputstream.c:964
-#: gio/glocalfileoutputstream.c:981 gio/glocalfileoutputstream.c:995
+#: gio/glocalfile.c:2449 gio/glocalfileoutputstream.c:1031
+#: gio/glocalfileoutputstream.c:1045 gio/glocalfileoutputstream.c:1060
+#: gio/glocalfileoutputstream.c:1077 gio/glocalfileoutputstream.c:1091
 msgid "Backup file creation failed"
 msgstr "建立備份檔案失敗"
 
-#: gio/glocalfile.c:2431
+#: gio/glocalfile.c:2468
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "移除目標檔案時發生錯誤:%s"
 
-#: gio/glocalfile.c:2445
+#: gio/glocalfile.c:2482
 msgid "Move between mounts not supported"
 msgstr "不支援在掛載點之間移動"
 
-#: gio/glocalfile.c:2636
+#: gio/glocalfile.c:2673
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "無法決定 %s 的磁碟使用量:%s"
 
-#: gio/glocalfileinfo.c:745
+#: gio/glocalfileinfo.c:755
 msgid "Attribute value must be non-NULL"
-msgstr "屬性數值必須為非-NULL"
+msgstr "特性值必須為非-NULL"
 
-#: gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:762
 msgid "Invalid attribute type (string expected)"
-msgstr "無效的性類型(應為字串值)"
+msgstr "無效的性類型(應為字串值)"
 
-#: gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:769
 msgid "Invalid extended attribute name"
-msgstr "無效的延伸性名稱"
+msgstr "無效的延伸性名稱"
 
-#: gio/glocalfileinfo.c:799
+#: gio/glocalfileinfo.c:809
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
-msgstr "設定延伸性「%s」時發生錯誤:%s"
+msgstr "設定延伸性「%s」時發生錯誤:%s"
 
-#: gio/glocalfileinfo.c:1619
+#: gio/glocalfileinfo.c:1637
 msgid " (invalid encoding)"
 msgstr "(無效的編碼)"
 
-#: gio/glocalfileinfo.c:1783 gio/glocalfileoutputstream.c:813
+#: gio/glocalfileinfo.c:1801 gio/glocalfileoutputstream.c:909
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "取得檔案「%s」資訊時發生錯誤:%s"
 
-#: gio/glocalfileinfo.c:2045
+#: gio/glocalfileinfo.c:2071
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "取得檔案描述狀態資訊時發生錯誤:%s"
 
-#: gio/glocalfileinfo.c:2090
+#: gio/glocalfileinfo.c:2116
 msgid "Invalid attribute type (uint32 expected)"
-msgstr "無效的性類型(應為 uint32 值)"
+msgstr "無效的性類型(應為 uint32 值)"
 
-#: gio/glocalfileinfo.c:2108
+#: gio/glocalfileinfo.c:2134
 msgid "Invalid attribute type (uint64 expected)"
-msgstr "無效的性類型(應為 uint64 值)"
+msgstr "無效的性類型(應為 uint64 值)"
 
-#: gio/glocalfileinfo.c:2127 gio/glocalfileinfo.c:2146
+#: gio/glocalfileinfo.c:2153 gio/glocalfileinfo.c:2172
 msgid "Invalid attribute type (byte string expected)"
-msgstr "無效的性類型(應為 byte string 值)"
+msgstr "無效的性類型(應為 byte string 值)"
 
-#: gio/glocalfileinfo.c:2191
+#: gio/glocalfileinfo.c:2219
 msgid "Cannot set permissions on symlinks"
 msgstr "不能設定符號連結的權限"
 
-#: gio/glocalfileinfo.c:2207
+#: gio/glocalfileinfo.c:2235
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "設定權限時發生錯誤:%s"
 
-#: gio/glocalfileinfo.c:2258
+#: gio/glocalfileinfo.c:2286
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "設定擁有者時發生錯誤:%s"
 
-#: gio/glocalfileinfo.c:2281
+#: gio/glocalfileinfo.c:2309
 msgid "symlink must be non-NULL"
 msgstr "符號連結必須為非-NULL"
 
-#: gio/glocalfileinfo.c:2291 gio/glocalfileinfo.c:2310
-#: gio/glocalfileinfo.c:2321
+#: gio/glocalfileinfo.c:2319 gio/glocalfileinfo.c:2338
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "設定符號連結時發生錯誤:%s"
 
-#: gio/glocalfileinfo.c:2300
+#: gio/glocalfileinfo.c:2328
 msgid "Error setting symlink: file is not a symlink"
 msgstr "設定符號連結時發生錯誤:檔案不是符號連結"
 
-#: gio/glocalfileinfo.c:2426
+#: gio/glocalfileinfo.c:2454
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "設定修改或存取時刻時發生錯誤:%s"
 
-#: gio/glocalfileinfo.c:2449
+#: gio/glocalfileinfo.c:2477
 msgid "SELinux context must be non-NULL"
-msgstr "SELinux 關聯必須為非-NULL"
+msgstr "SELinux 情境必須為非-NULL"
 
-#: gio/glocalfileinfo.c:2464
+#: gio/glocalfileinfo.c:2492
 #, c-format
 msgid "Error setting SELinux context: %s"
-msgstr "設定 SELinux 關聯時發生錯誤:%s"
+msgstr "設定 SELinux 情境時發生錯誤:%s"
 
-#: gio/glocalfileinfo.c:2471
+#: gio/glocalfileinfo.c:2499
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux 在這個系統上並未啟用"
 
-#: gio/glocalfileinfo.c:2563
+#: gio/glocalfileinfo.c:2591
 #, c-format
 msgid "Setting attribute %s not supported"
-msgstr "不支援設定性 %s"
+msgstr "不支援設定性 %s"
 
-#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:696
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:792
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "從檔案讀取時發生錯誤:%s"
 
 #: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
 #: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
-#: gio/glocalfileoutputstream.c:458 gio/glocalfileoutputstream.c:1013
+#: gio/glocalfileoutputstream.c:554 gio/glocalfileoutputstream.c:1109
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "在檔案中搜尋時發生錯誤:%s"
 
-#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:248
-#: gio/glocalfileoutputstream.c:342
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:344
+#: gio/glocalfileoutputstream.c:438
 #, c-format
 msgid "Error closing file: %s"
 msgstr "關閉檔案時發生錯誤:%s"
 
-#: gio/glocalfilemonitor.c:854
+#: gio/glocalfilemonitor.c:865
 msgid "Unable to find default local file monitor type"
 msgstr "無法找到預設的本地端檔案監視器類型"
 
-#: gio/glocalfileoutputstream.c:196 gio/glocalfileoutputstream.c:228
-#: gio/glocalfileoutputstream.c:717
+#: gio/glocalfileoutputstream.c:209 gio/glocalfileoutputstream.c:287
+#: gio/glocalfileoutputstream.c:324 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "寫入至檔案時發生錯誤:%s"
 
-#: gio/glocalfileoutputstream.c:275
+#: gio/glocalfileoutputstream.c:371
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "移除舊備份連結時發生錯誤:%s"
 
-#: gio/glocalfileoutputstream.c:289 gio/glocalfileoutputstream.c:302
+#: gio/glocalfileoutputstream.c:385 gio/glocalfileoutputstream.c:398
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "建立備份複本時發生錯誤:%s"
 
-#: gio/glocalfileoutputstream.c:320
+#: gio/glocalfileoutputstream.c:416
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "重新命名暫存檔案時發生錯誤:%s"
 
-#: gio/glocalfileoutputstream.c:504 gio/glocalfileoutputstream.c:1064
+#: gio/glocalfileoutputstream.c:600 gio/glocalfileoutputstream.c:1160
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "截短檔案時發生錯誤:%s"
 
-#: gio/glocalfileoutputstream.c:557 gio/glocalfileoutputstream.c:795
-#: gio/glocalfileoutputstream.c:1045 gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:653 gio/glocalfileoutputstream.c:891
+#: gio/glocalfileoutputstream.c:1141 gio/gsubprocess.c:380
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "開啟檔案「%s」時發生錯誤:%s"
 
-#: gio/glocalfileoutputstream.c:826
+#: gio/glocalfileoutputstream.c:922
 msgid "Target file is a directory"
 msgstr "目標檔案是一個目錄"
 
-#: gio/glocalfileoutputstream.c:831
+#: gio/glocalfileoutputstream.c:927
 msgid "Target file is not a regular file"
 msgstr "目標檔案不是正規的檔案"
 
-#: gio/glocalfileoutputstream.c:843
+#: gio/glocalfileoutputstream.c:939
 msgid "The file was externally modified"
 msgstr "該檔案已被外部程式修改過"
 
-#: gio/glocalfileoutputstream.c:1029
+#: gio/glocalfileoutputstream.c:1125
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "移除舊檔案時發生錯誤:%s"
@@ -3211,66 +3170,80 @@ msgstr "掛載點尚未實作內容類型預測"
 msgid "mount doesn’t implement synchronous content type guessing"
 msgstr "掛載點尚未實作同步內容類型預測"
 
-#: gio/gnetworkaddress.c:378
+#: gio/gnetworkaddress.c:415
 #, c-format
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "主機名稱「%s」含有「[」但沒有「]」"
 
-#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "無法連接網路"
 
-#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "無法連接主機"
 
-#: gio/gnetworkmonitornetlink.c:97 gio/gnetworkmonitornetlink.c:109
-#: gio/gnetworkmonitornetlink.c:128
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111
+#: gio/gnetworkmonitornetlink.c:130
 #, c-format
 msgid "Could not create network monitor: %s"
 msgstr "無法建立網路監控:%s"
 
-#: gio/gnetworkmonitornetlink.c:118
+#: gio/gnetworkmonitornetlink.c:120
 msgid "Could not create network monitor: "
 msgstr "無法建立網路監控:"
 
-#: gio/gnetworkmonitornetlink.c:176
+#: gio/gnetworkmonitornetlink.c:183
 msgid "Could not get network status: "
 msgstr "無法取得網路狀態:"
 
-#: gio/gnetworkmonitornm.c:322
+#: gio/gnetworkmonitornm.c:348
+#, c-format
+msgid "NetworkManager not running"
+msgstr "NetworkManager 未執行"
+
+#: gio/gnetworkmonitornm.c:359
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager 版本太舊"
 
-#: gio/goutputstream.c:212 gio/goutputstream.c:560
+#: gio/goutputstream.c:232 gio/goutputstream.c:775
 msgid "Output stream doesn’t implement write"
 msgstr "輸出串流尚未實作寫入"
 
-#: gio/goutputstream.c:521 gio/goutputstream.c:1224
+#: gio/goutputstream.c:472 gio/goutputstream.c:1533
+#, c-format
+msgid "Sum of vectors passed to %s too large"
+msgstr "傳入 %s 的向量總和過大"
+
+#: gio/goutputstream.c:736 gio/goutputstream.c:1761
 msgid "Source stream is already closed"
 msgstr "來源串流已經關閉"
 
-#: gio/gresolver.c:342 gio/gthreadedresolver.c:116 gio/gthreadedresolver.c:126
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "解析「%s」時發生錯誤:%s"
 
-#: gio/gresolver.c:729 gio/gresolver.c:781
-#, fuzzy
-#| msgid "Invalid filename"
+#. Translators: The placeholder is for a function name.
+#: gio/gresolver.c:455 gio/gresolver.c:613
+#, c-format
+msgid "%s not implemented"
+msgstr "%s 未實作"
+
+#: gio/gresolver.c:981 gio/gresolver.c:1033
 msgid "Invalid domain"
-msgstr "ç\84¡æ\95\88ç\9a\84æª\94æ¡\88å\90\8d稱"
+msgstr "網å\9f\9fç\84¡æ\95\88"
 
-#: gio/gresource.c:622 gio/gresource.c:881 gio/gresource.c:920
-#: gio/gresource.c:1044 gio/gresource.c:1116 gio/gresource.c:1189
-#: gio/gresource.c:1259 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresource.c:665 gio/gresource.c:924 gio/gresource.c:963
+#: gio/gresource.c:1087 gio/gresource.c:1159 gio/gresource.c:1232
+#: gio/gresource.c:1313 gio/gresourcefile.c:476 gio/gresourcefile.c:599
 #: gio/gresourcefile.c:736
 #, c-format
 msgid "The resource at “%s” does not exist"
 msgstr "「%s」的資源不存在"
 
-#: gio/gresource.c:787
+#: gio/gresource.c:830
 #, c-format
 msgid "The resource at “%s” failed to decompress"
 msgstr "「%s」的資源無法解壓縮"
@@ -3284,11 +3257,11 @@ msgstr "「%s」的資源不是目錄"
 msgid "Input stream doesn’t implement seek"
 msgstr "輸入串流尚未實作尋找"
 
-#: gio/gresource-tool.c:494
+#: gio/gresource-tool.c:499
 msgid "List sections containing resources in an elf FILE"
 msgstr "列出 elf FILE 中包含資源的節區"
 
-#: gio/gresource-tool.c:500
+#: gio/gresource-tool.c:505
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3298,15 +3271,15 @@ msgstr ""
 "如果指定  SECTION,只會列出這個節區的資源\n"
 "如果指定  PATH,只會列出符合的資源"
 
-#: gio/gresource-tool.c:503 gio/gresource-tool.c:513
+#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
 msgid "FILE [PATH]"
 msgstr "檔案 [路徑]"
 
-#: gio/gresource-tool.c:504 gio/gresource-tool.c:514 gio/gresource-tool.c:521
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
 msgid "SECTION"
 msgstr "SECTION"
 
-#: gio/gresource-tool.c:509
+#: gio/gresource-tool.c:514
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3318,15 +3291,15 @@ msgstr ""
 "如果指定  PATH,只會列出符合的資源\n"
 "詳細資料包含節區、大小和壓縮率"
 
-#: gio/gresource-tool.c:519
+#: gio/gresource-tool.c:524
 msgid "Extract a resource file to stdout"
 msgstr "解壓縮資源檔案到 stdout"
 
-#: gio/gresource-tool.c:520
+#: gio/gresource-tool.c:525
 msgid "FILE PATH"
 msgstr "檔案路徑"
 
-#: gio/gresource-tool.c:534
+#: gio/gresource-tool.c:539
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3354,7 +3327,7 @@ msgstr ""
 "使用「gresource help COMMAND」以取得詳細的說明文件。\n"
 "\n"
 
-#: gio/gresource-tool.c:548
+#: gio/gresource-tool.c:553
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3369,19 +3342,19 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gresource-tool.c:555
+#: gio/gresource-tool.c:560
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECTION   一個 (選擇性的) elf 節區名稱\n"
 
-#: gio/gresource-tool.c:559 gio/gsettings-tool.c:703
+#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMMAND   要解釋的(選擇性)指令\n"
 
-#: gio/gresource-tool.c:565
+#: gio/gresource-tool.c:570
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr "  FILE      一個 elf 檔案 (二元檔或共享程式庫)\n"
 
-#: gio/gresource-tool.c:568
+#: gio/gresource-tool.c:573
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -3389,145 +3362,145 @@ msgstr ""
 "  FILE      一個 elf 檔案 (二元檔或共享程式庫)\n"
 "           或編譯過的資源檔案\n"
 
-#: gio/gresource-tool.c:572
+#: gio/gresource-tool.c:577
 msgid "[PATH]"
 msgstr "[路徑]"
 
-#: gio/gresource-tool.c:574
+#: gio/gresource-tool.c:579
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr "  PATH      一個 (選擇性的) 資源路徑 (可能為部分)\n"
 
-#: gio/gresource-tool.c:575
+#: gio/gresource-tool.c:580
 msgid "PATH"
 msgstr "路徑"
 
-#: gio/gresource-tool.c:577
+#: gio/gresource-tool.c:582
 msgid "  PATH      A resource path\n"
 msgstr "  PATH      資源路徑\n"
 
-#: gio/gsettings-tool.c:51 gio/gsettings-tool.c:72 gio/gsettings-tool.c:908
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
 #, c-format
 msgid "No such schema “%s”\n"
-msgstr "沒有這個基模「%s」\n"
+msgstr "沒有這個「%s」schema \n"
 
-#: gio/gsettings-tool.c:57
+#: gio/gsettings-tool.c:55
 #, c-format
 msgid "Schema “%s” is not relocatable (path must not be specified)\n"
-msgstr "基模「%s」不是可重新配置的 (路徑不能指定)\n"
+msgstr "「%s」schema 不可重新配置位置 (路徑不能指定)\n"
 
-#: gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:76
 #, c-format
 msgid "Schema “%s” is relocatable (path must be specified)\n"
-msgstr "基模「%s」是可重新配置的 (路徑必須指定)\n"
+msgstr "「%s」schema 可重新配置位置 (路徑必須指定)\n"
 
-#: gio/gsettings-tool.c:92
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "指定了空白的路徑。\n"
 
-#: gio/gsettings-tool.c:98
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
-msgstr "路徑不能以斜線 (/) 開頭\n"
+msgstr "路徑必須以斜線 (/) 開頭\n"
 
-#: gio/gsettings-tool.c:104
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
-msgstr "路徑不能以斜線 (/) 結尾\n"
+msgstr "路徑必須以斜線 (/) 結尾\n"
 
-#: gio/gsettings-tool.c:110
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "路徑不能包含兩個相鄰的斜線 (//)\n"
 
-#: gio/gsettings-tool.c:538
+#: gio/gsettings-tool.c:536
 msgid "The provided value is outside of the valid range\n"
-msgstr "提供的值超出了有效的範圍\n"
+msgstr "提供的值超出了有效的範圍\n"
 
-#: gio/gsettings-tool.c:545
+#: gio/gsettings-tool.c:543
 msgid "The key is not writable\n"
-msgstr "這個設定鍵無法寫入\n"
+msgstr "這個鍵無法寫入\n"
 
-#: gio/gsettings-tool.c:581
+#: gio/gsettings-tool.c:579
 msgid "List the installed (non-relocatable) schemas"
 msgstr "列出已安裝的(非-可重新配置)schema"
 
-#: gio/gsettings-tool.c:587
+#: gio/gsettings-tool.c:585
 msgid "List the installed relocatable schemas"
 msgstr "列出已安裝的可重新配置 schema"
 
-#: gio/gsettings-tool.c:593
+#: gio/gsettings-tool.c:591
 msgid "List the keys in SCHEMA"
-msgstr "列出 SCHEMA 中的設定鍵"
+msgstr "列出 SCHEMA 中的鍵"
 
-#: gio/gsettings-tool.c:594 gio/gsettings-tool.c:600 gio/gsettings-tool.c:643
+#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: gio/gsettings-tool.c:599
+#: gio/gsettings-tool.c:597
 msgid "List the children of SCHEMA"
 msgstr "列出 SCHEMA 的子項"
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:603
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr ""
-"遞迴的列出設定鍵與鍵值\n"
-"如果沒有指定 SCHEMA,列出所有設定鍵\n"
+"遞迴的列出鍵與值\n"
+"如果沒有指定 SCHEMA,列出所有鍵\n"
 
-#: gio/gsettings-tool.c:607
+#: gio/gsettings-tool.c:605
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:612
+#: gio/gsettings-tool.c:610
 msgid "Get the value of KEY"
-msgstr "取得 KEY 的值"
+msgstr "取得 KEY 的值"
 
-#: gio/gsettings-tool.c:613 gio/gsettings-tool.c:619 gio/gsettings-tool.c:625
-#: gio/gsettings-tool.c:637 gio/gsettings-tool.c:649
+#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
+#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: gio/gsettings-tool.c:618
+#: gio/gsettings-tool.c:616
 msgid "Query the range of valid values for KEY"
-msgstr "查詢 KEY 有效值的範圍"
+msgstr "查詢 KEY 有效值的範圍"
 
-#: gio/gsettings-tool.c:624
+#: gio/gsettings-tool.c:622
 msgid "Query the description for KEY"
-msgstr "查詢 KEY 有效值的範圍"
+msgstr "查詢 KEY 有效值的範圍"
 
-#: gio/gsettings-tool.c:630
+#: gio/gsettings-tool.c:628
 msgid "Set the value of KEY to VALUE"
-msgstr "將 KEY 的值設定為 VALUE"
+msgstr "將 KEY 的值設定為 VALUE"
 
-#: gio/gsettings-tool.c:631
+#: gio/gsettings-tool.c:629
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: gio/gsettings-tool.c:636
+#: gio/gsettings-tool.c:634
 msgid "Reset KEY to its default value"
 msgstr "將 KEY 設定為預設值"
 
-#: gio/gsettings-tool.c:642
+#: gio/gsettings-tool.c:640
 msgid "Reset all keys in SCHEMA to their defaults"
-msgstr "將 SCHEMA 的所有設定鍵重設為預設值"
+msgstr "將 SCHEMA 的所有鍵重設為預設值"
 
-#: gio/gsettings-tool.c:648
+#: gio/gsettings-tool.c:646
 msgid "Check if KEY is writable"
 msgstr "檢查 KEY 是否可寫入"
 
-#: gio/gsettings-tool.c:654
+#: gio/gsettings-tool.c:652
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
 "監控 KEY 的變更。\n"
-"如果沒有指定 KEY,會監控 SCHEMA 的所有設定鍵。\n"
+"如果沒有指定 KEY,會監控 SCHEMA 的所有鍵。\n"
 "使用 ^C 可停止監控。\n"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:655
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: gio/gsettings-tool.c:669
+#: gio/gsettings-tool.c:667
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3558,23 +3531,23 @@ msgstr ""
 "\n"
 "指令:\n"
 "  help                      顯示這個資訊\n"
-"  list-schemas              列出已安裝的基模\n"
-"  list-relocatable-schemas  列出可重新配置的基模\n"
-"  list-keys                 列出基模中的設定鍵\n"
-"  list-children             列出基模的子項\n"
-"  list-recursively          遞迴列出設定鍵和數值\n"
-"  range                     查詢設定鍵的範圍\n"
-"  get                       取得設定鍵的數值\n"
-"  set                       設定設定鍵的數值\n"
-"  reset                     重設設定鍵的數值\n"
-"  reset-recursively         重設指定基模的所有數值\n"
-"  writable                  檢查設定鍵是否可寫入\n"
+"  list-schemas              列出已安裝的 schema\n"
+"  list-relocatable-schemas  列出可重新配置的 schema\n"
+"  list-keys                 列出 schema 中的鍵\n"
+"  list-children             列出 schema 的子項\n"
+"  list-recursively          遞迴列出鍵和值\n"
+"  range                     查詢鍵的範圍\n"
+"  get                       取得鍵的值\n"
+"  set                       設定鍵的值\n"
+"  reset                     重設鍵的值\n"
+"  reset-recursively         重設指定 schema 的所有值\n"
+"  writable                  檢查鍵是否可寫入\n"
 "  monitor                   監看變更\n"
 "\n"
 "使用「gsettings help COMMAND」取得詳細的說明。\n"
 "\n"
 
-#: gio/gsettings-tool.c:693
+#: gio/gsettings-tool.c:691
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3589,11 +3562,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:697
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR 搜尋額外 schema 的目錄\n"
 
-#: gio/gsettings-tool.c:707
+#: gio/gsettings-tool.c:705
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3601,242 +3574,237 @@ msgstr ""
 "  SCHEMA      這個 schema 的名稱\n"
 "  PATH         路徑,用於可重新配置的 schema\n"
 
-#: gio/gsettings-tool.c:712
+#: gio/gsettings-tool.c:710
 msgid "  KEY       The (optional) key within the schema\n"
-msgstr "  KEY       schema 中的(選擇性的)設定鍵\n"
+msgstr "  KEY       schema 中的(選擇性的)鍵\n"
 
-#: gio/gsettings-tool.c:716
+#: gio/gsettings-tool.c:714
 msgid "  KEY       The key within the schema\n"
-msgstr "  KEY       schema 中的設定鍵\n"
+msgstr "  KEY       schema 中的鍵\n"
 
-#: gio/gsettings-tool.c:720
+#: gio/gsettings-tool.c:718
 msgid "  VALUE     The value to set\n"
-msgstr "  VALUE     要設定的值\n"
+msgstr "  VALUE     要設定的值\n"
 
-#: gio/gsettings-tool.c:775
+#: gio/gsettings-tool.c:773
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "無法載入 %s 的 schema:%s\n"
 
-#: gio/gsettings-tool.c:787
+#: gio/gsettings-tool.c:785
 msgid "No schemas installed\n"
-msgstr "尚未安裝基模\n"
+msgstr "尚未安裝 schema\n"
 
-#: gio/gsettings-tool.c:866
+#: gio/gsettings-tool.c:864
 msgid "Empty schema name given\n"
 msgstr "指定了空的 schema 名稱\n"
 
-#: gio/gsettings-tool.c:921
+#: gio/gsettings-tool.c:919
 #, c-format
 msgid "No such key “%s”\n"
-msgstr "沒有設定鍵「%s」\n"
+msgstr "沒有「%s」鍵\n"
 
-#: gio/gsocket.c:384
+#: gio/gsocket.c:418
 msgid "Invalid socket, not initialized"
 msgstr "無效的 socket,尚未初始化"
 
-#: gio/gsocket.c:391
+#: gio/gsocket.c:425
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "無效的 socket,初始化失敗原因為:%s"
 
-#: gio/gsocket.c:399
+#: gio/gsocket.c:433
 msgid "Socket is already closed"
 msgstr "Socket 已經關閉"
 
-#: gio/gsocket.c:414 gio/gsocket.c:3034 gio/gsocket.c:4244 gio/gsocket.c:4302
+#: gio/gsocket.c:448 gio/gsocket.c:3182 gio/gsocket.c:4399 gio/gsocket.c:4457
 msgid "Socket I/O timed out"
 msgstr "Socket I/O 逾時"
 
-#: gio/gsocket.c:549
+#: gio/gsocket.c:583
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "正在從 fd 建立 GSocket:%s"
 
-#: gio/gsocket.c:578 gio/gsocket.c:632 gio/gsocket.c:639
+#: gio/gsocket.c:612 gio/gsocket.c:666 gio/gsocket.c:673
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "無法建立 socket:%s"
 
-#: gio/gsocket.c:632
+#: gio/gsocket.c:666
 msgid "Unknown family was specified"
 msgstr "指定了不明的字族"
 
-#: gio/gsocket.c:639
+#: gio/gsocket.c:673
 msgid "Unknown protocol was specified"
 msgstr "指定了不明的通訊協定"
 
-#: gio/gsocket.c:1130
+#: gio/gsocket.c:1164
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "不能在非資料電報 socket 上使用資料電報操作。"
 
-#: gio/gsocket.c:1147
+#: gio/gsocket.c:1181
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "不能在有逾時設定 socket 上使用資料電報操作。"
 
-#: gio/gsocket.c:1954
+#: gio/gsocket.c:1988
 #, c-format
 msgid "could not get local address: %s"
 msgstr "無法取得本地端位址:%s"
 
-#: gio/gsocket.c:2000
+#: gio/gsocket.c:2034
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "無法取得遠端位址:%s"
 
-#: gio/gsocket.c:2066
+#: gio/gsocket.c:2100
 #, c-format
 msgid "could not listen: %s"
 msgstr "無法聽取:%s"
 
-#: gio/gsocket.c:2168
+#: gio/gsocket.c:2204
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "綁定至位址時發生錯誤:%s"
+msgid "Error binding to address %s: %s"
+msgstr "綁定至 %s 位址時發生錯誤:%s"
 
-#: gio/gsocket.c:2226 gio/gsocket.c:2263 gio/gsocket.c:2373 gio/gsocket.c:2398
-#: gio/gsocket.c:2471 gio/gsocket.c:2529 gio/gsocket.c:2547
+#: gio/gsocket.c:2380 gio/gsocket.c:2417 gio/gsocket.c:2527 gio/gsocket.c:2552
+#: gio/gsocket.c:2615 gio/gsocket.c:2673 gio/gsocket.c:2691
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "加入多點廣播群組時發生錯誤:%s"
 
-#: gio/gsocket.c:2227 gio/gsocket.c:2264 gio/gsocket.c:2374 gio/gsocket.c:2399
-#: gio/gsocket.c:2472 gio/gsocket.c:2530 gio/gsocket.c:2548
+#: gio/gsocket.c:2381 gio/gsocket.c:2418 gio/gsocket.c:2528 gio/gsocket.c:2553
+#: gio/gsocket.c:2616 gio/gsocket.c:2674 gio/gsocket.c:2692
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "離開多點廣播群組時發生錯誤:%s"
 
-#: gio/gsocket.c:2228
+#: gio/gsocket.c:2382
 msgid "No support for source-specific multicast"
 msgstr "不支援指定來源的多點廣播"
 
-#: gio/gsocket.c:2375
-#, fuzzy
-#| msgid "Unsupported socket address"
+#: gio/gsocket.c:2529
 msgid "Unsupported socket family"
-msgstr "不支援的 socket 位址"
+msgstr "不支援的 socket 家族"
 
-#: gio/gsocket.c:2400
+#: gio/gsocket.c:2554
 msgid "source-specific not an IPv4 address"
-msgstr ""
+msgstr "指定來源不是 IPv4 位址"
 
-#: gio/gsocket.c:2418 gio/gsocket.c:2447 gio/gsocket.c:2497
+#: gio/gsocket.c:2578
 #, c-format
-msgid "Interface not found: %s"
-msgstr ""
+msgid "Interface name too long"
+msgstr "介面名稱過長"
 
-#: gio/gsocket.c:2434
+#: gio/gsocket.c:2591 gio/gsocket.c:2641
 #, c-format
-msgid "Interface name too long"
-msgstr ""
+msgid "Interface not found: %s"
+msgstr "找不到介面:%s"
 
-#: gio/gsocket.c:2473
-#, fuzzy
-#| msgid "No support for source-specific multicast"
+#: gio/gsocket.c:2617
 msgid "No support for IPv4 source-specific multicast"
-msgstr "不支援指定來源的多點廣播"
+msgstr "不支援 IPv4 指定來源的多點廣播"
 
-#: gio/gsocket.c:2531
-#, fuzzy
-#| msgid "No support for source-specific multicast"
+#: gio/gsocket.c:2675
 msgid "No support for IPv6 source-specific multicast"
-msgstr "不支援指定來源的多點廣播"
+msgstr "不支援 IPv6 指定來源的多點廣播"
 
-#: gio/gsocket.c:2740
+#: gio/gsocket.c:2884
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "接受連線時發生錯誤:%s"
 
-#: gio/gsocket.c:2864
+#: gio/gsocket.c:3010
 msgid "Connection in progress"
 msgstr "連線進行中"
 
-#: gio/gsocket.c:2913
+#: gio/gsocket.c:3061
 msgid "Unable to get pending error: "
 msgstr "無法取得未處理的錯誤:"
 
-#: gio/gsocket.c:3097
+#: gio/gsocket.c:3247
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "接收資料時發生錯誤:%s"
 
-#: gio/gsocket.c:3292
+#: gio/gsocket.c:3444
 #, c-format
 msgid "Error sending data: %s"
 msgstr "傳送資料時發生錯誤:%s"
 
-#: gio/gsocket.c:3479
+#: gio/gsocket.c:3631
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "無法關閉 socket:%s"
 
-#: gio/gsocket.c:3560
+#: gio/gsocket.c:3712
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "關閉 socket 時發生錯誤:%s"
 
-#: gio/gsocket.c:4237
+#: gio/gsocket.c:4392
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "等候 socket 情況:%s"
 
-#: gio/gsocket.c:4711 gio/gsocket.c:4791 gio/gsocket.c:4969
+#: gio/gsocket.c:4770 gio/gsocket.c:4772 gio/gsocket.c:4919 gio/gsocket.c:5004
+#: gio/gsocket.c:5182 gio/gsocket.c:5222 gio/gsocket.c:5224
 #, c-format
 msgid "Error sending message: %s"
 msgstr "傳送訊息時發生錯誤:%s"
 
-#: gio/gsocket.c:4735
+#: gio/gsocket.c:4946
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "視窗不支援 GSocketControlMessage"
 
-#: gio/gsocket.c:5188 gio/gsocket.c:5261 gio/gsocket.c:5487
+#: gio/gsocket.c:5415 gio/gsocket.c:5488 gio/gsocket.c:5714
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "取回郵件發生錯誤:%s"
 
-#: gio/gsocket.c:5759
+#: gio/gsocket.c:5995
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "無法讀取 socket 機密:%s"
 
-#: gio/gsocket.c:5768
+#: gio/gsocket.c:6004
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials 沒有在這個 OS 上實作"
 
-#: gio/gsocketclient.c:176
+#: gio/gsocketclient.c:182
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr "無法連線到代理伺服器 %s:"
 
-#: gio/gsocketclient.c:190
+#: gio/gsocketclient.c:196
 #, c-format
 msgid "Could not connect to %s: "
 msgstr "無法連接到 %s:"
 
-#: gio/gsocketclient.c:192
+#: gio/gsocketclient.c:198
 msgid "Could not connect: "
 msgstr "無法連接:"
 
-#: gio/gsocketclient.c:1027 gio/gsocketclient.c:1599
+#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
 msgid "Unknown error on connect"
 msgstr "連線時有不明的錯誤"
 
-#: gio/gsocketclient.c:1081 gio/gsocketclient.c:1535
+#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "不支援嘗試透過非-TCP 連線使用代理伺服器。"
 
-#: gio/gsocketclient.c:1110 gio/gsocketclient.c:1561
+#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "指定的通訊協定「%s」不被支援。"
 
-#: gio/gsocketlistener.c:225
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr "聽取程式已經關閉"
 
-#: gio/gsocketlistener.c:271
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "加入的 socket 已經關閉"
 
@@ -3862,117 +3830,117 @@ msgstr "伺服器不是 SOCKSv4 代理伺服器。"
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr "透過 SOCKSv4 伺服器連線被拒絕"
 
-#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:338 gio/gsocks5proxy.c:348
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr "伺服器不是 SOCKSv5 代理伺服器。"
 
-#: gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167 gio/gsocks5proxy.c:184
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "SOCKv5 代理伺服器要求核對。"
 
-#: gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:191
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
 msgstr "SOCKSv5 代理需要的核對方式尚未被 GLib 支援。"
 
-#: gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:220
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr "使用者名稱或密碼對 SOCKSv5 通訊協定來說太長了。"
 
-#: gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:250
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr "SOCKSv5 核對由於錯誤的使用者名稱或密碼失敗了。"
 
-#: gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:300
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
 msgstr "主機名稱「%s」對 SOCKSv5 通訊協定來說太長了"
 
-#: gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:362
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr "SOCKSv5 代理伺服器使用了不明的位址類型。"
 
-#: gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:369
 msgid "Internal SOCKSv5 proxy server error."
 msgstr "內部的 SOCKSv5 代理伺服器錯誤。"
 
-#: gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:375
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr "SOCKSv5 連線不被規則組允許。"
 
-#: gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:382
 msgid "Host unreachable through SOCKSv5 server."
 msgstr "主機無法透過 SOCKSv5 代理伺服器抵達。"
 
-#: gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:388
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr "網路無法透過 SOCKSv5 代理伺服器抵達。"
 
-#: gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:394
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr "透過 SOCKSv5 代理伺服器連線被拒絕。"
 
-#: gio/gsocks5proxy.c:386
+#: gio/gsocks5proxy.c:400
 msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "SOCKSv5 代理伺服器不支援「connect」指令。"
 
-#: gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:406
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr "SOCKSv5 代理伺服器不支援提供的位址類型。"
 
-#: gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:412
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "不明的 SOCKSv5 代理伺服器錯誤。"
 
-#: gio/gthemedicon.c:518
+#: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
 msgstr "不能處理版本為 %d 的 GThemedIcon 編碼"
 
-#: gio/gthreadedresolver.c:118
+#: gio/gthreadedresolver.c:152
 msgid "No valid addresses were found"
 msgstr "找不到有效的位址"
 
-#: gio/gthreadedresolver.c:213
+#: gio/gthreadedresolver.c:334
 #, c-format
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "反向解析「%s」時發生錯誤:%s"
 
-#: gio/gthreadedresolver.c:549 gio/gthreadedresolver.c:628
-#: gio/gthreadedresolver.c:726 gio/gthreadedresolver.c:776
+#: gio/gthreadedresolver.c:671 gio/gthreadedresolver.c:750
+#: gio/gthreadedresolver.c:848 gio/gthreadedresolver.c:898
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "「%s」的要求類型沒有 DNS 紀錄"
 
-#: gio/gthreadedresolver.c:554 gio/gthreadedresolver.c:731
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:853
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "暫時無法解析「%s」"
 
-#: gio/gthreadedresolver.c:559 gio/gthreadedresolver.c:736
-#: gio/gthreadedresolver.c:844
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:968
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "解析「%s」時發生錯誤"
 
-#: gio/gtlscertificate.c:250
-msgid "Cannot decrypt PEM-encoded private key"
-msgstr "不能解鎖 PEM 編碼的私鑰"
-
-#: gio/gtlscertificate.c:255
+#: gio/gtlscertificate.c:243
 msgid "No PEM-encoded private key found"
 msgstr "找不到 PEM 編碼的私鑰"
 
-#: gio/gtlscertificate.c:265
+#: gio/gtlscertificate.c:253
+msgid "Cannot decrypt PEM-encoded private key"
+msgstr "不能解鎖 PEM 編碼的私鑰"
+
+#: gio/gtlscertificate.c:264
 msgid "Could not parse PEM-encoded private key"
 msgstr "無法解析 PEM 編碼的私鑰"
 
-#: gio/gtlscertificate.c:290
+#: gio/gtlscertificate.c:291
 msgid "No PEM-encoded certificate found"
 msgstr "找到非 PEM 編碼的憑證"
 
-#: gio/gtlscertificate.c:299
+#: gio/gtlscertificate.c:300
 msgid "Could not parse PEM-encoded certificate"
 msgstr "無法解析 PEM 編碼的憑證"
 
@@ -3985,10 +3953,6 @@ msgstr "這是在您的存取被鎖定之前最後輸入密碼的機會。"
 #. Translators: This is not the 'This is the last chance' string. It is
 #. * displayed when more than one attempt is allowed.
 #: gio/gtlspassword.c:115
-#, fuzzy
-#| msgid ""
-#| "Several password entered have been incorrect, and your access will be "
-#| "locked out after further failures."
 msgid ""
 "Several passwords entered have been incorrect, and your access will be "
 "locked out after further failures."
@@ -3999,13 +3963,13 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "輸入的密碼是不正確的。"
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:563
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "預期有 1 個控制訊息,卻收到 %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:575
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
 msgstr "輔助資料的未預期類型"
 
@@ -4019,31 +3983,31 @@ msgstr[0] "預期有 1 個 fd,卻收到 %d\n"
 msgid "Received invalid fd"
 msgstr "收到無效的 fd"
 
-#: gio/gunixconnection.c:355
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
 msgstr "傳送憑證時發生錯誤:"
 
-#: gio/gunixconnection.c:504
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "檢查 SO_PASSCRED 在 socket 是否啟用時發生錯誤:%s"
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "啟用 SO_PASSCRED 時發生錯誤:%s"
 
-#: gio/gunixconnection.c:549
+#: gio/gunixconnection.c:565
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr "預期接收憑證要讀取單一位元組,但讀取到零位元組"
 
-#: gio/gunixconnection.c:589
+#: gio/gunixconnection.c:605
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "不是預期的控制訊息,卻收到 %d"
 
-#: gio/gunixconnection.c:614
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "停用 SO_PASSCRED 時發生錯誤:%s"
@@ -4053,17 +4017,19 @@ msgstr "停用 SO_PASSCRED 時發生錯誤:%s"
 msgid "Error reading from file descriptor: %s"
 msgstr "讀取檔案描述狀態時發生錯誤:%s"
 
-#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:411
+#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:535
 #: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "關閉檔案描述狀態時發生錯誤:%s"
 
-#: gio/gunixmounts.c:2589 gio/gunixmounts.c:2642
+#: gio/gunixmounts.c:2709 gio/gunixmounts.c:2762
 msgid "Filesystem root"
 msgstr "根檔案系統"
 
-#: gio/gunixoutputstream.c:358 gio/gunixoutputstream.c:378
+#: gio/gunixoutputstream.c:372 gio/gunixoutputstream.c:392
+#: gio/gunixoutputstream.c:479 gio/gunixoutputstream.c:499
+#: gio/gunixoutputstream.c:676
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "寫入檔案描述狀態時發生錯誤:%s"
@@ -4139,154 +4105,153 @@ msgstr "執行 dbus 服務"
 msgid "Wrong args\n"
 msgstr "錯誤引數\n"
 
-#: glib/gbookmarkfile.c:754
+#: glib/gbookmarkfile.c:756
 #, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
-msgstr "元件「%2$s」中有未預期的屬性「%1$s」"
+msgstr "「%2$s」元素中有未預期的「%1$s」特性"
 
-#: glib/gbookmarkfile.c:765 glib/gbookmarkfile.c:836 glib/gbookmarkfile.c:846
-#: glib/gbookmarkfile.c:953
+#: glib/gbookmarkfile.c:767 glib/gbookmarkfile.c:847 glib/gbookmarkfile.c:857
+#: glib/gbookmarkfile.c:969
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
-msgstr "找不到元件「%2$s」中的屬性「%1$s」"
+msgstr "找不到「%2$s」元素中的「%1$s」特性"
 
-#: glib/gbookmarkfile.c:1123 glib/gbookmarkfile.c:1188
-#: glib/gbookmarkfile.c:1252 glib/gbookmarkfile.c:1262
+#: glib/gbookmarkfile.c:1178 glib/gbookmarkfile.c:1243
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
-msgstr "未預期的標籤「%s」,應為標籤「%s」"
+msgstr "未預期「%s」標籤,應為「%s」標籤"
 
-#: glib/gbookmarkfile.c:1148 glib/gbookmarkfile.c:1162
-#: glib/gbookmarkfile.c:1230
+#: glib/gbookmarkfile.c:1203 glib/gbookmarkfile.c:1217
+#: glib/gbookmarkfile.c:1285 glib/gbookmarkfile.c:1331
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
-msgstr "「%2$s」中有未預期的標籤「%1$s」"
+msgstr "「%2$s」中有未預期的「%1$s」標籤"
+
+#: glib/gbookmarkfile.c:1625
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr "書籤檔案中的「%s」日期/時間無效"
 
-#: glib/gbookmarkfile.c:1757
+#: glib/gbookmarkfile.c:1831
 msgid "No valid bookmark file found in data dirs"
 msgstr "在資料目錄中找不到有效的書籤檔案"
 
-#: glib/gbookmarkfile.c:1958
+#: glib/gbookmarkfile.c:2032
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "URI「%s」的書籤已經存在"
 
-#: glib/gbookmarkfile.c:2004 glib/gbookmarkfile.c:2162
-#: glib/gbookmarkfile.c:2247 glib/gbookmarkfile.c:2327
-#: glib/gbookmarkfile.c:2412 glib/gbookmarkfile.c:2495
-#: glib/gbookmarkfile.c:2573 glib/gbookmarkfile.c:2652
-#: glib/gbookmarkfile.c:2694 glib/gbookmarkfile.c:2791
-#: glib/gbookmarkfile.c:2912 glib/gbookmarkfile.c:3102
-#: glib/gbookmarkfile.c:3178 glib/gbookmarkfile.c:3346
-#: glib/gbookmarkfile.c:3435 glib/gbookmarkfile.c:3524
-#: glib/gbookmarkfile.c:3640
+#: glib/gbookmarkfile.c:2078 glib/gbookmarkfile.c:2236
+#: glib/gbookmarkfile.c:2321 glib/gbookmarkfile.c:2401
+#: glib/gbookmarkfile.c:2486 glib/gbookmarkfile.c:2569
+#: glib/gbookmarkfile.c:2647 glib/gbookmarkfile.c:2726
+#: glib/gbookmarkfile.c:2768 glib/gbookmarkfile.c:2865
+#: glib/gbookmarkfile.c:2986 glib/gbookmarkfile.c:3176
+#: glib/gbookmarkfile.c:3252 glib/gbookmarkfile.c:3420
+#: glib/gbookmarkfile.c:3509 glib/gbookmarkfile.c:3598
+#: glib/gbookmarkfile.c:3717
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "找不到 URI「%s」的書籤"
 
-#: glib/gbookmarkfile.c:2336
+#: glib/gbookmarkfile.c:2410
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "URI「%s」書籤中沒有定義 MIME 類型"
 
-#: glib/gbookmarkfile.c:2421
+#: glib/gbookmarkfile.c:2495
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "URI「%s」書籤中沒有私有旗幟"
 
-#: glib/gbookmarkfile.c:2800
+#: glib/gbookmarkfile.c:2874
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "URI「%s」書籤中沒有設定群組"
 
-#: glib/gbookmarkfile.c:3199 glib/gbookmarkfile.c:3356
+#: glib/gbookmarkfile.c:3273 glib/gbookmarkfile.c:3430
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "沒有名為「%s」的應用程式註冊書籤「%s」"
 
-#: glib/gbookmarkfile.c:3379
+#: glib/gbookmarkfile.c:3453
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "以 URI「%2$s」展開 exec 列「%1$s」失敗"
 
-#: glib/gconvert.c:473
-#, fuzzy
-#| msgid "Invalid sequence in conversion input"
+#: glib/gconvert.c:466
 msgid "Unrepresentable character in conversion input"
-msgstr "è½\89æ\8f\9b輸å\85¥è³\87æ\96\99æ\99\82å\87ºç\8f¾ç\84¡æ\95\88ç\9a\84å­\97å\85\83次åº\8f"
+msgstr "è½\89æ\8f\9b輸å\85¥è³\87æ\96\99æ\99\82å\87ºç\8f¾ç\84¡æ³\95表示ç\9a\84å­\97å\85\83"
 
-#: glib/gconvert.c:500 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
-#: glib/gutf8.c:1318
+#: glib/gconvert.c:493 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "輸入資料結束時字元仍未完整"
 
-#: glib/gconvert.c:769
+#: glib/gconvert.c:762
 #, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "無法將後備字串「%s」的字元集轉換成「%s」"
 
-#: glib/gconvert.c:940
-#, fuzzy
-#| msgid "Invalid byte sequence in conversion input"
+#: glib/gconvert.c:934
 msgid "Embedded NUL byte in conversion input"
-msgstr "轉換輸入資料時遇到不正確的位元組組合"
+msgstr "轉換輸入資料時出現內嵌的 NUL 位元組"
 
-#: glib/gconvert.c:961
-#, fuzzy
-#| msgid "Invalid byte sequence in conversion input"
+#: glib/gconvert.c:955
 msgid "Embedded NUL byte in conversion output"
-msgstr "è½\89æ\8f\9b輸å\85¥è³\87æ\96\99æ\99\82é\81\87å\88°ä¸\8d正確ç\9a\84ä½\8då\85\83çµ\84çµ\84å\90\88"
+msgstr "è½\89æ\8f\9b輸å\87ºè³\87æ\96\99æ\99\82å\87ºç\8f¾å\85§åµ\8cç\9a\84 NUL ä½\8då\85\83çµ\84"
 
-#: glib/gconvert.c:1649
+#: glib/gconvert.c:1640
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr "URI「%s」不是使用「file」格式的絕對 URI"
 
-#: glib/gconvert.c:1659
+#: glib/gconvert.c:1650
 #, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "本機檔案的 URI「%s」不應含有「#」"
 
-#: glib/gconvert.c:1676
+#: glib/gconvert.c:1667
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr "URI「%s」無效"
 
-#: glib/gconvert.c:1688
+#: glib/gconvert.c:1679
 #, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "URI「%s」中的主機名稱無效"
 
-#: glib/gconvert.c:1704
+#: glib/gconvert.c:1695
 #, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "URI「%s」含有「不正確跳出」的字元"
 
-#: glib/gconvert.c:1776
+#: glib/gconvert.c:1767
 #, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr "路徑名稱「%s」不是絕對路徑"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: glib/gdatetime.c:213
+#: glib/gdatetime.c:220
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%Y年%m月%d日 (%A) %H時%M分%S秒"
 
 #. Translators: this is the preferred format for expressing the date
-#: glib/gdatetime.c:216
+#: glib/gdatetime.c:223
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%y/%m/%d"
 
 #. Translators: this is the preferred format for expressing the time
-#: glib/gdatetime.c:219
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: glib/gdatetime.c:222
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%p %I時%M分%S秒"
@@ -4307,62 +4272,62 @@ msgstr "%p %I時%M分%S秒"
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
 #.
-#: glib/gdatetime.c:261
+#: glib/gdatetime.c:268
 msgctxt "full month name"
 msgid "January"
 msgstr "一月"
 
-#: glib/gdatetime.c:263
+#: glib/gdatetime.c:270
 msgctxt "full month name"
 msgid "February"
 msgstr "二月"
 
-#: glib/gdatetime.c:265
+#: glib/gdatetime.c:272
 msgctxt "full month name"
 msgid "March"
 msgstr "三月"
 
-#: glib/gdatetime.c:267
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "April"
 msgstr "四月"
 
-#: glib/gdatetime.c:269
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "May"
 msgstr "五月"
 
-#: glib/gdatetime.c:271
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "June"
 msgstr "六月"
 
-#: glib/gdatetime.c:273
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "July"
 msgstr "七月"
 
-#: glib/gdatetime.c:275
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "August"
 msgstr "八月"
 
-#: glib/gdatetime.c:277
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "September"
 msgstr "九月"
 
-#: glib/gdatetime.c:279
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "October"
 msgstr "十月"
 
-#: glib/gdatetime.c:281
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "November"
 msgstr "十一月"
 
-#: glib/gdatetime.c:283
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "December"
 msgstr "十二月"
@@ -4384,132 +4349,132 @@ msgstr "十二月"
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
 #.
-#: glib/gdatetime.c:315
+#: glib/gdatetime.c:322
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "一月"
 
-#: glib/gdatetime.c:317
+#: glib/gdatetime.c:324
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "二月"
 
-#: glib/gdatetime.c:319
+#: glib/gdatetime.c:326
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "三月"
 
-#: glib/gdatetime.c:321
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "四月"
 
-#: glib/gdatetime.c:323
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "五月"
 
-#: glib/gdatetime.c:325
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "六月"
 
-#: glib/gdatetime.c:327
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "七月"
 
-#: glib/gdatetime.c:329
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "八月"
 
-#: glib/gdatetime.c:331
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "九月"
 
-#: glib/gdatetime.c:333
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "十月"
 
-#: glib/gdatetime.c:335
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "十一月"
 
-#: glib/gdatetime.c:337
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "十二月"
 
-#: glib/gdatetime.c:352
+#: glib/gdatetime.c:359
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "星期一"
 
-#: glib/gdatetime.c:354
+#: glib/gdatetime.c:361
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "星期二"
 
-#: glib/gdatetime.c:356
+#: glib/gdatetime.c:363
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "星期三"
 
-#: glib/gdatetime.c:358
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "星期四"
 
-#: glib/gdatetime.c:360
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "星期五"
 
-#: glib/gdatetime.c:362
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "星期六"
 
-#: glib/gdatetime.c:364
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "星期日"
 
-#: glib/gdatetime.c:379
+#: glib/gdatetime.c:386
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "週一"
 
-#: glib/gdatetime.c:381
+#: glib/gdatetime.c:388
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "週二"
 
-#: glib/gdatetime.c:383
+#: glib/gdatetime.c:390
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "週三"
 
-#: glib/gdatetime.c:385
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "週四"
 
-#: glib/gdatetime.c:387
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "週五"
 
-#: glib/gdatetime.c:389
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "週六"
 
-#: glib/gdatetime.c:391
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "週日"
@@ -4531,62 +4496,62 @@ msgstr "週日"
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
 #.
-#: glib/gdatetime.c:455
+#: glib/gdatetime.c:462
 msgctxt "full month name with day"
 msgid "January"
 msgstr "一月"
 
-#: glib/gdatetime.c:457
+#: glib/gdatetime.c:464
 msgctxt "full month name with day"
 msgid "February"
 msgstr "二月"
 
-#: glib/gdatetime.c:459
+#: glib/gdatetime.c:466
 msgctxt "full month name with day"
 msgid "March"
 msgstr "三月"
 
-#: glib/gdatetime.c:461
+#: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "April"
 msgstr "四月"
 
-#: glib/gdatetime.c:463
+#: glib/gdatetime.c:470
 msgctxt "full month name with day"
 msgid "May"
 msgstr "五月"
 
-#: glib/gdatetime.c:465
+#: glib/gdatetime.c:472
 msgctxt "full month name with day"
 msgid "June"
 msgstr "六月"
 
-#: glib/gdatetime.c:467
+#: glib/gdatetime.c:474
 msgctxt "full month name with day"
 msgid "July"
 msgstr "七月"
 
-#: glib/gdatetime.c:469
+#: glib/gdatetime.c:476
 msgctxt "full month name with day"
 msgid "August"
 msgstr "八月"
 
-#: glib/gdatetime.c:471
+#: glib/gdatetime.c:478
 msgctxt "full month name with day"
 msgid "September"
 msgstr "九月"
 
-#: glib/gdatetime.c:473
+#: glib/gdatetime.c:480
 msgctxt "full month name with day"
 msgid "October"
 msgstr "十月"
 
-#: glib/gdatetime.c:475
+#: glib/gdatetime.c:482
 msgctxt "full month name with day"
 msgid "November"
 msgstr "十一月"
 
-#: glib/gdatetime.c:477
+#: glib/gdatetime.c:484
 msgctxt "full month name with day"
 msgid "December"
 msgstr "十二月"
@@ -4608,282 +4573,282 @@ msgstr "十二月"
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
 #.
-#: glib/gdatetime.c:542
+#: glib/gdatetime.c:549
 msgctxt "abbreviated month name with day"
 msgid "Jan"
 msgstr "一月"
 
-#: glib/gdatetime.c:544
+#: glib/gdatetime.c:551
 msgctxt "abbreviated month name with day"
 msgid "Feb"
 msgstr "二月"
 
-#: glib/gdatetime.c:546
+#: glib/gdatetime.c:553
 msgctxt "abbreviated month name with day"
 msgid "Mar"
 msgstr "三月"
 
-#: glib/gdatetime.c:548
+#: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Apr"
 msgstr "四月"
 
-#: glib/gdatetime.c:550
+#: glib/gdatetime.c:557
 msgctxt "abbreviated month name with day"
 msgid "May"
 msgstr "五月"
 
-#: glib/gdatetime.c:552
+#: glib/gdatetime.c:559
 msgctxt "abbreviated month name with day"
 msgid "Jun"
 msgstr "六月"
 
-#: glib/gdatetime.c:554
+#: glib/gdatetime.c:561
 msgctxt "abbreviated month name with day"
 msgid "Jul"
 msgstr "七月"
 
-#: glib/gdatetime.c:556
+#: glib/gdatetime.c:563
 msgctxt "abbreviated month name with day"
 msgid "Aug"
 msgstr "八月"
 
-#: glib/gdatetime.c:558
+#: glib/gdatetime.c:565
 msgctxt "abbreviated month name with day"
 msgid "Sep"
 msgstr "九月"
 
-#: glib/gdatetime.c:560
+#: glib/gdatetime.c:567
 msgctxt "abbreviated month name with day"
 msgid "Oct"
 msgstr "十月"
 
-#: glib/gdatetime.c:562
+#: glib/gdatetime.c:569
 msgctxt "abbreviated month name with day"
 msgid "Nov"
 msgstr "十一月"
 
-#: glib/gdatetime.c:564
+#: glib/gdatetime.c:571
 msgctxt "abbreviated month name with day"
 msgid "Dec"
 msgstr "十二月"
 
 #. Translators: 'before midday' indicator
-#: glib/gdatetime.c:581
+#: glib/gdatetime.c:588
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "上午"
 
 #. Translators: 'after midday' indicator
-#: glib/gdatetime.c:584
+#: glib/gdatetime.c:591
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "下午"
 
-#: glib/gdir.c:155
+#: glib/gdir.c:154
 #, c-format
 msgid "Error opening directory “%s”: %s"
 msgstr "開啟目錄「%s」時發生錯誤:%s"
 
-#: glib/gfileutils.c:716 glib/gfileutils.c:808
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "無法配置 %lu 位元組來讀取檔案「%s」"
 
-#: glib/gfileutils.c:733
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "讀取檔案「%s」時發生錯誤:%s"
 
-#: glib/gfileutils.c:769
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "檔案「%s」太過巨大"
 
-#: glib/gfileutils.c:833
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "讀取檔案「%s」失敗:%s"
 
-#: glib/gfileutils.c:881 glib/gfileutils.c:953
+#: glib/gfileutils.c:898 glib/gfileutils.c:970
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "開啟檔案「%s」失敗:%s"
 
-#: glib/gfileutils.c:893
+#: glib/gfileutils.c:910
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
-msgstr "獲取檔案「%s」的性失敗:fstat() 失敗:%s"
+msgstr "獲取檔案「%s」的性失敗:fstat() 失敗:%s"
 
-#: glib/gfileutils.c:923
+#: glib/gfileutils.c:940
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "開啟檔案「%s」失敗:fdopen() 失敗:%s"
 
-#: glib/gfileutils.c:1022
+#: glib/gfileutils.c:1039
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "檔案名稱由「%s」改為「%s」失敗:g_rename() 失敗:%s"
 
-#: glib/gfileutils.c:1057 glib/gfileutils.c:1575
+#: glib/gfileutils.c:1074 glib/gfileutils.c:1592
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "建立檔案「%s」失敗:%s"
 
-#: glib/gfileutils.c:1084
+#: glib/gfileutils.c:1101
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "無法寫入檔案「%s」:write() 失敗:%s"
 
-#: glib/gfileutils.c:1127
+#: glib/gfileutils.c:1144
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "無法寫入檔案「%s」:fsync() 失敗:%s"
 
-#: glib/gfileutils.c:1262
+#: glib/gfileutils.c:1279
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "現存檔案「%s」無法移除:g_unlink() 失敗:%s"
 
-#: glib/gfileutils.c:1541
+#: glib/gfileutils.c:1558
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "範本「%s」無效,不應含有「%s」"
 
 # (Abel) this is file template for mktemp/mkstemp
-#: glib/gfileutils.c:1554
+#: glib/gfileutils.c:1571
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "範本「%s」沒有包含 XXXXXX"
 
-#: glib/gfileutils.c:2116
+#: glib/gfileutils.c:2129 glib/gfileutils.c:2157
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "讀取符號連結「%s」失敗:%s"
 
-#: glib/giochannel.c:1389
+#: glib/giochannel.c:1396
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "無法開啟將「%s」轉換至「%s」的轉換器:%s"
 
-#: glib/giochannel.c:1734
+#: glib/giochannel.c:1749
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "在 g_io_channel_read_line_string 中無法讀取原始資料"
 
-#: glib/giochannel.c:1781 glib/giochannel.c:2039 glib/giochannel.c:2126
+#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
 msgid "Leftover unconverted data in read buffer"
 msgstr "用來讀取資料的緩衝區中仍有未轉換的資料"
 
-#: glib/giochannel.c:1862 glib/giochannel.c:1939
+#: glib/giochannel.c:1877 glib/giochannel.c:1954
 msgid "Channel terminates in a partial character"
 msgstr "在字元未完整之前,輸入管道已經結束"
 
-#: glib/giochannel.c:1925
+#: glib/giochannel.c:1940
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "在 g_io_channel_read_to_end 中無法讀取原始資料"
 
-#: glib/gkeyfile.c:788
+#: glib/gkeyfile.c:789
 msgid "Valid key file could not be found in search dirs"
-msgstr "在資料目錄中找不到有效的設定鍵檔案"
+msgstr "在資料目錄中找不到有效的鍵檔案"
 
-#: glib/gkeyfile.c:825
+#: glib/gkeyfile.c:826
 msgid "Not a regular file"
 msgstr "不是正規的檔案"
 
-#: glib/gkeyfile.c:1270
+#: glib/gkeyfile.c:1275
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
-msgstr "設定鍵檔案中「%s」行並非設定鍵值配對、群組或註解"
+msgstr "鍵檔案中「%s」行並非鍵值配對、群組或註解"
 
-#: glib/gkeyfile.c:1327
+#: glib/gkeyfile.c:1332
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "無效的群組名稱:%s"
 
-#: glib/gkeyfile.c:1349
+#: glib/gkeyfile.c:1354
 msgid "Key file does not start with a group"
-msgstr "設定鍵檔案並非以群組開頭"
+msgstr "鍵檔案並非以群組開頭"
 
-#: glib/gkeyfile.c:1375
+#: glib/gkeyfile.c:1380
 #, c-format
 msgid "Invalid key name: %s"
-msgstr "無效的設定鍵名稱:%s"
+msgstr "無效的鍵名稱:%s"
 
-#: glib/gkeyfile.c:1402
+#: glib/gkeyfile.c:1407
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
-msgstr "設定鍵檔案包含不支援的編碼「%s」"
+msgstr "鍵檔案包含不支援的編碼「%s」"
 
-#: glib/gkeyfile.c:1645 glib/gkeyfile.c:1818 glib/gkeyfile.c:3271
-#: glib/gkeyfile.c:3334 glib/gkeyfile.c:3464 glib/gkeyfile.c:3594
-#: glib/gkeyfile.c:3738 glib/gkeyfile.c:3967 glib/gkeyfile.c:4034
+#: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
+#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
+#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
 #, c-format
 msgid "Key file does not have group “%s”"
-msgstr "設定鍵檔案沒有群組「%s」"
+msgstr "鍵檔案沒有群組「%s」"
 
-#: glib/gkeyfile.c:1773
+#: glib/gkeyfile.c:1778
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
-msgstr "設定鍵檔案的群組「%2$s」中沒有設定鍵「%1$s」"
+msgstr "鍵檔案的「%2$s」群組中沒有「%1$s」鍵"
 
-#: glib/gkeyfile.c:1935 glib/gkeyfile.c:2051
+#: glib/gkeyfile.c:1940 glib/gkeyfile.c:2056
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
-msgstr "設定鍵檔案包含的設定鍵「%s」(數值為「%s」) 並非 UTF-8"
+msgstr "鍵檔案包含的「%s」鍵(值為「%s」)並非 UTF-8"
 
-#: glib/gkeyfile.c:1955 glib/gkeyfile.c:2071 glib/gkeyfile.c:2513
+#: glib/gkeyfile.c:1960 glib/gkeyfile.c:2076 glib/gkeyfile.c:2518
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
-msgstr "設定鍵檔案包含的設定鍵「%s」的數值無法解譯。"
+msgstr "鍵檔案包含的「%s」鍵的值無法解譯。"
 
-#: glib/gkeyfile.c:2731 glib/gkeyfile.c:3100
+#: glib/gkeyfile.c:2736 glib/gkeyfile.c:3105
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
-msgstr "設定鍵檔案包含的群組「%2$s」中設定鍵「%1$s」數值無法解譯。"
+msgstr "鍵檔案包含的「%2$s」群組中「%1$s」鍵的值無法解譯。"
 
-#: glib/gkeyfile.c:2809 glib/gkeyfile.c:2886
+#: glib/gkeyfile.c:2814 glib/gkeyfile.c:2891
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
-msgstr "群組「%2$s」中設定鍵「%1$s」包含數值「%3$s」,但預期為「%4$s」"
+msgstr "「%2$s」群組中的「%1$s」鍵包含「%3$s」值,但預期為「%4$s」"
 
-#: glib/gkeyfile.c:4274
+#: glib/gkeyfile.c:4284
 msgid "Key file contains escape character at end of line"
-msgstr "設定鍵檔案在行尾包含跳出字元"
+msgstr "鍵檔案在行尾包含跳出字元"
 
-#: glib/gkeyfile.c:4296
+#: glib/gkeyfile.c:4306
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
-msgstr "設定鍵檔案含有不正確的「跳出字元」「%s」"
+msgstr "鍵檔案含有不正確的「跳出字元」「%s」"
 
-#: glib/gkeyfile.c:4440
+#: glib/gkeyfile.c:4450
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
-msgstr "數值「%s」不能被解譯為數字。"
+msgstr "「%s」值不能被解譯為數字。"
 
-#: glib/gkeyfile.c:4454
+#: glib/gkeyfile.c:4464
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "整數值「%s」超出範圍"
 
-#: glib/gkeyfile.c:4487
+#: glib/gkeyfile.c:4497
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
-msgstr "數值「%s」不能被解譯為浮點數。"
+msgstr "「%s」值不能被解譯為浮點數。"
 
-#: glib/gkeyfile.c:4526
+#: glib/gkeyfile.c:4536
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
-msgstr "數值「%s」不能被解譯為布林值。"
+msgstr "「%s」值不能被解譯為布林值。"
 
 #: glib/gmappedfile.c:129
 #, c-format
 msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
-msgstr "獲取檔案 「%s%s%s%s」的屬性失敗:fstat() 失敗:%s"
+msgstr "檔案 「%s%s%s%s」的特性取得失敗:fstat() 失敗:%s"
 
 #: glib/gmappedfile.c:195
 #, c-format
@@ -4895,83 +4860,64 @@ msgstr "對應檔案 %s%s%s%s 失敗:mmap() 失敗:%s"
 msgid "Failed to open file “%s”: open() failed: %s"
 msgstr "開啟檔案「%s」失敗:open() 失敗:%s"
 
-#: glib/gmarkup.c:397 glib/gmarkup.c:439
+#: glib/gmarkup.c:398 glib/gmarkup.c:440
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "第 %d 列第 %d 個字發生錯誤:"
 
-#: glib/gmarkup.c:461 glib/gmarkup.c:544
-#, fuzzy, c-format
-#| msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
+#: glib/gmarkup.c:462 glib/gmarkup.c:545
+#, c-format
 msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
-msgstr "名稱中無效的 UTF-8 編碼文字 - 不是合法的「%s」"
+msgstr "名稱中無效的 UTF-8 編碼文字 — 「%s」無效"
 
-#: glib/gmarkup.c:472
-#, fuzzy, c-format
-#| msgid "'%s' is not a valid name"
+#: glib/gmarkup.c:473
+#, c-format
 msgid "“%s” is not a valid name"
-msgstr "「%s」不是一個有效的名稱"
+msgstr "「%s」非有效名稱"
 
-#: glib/gmarkup.c:488
-#, fuzzy, c-format
-#| msgid "'%s' is not a valid name: '%c'"
+#: glib/gmarkup.c:489
+#, c-format
 msgid "“%s” is not a valid name: “%c”"
-msgstr "「%s」不是一個有效的名稱「%c」"
+msgstr "「%s」非有效名稱:「%c」"
 
-#: glib/gmarkup.c:610
+#: glib/gmarkup.c:613
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "第 %d 列發生錯誤:%s"
 
-#: glib/gmarkup.c:687
-#, fuzzy, 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"
+#: glib/gmarkup.c:690
+#, 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 "無法解析‘%-.*s’,字元參引內應該含有數字(例如 &#234;)─ 可能是數字太大"
-
-#: glib/gmarkup.c:699
-#, fuzzy
-#| 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 ""
+"無法解析「%-.*s」,字元參照內應該含有數字(例如 &#234;)─ 可能是數字太大"
+
+#: glib/gmarkup.c:702
 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 ""
-"字元參的結束部分不是分號;很可能您想使用 & 字元但未將它變為實體 ─ 請將 & 轉"
+"字元參的結束部分不是分號;很可能您想使用 & 字元但未將它變為實體 ─ 請將 & 轉"
 "換為 &amp;"
 
-#: glib/gmarkup.c:725
-#, fuzzy, c-format
-#| msgid "Character reference '%-.*s' does not encode a permitted character"
+#: glib/gmarkup.c:728
+#, c-format
 msgid "Character reference “%-.*s” does not encode a permitted character"
-msgstr "字元參引‘%-.*s’無法表示任何能接受的字元"
+msgstr "字元參照「%-.*s」無法表示任何能接受的字元"
 
-#: glib/gmarkup.c:763
-#, fuzzy
-#| msgid ""
-#| "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+#: glib/gmarkup.c:766
 msgid ""
 "Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
-msgstr "出現空白的實體‘&;’;可用的實體為:&amp; &quot; &lt; &gt; &apos;"
+msgstr "出現空白的實體「&;」;可用的實體為:&amp; &quot; &lt; &gt; &apos;"
 
-#: glib/gmarkup.c:771
-#, fuzzy, c-format
-#| msgid "Entity name '%-.*s' is not known"
+#: glib/gmarkup.c:774
+#, c-format
 msgid "Entity name “%-.*s” is not known"
-msgstr "實體名稱 '%-.*s' 意義不明"
+msgstr "實體名稱「%-.*s」意義不明"
 
-#: glib/gmarkup.c:776
-#, fuzzy
-#| 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;"
+#: glib/gmarkup.c:779
 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;"
@@ -4979,218 +4925,191 @@ msgstr ""
 "實體的結束部分不是分號;很可能您想使用 & 字元但未將它變為實體 ─ 請將 & 轉換"
 "為 &amp;"
 
-#: glib/gmarkup.c:1182
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "文件開始必須為一元素(例如 <book>)"
 
-#: glib/gmarkup.c:1222
-#, fuzzy, c-format
-#| msgid ""
-#| "'%s' is not a valid character following a '<' character; it may not begin "
-#| "an element name"
+#: glib/gmarkup.c:1233
+#, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
-msgstr "‘<’字元後的「%s」不是有效的字元;這樣不可能是元素名稱的開始部份"
+msgstr "「<」字元後的「%s」不是有效的字元;這樣不可能是元素名稱的開始部份"
 
-#: glib/gmarkup.c:1264
-#, fuzzy, c-format
-#| msgid ""
-#| "Odd character '%s', expected a '>' character to end the empty-element tag "
-#| "'%s'"
+#: glib/gmarkup.c:1276
+#, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
 "“%s”"
-msgstr "字元「%s」只有一半,空元素標籤「%s」的結尾應該以‘>’字元結束"
+msgstr "不尋常的「%s」字元,空元素標籤「%s」的結尾應該以「>」字元結束"
+
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "「%s」元素中的特性過多"
 
-#: glib/gmarkup.c:1345
-#, fuzzy, c-format
-#| msgid ""
-#| "Odd character '%s', expected a '=' after attribute name '%s' of element "
-#| "'%s'"
+#: glib/gmarkup.c:1366
+#, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
-msgstr "不尋常的字元「%s」,屬性名稱「%s」(屬於元素「%s」)後應該是‘=’字元"
-
-#: glib/gmarkup.c:1386
-#, fuzzy, 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 "不尋常的「%s」字元,特性名稱「%s」(屬於「%s」元素)後應該是「=」字元"
+
+#: glib/gmarkup.c:1408
+#, 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 ""
-"不尋常的字元「%s」,元素「%s」的開始標籤應該以‘>’或‘/’字元終結,也可以是屬"
-"性;或許您在屬性名稱中使用了無效的字元"
-
-#: glib/gmarkup.c:1430
-#, fuzzy, c-format
-#| msgid ""
-#| "Odd character '%s', expected an open quote mark after the equals sign "
-#| "when giving value for attribute '%s' of element '%s'"
+"不尋常的「%s」字元,「%s」元素的開始標籤應該以「>」或「/」字元結束,也可以是"
+"特性;或許您在特性名稱中使用的字元無效"
+
+#: glib/gmarkup.c:1453
+#, 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 ""
-"不尋常的字元「%s」,當指定屬性「%s」的值(屬於元素「%s」)時,等號後應該出現"
+"不尋常的「%s」字元,當指定「%s」特性的值(屬於「%s」元素)時,等號後應該出現"
 "開引號"
 
-#: glib/gmarkup.c:1563
-#, fuzzy, c-format
-#| msgid ""
-#| "'%s' is not a valid character following the characters '</'; '%s' may not "
-#| "begin an element name"
+#: glib/gmarkup.c:1587
+#, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
-msgstr "‘</’字元後的「%s」不是有效的字元;「%s」不可能是元素名稱的開始部份"
+msgstr "「</」字元後的「%s」不是有效的字元;「%s」不可能是元素名稱的開始部份"
 
-#: glib/gmarkup.c:1599
-#, fuzzy, c-format
-#| msgid ""
-#| "'%s' is not a valid character following the close element name '%s'; the "
-#| "allowed character is '>'"
+#: glib/gmarkup.c:1625
+#, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
 "allowed character is “>”"
-msgstr "字元「%s」是無效的(位置在關閉元素「%s」末端);允許的字元為「>」"
+msgstr "「%s」字元無效(位置在關閉「%s」元素末端);允許的字元為「>」"
 
-#: glib/gmarkup.c:1610
-#, fuzzy, c-format
-#| msgid "Element '%s' was closed, no element is currently open"
+#: glib/gmarkup.c:1637
+#, c-format
 msgid "Element “%s” was closed, no element is currently open"
-msgstr "元素「%s」已關閉,沒有開啟中的元素"
+msgstr "「%s」元素已關閉,沒有開啟中的元素"
 
-#: glib/gmarkup.c:1619
-#, fuzzy, c-format
-#| msgid "Element '%s' was closed, but the currently open element is '%s'"
+#: glib/gmarkup.c:1646
+#, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
-msgstr "元素「%s」已關閉,但開啟中的元素是「%s」"
+msgstr "「%s」元素已關閉,但開啟中的元素是「%s」"
 
-#: glib/gmarkup.c:1772
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "文件完全空白或只含有空白字元"
 
-#: glib/gmarkup.c:1786
-#, fuzzy
-#| msgid "Document ended unexpectedly just after an open angle bracket '<'"
+#: glib/gmarkup.c:1813
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
-msgstr "文件在尖角括號‘<’後突然終止"
+msgstr "文件在尖角括號「<」後突然終止"
 
-#: glib/gmarkup.c:1794 glib/gmarkup.c:1839
-#, fuzzy, c-format
-#| msgid ""
-#| "Document ended unexpectedly with elements still open - '%s' was the last "
-#| "element opened"
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
+#, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 msgstr "在仍然有開啟中的元素時,文件突然結束 ─「%s」是最後一個開啟的元素"
 
-#: glib/gmarkup.c:1802
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
 "the tag <%s/>"
 msgstr "文件突然結束,本來應該出現用來關閉標籤 <%s/> 的尖角括號"
 
-#: glib/gmarkup.c:1808
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "在元素的名稱內,文件突然結束"
 
-#: glib/gmarkup.c:1814
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
-msgstr "在性名稱內,文件突然結束"
+msgstr "在性名稱內,文件突然結束"
 
-#: glib/gmarkup.c:1819
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "在元素的開啟標籤內,文件突然結束"
 
-#: glib/gmarkup.c:1825
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
-msgstr "在屬性名稱的等號後,文件突然結束;沒有屬性值"
+msgstr "在特性名稱的等號後,文件突然結束;沒有特性值"
 
-#: glib/gmarkup.c:1832
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
-msgstr "在性值內,文件突然結束"
+msgstr "在性值內,文件突然結束"
 
-#: glib/gmarkup.c:1849
-#, fuzzy, c-format
-#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+#: glib/gmarkup.c:1876
+#, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
-msgstr "在元素「%s」的關閉標籤內,文件突然結束"
+msgstr "在「%s」元素的關閉標籤內,文件突然結束"
 
-#: glib/gmarkup.c:1853
-#, fuzzy
-#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+#: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
-msgstr "在元素「%s」的關閉標籤內,文件突然結束"
+msgstr "在未開啟「%s」元素的關閉標籤內,文件突然結束"
 
-#: glib/gmarkup.c:1859
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "在註解或處理指示內,文件突然結束"
 
-#: glib/goption.c:861
+#: glib/goption.c:868
 msgid "[OPTION…]"
 msgstr "[選項…]"
 
-#: glib/goption.c:977
+#: glib/goption.c:984
 msgid "Help Options:"
 msgstr "說明選項:"
 
-#: glib/goption.c:978
+#: glib/goption.c:985
 msgid "Show help options"
 msgstr "顯示說明的選項"
 
-#: glib/goption.c:984
+#: glib/goption.c:991
 msgid "Show all help options"
 msgstr "顯示所有的說明選項"
 
-#: glib/goption.c:1047
+#: glib/goption.c:1054
 msgid "Application Options:"
 msgstr "應用程式選項:"
 
-#: glib/goption.c:1049
+#: glib/goption.c:1056
 msgid "Options:"
 msgstr "選項:"
 
-#: glib/goption.c:1113 glib/goption.c:1183
+#: glib/goption.c:1120 glib/goption.c:1190
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "無法給 %2$s 解析整數值「%1$s」"
 
-#: glib/goption.c:1123 glib/goption.c:1191
+#: glib/goption.c:1130 glib/goption.c:1198
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "%2$s 的整數值「%1$s」超出範圍"
 
-#: glib/goption.c:1148
+#: glib/goption.c:1155
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "無法給 %2$s 解析雙精度浮點數「%1$s」"
 
-#: glib/goption.c:1156
+#: glib/goption.c:1163
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "%2$s 的雙精度浮點數「%1$s」超出範圍"
 
-#: glib/goption.c:1448 glib/goption.c:1527
+#: glib/goption.c:1455 glib/goption.c:1534
 #, c-format
 msgid "Error parsing option %s"
 msgstr "解析 %s 選項時發生錯誤"
 
-#: glib/goption.c:1558 glib/goption.c:1671
+#: glib/goption.c:1565 glib/goption.c:1678
 #, c-format
 msgid "Missing argument for %s"
 msgstr "缺少 %s 的參數"
 
-#: glib/goption.c:2132
+#: glib/goption.c:2189
 #, c-format
 msgid "Unknown option %s"
 msgstr "不明的選項 %s"
@@ -5356,7 +5275,7 @@ msgstr "不明的 POSIX 類別名稱"
 
 #: glib/gregex.c:415
 msgid "POSIX collating elements are not supported"
-msgstr "不支援 POSIX 整理元"
+msgstr "不支援 POSIX 整理元"
 
 #: glib/gregex.c:418
 msgid "character value in \\x{...} sequence is too large"
@@ -5547,15 +5466,15 @@ msgstr "預期數字"
 msgid "illegal symbolic reference"
 msgstr "不合法的符號參照"
 
-#: glib/gregex.c:2582
+#: glib/gregex.c:2583
 msgid "stray final “\\”"
 msgstr "缺少最後的「\\」"
 
-#: glib/gregex.c:2586
+#: glib/gregex.c:2587
 msgid "unknown escape sequence"
 msgstr "不明的跳脫序列"
 
-#: glib/gregex.c:2596
+#: glib/gregex.c:2597
 #, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "當解析於字元 %2$lu 的取代文字「%1$s」時發生錯誤:%3$s"
@@ -5582,342 +5501,390 @@ msgstr "字串完結前仍沒有對應於 %c 的引號 (字串為「%s」)"
 msgid "Text was empty (or contained only whitespace)"
 msgstr "文字是空白的(或只含有空白字元)"
 
-#: glib/gspawn.c:302
+#: glib/gspawn.c:315
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "無法從副進程讀取資料 (%s)"
 
-#: glib/gspawn.c:450
+#: glib/gspawn.c:460
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr "當 select() 從子程序讀取資料時發生未預期的錯誤 (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
+msgstr "從子程序 (%s) 讀取資料時發生未預期的錯誤"
 
-#: glib/gspawn.c:535
+#: glib/gspawn.c:545
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "waitpid() 發生未預期的錯誤 (%s)"
 
-#: glib/gspawn.c:1043 glib/gspawn-win32.c:1318
+#: glib/gspawn.c:1053 glib/gspawn-win32.c:1329
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "子程序以代碼 %ld 結束"
 
-#: glib/gspawn.c:1051
+#: glib/gspawn.c:1061
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "子程序被信號 %ld 中止"
 
-#: glib/gspawn.c:1058
+#: glib/gspawn.c:1068
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "子程序被信號 %ld 停止"
 
-#: glib/gspawn.c:1065
+#: glib/gspawn.c:1075
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "子程序異常結束"
 
-#: glib/gspawn.c:1360 glib/gspawn-win32.c:339 glib/gspawn-win32.c:347
+#: glib/gspawn.c:1475 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "無法從管道讀取資料 (%s)"
 
-#: glib/gspawn.c:1596
-#, fuzzy, c-format
-#| msgid "Failed to execute child process “%s” (%s)"
+#: glib/gspawn.c:1723
+#, c-format
 msgid "Failed to spawn child process “%s” (%s)"
-msgstr "無法執行副程序「%s」(%s)"
+msgstr "無法產生副程序「%s」(%s)"
 
-#: glib/gspawn.c:1635
+#: glib/gspawn.c:1762
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "無法衍生進程 (%s)"
 
-#: glib/gspawn.c:1784 glib/gspawn-win32.c:370
+#: glib/gspawn.c:1911 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "無法進入目錄「%s」(%s)"
 
-#: glib/gspawn.c:1794
+#: glib/gspawn.c:1921
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "無法執行副程序「%s」(%s)"
 
-#: glib/gspawn.c:1804
+#: glib/gspawn.c:1931
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "無法將副進程的輸出或輸入重新導向 (%s)"
 
-#: glib/gspawn.c:1813
+#: glib/gspawn.c:1940
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "無法衍生副進程 (%s)"
 
-#: glib/gspawn.c:1821
+#: glib/gspawn.c:1948
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "執行副程序「%s」時發生不明的錯誤"
 
-#: glib/gspawn.c:1845
+#: glib/gspawn.c:1972
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "無法從 child pid pipe 讀取足夠的資料 (%s)"
 
-#: glib/gspawn-win32.c:283
+#: glib/gspawn-win32.c:294
 msgid "Failed to read data from child process"
 msgstr "無法從副進程讀取資料"
 
-#: glib/gspawn-win32.c:300
+#: glib/gspawn-win32.c:311
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "無法建立管道來和副進程溝通 (%s)"
 
-#: glib/gspawn-win32.c:376 glib/gspawn-win32.c:381 glib/gspawn-win32.c:500
+#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "無法執行副進程 (%s)"
 
-#: glib/gspawn-win32.c:450
+#: glib/gspawn-win32.c:461
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "程式名稱無效:%s"
 
-#: glib/gspawn-win32.c:460 glib/gspawn-win32.c:714
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
-msgstr "第 %d 個引數中含無效的字串:%s"
+msgstr "第 %d 個引數向量中含無效的字串:%s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:729
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "環境變數中的字串無效:%s"
 
-#: glib/gspawn-win32.c:710
+#: glib/gspawn-win32.c:721
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "無效的工作目錄:%s"
 
-#: glib/gspawn-win32.c:772
+#: glib/gspawn-win32.c:783
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "無法執行協助程式 (%s)"
 
-#: glib/gspawn-win32.c:1045
+#: glib/gspawn-win32.c:1056
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr "當 g_io_channel_win32_poll() 從副進程讀取資料時發生無法預計的錯誤"
 
-#: glib/gstrfuncs.c:3247 glib/gstrfuncs.c:3348
+#: glib/gstrfuncs.c:3309 glib/gstrfuncs.c:3411
 msgid "Empty string is not a number"
-msgstr ""
+msgstr "空字串不是數字"
 
-#: glib/gstrfuncs.c:3271
-#, fuzzy, c-format
-#| msgid "'%s' is not a valid name"
+#: glib/gstrfuncs.c:3333
+#, c-format
 msgid "“%s” is not a signed number"
-msgstr "「%s」不是一個有效的名稱"
+msgstr "「%s」不是有號數字"
 
-#: glib/gstrfuncs.c:3281 glib/gstrfuncs.c:3384
+#: glib/gstrfuncs.c:3343 glib/gstrfuncs.c:3447
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
-msgstr ""
+msgstr "「%s」數字超出範圍 [%s, %s]"
 
-#: glib/gstrfuncs.c:3374
-#, fuzzy, c-format
-#| msgid "'%s' is not a valid name"
+#: glib/gstrfuncs.c:3437
+#, c-format
 msgid "“%s” is not an unsigned number"
-msgstr "「%s」不是一個有效的名稱"
+msgstr "「%s」不是無號數字"
 
-#: glib/gutf8.c:811
+#: glib/gutf8.c:817
 msgid "Failed to allocate memory"
 msgstr "配置記憶體失敗"
 
-#: glib/gutf8.c:944
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "字元不在 UTF-8 範圍之內"
 
-#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
-#: glib/gutf8.c:1332 glib/gutf8.c:1429
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
+#: glib/gutf8.c:1338 glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "轉換輸入資料時出現無效的字元次序"
 
-#: glib/gutf8.c:1343 glib/gutf8.c:1440
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "字元不在 UTF-16 範圍之內"
 
-#: glib/gutils.c:2244
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2756
 #, c-format
-msgid "%.1f kB"
-msgstr "%.1f kB"
+msgid "%.1f kB"
+msgstr "%.1f kB"
 
-#: glib/gutils.c:2245 glib/gutils.c:2451
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2758
 #, c-format
-msgid "%.1f MB"
+msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2246 glib/gutils.c:2456
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2760
 #, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
+msgid "%.1f GB"
+msgstr "%.1f GB"
 
-#: glib/gutils.c:2247 glib/gutils.c:2461
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2762
 #, c-format
-msgid "%.1f TB"
-msgstr "%.1f TB"
+msgid "%.1f TB"
+msgstr "%.1f TB"
 
-#: glib/gutils.c:2248 glib/gutils.c:2466
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2764
 #, c-format
-msgid "%.1f PB"
-msgstr "%.1f PB"
+msgid "%.1f PB"
+msgstr "%.1f PB"
 
-#: glib/gutils.c:2249 glib/gutils.c:2471
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2766
 #, c-format
-msgid "%.1f EB"
-msgstr "%.1f EB"
+msgid "%.1f EB"
+msgstr "%.1f EB"
 
-#: glib/gutils.c:2252
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2770
 #, c-format
-msgid "%.1f KiB"
-msgstr "%.1f KiB"
+msgid "%.1f KiB"
+msgstr "%.1f KiB"
 
-#: glib/gutils.c:2253
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2772
 #, c-format
-msgid "%.1f MiB"
-msgstr "%.1f MiB"
+msgid "%.1f MiB"
+msgstr "%.1f MiB"
 
-#: glib/gutils.c:2254
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2774
 #, c-format
-msgid "%.1f GiB"
-msgstr "%.1f GiB"
+msgid "%.1f GiB"
+msgstr "%.1f GiB"
 
-#: glib/gutils.c:2255
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2776
 #, c-format
-msgid "%.1f TiB"
-msgstr "%.1f TiB"
+msgid "%.1f TiB"
+msgstr "%.1f TiB"
 
-#: glib/gutils.c:2256
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2778
 #, c-format
-msgid "%.1f PiB"
-msgstr "%.1f PiB"
+msgid "%.1f PiB"
+msgstr "%.1f PiB"
 
-#: glib/gutils.c:2257
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2780
 #, c-format
-msgid "%.1f EiB"
-msgstr "%.1f EiB"
+msgid "%.1f EiB"
+msgstr "%.1f EiB"
 
-#: glib/gutils.c:2260
-#, fuzzy, c-format
-#| msgid "%.1f kB"
-msgid "%.1f kb"
-msgstr "%.1f kB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2784
+#, c-format
+msgid "%.1f kb"
+msgstr "%.1f kb"
 
-#: glib/gutils.c:2261
-#, fuzzy, c-format
-#| msgid "%.1f MB"
-msgid "%.1f Mb"
-msgstr "%.1f MB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2786
+#, c-format
+msgid "%.1f Mb"
+msgstr "%.1f Mb"
 
-#: glib/gutils.c:2262
-#, fuzzy, c-format
-#| msgid "%.1f GB"
-msgid "%.1f Gb"
-msgstr "%.1f GB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2788
+#, c-format
+msgid "%.1f Gb"
+msgstr "%.1f Gb"
 
-#: glib/gutils.c:2263
-#, fuzzy, c-format
-#| msgid "%.1f TB"
-msgid "%.1f Tb"
-msgstr "%.1f TB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2790
+#, c-format
+msgid "%.1f Tb"
+msgstr "%.1f Tb"
 
-#: glib/gutils.c:2264
-#, fuzzy, c-format
-#| msgid "%.1f PB"
-msgid "%.1f Pb"
-msgstr "%.1f PB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2792
+#, c-format
+msgid "%.1f Pb"
+msgstr "%.1f Pb"
 
-#: glib/gutils.c:2265
-#, fuzzy, c-format
-#| msgid "%.1f EB"
-msgid "%.1f Eb"
-msgstr "%.1f EB"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2794
+#, c-format
+msgid "%.1f Eb"
+msgstr "%.1f Eb"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2798
+#, c-format
+msgid "%.1f Kib"
+msgstr "%.1f Kib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2800
+#, c-format
+msgid "%.1f Mib"
+msgstr "%.1f Mib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2802
+#, c-format
+msgid "%.1f Gib"
+msgstr "%.1f Gib"
 
-#: glib/gutils.c:2268
-#, fuzzy, c-format
-#| msgid "%.1f KiB"
-msgid "%.1f Kib"
-msgstr "%.1f KiB"
-
-#: glib/gutils.c:2269
-#, fuzzy, c-format
-#| msgid "%.1f MiB"
-msgid "%.1f Mib"
-msgstr "%.1f MiB"
-
-#: glib/gutils.c:2270
-#, fuzzy, c-format
-#| msgid "%.1f GiB"
-msgid "%.1f Gib"
-msgstr "%.1f GiB"
-
-#: glib/gutils.c:2271
-#, fuzzy, c-format
-#| msgid "%.1f TiB"
-msgid "%.1f Tib"
-msgstr "%.1f TiB"
-
-#: glib/gutils.c:2272
-#, fuzzy, c-format
-#| msgid "%.1f PiB"
-msgid "%.1f Pib"
-msgstr "%.1f PiB"
-
-#: glib/gutils.c:2273
-#, fuzzy, c-format
-#| msgid "%.1f EiB"
-msgid "%.1f Eib"
-msgstr "%.1f EiB"
-
-#: glib/gutils.c:2307 glib/gutils.c:2433
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2804
+#, c-format
+msgid "%.1f Tib"
+msgstr "%.1f Tib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2806
+#, c-format
+msgid "%.1f Pib"
+msgstr "%.1f Pib"
+
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2808
+#, c-format
+msgid "%.1f Eib"
+msgstr "%.1f Eib"
+
+#: glib/gutils.c:2842 glib/gutils.c:2959
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u 位元組"
 
-#: glib/gutils.c:2311
-#, fuzzy, c-format
-#| msgid "%u byte"
-#| msgid_plural "%u bytes"
+#: glib/gutils.c:2846
+#, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
-msgstr[0] "%u 位元"
+msgstr[0] "%u 位元"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2378
+#: glib/gutils.c:2913
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s 位元組"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2383
-#, fuzzy, c-format
-#| msgid "%s byte"
-#| msgid_plural "%s bytes"
+#: glib/gutils.c:2918
+#, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
-msgstr[0] "%s 位元"
+msgstr[0] "%s 位元"
 
 #. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
 #. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2446
+#: glib/gutils.c:2972
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
+#: glib/gutils.c:2977
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: glib/gutils.c:2982
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: glib/gutils.c:2987
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
+
+#: glib/gutils.c:2992
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
+
+#: glib/gutils.c:2997
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
+
+#~ msgid "Error in address “%s” — the family attribute is malformed"
+#~ msgstr "位址「%s」有錯誤 — family 屬性的格式不良"
+
+#~ msgid "Mounted %s at %s\n"
+#~ msgstr "%s 已掛載於 %s\n"
+
+#~ msgid "; ignoring override for this key.\n"
+#~ msgstr ";忽略這個設定鍵的覆蓋。\n"
+
+#~ msgid " and --strict was specified; exiting.\n"
+#~ msgstr "並且指定了 --strict;正在結束。\n"
+
+#~ msgid "Ignoring override for this key.\n"
+#~ msgstr "忽略這個設定鍵的覆蓋。\n"
+
+#~ msgid "doing nothing.\n"
+#~ msgstr "不做任何事。\n"
+
 #~ msgid "No such method '%s'"
 #~ msgstr "沒有這個方法「%s」"
 
@@ -6009,3 +5976,31 @@ msgstr "%.1f KB"
 
 #~ msgid "Key file does not have key '%s'"
 #~ msgstr "設定鍵檔案沒有設定鍵‘%s’"
+
+#, c-format
+#~ msgid "Extra nanoseconds %d for UNIX timestamp %lld are negative"
+#~ msgstr "UNIX 時間戳 %2$lld 的延伸奈秒 %1$d 是負數"
+
+#, c-format
+#~ msgid "Extra nanoseconds %d for UNIX timestamp %lld reach 1 second"
+#~ msgstr "UNIX 時間戳 %2$lld 的延伸奈秒 %1$d 達 1 秒"
+
+#, c-format
+#~ msgid "UNIX timestamp %lld does not fit into 64 bits"
+#~ msgstr "UNIX 時間戳 %lld 不能完整放入 64 位元"
+
+#, c-format
+#~ msgid "UNIX timestamp %lld is outside of the range supported by Windows"
+#~ msgstr "UNIX 時間戳 %lld 超出 Windows 所支援的範圍"
+
+#, c-format
+#~ msgid "File name “%s” cannot be converted to UTF-16"
+#~ msgstr "「%s」檔名無法轉換為 UTF-16"
+
+#, c-format
+#~ msgid "File “%s” cannot be opened: Windows Error %lu"
+#~ msgstr "無法開啟「%s」檔案:Windows 錯誤 %lu"
+
+#, c-format
+#~ msgid "Error setting modification or access time for file “%s”: %lu"
+#~ msgstr "設定「%s」檔案的修改或存取時間時發生錯誤:%lu"
diff --git a/subprojects/gtk-doc.wrap b/subprojects/gtk-doc.wrap
new file mode 100644 (file)
index 0000000..7469d02
--- /dev/null
@@ -0,0 +1,4 @@
+[wrap-git]
+directory=gtk-doc
+url=https://gitlab.gnome.org/GNOME/gtk-doc.git
+revision=master
index 6aff13f..ff9ab66 100644 (file)
@@ -5,6 +5,6 @@ source_url = https://zlib.net/fossils/zlib-1.2.11.tar.gz
 source_filename = zlib-1.2.11.tar.gz
 source_hash = c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
 
-patch_url = https://wrapdb.mesonbuild.com/v1/projects/zlib/1.2.11/3/get_zip
+patch_url = https://github.com/mesonbuild/zlib/releases/download/1.2.11-3/zlib.zip
 patch_filename = zlib-1.2.11-3-wrap.zip
 patch_hash = f07dc491ab3d05daf00632a0591e2ae61b470615b5b73bcf9b3f061fff65cff0
diff --git a/tests/atomic-test.c b/tests/atomic-test.c
deleted file mode 100644 (file)
index 3dd4b19..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <glib.h>
-
-/* Obviously we can't test that the operations are atomic, but we can
- * at least test, that they do, what they ought to do */
-
-int 
-main (int   argc,
-      char *argv[])
-{
-  gint i;
-  gint atomic = -5;
-  gpointer atomic_pointer = NULL;
-  gpointer biggest_pointer = (gpointer)((gsize)atomic_pointer - 1);
-
-  for (i = 0; i < 15; i++)
-    g_atomic_int_inc (&atomic);
-  g_assert (atomic == 10);
-  for (i = 0; i < 9; i++)
-    g_assert (!g_atomic_int_dec_and_test (&atomic));
-  g_assert (g_atomic_int_dec_and_test (&atomic));
-  g_assert (atomic == 0);
-
-  g_assert (g_atomic_int_add (&atomic, 5) == 0);
-  g_assert (atomic == 5);
-
-  g_assert (g_atomic_int_add (&atomic, -10) == 5);
-  g_assert (atomic == -5);
-
-  g_atomic_int_add (&atomic, 20);
-  g_assert (atomic == 15);
-
-  g_atomic_int_add (&atomic, -35);
-  g_assert (atomic == -20);
-
-  g_assert (atomic == g_atomic_int_get (&atomic));
-
-  g_assert (g_atomic_int_compare_and_exchange (&atomic, -20, 20));
-  g_assert (atomic == 20);
-  
-  g_assert (!g_atomic_int_compare_and_exchange (&atomic, 42, 12));
-  g_assert (atomic == 20);
-  
-  g_assert (g_atomic_int_compare_and_exchange (&atomic, 20, G_MAXINT));
-  g_assert (atomic == G_MAXINT);
-
-  g_assert (g_atomic_int_compare_and_exchange (&atomic, G_MAXINT, G_MININT));
-  g_assert (atomic == G_MININT);
-
-  g_assert (g_atomic_pointer_compare_and_exchange (&atomic_pointer, 
-                                                  NULL, biggest_pointer));
-  g_assert (atomic_pointer == biggest_pointer);
-
-  g_assert (atomic_pointer == g_atomic_pointer_get (&atomic_pointer));
-
-  g_assert (g_atomic_pointer_compare_and_exchange (&atomic_pointer, 
-                                                  biggest_pointer, NULL));
-  g_assert (atomic_pointer == NULL);
-  
-  return 0;
-}
index e4ea226..6741f8f 100644 (file)
@@ -19,7 +19,6 @@ tests = {
   'testglib' : {'tap' : true},
   'testgdate' : {},
   'datetime' : {},
-  'atomic-test' : {},
   'bit-test' : {},
   'child-test' : {},
   'completion-test' : {},
index d4a5111..526c75a 100755 (executable)
@@ -38,7 +38,7 @@ if ! type gdb >/dev/null 2>&1; then
 fi
 
 echo_v "Running gdb on assert-msg-test"
-OUT=$($LIBTOOL --mode=execute gdb --batch -x ${srcdir:-.}/assert-msg-test.gdb ./assert-msg-test 2> $error_out) || fail "failed to run gdb"
+OUT=$($LIBTOOL --mode=execute gdb --batch -x "${srcdir:-.}/assert-msg-test.gdb" ./assert-msg-test 2> $error_out) || fail "failed to run gdb"
 
 echo_v "Checking if assert message is in __glib_assert_msg"
 if ! echo "$OUT" | grep -q '^$1.*"GLib:ERROR:.*assert-msg-test.c:.*:.*main.*: assertion failed: (42 < 0)"'; then
index 24f3d69..fe6f020 100755 (executable)
@@ -13,25 +13,23 @@ echo_v ()
   fi
 }
 
-error_out=/dev/null
 if [ "$1" = "-v" ]; then
   verbose=1
-  error_out=/dev/stderr
 fi  
-for I in ${srcdir:-.}/collate/*.in; do
+for I in "${srcdir:-.}"/collate/*.in; do
   echo_v "Sorting $I"
-  name=`basename $I .in`
-  ./unicode-collate $I > collate.out
+  name=$(basename "${I}" .in)
+  ./unicode-collate "${I}" > collate.out
   if [ $? -eq 2 ]; then
     exit 0
   fi   
-  diff collate.out ${srcdir:-.}/collate/$name.unicode || 
+  diff collate.out "${srcdir:-.}/collate/$name.unicode" ||
     fail "unexpected error when using g_utf8_collate() on $I"
-  ./unicode-collate --key $I > collate.out
-  diff collate.out ${srcdir:-.}/collate/$name.unicode ||
+  ./unicode-collate --key "${I}" > collate.out
+  diff collate.out "${srcdir:-.}/collate/$name.unicode" ||
     fail "unexpected error when using g_utf8_collate_key() on $I"
-  ./unicode-collate --file $I > collate.out
-  diff collate.out ${srcdir:-.}/collate/$name.file ||
+  ./unicode-collate --file "${I}" > collate.out
+  diff collate.out "${srcdir:-.}/collate/$name.file" ||
     fail "unexpected error when using g_utf8_collate_key_for_filename() on $I"
 done
 
index 18022bc..9e2ace2 100644 (file)
@@ -8,6 +8,7 @@
 #include "glib.h"
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <locale.h>
 #include <time.h>
@@ -506,7 +507,7 @@ g_print ("testing %d years\n", n_check_years);
   
   g_print("\n%u tests passed, %u failed\n",passed, notpassed);
 
-  return 0;
+  return (notpassed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
 }
 
 
index 372ddae..f49a6d9 100644 (file)
@@ -575,6 +575,26 @@ log_warning_error_tests (void)
 }
 
 static void
+log_warning_rate_limited_tests (void)
+{
+#if defined(G_HAVE_ISO_VARARGS) || defined(G_HAVE_GNUC_VARARGS)
+  int i;
+
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
+                         "*harmless single warning 1*");
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
+                         "*harmless single warning 2*");
+  for (i = 0; i < 10; i++)
+    g_warning_once ("harmless single warning 1");
+  for (i = 0; i < 10; i++)
+    g_warning_once ("harmless single warning 2");
+  g_test_assert_expected_messages ();
+#else
+  g_test_skip ("Variadic macro support not available");
+#endif
+}
+
+static void
 timer_tests (void)
 {
   GTimer *timer, *timer2;
@@ -1684,6 +1704,7 @@ main (int   argc,
   g_test_add_func ("/testglib/Parse Debug Strings", test_g_parse_debug_string);
   g_test_add_func ("/testglib/GMemChunk (deprecated)", test_mem_chunks);
   g_test_add_func ("/testglib/Warnings & Errors", log_warning_error_tests);
+  g_test_add_func ("/testglib/Warnings (rate limited)", log_warning_rate_limited_tests);
   g_test_add_func ("/testglib/Timers (slow)", timer_tests);
 
   return g_test_run();
index 1c8aa06..b2cb4d9 100644 (file)
@@ -414,7 +414,7 @@ test_check_start_and_stop (gpointer user_data)
     }
 
     run_next = FALSE;
-    return TRUE;
+    return continue_timeout;
   }
 
   if (test_number == 3) {