Compare commits

..

49 Commits

Author SHA1 Message Date
378659e53d Bump version to 3.10.3
Update NEWS.
2014-01-15 23:07:49 +01:00
c86688dd7d Updated Serbian translation 2014-01-13 09:53:35 +01:00
f54376e2fb Updated Serbian translation 2014-01-13 09:25:18 +01:00
07ad56b376 ShellWindowTracker: remove gtk-doc marks from private functions
static internal functions should be documented with /*, not /**

https://bugzilla.gnome.org/show_bug.cgi?id=721439
2014-01-04 17:35:37 +01:00
7c199e0b10 ShellWindowTracker: fix reference counting of ShellApp
All get_app_from_*() helpers are transfer full, but
get_app_from_gapplication_id() was directly returning the result
of lookup_app(), which is transfer none.

https://bugzilla.gnome.org/show_bug.cgi?id=721439
2014-01-04 17:35:36 +01:00
f584e31d77 Updated Lithuanian translation 2014-01-03 23:09:30 +02:00
ba6cf6424c Updated German translation 2014-01-02 14:34:30 +01:00
8b291771ab Updated Brazilian Portuguese translation 2014-01-02 04:14:12 -02:00
35a9024ec3 Updated Slovenian translation 2014-01-01 20:06:44 +01:00
db3c2b07b0 Update Chinese simplified translation 2014-01-01 17:09:44 +08:00
4879e6bee1 Updated Indonesian translation 2013-12-30 13:41:27 +07:00
ae050173c4 Updated Czech translation 2013-12-30 00:06:39 +01:00
e506458c42 Updated Czech translation 2013-12-29 23:55:01 +01:00
262247a7fd Updated Indonesian translation 2013-12-27 09:39:29 +07:00
51a153e8cf Updated Brazilian Portuguese translation 2013-12-26 23:33:58 -02:00
3b73f7922d Updated Lithuanian translation 2013-12-22 22:03:17 +02:00
2874d8cca4 Updated Slovenian translation 2013-12-22 19:24:04 +01:00
40d30eb6f5 Updated German translation 2013-12-22 19:06:56 +01:00
340c1ff7f3 Update Chinese simplified translation 2013-12-22 22:57:18 +08:00
f6a06e4520 Updated slovak translation 2013-12-22 13:17:41 +01:00
6d57901a11 Update Arabic translation 2013-12-11 06:54:46 +02:00
fa3284232f remoteSearch: Let remote search providers not provide an icon
The documentation indicates that they are optional, so let us make the
code behave accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=719965
2013-12-10 16:59:44 +01:00
a25fc9b14c Update Punjabi Translation by Alam 2013-12-07 19:04:19 -06:00
e19faff101 shell-app: Track all application windows
Filtering out "non-interesting" windows beforehand as we currently do
means that we may get properties that should be based on all windows,
like the last time the application was used, wrong.
Just track all windows and filter out non-interesting windows manually
in the one place we actually care about the difference.

https://bugzilla.gnome.org/show_bug.cgi?id=719824
2013-12-07 10:12:38 +01:00
1e6fff30a3 [l10n]Updated Turkish translation 2013-12-07 08:26:02 +02:00
449cb7a36e [l10n]Updated Turkish translation 2013-12-07 08:22:24 +02:00
6eb6887a2f messageTray: Only attempt to grab the summary box pointer after showing it
For mysterious reasons I'm not sure of myself, navigate_focus will only focus
mapped actors. So, make sure the widget is showing before navigating to it.

https://bugzilla.gnome.org/show_bug.cgi?id=709853
2013-12-04 13:05:34 -05:00
f4f2c91fdf catch more errors on extensions enable() and disable()
https://bugzilla.gnome.org/show_bug.cgi?id=688331
2013-11-28 11:11:01 +00:00
621e3d0df8 loginDialog: Implement cancel()
The screen shield expects a cancel() method on the unlockDialog
implementation, but LoginDialog does not provide it currently.

https://bugzilla.gnome.org/show_bug.cgi?id=719378
2013-11-27 14:33:03 +01:00
4057a87e05 authPrompt: propagate gdm "reset" signal after user switching
After a user types in their password at the login screen, one
of two things can happen

1) a new session is started
2) an existing session is switched to

In the latter case, GDM sends a reset signal to the login screen,
so it knows to go back to the user list and wait to be summoned
again.

Unfortunately, all reset signals are ignored after verification
success.  The reason is because the reset handler was copied from
the unlock dialog as part of a deduplication effort in commit
7e7295f259 and the unlock dialog
handler at the time also emitted a "failed" signal on reset
(which wouldn't make sense to emit after success).

These days "failed" is handled in a different way.

This commit changes the code to let reset signals through after
successful verification.

https://bugzilla.gnome.org/show_bug.cgi?id=710456
2013-11-26 12:48:46 -05:00
43f67399a3 messageTray: Prevent reentrancy issues in _updateState
The methods we call in _updateState may not be reentrant, so make
sure that we never get into a situation where _updateState, through
some crazy chain of events, calls itself.

https://bugzilla.gnome.org/show_bug.cgi?id=711694
2013-11-19 17:14:00 +01:00
04551850dd Bump version to 3.10.2.1
Update NEWS.
2013-11-15 13:27:09 +00:00
2e0312a8ba build: Lower mutter requirement
We don't have a mutter-wayland release for 3.10.2, so lower the
requirement to not end up without wayland support.
2013-11-15 13:25:56 +00:00
ac68251a00 Bump version to 3.10.2
Update NEWS.
2013-11-14 12:32:23 +00:00
6fd705e009 Updated Tamil Translations 2013-11-11 15:02:33 +05:30
923a908a2a Update Chinese simplified translation 2013-11-10 11:40:37 +08:00
59e868b8f5 popupMenu: Fix removing the active menu from PopupMenuManager
Commit b42af9aa99 changed the parameter list of _closeMenu()
to account for changes in the GrabHelper ungrab mechanism, but
didn't update other callers.

https://bugzilla.gnome.org/show_bug.cgi?id=709806
2013-11-07 00:12:37 +01:00
f83144b79a screencast: Validate parameters of ScreencastArea
... just as we do for screenshots.

https://bugzilla.gnome.org/show_bug.cgi?id=699752
2013-11-04 16:59:46 +01:00
267a42c31c screencast: Fix disabling screencasts via session mode
If screencasts are disabled, we return a DBus error, but still start
the recording happily - add early returns in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=699752
2013-11-04 16:59:46 +01:00
3ac7bf874c screenshot: Extend ScreenshotArea parameter validation
We currently only ensure that width and height are positive, so it
is still possible to pass in values that don't make any sense at all
(which may even result in a crash when exceeding limits imposed by
X11).
There is nothing to screenshot outside the actual screen area, so
restrict the parameters to that.

https://bugzilla.gnome.org/show_bug.cgi?id=699752
2013-11-04 16:59:46 +01:00
cac32dfe2a Updated Russian translation 2013-11-01 23:31:14 +04:00
1a61f288f6 system: Restore support for 'disable-restart-buttons'
The org.gnome.login-screen schema contains a key to disable the
power/restart buttons; our support for this fell victim to the
new combined status menu, add it back.

https://bugzilla.gnome.org/show_bug.cgi?id=711244
2013-11-01 13:09:21 +01:00
aca619ff89 Updated Brazilian Portuguese translation
Fixes "Off" translation
2013-10-27 15:45:09 -02:00
6673f52df2 Updated Norwegian bokmål translation 2013-10-26 15:17:08 +02:00
a70ee216b0 theme: Add some vertical padding on login screen
This was apparently lost during some rewrite this cycle ...

https://bugzilla.gnome.org/show_bug.cgi?id=710555
2013-10-25 14:16:18 +01:00
261514187e Updated Greek translation 2013-10-24 09:37:12 +03:00
1bf6fa039f Updated Norwegian bokmål translation 2013-10-20 13:07:54 +02:00
9360e60ed2 Updated Russian translation 2013-10-18 18:36:10 +04:00
afb6286994 Updated Belarusian translation. 2013-10-15 23:45:34 +03:00
103 changed files with 6822 additions and 6862 deletions

2
.gitignore vendored
View File

@ -43,8 +43,6 @@ docs/reference/*/xml/
docs/reference/shell/doc-gen-* docs/reference/shell/doc-gen-*
gtk-doc.make gtk-doc.make
js/misc/config.js js/misc/config.js
js/js-resources.c
js/js-resources.h
intltool-extract.in intltool-extract.in
intltool-merge.in intltool-merge.in
intltool-update.in intltool-update.in

View File

@ -1,11 +1,7 @@
# Point to our macro directory and pick up user flags from the environment # Point to our macro directory and pick up user flags from the environment
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
SUBDIRS = data js src tests po docs SUBDIRS = data js src browser-plugin tests po docs
if BUILD_BROWSER_PLUGIN
SUBDIRS += browser-plugin
endif
if ENABLE_MAN if ENABLE_MAN
SUBDIRS += man SUBDIRS += man

55
NEWS
View File

@ -1,41 +1,44 @@
3.11.2 3.10.3
====== ======
* Cache search result display actors [Jasper; #704912] * Fix reentrancy issue in message tray [Jasper; #711694]
* Use username in userWidget if real name doesn't fit [Jasper; #706851] * Fix resetting prompt on user switch [Ray; #710456]
* Support shell_global_reexec_self() on OpenBSD [Antoine; #709571] * Fix screen shield on login screen [Florian; #719378]
* Support disabling browser plugin [Colin; #711218] * Catch more extension errors on enable/disable [Sebastien; #688331]
* Restore support for 'disable-restart-buttons' [Florian; #711244] * Fix entry focus of chat notifications [Jasper; #709853]
* Validate parameters of exposed DBus methods [Florian; #699752] * Fix app switcher order with dialog windows [Florian; #719824]
* Connect applications to systemd journal if available [Colin; #711626] * Allow remote search providers without icons [Debarshi; #719965]
* Misc bug fixes and cleanups [Florian, Jasper; #711205, #698486, #711416, * Fix ref-counting issue in ShellApp [Giovanni; #721439]
#644306, #711555, #709806, #711631, #711732]
Contributors: Contributors:
Cosimo Cecchi, Antoine Jacoutot, Florian Müllner, Jasper St. Pierre, Giovanni Campagna, Sebastien Lafargue, Florian Müllner, Debarshi Ray,
Rico Tzschichholz, Colin Walters Jasper St. Pierre, Ray Strode
Translations: Translations:
Yuri Myasoedov [ru], Kjartan Maraas [nb], Efstathios Iosifidis [el], Emin Tufan Çetin [tr], Muhammet Kara [tr], A S Alam [pa], Khaled Hosny [ar],
Benjamin Steinwender [de], eternalhui [zh_CN], Shantha kumar [ta] Dušan Kazik [sk], Wylmer Wang [zh_CN], Benjamin Steinwender [de],
Matej Urbančič [sl], Aurimas Černius [lt], Rafael Ferreira [pt_BR],
Andika Triwidada [id], Marek Černocký [cs], Tong Hui [zh_CN],
Adorilson Bezerra [pt_BR], Christian Kirbach [de],
Мирослав Николић [sr, sr@latin]
3.11.1 3.10.2.1
========
* Lower mutter requirement to not end up without wayland support
3.10.2
====== ======
* power: Use UPower directly instead of gnome-settings-daemon [Bastien; #710273]
* Implement support for new GTK+ notification API [Jasper, Giovanni, Florian;
#710137, #710596]
* gdm: Don't allow user-list to fill up the entire screen [Florian; #710555] * gdm: Don't allow user-list to fill up the entire screen [Florian; #710555]
* Don't autostart remote search providers at login [Giovanni; #708830] * Restore support for 'disable-restart-buttons' [Florian; #711244]
* Fix spacing in end-session dialog [Sebastien; #710543] * alidate parameters of exposed DBus methods [Florian; #699752]
* Prepare for js24 [Tim; #711052] * Misc. bug fixes [Florian; #709806]
* Misc bug fixes and cleanups [Jasper, Florian, Adel, Tim, Sebastien; #710347,
#710144, #710541, #691409, #710745, #688331, #704912]
Contributors: Contributors:
Giovanni Campagna, Adel Gadllah, Sebastien Lafargue, Tim Lunn, Florian Müllner
Florian Müllner, Bastien Nocera, Jasper St. Pierre, Rico Tzschichholz
Translations: Translations:
Stas Solovey [ru], Yosef Or Boczko [he], Rafael Ferreira [pt_BR] Ihar Hrachyshka [be], Stas Solovey [ru], Kjartan Maraas [nb],
Dimitris Spingos [el], Rafael Ferreira [pt_BR], Yuri Myasoedov [ru],
Sphinx Jiang [zh_CN], Shantha kumar [ta]
3.10.1 3.10.1
====== ======

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63) AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.11.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) AC_INIT([gnome-shell],[3.10.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c]) AC_CONFIG_SRCDIR([src/shell-global.c])
@ -16,7 +16,6 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
# Checks for programs. # Checks for programs.
AC_PROG_CC AC_PROG_CC
AC_PROG_CXX
# Initialize libtool # Initialize libtool
LT_PREREQ([2.2.6]) LT_PREREQ([2.2.6])
@ -58,25 +57,10 @@ fi
AM_CONDITIONAL(BUILD_RECORDER, $build_recorder) AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
AC_ARG_ENABLE([systemd],
AS_HELP_STRING([--enable-systemd], [Use systemd]),
[enable_systemd=$enableval],
[enable_systemd=auto])
AS_IF([test x$enable_systemd != xno], [
AC_MSG_CHECKING([for libsystemd-journal])
PKG_CHECK_EXISTS([libsystemd-journal],
[have_systemd=yes
AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])],
[have_systemd=no])
AC_MSG_RESULT($have_systemd)
])
AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.13.4 CLUTTER_MIN_VERSION=1.13.4
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.38.1 GJS_MIN_VERSION=1.38.1
MUTTER_MIN_VERSION=3.11.1 MUTTER_MIN_VERSION=3.10.1
GTK_MIN_VERSION=3.7.9 GTK_MIN_VERSION=3.7.9
GIO_MIN_VERSION=2.37.0 GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3 LIBECAL_MIN_VERSION=3.5.3
@ -86,6 +70,7 @@ POLKIT_MIN_VERSION=0.100
STARTUP_NOTIFICATION_MIN_VERSION=0.11 STARTUP_NOTIFICATION_MIN_VERSION=0.11
GCR_MIN_VERSION=3.7.5 GCR_MIN_VERSION=3.7.5
GNOME_DESKTOP_REQUIRED_VERSION=3.7.90 GNOME_DESKTOP_REQUIRED_VERSION=3.7.90
GNOME_MENUS_REQUIRED_VERSION=3.5.3
NETWORKMANAGER_MIN_VERSION=0.9.8 NETWORKMANAGER_MIN_VERSION=0.9.8
PULSE_MIN_VERS=2.0 PULSE_MIN_VERS=2.0
@ -95,6 +80,7 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
gtk+-3.0 >= $GTK_MIN_VERSION gtk+-3.0 >= $GTK_MIN_VERSION
atk-bridge-2.0 atk-bridge-2.0
gjs-internals-1.0 >= $GJS_MIN_VERSION gjs-internals-1.0 >= $GJS_MIN_VERSION
libgnome-menu-3.0 >= $GNOME_MENUS_REQUIRED_VERSION
$recorder_modules $recorder_modules
gdk-x11-3.0 libsoup-2.4 gdk-x11-3.0 libsoup-2.4
xtst xtst
@ -108,9 +94,6 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
libnm-glib libnm-util >= $NETWORKMANAGER_MIN_VERSION libnm-glib libnm-util >= $NETWORKMANAGER_MIN_VERSION
libnm-gtk >= $NETWORKMANAGER_MIN_VERSION libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
libsecret-unstable gcr-base-3 >= $GCR_MIN_VERSION" libsecret-unstable gcr-base-3 >= $GCR_MIN_VERSION"
if test x$have_systemd = xyes; then
SHARED_PCS="${SHARED_PCS} libsystemd-journal"
fi
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS) PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION) PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION)
@ -126,20 +109,12 @@ PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11) PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0) PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0) PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
PKG_CHECK_MODULES(BROWSER_PLUGIN, gio-2.0 >= $GIO_MIN_VERSION json-glib-1.0 >= 0.13.2)
PKG_CHECK_MODULES(TRAY, gtk+-3.0) PKG_CHECK_MODULES(TRAY, gtk+-3.0)
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0) PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.7.4) PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.7.4)
PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8) PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8)
AC_ARG_ENABLE(browser-plugin,
[AS_HELP_STRING([--enable-browser-plugin],
[Enable browser plugin [default=yes]])],,
enable_browser_plugin=yes)
AS_IF([test x$enable_browser_plugin = xyes], [
PKG_CHECK_MODULES(BROWSER_PLUGIN, gio-2.0 >= $GIO_MIN_VERSION json-glib-1.0 >= 0.13.2)
])
AM_CONDITIONAL(BUILD_BROWSER_PLUGIN, test x$enable_browser_plugin = xyes)
AC_MSG_CHECKING([for bluetooth support]) AC_MSG_CHECKING([for bluetooth support])
PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.9.0], PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.9.0],
[BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0` [BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
@ -172,9 +147,6 @@ AC_SUBST(MUTTER_TYPELIB_DIR)
GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0` GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0`
AC_SUBST(GJS_CONSOLE) AC_SUBST(GJS_CONSOLE)
GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0`
AC_SUBST(GLIB_COMPILE_RESOURCES)
AC_CHECK_FUNCS(fdwalk) AC_CHECK_FUNCS(fdwalk)
AC_CHECK_FUNCS(mallinfo) AC_CHECK_FUNCS(mallinfo)
AC_CHECK_HEADERS([sys/resource.h]) AC_CHECK_HEADERS([sys/resource.h])

View File

@ -1,3 +1,6 @@
wandadir = $(pkgdatadir)
dist_wanda_DATA = wanda.png
desktopdir=$(datadir)/applications desktopdir=$(datadir)/applications
desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop
if HAVE_MUTTER_WAYLAND if HAVE_MUTTER_WAYLAND

View File

@ -306,13 +306,16 @@ StScrollBar StButton#vhandle:active {
font-size: 12pt; font-size: 12pt;
border-bottom: 1px solid #666; border-bottom: 1px solid #666;
padding: 12px; padding: 12px;
spacing: 20px;
} }
.nm-dialog-item:selected { .nm-dialog-item:checked {
background-color: #333; background-color: #333;
} }
.nm-dialog-item-box {
spacing: 20px;
}
.nm-dialog-icons { .nm-dialog-icons {
spacing: .5em; spacing: .5em;
} }
@ -1967,11 +1970,6 @@ StScrollBar StButton#vhandle:active {
padding-left: 50px; padding-left: 50px;
} }
.end-session-dialog-session-list,
.end-session-dialog-app-list {
spacing: 1em;
}
.end-session-dialog-list-header { .end-session-dialog-list-header {
font-weight: bold; font-weight: bold;
} }

BIN
data/wanda.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,5 +1,7 @@
NULL = NULL =
BUILT_SOURCES =
EXTRA_DIST = misc/config.js.in
CLEANFILES = misc/config.js
misc/config.js: misc/config.js.in Makefile misc/config.js: misc/config.js.in Makefile
[ -d $(@D) ] || $(mkdir_p) $(@D) ; \ [ -d $(@D) ] || $(mkdir_p) $(@D) ; \
@ -12,26 +14,112 @@ misc/config.js: misc/config.js.in Makefile
-e "s|[@]sysconfdir@|$(sysconfdir)|g" \ -e "s|[@]sysconfdir@|$(sysconfdir)|g" \
$< > $@ $< > $@
js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/js-resources.gresource.xml) jsdir = $(pkgdatadir)/js
js-resources.h: js-resources.gresource.xml $(js_resource_files) misc/config.js
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $<
js-resources.c: js-resources.gresource.xml $(js_resource_files) misc/config.js
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $<
js_built_sources = js-resources.c js-resources.h nobase_dist_js_DATA = \
gdm/authPrompt.js \
BUILT_SOURCES += $(js_built_sources) gdm/batch.js \
gdm/fingerprint.js \
all-local: $(js_built_sources) gdm/loginDialog.js \
gdm/oVirt.js \
js_resource_dist_files = $(filter-out misc/config.js, $(js_resource_files)) gdm/realmd.js \
gdm/util.js \
EXTRA_DIST = \ extensionPrefs/main.js \
$(js_resource_dist_files) \ misc/config.js \
js-resources.gresource.xml \ misc/extensionUtils.js \
misc/config.js.in \ misc/fileUtils.js \
$(NULL) misc/gnomeSession.js \
misc/hash.js \
CLEANFILES = \ misc/history.js \
$(js_built_sources) \ misc/jsParse.js \
misc/loginManager.js \
misc/modemManager.js \
misc/objectManager.js \
misc/params.js \
misc/smartcardManager.js \
misc/util.js \
perf/core.js \
ui/altTab.js \
ui/animation.js \
ui/appDisplay.js \
ui/appFavorites.js \
ui/backgroundMenu.js \
ui/background.js \
ui/boxpointer.js \
ui/calendar.js \
ui/checkBox.js \
ui/ctrlAltTab.js \
ui/dash.js \
ui/dateMenu.js \
ui/dnd.js \
ui/endSessionDialog.js \
ui/extensionSystem.js \
ui/extensionDownloader.js \
ui/environment.js \
ui/focusCaretTracker.js\
ui/ibusCandidatePopup.js\
ui/grabHelper.js \
ui/iconGrid.js \
ui/keyboard.js \
ui/layout.js \
ui/lightbox.js \
ui/lookingGlass.js \
ui/magnifier.js \
ui/magnifierDBus.js \
ui/main.js \
ui/messageTray.js \
ui/modalDialog.js \
ui/separator.js \
ui/sessionMode.js \
ui/shellEntry.js \
ui/shellMountOperation.js \
ui/slider.js \
ui/notificationDaemon.js \
ui/osdWindow.js \
ui/overview.js \
ui/overviewControls.js \
ui/panel.js \
ui/panelMenu.js \
ui/pointerWatcher.js \
ui/popupMenu.js \
ui/remoteSearch.js \
ui/remoteMenu.js \
ui/runDialog.js \
ui/screencast.js \
ui/screenshot.js \
ui/screenShield.js \
ui/scripting.js \
ui/search.js \
ui/searchDisplay.js \
ui/shellDBus.js \
ui/status/accessibility.js \
ui/status/brightness.js \
ui/status/keyboard.js \
ui/status/network.js \
ui/status/power.js \
ui/status/rfkill.js \
ui/status/volume.js \
ui/status/bluetooth.js \
ui/status/screencast.js \
ui/status/system.js \
ui/switcherPopup.js \
ui/tweener.js \
ui/unlockDialog.js \
ui/userWidget.js \
ui/viewSelector.js \
ui/wanda.js \
ui/windowAttentionHandler.js \
ui/windowManager.js \
ui/workspace.js \
ui/workspaceThumbnail.js \
ui/workspacesView.js \
ui/workspaceSwitcherPopup.js \
ui/xdndHandler.js \
ui/components/__init__.js \
ui/components/autorunManager.js \
ui/components/automountManager.js \
ui/components/networkAgent.js \
ui/components/polkitAgent.js \
ui/components/telepathyClient.js \
ui/components/keyring.js \
$(NULL) $(NULL)

View File

@ -13,15 +13,13 @@ const _ = Gettext.gettext;
const Config = imports.misc.config; const Config = imports.misc.config;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const GnomeShellIface = '<node> \ const GnomeShellIface = <interface name="org.gnome.Shell.Extensions">
<interface name="org.gnome.Shell.Extensions"> \ <signal name="ExtensionStatusChanged">
<signal name="ExtensionStatusChanged"> \ <arg type="s" name="uuid"/>
<arg type="s" name="uuid"/> \ <arg type="i" name="state"/>
<arg type="i" name="state"/> \ <arg type="s" name="error"/>
<arg type="s" name="error"/> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface); const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
@ -206,11 +204,11 @@ const Application = new Lang.Class({
_scanExtensions: function() { _scanExtensions: function() {
let finder = new ExtensionUtils.ExtensionFinder(); let finder = new ExtensionUtils.ExtensionFinder();
finder.connect('extension-found', Lang.bind(this, this._extensionFound)); finder.connect('extension-found', Lang.bind(this, this._extensionFound));
finder.connect('extensions-loaded', Lang.bind(this, this._extensionsLoaded));
finder.scanExtensions(); finder.scanExtensions();
this._extensionsLoaded();
}, },
_extensionFound: function(finder, extension) { _extensionFound: function(signals, extension) {
let iter = this._model.append(); let iter = this._model.append();
this._model.set(iter, [0, 1], [extension.uuid, extension.metadata.name]); this._model.set(iter, [0, 1], [extension.uuid, extension.metadata.name]);
this._extensionIters[extension.uuid] = iter; this._extensionIters[extension.uuid] = iter;

View File

@ -263,10 +263,8 @@ const AuthPrompt = new Lang.Class({
}, },
_onReset: function() { _onReset: function() {
if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED) { this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; this.reset();
this.reset();
}
}, },
addActorToDefaultButtonWell: function(actor) { addActorToDefaultButtonWell: function(actor) {

View File

@ -5,13 +5,11 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const FprintManagerIface = '<node> \ const FprintManagerIface = <interface name='net.reactivated.Fprint.Manager'>
<interface name="net.reactivated.Fprint.Manager"> \ <method name='GetDefaultDevice'>
<method name="GetDefaultDevice"> \ <arg type='o' direction='out' />
<arg type="o" direction="out" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface); const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface);

View File

@ -59,7 +59,7 @@ const UserListItem = new Lang.Class({
this._userChangedId = this.user.connect('changed', this._userChangedId = this.user.connect('changed',
Lang.bind(this, this._onUserChanged)); Lang.bind(this, this._onUserChanged));
let layout = new St.BoxLayout({ vertical: true }); let layout = new St.BoxLayout({ vertical: false });
this.actor = new St.Button({ style_class: 'login-dialog-user-list-item', this.actor = new St.Button({ style_class: 'login-dialog-user-list-item',
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
can_focus: true, can_focus: true,
@ -68,18 +68,39 @@ const UserListItem = new Lang.Class({
x_align: St.Align.START, x_align: St.Align.START,
x_fill: true }); x_fill: true });
this._userWidget = new UserWidget.UserWidget(this.user); this._userAvatar = new UserWidget.Avatar(this.user,
layout.add(this._userWidget.actor); { styleClass: 'login-dialog-user-list-item-icon' });
layout.add(this._userAvatar.actor);
let textLayout = new St.BoxLayout({ style_class: 'login-dialog-user-list-item-text-box',
vertical: true });
layout.add(textLayout, { expand: true });
this._nameLabel = new St.Label({ style_class: 'login-dialog-user-list-item-name' });
this.actor.label_actor = this._nameLabel;
textLayout.add(this._nameLabel,
{ y_fill: false,
y_align: St.Align.MIDDLE,
expand: true });
this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator', this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator',
scale_x: 0 }); scale_x: 0 });
layout.add(this._timedLoginIndicator); textLayout.add(this._timedLoginIndicator,
{ x_fill: true,
x_align: St.Align.MIDDLE,
y_fill: false,
y_align: St.Align.END });
this.actor.connect('clicked', Lang.bind(this, this._onClicked)); this.actor.connect('clicked', Lang.bind(this, this._onClicked));
this._onUserChanged(); this._onUserChanged();
}, },
_onUserChanged: function() { _onUserChanged: function() {
this._nameLabel.set_text(this.user.get_real_name());
this._userAvatar.update();
this._updateLoggedIn();
},
syncStyleClasses: function() {
this._updateLoggedIn(); this._updateLoggedIn();
}, },
@ -168,6 +189,7 @@ const UserList = new Lang.Class({
for (let userName in this._items) { for (let userName in this._items) {
let item = this._items[userName]; let item = this._items[userName];
item.actor.sync_hover(); item.actor.sync_hover();
item.syncStyleClasses();
} }
}, },
@ -885,6 +907,10 @@ const LoginDialog = new Lang.Class({
Main.ctrlAltTabManager.removeGroup(this.dialogLayout); Main.ctrlAltTabManager.removeGroup(this.dialogLayout);
}, },
cancel: function() {
this._authPrompt.cancel();
},
addCharacter: function(unichar) { addCharacter: function(unichar) {
this._authPrompt.addCharacter(unichar); this._authPrompt.addCharacter(unichar);
}, },

View File

@ -4,13 +4,11 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
const OVirtCredentialsIface = '<node> \ const OVirtCredentialsIface = <interface name='org.ovirt.vdsm.Credentials'>
<interface name="org.ovirt.vdsm.Credentials"> \ <signal name="UserAuthenticated">
<signal name="UserAuthenticated"> \ <arg type="s" name="token"/>
<arg type="s" name="token"/> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const OVirtCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(OVirtCredentialsIface); const OVirtCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(OVirtCredentialsIface);

View File

@ -5,58 +5,52 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const ProviderIface = '<node> \ const ProviderIface = <interface name='org.freedesktop.realmd.Provider'>
<interface name="org.freedesktop.realmd.Provider"> \ <property name="Name" type="s" access="read"/>
<property name="Name" type="s" access="read"/> \ <property name="Version" type="s" access="read"/>
<property name="Version" type="s" access="read"/> \ <property name="Realms" type="ao" access="read"/>
<property name="Realms" type="ao" access="read"/> \ <method name="Discover">
<method name="Discover"> \ <arg name="string" type="s" direction="in"/>
<arg name="string" type="s" direction="in"/> \ <arg name="options" type="a{sv}" direction="in"/>
<arg name="options" type="a{sv}" direction="in"/> \ <arg name="relevance" type="i" direction="out"/>
<arg name="relevance" type="i" direction="out"/> \ <arg name="realm" type="ao" direction="out"/>
<arg name="realm" type="ao" direction="out"/> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface); const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface);
const ServiceIface = '<node> \ const ServiceIface = <interface name="org.freedesktop.realmd.Service">
<interface name="org.freedesktop.realmd.Service"> \ <method name="Cancel">
<method name="Cancel"> \ <arg name="operation" type="s" direction="in"/>
<arg name="operation" type="s" direction="in"/> \ </method>
</method> \ <method name="Release" />
<method name="Release" /> \ <method name="SetLocale">
<method name="SetLocale"> \ <arg name="locale" type="s" direction="in"/>
<arg name="locale" type="s" direction="in"/> \ </method>
</method> \ <signal name="Diagnostics">
<signal name="Diagnostics"> \ <arg name="data" type="s"/>
<arg name="data" type="s"/> \ <arg name="operation" type="s"/>
<arg name="operation" type="s"/> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface); const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface);
const RealmIface = '<node> \ const RealmIface = <interface name="org.freedesktop.realmd.Realm">
<interface name="org.freedesktop.realmd.Realm"> \ <property name="Name" type="s" access="read"/>
<property name="Name" type="s" access="read"/> \ <property name="Configured" type="s" access="read"/>
<property name="Configured" type="s" access="read"/> \ <property name="Details" type="a(ss)" access="read"/>
<property name="Details" type="a(ss)" access="read"/> \ <property name="LoginFormats" type="as" access="read"/>
<property name="LoginFormats" type="as" access="read"/> \ <property name="LoginPolicy" type="s" access="read"/>
<property name="LoginPolicy" type="s" access="read"/> \ <property name="PermittedLogins" type="as" access="read"/>
<property name="PermittedLogins" type="as" access="read"/> \ <property name="SupportedInterfaces" type="as" access="read"/>
<property name="SupportedInterfaces" type="as" access="read"/> \ <method name="ChangeLoginPolicy">
<method name="ChangeLoginPolicy"> \ <arg name="login_policy" type="s" direction="in"/>
<arg name="login_policy" type="s" direction="in"/> \ <arg name="permitted_add" type="as" direction="in"/>
<arg name="permitted_add" type="as" direction="in"/> \ <arg name="permitted_remove" type="as" direction="in"/>
<arg name="permitted_remove" type="as" direction="in"/> \ <arg name="options" type="a{sv}" direction="in"/>
<arg name="options" type="a{sv}" direction="in"/> \ </method>
</method> \ <method name="Deconfigure">
<method name="Deconfigure"> \ <arg name="options" type="a{sv}" direction="in"/>
<arg name="options" type="a{sv}" direction="in"/> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface); const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface);
const Manager = new Lang.Class({ const Manager = new Lang.Class({

View File

@ -1,108 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell">
<file>gdm/authPrompt.js</file>
<file>gdm/batch.js</file>
<file>gdm/fingerprint.js</file>
<file>gdm/loginDialog.js</file>
<file>gdm/oVirt.js</file>
<file>gdm/realmd.js</file>
<file>gdm/util.js</file>
<file>extensionPrefs/main.js</file>
<file>misc/config.js</file>
<file>misc/extensionUtils.js</file>
<file>misc/fileUtils.js</file>
<file>misc/gnomeSession.js</file>
<file>misc/hash.js</file>
<file>misc/history.js</file>
<file>misc/jsParse.js</file>
<file>misc/loginManager.js</file>
<file>misc/modemManager.js</file>
<file>misc/objectManager.js</file>
<file>misc/params.js</file>
<file>misc/smartcardManager.js</file>
<file>misc/util.js</file>
<file>perf/core.js</file>
<file>ui/altTab.js</file>
<file>ui/animation.js</file>
<file>ui/appDisplay.js</file>
<file>ui/appFavorites.js</file>
<file>ui/backgroundMenu.js</file>
<file>ui/background.js</file>
<file>ui/boxpointer.js</file>
<file>ui/calendar.js</file>
<file>ui/checkBox.js</file>
<file>ui/ctrlAltTab.js</file>
<file>ui/dash.js</file>
<file>ui/dateMenu.js</file>
<file>ui/dnd.js</file>
<file>ui/endSessionDialog.js</file>
<file>ui/extensionSystem.js</file>
<file>ui/extensionDownloader.js</file>
<file>ui/environment.js</file>
<file>ui/focusCaretTracker.js</file>
<file>ui/ibusCandidatePopup.js</file>
<file>ui/grabHelper.js</file>
<file>ui/iconGrid.js</file>
<file>ui/keyboard.js</file>
<file>ui/layout.js</file>
<file>ui/lightbox.js</file>
<file>ui/lookingGlass.js</file>
<file>ui/magnifier.js</file>
<file>ui/magnifierDBus.js</file>
<file>ui/main.js</file>
<file>ui/messageTray.js</file>
<file>ui/modalDialog.js</file>
<file>ui/separator.js</file>
<file>ui/sessionMode.js</file>
<file>ui/shellEntry.js</file>
<file>ui/shellMountOperation.js</file>
<file>ui/slider.js</file>
<file>ui/notificationDaemon.js</file>
<file>ui/osdWindow.js</file>
<file>ui/overview.js</file>
<file>ui/overviewControls.js</file>
<file>ui/panel.js</file>
<file>ui/panelMenu.js</file>
<file>ui/pointerWatcher.js</file>
<file>ui/popupMenu.js</file>
<file>ui/remoteSearch.js</file>
<file>ui/remoteMenu.js</file>
<file>ui/runDialog.js</file>
<file>ui/screencast.js</file>
<file>ui/screenshot.js</file>
<file>ui/screenShield.js</file>
<file>ui/scripting.js</file>
<file>ui/search.js</file>
<file>ui/shellDBus.js</file>
<file>ui/status/accessibility.js</file>
<file>ui/status/brightness.js</file>
<file>ui/status/keyboard.js</file>
<file>ui/status/network.js</file>
<file>ui/status/power.js</file>
<file>ui/status/rfkill.js</file>
<file>ui/status/volume.js</file>
<file>ui/status/bluetooth.js</file>
<file>ui/status/screencast.js</file>
<file>ui/status/system.js</file>
<file>ui/switcherPopup.js</file>
<file>ui/tweener.js</file>
<file>ui/unlockDialog.js</file>
<file>ui/userWidget.js</file>
<file>ui/viewSelector.js</file>
<file>ui/windowAttentionHandler.js</file>
<file>ui/windowManager.js</file>
<file>ui/workspace.js</file>
<file>ui/workspaceThumbnail.js</file>
<file>ui/workspacesView.js</file>
<file>ui/workspaceSwitcherPopup.js</file>
<file>ui/xdndHandler.js</file>
<file>ui/components/__init__.js</file>
<file>ui/components/autorunManager.js</file>
<file>ui/components/automountManager.js</file>
<file>ui/components/networkAgent.js</file>
<file>ui/components/polkitAgent.js</file>
<file>ui/components/telepathyClient.js</file>
<file>ui/components/keyring.js</file>
</gresource>
</gresources>

View File

@ -174,9 +174,17 @@ const ExtensionFinder = new Lang.Class({
this.emit('extension-found', extension); this.emit('extension-found', extension);
}, },
_extensionsLoaded: function() {
this.emit('extensions-loaded');
},
scanExtensions: function() { scanExtensions: function() {
let perUserDir = Gio.File.new_for_path(global.userdatadir); let perUserDir = Gio.File.new_for_path(global.userdatadir);
FileUtils.collectFromDatadirs('extensions', true, Lang.bind(this, this._loadExtension, perUserDir)); FileUtils.collectFromDatadirsAsync('extensions',
{ processFile: Lang.bind(this, this._loadExtension),
loadedCallback: Lang.bind(this, this._extensionsLoaded),
includeUserDir: true,
data: perUserDir });
} }
}); });
Signals.addSignalMethods(ExtensionFinder.prototype); Signals.addSignalMethods(ExtensionFinder.prototype);

View File

@ -25,27 +25,60 @@ function listDirAsync(file, callback) {
}); });
} }
function collectFromDatadirs(subdir, includeUserDir, processFile) { function _collectFromDirectoryAsync(dir, loadState) {
function done() {
loadState.numLoading--;
if (loadState.loadedCallback &&
loadState.numLoading == 0)
loadState.loadedCallback(loadState.data);
}
dir.query_info_async('standard::type', Gio.FileQueryInfoFlags.NONE,
GLib.PRIORITY_DEFAULT, null, function(object, res) {
try {
object.query_info_finish(res);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
log(e.message);
done();
return;
}
listDirAsync(dir, Lang.bind(this, function(infos) {
for (let i = 0; i < infos.length; i++)
loadState.processFile(dir.get_child(infos[i].get_name()),
infos[i], loadState.data);
done();
}));
});
}
function collectFromDatadirsAsync(subdir, params) {
params = Params.parse(params, { includeUserDir: false,
processFile: null,
loadedCallback: null,
data: null });
let loadState = { data: params.data,
numLoading: 0,
loadedCallback: params.loadedCallback,
processFile: params.processFile };
if (params.processFile == null) {
if (params.loadedCallback)
params.loadedCallback(params.data);
return;
}
let dataDirs = GLib.get_system_data_dirs(); let dataDirs = GLib.get_system_data_dirs();
if (includeUserDir) if (params.includeUserDir)
dataDirs.unshift(GLib.get_user_data_dir()); dataDirs.unshift(GLib.get_user_data_dir());
loadState.numLoading = dataDirs.length;
for (let i = 0; i < dataDirs.length; i++) { for (let i = 0; i < dataDirs.length; i++) {
let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', subdir]); let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', subdir]);
let dir = Gio.File.new_for_path(path); let dir = Gio.File.new_for_path(path);
let fileEnum; _collectFromDirectoryAsync(dir, loadState);
try {
fileEnum = dir.enumerate_children('standard::name,standard::type',
Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {
fileEnum = null;
}
if (fileEnum != null) {
let info;
while ((info = fileEnum.next_file(null)))
processFile(fileEnum.get_child(info), info);
}
} }
} }

View File

@ -4,17 +4,15 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
const PresenceIface = '<node> \ const PresenceIface = <interface name="org.gnome.SessionManager.Presence">
<interface name="org.gnome.SessionManager.Presence"> \ <method name="SetStatus">
<method name="SetStatus"> \ <arg type="u" direction="in"/>
<arg type="u" direction="in"/> \ </method>
</method> \ <property name="status" type="u" access="readwrite"/>
<property name="status" type="u" access="readwrite"/> \ <signal name="StatusChanged">
<signal name="StatusChanged"> \ <arg type="u" direction="out"/>
<arg type="u" direction="out"/> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const PresenceStatus = { const PresenceStatus = {
AVAILABLE: 0, AVAILABLE: 0,
@ -32,16 +30,14 @@ function Presence(initCallback, cancellable) {
// Note inhibitors are immutable objects, so they don't // Note inhibitors are immutable objects, so they don't
// change at runtime (changes always come in the form // change at runtime (changes always come in the form
// of new inhibitors) // of new inhibitors)
const InhibitorIface = '<node> \ const InhibitorIface = <interface name="org.gnome.SessionManager.Inhibitor">
<interface name="org.gnome.SessionManager.Inhibitor"> \ <method name="GetAppId">
<method name="GetAppId"> \ <arg type="s" direction="out" />
<arg type="s" direction="out" /> \ </method>
</method> \ <method name="GetReason">
<method name="GetReason"> \ <arg type="s" direction="out" />
<arg type="s" direction="out" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface); var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
function Inhibitor(objectPath, initCallback, cancellable) { function Inhibitor(objectPath, initCallback, cancellable) {
@ -49,29 +45,27 @@ function Inhibitor(objectPath, initCallback, cancellable) {
} }
// Not the full interface, only the methods we use // Not the full interface, only the methods we use
const SessionManagerIface = '<node> \ const SessionManagerIface = <interface name="org.gnome.SessionManager">
<interface name="org.gnome.SessionManager"> \ <method name="Logout">
<method name="Logout"> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ </method>
</method> \ <method name="Shutdown" />
<method name="Shutdown" /> \ <method name="Reboot" />
<method name="Reboot" /> \ <method name="CanShutdown">
<method name="CanShutdown"> \ <arg type="b" direction="out" />
<arg type="b" direction="out" /> \ </method>
</method> \ <method name="IsInhibited">
<method name="IsInhibited"> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ <arg type="b" direction="out" />
<arg type="b" direction="out" /> \ </method>
</method> \ <property name="SessionIsActive" type="b" access="read"/>
<property name="SessionIsActive" type="b" access="read"/> \ <signal name="InhibitorAdded">
<signal name="InhibitorAdded"> \ <arg type="o" direction="out"/>
<arg type="o" direction="out"/> \ </signal>
</signal> \ <signal name="InhibitorRemoved">
<signal name="InhibitorRemoved"> \ <arg type="o" direction="out"/>
<arg type="o" direction="out"/> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface); var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface);
function SessionManager(initCallback, cancellable) { function SessionManager(initCallback, cancellable) {

View File

@ -7,66 +7,58 @@ const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const SystemdLoginManagerIface = '<node> \ const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager'>
<interface name="org.freedesktop.login1.Manager"> \ <method name='Suspend'>
<method name="Suspend"> \ <arg type='b' direction='in'/>
<arg type="b" direction="in"/> \ </method>
</method> \ <method name='CanSuspend'>
<method name="CanSuspend"> \ <arg type='s' direction='out'/>
<arg type="s" direction="out"/> \ </method>
</method> \ <method name='Inhibit'>
<method name="Inhibit"> \ <arg type='s' direction='in'/>
<arg type="s" direction="in"/> \ <arg type='s' direction='in'/>
<arg type="s" direction="in"/> \ <arg type='s' direction='in'/>
<arg type="s" direction="in"/> \ <arg type='s' direction='in'/>
<arg type="s" direction="in"/> \ <arg type='h' direction='out'/>
<arg type="h" direction="out"/> \ </method>
</method> \ <method name='GetSession'>
<method name="GetSession"> \ <arg type='s' direction='in'/>
<arg type="s" direction="in"/> \ <arg type='o' direction='out'/>
<arg type="o" direction="out"/> \ </method>
</method> \ <method name='ListSessions'>
<method name="ListSessions"> \ <arg name='sessions' type='a(susso)' direction='out'/>
<arg name="sessions" type="a(susso)" direction="out"/> \ </method>
</method> \ <signal name='PrepareForSleep'>
<signal name="PrepareForSleep"> \ <arg type='b' direction='out'/>
<arg type="b" direction="out"/> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const SystemdLoginSessionIface = '<node> \ const SystemdLoginSessionIface = <interface name='org.freedesktop.login1.Session'>
<interface name="org.freedesktop.login1.Session"> \ <signal name='Lock' />
<signal name="Lock" /> \ <signal name='Unlock' />
<signal name="Unlock" /> \ </interface>;
</interface> \
</node>';
const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface); const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface); const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
const ConsoleKitManagerIface = '<node> \ const ConsoleKitManagerIface = <interface name='org.freedesktop.ConsoleKit.Manager'>
<interface name="org.freedesktop.ConsoleKit.Manager"> \ <method name='CanRestart'>
<method name="CanRestart"> \ <arg type='b' direction='out'/>
<arg type="b" direction="out"/> \ </method>
</method> \ <method name='CanStop'>
<method name="CanStop"> \ <arg type='b' direction='out'/>
<arg type="b" direction="out"/> \ </method>
</method> \ <method name='Restart' />
<method name="Restart" /> \ <method name='Stop' />
<method name="Stop" /> \ <method name='GetCurrentSession'>
<method name="GetCurrentSession"> \ <arg type='o' direction='out' />
<arg type="o" direction="out" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const ConsoleKitSessionIface = '<node> \ const ConsoleKitSessionIface = <interface name='org.freedesktop.ConsoleKit.Session'>
<interface name="org.freedesktop.ConsoleKit.Session"> \ <signal name='Lock' />
<signal name="Lock" /> \ <signal name='Unlock' />
<signal name="Unlock" /> \ </interface>;
</interface> \
</node>';
const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface); const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface);
const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface); const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface);

View File

@ -92,41 +92,37 @@ function _findProviderForSid(sid) {
// The following are not the complete interfaces, just the methods we need // The following are not the complete interfaces, just the methods we need
// (or may need in the future) // (or may need in the future)
const ModemGsmNetworkInterface = '<node> \ const ModemGsmNetworkInterface = <interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
<interface name="org.freedesktop.ModemManager.Modem.Gsm.Network"> \ <method name="GetRegistrationInfo">
<method name="GetRegistrationInfo"> \ <arg type="(uss)" direction="out" />
<arg type="(uss)" direction="out" /> \ </method>
</method> \ <method name="GetSignalQuality">
<method name="GetSignalQuality"> \ <arg type="u" direction="out" />
<arg type="u" direction="out" /> \ </method>
</method> \ <property name="AccessTechnology" type="u" access="read" />
<property name="AccessTechnology" type="u" access="read" /> \ <signal name="SignalQuality">
<signal name="SignalQuality"> \ <arg type="u" direction="out" />
<arg type="u" direction="out" /> \ </signal>
</signal> \ <signal name="RegistrationInfo">
<signal name="RegistrationInfo"> \ <arg type="u" direction="out" />
<arg type="u" direction="out" /> \ <arg type="s" direction="out" />
<arg type="s" direction="out" /> \ <arg type="s" direction="out" />
<arg type="s" direction="out" /> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface); const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface);
const ModemCdmaInterface = '<node> \ const ModemCdmaInterface = <interface name="org.freedesktop.ModemManager.Modem.Cdma">
<interface name="org.freedesktop.ModemManager.Modem.Cdma"> \ <method name="GetSignalQuality">
<method name="GetSignalQuality"> \ <arg type="u" direction="out" />
<arg type="u" direction="out" /> \ </method>
</method> \ <method name="GetServingSystem">
<method name="GetServingSystem"> \ <arg type="(usu)" direction="out" />
<arg type="(usu)" direction="out" /> \ </method>
</method> \ <signal name="SignalQuality">
<signal name="SignalQuality"> \ <arg type="u" direction="out" />
<arg type="u" direction="out" /> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface); const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface);
@ -222,26 +218,20 @@ Signals.addSignalMethods(ModemCdma.prototype);
// Support for the new ModemManager1 interface (MM >= 0.7) // Support for the new ModemManager1 interface (MM >= 0.7)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
const BroadbandModemInterface = '<node> \ const BroadbandModemInterface = <interface name="org.freedesktop.ModemManager1.Modem">
<interface name="org.freedesktop.ModemManager1.Modem"> \ <property name="SignalQuality" type="(ub)" access="read" />
<property name="SignalQuality" type="(ub)" access="read" /> \ </interface>;
</interface> \
</node>';
const BroadbandModemProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemInterface); const BroadbandModemProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemInterface);
const BroadbandModem3gppInterface = '<node> \ const BroadbandModem3gppInterface = <interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp">
<interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp"> \ <property name="OperatorCode" type="s" access="read" />
<property name="OperatorCode" type="s" access="read" /> \ <property name="OperatorName" type="s" access="read" />
<property name="OperatorName" type="s" access="read" /> \ </interface>;
</interface> \
</node>';
const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gppInterface); const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gppInterface);
const BroadbandModemCdmaInterface = '<node> \ const BroadbandModemCdmaInterface = <interface name="org.freedesktop.ModemManager1.Modem.ModemCdma">
<interface name="org.freedesktop.ModemManager1.Modem.ModemCdma"> \ <property name="Sid" type="u" access="read" />
<property name="Sid" type="u" access="read" /> \ </interface>;
</interface> \
</node>';
const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface); const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface);
const BroadbandModem = new Lang.Class({ const BroadbandModem = new Lang.Class({

View File

@ -8,21 +8,19 @@ const Signals = imports.signals;
// Specified in the D-Bus specification here: // Specified in the D-Bus specification here:
// http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager // http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager
const ObjectManagerIface = '<node> \ const ObjectManagerIface = <interface name="org.freedesktop.DBus.ObjectManager">
<interface name="org.freedesktop.DBus.ObjectManager"> \ <method name="GetManagedObjects">
<method name="GetManagedObjects"> \ <arg name="objects" type="a{oa{sa{sv}}}" direction="out"/>
<arg name="objects" type="a{oa{sa{sv}}}" direction="out"/> \ </method>
</method> \ <signal name="InterfacesAdded">
<signal name="InterfacesAdded"> \ <arg name="objectPath" type="o"/>
<arg name="objectPath" type="o"/> \ <arg name="interfaces" type="a{sa{sv}}" />
<arg name="interfaces" type="a{sa{sv}}" /> \ </signal>
</signal> \ <signal name="InterfacesRemoved">
<signal name="InterfacesRemoved"> \ <arg name="objectPath" type="o"/>
<arg name="objectPath" type="o"/> \ <arg name="interfaces" type="as" />
<arg name="interfaces" type="as" /> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface); const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface);

View File

@ -7,14 +7,12 @@ const Signals = imports.signals;
const ObjectManager = imports.misc.objectManager; const ObjectManager = imports.misc.objectManager;
const SmartcardTokenIface = '<node> \ const SmartcardTokenIface = <interface name="org.gnome.SettingsDaemon.Smartcard.Token">
<interface name="org.gnome.SettingsDaemon.Smartcard.Token"> \ <property name="Name" type="s" access="read"/>
<property name="Name" type="s" access="read"/> \ <property name="Driver" type="o" access="read"/>
<property name="Driver" type="o" access="read"/> \ <property name="IsInserted" type="b" access="read"/>
<property name="IsInserted" type="b" access="read"/> \ <property name="UsedToLogin" type="b" access="read"/>
<property name="UsedToLogin" type="b" access="read"/> \ </interface>;
</interface> \
</node>';
let _smartcardManager = null; let _smartcardManager = null;

View File

@ -106,8 +106,6 @@ const AppSwitcherPopup = new Lang.Class({
this._switcherList = new AppSwitcher(apps, this); this._switcherList = new AppSwitcher(apps, this);
this._items = this._switcherList.icons; this._items = this._switcherList.icons;
if (this._items.length == 0)
return false;
return true; return true;
}, },
@ -377,9 +375,6 @@ const WindowSwitcherPopup = new Lang.Class({
this._switcherList = new WindowList(windows, mode); this._switcherList = new WindowList(windows, mode);
this._items = this._switcherList.icons; this._items = this._switcherList.icons;
if (this._items.length == 0)
return false;
return true; return true;
}, },

View File

@ -55,13 +55,13 @@ function _loadCategory(dir, view) {
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) { while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
if (nextType == GMenu.TreeItemType.ENTRY) { if (nextType == GMenu.TreeItemType.ENTRY) {
let entry = iter.get_entry(); let entry = iter.get_entry();
let appInfo = entry.get_app_info(); let app = appSystem.lookup_app_by_tree_entry(entry);
let app = appSystem.lookup_app(entry.get_desktop_file_id()); if (!entry.get_app_info().get_nodisplay())
if (appInfo.should_show())
view.addApp(app); view.addApp(app);
} else if (nextType == GMenu.TreeItemType.DIRECTORY) { } else if (nextType == GMenu.TreeItemType.DIRECTORY) {
let itemDir = iter.get_directory(); let itemDir = iter.get_directory();
_loadCategory(itemDir, view); if (!itemDir.get_is_nodisplay())
_loadCategory(itemDir, view);
} }
} }
}; };
@ -92,7 +92,7 @@ const BaseAppView = new Lang.Class({
}, },
removeAll: function() { removeAll: function() {
this._grid.destroyAll(); this._grid.removeAll();
this._items = {}; this._items = {};
this._allItems = []; this._allItems = [];
}, },
@ -613,10 +613,6 @@ const FrequentView = new Lang.Class({
return this._usage.get_most_used("").length >= MIN_FREQUENT_APPS_COUNT; return this._usage.get_most_used("").length >= MIN_FREQUENT_APPS_COUNT;
}, },
removeAll: function() {
this._grid.destroyAll();
},
loadApps: function() { loadApps: function() {
let mostUsed = this._usage.get_most_used (""); let mostUsed = this._usage.get_most_used ("");
let hasUsefulData = this.hasUsefulData(); let hasUsefulData = this.hasUsefulData();
@ -695,7 +691,8 @@ const AppDisplay = new Lang.Class({
Name: 'AppDisplay', Name: 'AppDisplay',
_init: function() { _init: function() {
Shell.AppSystem.get_default().connect('installed-changed', Lang.bind(this, function() { this._appSystem = Shell.AppSystem.get_default();
this._appSystem.connect('installed-changed', Lang.bind(this, function() {
Main.queueDeferredWork(this._allAppsWorkId); Main.queueDeferredWork(this._allAppsWorkId);
})); }));
Main.overview.connect('showing', Lang.bind(this, function() { Main.overview.connect('showing', Lang.bind(this, function() {
@ -816,8 +813,7 @@ const AppDisplay = new Lang.Class({
view.removeAll(); view.removeAll();
let tree = new GMenu.Tree({ menu_basename: "applications.menu" }); let tree = this._appSystem.get_tree();
tree.load_sync();
let root = tree.get_root_directory(); let root = tree.get_root_directory();
let iter = root.iter(); let iter = root.iter();
@ -826,6 +822,8 @@ const AppDisplay = new Lang.Class({
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) { while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
if (nextType == GMenu.TreeItemType.DIRECTORY) { if (nextType == GMenu.TreeItemType.DIRECTORY) {
let dir = iter.get_directory(); let dir = iter.get_directory();
if (dir.get_is_nodisplay())
continue;
if (folderCategories.indexOf(dir.get_menu_id()) != -1) if (folderCategories.indexOf(dir.get_menu_id()) != -1)
view.addFolder(dir); view.addFolder(dir);
@ -873,8 +871,8 @@ const AppSearchProvider = new Lang.Class({
getResultMetas: function(apps, callback) { getResultMetas: function(apps, callback) {
let metas = []; let metas = [];
for (let i = 0; i < apps.length; i++) { for (let i = 0; i < apps.length; i++) {
let app = this._appSys.lookup_app(apps[i]); let app = apps[i];
metas.push({ 'id': app.get_id(), metas.push({ 'id': app,
'name': app.get_name(), 'name': app.get_name(),
'createIcon': function(size) { 'createIcon': function(size) {
return app.create_icon_texture(size); return app.create_icon_texture(size);
@ -888,16 +886,15 @@ const AppSearchProvider = new Lang.Class({
return results.slice(0, maxNumber); return results.slice(0, maxNumber);
}, },
getInitialResultSet: function(terms, callback, cancellable) { getInitialResultSet: function(terms) {
callback(this._appSys.initial_search(terms)); this.searchSystem.setResults(this, this._appSys.initial_search(terms));
}, },
getSubsearchResultSet: function(previousResults, terms, callback, cancellable) { getSubsearchResultSet: function(previousResults, terms) {
callback(this._appSys.subsearch(previousResults, terms)); this.searchSystem.setResults(this, this._appSys.subsearch(previousResults, terms));
}, },
activateResult: function(result) { activateResult: function(app) {
let app = this._appSys.lookup_app(result);
let event = Clutter.get_current_event(); let event = Clutter.get_current_event();
let modifiers = event ? event.get_state() : 0; let modifiers = event ? event.get_state() : 0;
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK; let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
@ -916,8 +913,8 @@ const AppSearchProvider = new Lang.Class({
app.open_new_window(workspace); app.open_new_window(workspace);
}, },
createResultObject: function (resultMeta) { createResultObject: function (resultMeta, terms) {
let app = this._appSys.lookup_app(resultMeta['id']); let app = resultMeta['id'];
return new AppIcon(app); return new AppIcon(app);
} }
}); });
@ -1355,9 +1352,7 @@ const AppIcon = new Lang.Class({
this._removeMenuTimeout(); this._removeMenuTimeout();
this._menuTimeoutId = Mainloop.timeout_add(MENU_POPUP_TIMEOUT, this._menuTimeoutId = Mainloop.timeout_add(MENU_POPUP_TIMEOUT,
Lang.bind(this, function() { Lang.bind(this, function() {
this._menuTimeoutId = 0;
this.popupMenu(); this.popupMenu();
return false;
})); }));
} else if (button == 3) { } else if (button == 3) {
this.popupMenu(); this.popupMenu();
@ -1503,7 +1498,9 @@ const AppIconMenu = new Lang.Class({
_redisplay: function() { _redisplay: function() {
this.removeAll(); this.removeAll();
let windows = this._source.app.get_windows(); let windows = this._source.app.get_windows().filter(function(w) {
return Shell.WindowTracker.is_window_interesting(w);
});
// Display the app windows menu items and the separator between windows // Display the app windows menu items and the separator between windows
// of the current desktop and other windows. // of the current desktop and other windows.

View File

@ -315,6 +315,7 @@ const Background = new Lang.Class({
this._brightness = 1.0; this._brightness = 1.0;
this._vignetteSharpness = 0.2; this._vignetteSharpness = 0.2;
this._saturation = 1.0;
this._cancellable = new Gio.Cancellable(); this._cancellable = new Gio.Cancellable();
this.isLoaded = false; this.isLoaded = false;
@ -415,6 +416,7 @@ const Background = new Lang.Class({
}, },
_addImage: function(content, index, filename) { _addImage: function(content, index, filename) {
content.saturation = this._saturation;
content.brightness = this._brightness; content.brightness = this._brightness;
content.vignette_sharpness = this._vignetteSharpness; content.vignette_sharpness = this._vignetteSharpness;
@ -430,6 +432,7 @@ const Background = new Lang.Class({
}, },
_updateImage: function(content, index, filename) { _updateImage: function(content, index, filename) {
content.saturation = this._saturation;
content.brightness = this._brightness; content.brightness = this._brightness;
content.vignette_sharpness = this._vignetteSharpness; content.vignette_sharpness = this._vignetteSharpness;
@ -587,6 +590,24 @@ const Background = new Lang.Class({
this._loadFile(filename); this._loadFile(filename);
}, },
get saturation() {
return this._saturation;
},
set saturation(saturation) {
this._saturation = saturation;
if (this._pattern && this._pattern.content)
this._pattern.content.saturation = saturation;
let keys = Object.keys(this._images);
for (let i = 0; i < keys.length; i++) {
let image = this._images[keys[i]];
if (image && image.content)
image.content.saturation = saturation;
}
},
get brightness() { get brightness() {
return this._brightness; return this._brightness;
}, },
@ -730,6 +751,7 @@ const BackgroundManager = new Lang.Class({
let newBackground = this._createBackground(monitorIndex); let newBackground = this._createBackground(monitorIndex);
newBackground.vignetteSharpness = background.vignetteSharpness; newBackground.vignetteSharpness = background.vignetteSharpness;
newBackground.brightness = background.brightness; newBackground.brightness = background.brightness;
newBackground.saturation = background.saturation;
newBackground.visible = background.visible; newBackground.visible = background.visible;
newBackground.loadedSignalId = newBackground.connect('loaded', newBackground.loadedSignalId = newBackground.connect('loaded',

View File

@ -190,18 +190,16 @@ const EmptyEventSource = new Lang.Class({
}); });
Signals.addSignalMethods(EmptyEventSource.prototype); Signals.addSignalMethods(EmptyEventSource.prototype);
const CalendarServerIface = '<node> \ const CalendarServerIface = <interface name="org.gnome.Shell.CalendarServer">
<interface name="org.gnome.Shell.CalendarServer"> \ <method name="GetEvents">
<method name="GetEvents"> \ <arg type="x" direction="in" />
<arg type="x" direction="in" /> \ <arg type="x" direction="in" />
<arg type="x" direction="in" /> \ <arg type="b" direction="in" />
<arg type="b" direction="in" /> \ <arg type="a(sssbxxa{sv})" direction="out" />
<arg type="a(sssbxxa{sv})" direction="out" /> \ </method>
</method> \ <property name="HasCalendars" type="b" access="read" />
<property name="HasCalendars" type="b" access="read" /> \ <signal name="Changed" />
<signal name="Changed" /> \ </interface>;
</interface> \
</node>';
const CalendarServerInfo = Gio.DBusInterfaceInfo.new_for_xml(CalendarServerIface); const CalendarServerInfo = Gio.DBusInterfaceInfo.new_for_xml(CalendarServerIface);

View File

@ -75,14 +75,12 @@ function startAppForMount(app, mount) {
/******************************************/ /******************************************/
const HotplugSnifferIface = '<node> \ const HotplugSnifferIface = <interface name="org.gnome.Shell.HotplugSniffer">
<interface name="org.gnome.Shell.HotplugSniffer"> \ <method name="SniffURI">
<method name="SniffURI"> \ <arg type="s" direction="in" />
<arg type="s" direction="in" /> \ <arg type="as" direction="out" />
<arg type="as" direction="out" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface); const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface);
function HotplugSniffer() { function HotplugSniffer() {

View File

@ -138,8 +138,6 @@ const NetworkSecretDialog = new Lang.Class({
key: Clutter.KEY_Escape, key: Clutter.KEY_Escape,
}, },
this._okButton]); this._okButton]);
this._updateOkButton();
}, },
_updateOkButton: function() { _updateOkButton: function() {
@ -434,7 +432,6 @@ const VPNRequestHandler = new Lang.Class({
}, },
_vpnChildFinished: function(pid, status, requestObj) { _vpnChildFinished: function(pid, status, requestObj) {
this._childWatch = 0;
if (this._newStylePlugin) { if (this._newStylePlugin) {
// For new style plugin, all work is done in the async reading functions // For new style plugin, all work is done in the async reading functions
// Just reap the process here // Just reap the process here

View File

@ -446,7 +446,6 @@ const ChatSource = new Lang.Class({
this._closedId = this._channel.connect('invalidated', Lang.bind(this, this._channelClosed)); this._closedId = this._channel.connect('invalidated', Lang.bind(this, this._channelClosed));
this._notification = new ChatNotification(this); this._notification = new ChatNotification(this);
this._notification.connect('clicked', Lang.bind(this, this.open));
this._notification.setUrgency(MessageTray.Urgency.HIGH); this._notification.setUrgency(MessageTray.Urgency.HIGH);
this._notifyTimeoutId = 0; this._notifyTimeoutId = 0;
@ -545,19 +544,20 @@ const ChatSource = new Lang.Class({
this._notification.update(this._notification.title, null, { customContent: true }); this._notification.update(this._notification.title, null, { customContent: true });
}, },
open: function() { open: function(notification) {
if (this._client.is_handling_channel(this._channel)) { if (this._client.is_handling_channel(this._channel)) {
// We are handling the channel, try to pass it to Empathy // We are handling the channel, try to pass it to Empathy
this._client.delegate_channels_async([this._channel], this._client.delegate_channels_async([this._channel],
global.get_current_time(), global.get_current_time(),
'org.freedesktop.Telepathy.Client.Empathy.Chat', null); 'org.freedesktop.Telepathy.Client.Empathy.Chat', null);
} else { }
// We are not the handler, just ask to present the channel else {
let dbus = Tp.DBusDaemon.dup(); // We are not the handler, just ask to present the channel
let cd = Tp.ChannelDispatcher.new(dbus); let dbus = Tp.DBusDaemon.dup();
let cd = Tp.ChannelDispatcher.new(dbus);
cd.present_channel_async(this._channel, global.get_current_time(), null); cd.present_channel_async(this._channel, global.get_current_time(), null);
} }
}, },
_getLogMessages: function() { _getLogMessages: function() {
@ -960,8 +960,6 @@ const ChatNotification = new Lang.Class({
}, },
appendTimestamp: function() { appendTimestamp: function() {
this._timestampTimeoutId = 0;
let lastMessageTime = this._history[0].time; let lastMessageTime = this._history[0].time;
let lastMessageDate = new Date(lastMessageTime * 1000); let lastMessageDate = new Date(lastMessageTime * 1000);
@ -1097,16 +1095,22 @@ const RoomInviteNotification = new Lang.Class({
* for example. */ * for example. */
this.addBody(_("%s is inviting you to join %s").format(inviter.get_alias(), channel.get_identifier())); this.addBody(_("%s is inviting you to join %s").format(inviter.get_alias(), channel.get_identifier()));
this.addAction(_("Decline"), Lang.bind(this, function() { this.addButton('decline', _("Decline"));
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) { this.addButton('accept', _("Accept"));
src.leave_channels_finish(result);
}); this.connect('action-invoked', Lang.bind(this, function(self, action) {
this.destroy(); switch (action) {
})); case 'decline':
this.addAction(_("Accept"), Lang.bind(this, function() { dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE,
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) { '', function(src, result) {
src.handle_with_time_finish(result); src.leave_channels_finish(result)});
}); break;
case 'accept':
dispatchOp.handle_with_time_async('', global.get_current_time(),
function(src, result) {
src.handle_with_time_finish(result)});
break;
}
this.destroy(); this.destroy();
})); }));
} }
@ -1132,17 +1136,23 @@ const AudioVideoNotification = new Lang.Class({
this.setUrgency(MessageTray.Urgency.CRITICAL); this.setUrgency(MessageTray.Urgency.CRITICAL);
this.addAction(_("Decline"), Lang.bind(this, function() { this.addButton('reject', _("Decline"));
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
src.leave_channels_finish(result);
});
this.destroy();
}));
/* translators: this is a button label (verb), not a noun */ /* translators: this is a button label (verb), not a noun */
this.addAction(_("Answer"), Lang.bind(this, function() { this.addButton('answer', _("Answer"));
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
src.handle_with_time_finish(result); this.connect('action-invoked', Lang.bind(this, function(self, action) {
}); switch (action) {
case 'reject':
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE,
'', function(src, result) {
src.leave_channels_finish(result)});
break;
case 'answer':
dispatchOp.handle_with_time_async('', global.get_current_time(),
function(src, result) {
src.handle_with_time_finish(result)});
break;
}
this.destroy(); this.destroy();
})); }));
} }
@ -1166,16 +1176,22 @@ const FileTransferNotification = new Lang.Class({
{ customContent: true }); { customContent: true });
this.setResident(true); this.setResident(true);
this.addAction(_("Decline"), Lang.bind(this, function() { this.addButton('decline', _("Decline"));
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) { this.addButton('accept', _("Accept"));
src.leave_channels_finish(result);
}); this.connect('action-invoked', Lang.bind(this, function(self, action) {
this.destroy(); switch (action) {
})); case 'decline':
this.addAction(_("Accept"), Lang.bind(this, function() { dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE,
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) { '', function(src, result) {
src.handle_with_time_finish(result); src.leave_channels_finish(result)});
}); break;
case 'accept':
dispatchOp.handle_with_time_async('', global.get_current_time(),
function(src, result) {
src.handle_with_time_finish(result)});
break;
}
this.destroy(); this.destroy();
})); }));
} }
@ -1223,20 +1239,27 @@ const SubscriptionRequestNotification = new Lang.Class({
this.addActor(layout); this.addActor(layout);
this.addAction(_("Decline"), Lang.bind(this, function() { this.addButton('decline', _("Decline"));
contact.remove_async(function(src, result) { this.addButton('accept', _("Accept"));
src.remove_finish(result);
});
}));
this.addAction(_("Accept"), Lang.bind(this, function() {
// Authorize the contact and request to see his status as well
contact.authorize_publication_async(function(src, result) {
src.authorize_publication_finish(result);
});
contact.request_subscription_async('', function(src, result) { this.connect('action-invoked', Lang.bind(this, function(self, action) {
src.request_subscription_finish(result); switch (action) {
}); case 'decline':
contact.remove_async(function(src, result) {
src.remove_finish(result)});
break;
case 'accept':
// Authorize the contact and request to see his status as well
contact.authorize_publication_async(function(src, result) {
src.authorize_publication_finish(result)});
contact.request_subscription_async('', function(src, result) {
src.request_subscription_finish(result)});
break;
}
// rely on _subscriptionStatesChangedCb to destroy the
// notification
})); }));
this._changedId = contact.connect('subscription-states-changed', this._changedId = contact.connect('subscription-states-changed',
@ -1335,11 +1358,18 @@ const AccountNotification = new Lang.Class({
this._account = account; this._account = account;
this.addAction(_("View account"), Lang.bind(this, function() { this.addButton('view', _("View account"));
let cmd = 'empathy-accounts --select-account=' +
account.get_path_suffix(); this.connect('action-invoked', Lang.bind(this, function(self, action) {
let app_info = Gio.app_info_create_from_commandline(cmd, null, 0); switch (action) {
app_info.launch([], global.create_app_launch_context()); case 'view':
let cmd = 'empathy-accounts --select-account=' +
account.get_path_suffix();
let app_info = Gio.app_info_create_from_commandline(cmd, null, 0);
app_info.launch([], global.create_app_launch_context());
break;
}
this.destroy();
})); }));
this._enabledId = account.connect('notify::enabled', this._enabledId = account.connect('notify::enabled',

View File

@ -576,7 +576,6 @@ const Dash = new Lang.Class({
Lang.bind(this, function() { Lang.bind(this, function() {
this._labelShowing = true; this._labelShowing = true;
item.showLabel(); item.showLabel();
this._showLabelTimeoutId = 0;
return false; return false;
})); }));
if (this._resetHoverTimeoutId > 0) { if (this._resetHoverTimeoutId > 0) {
@ -593,7 +592,6 @@ const Dash = new Lang.Class({
this._resetHoverTimeoutId = Mainloop.timeout_add(DASH_ITEM_HOVER_TIMEOUT, this._resetHoverTimeoutId = Mainloop.timeout_add(DASH_ITEM_HOVER_TIMEOUT,
Lang.bind(this, function() { Lang.bind(this, function() {
this._labelShowing = false; this._labelShowing = false;
this._resetHoverTimeoutId = 0;
return false; return false;
})); }));
} }

View File

@ -236,7 +236,7 @@ const _Draggable = new Lang.Class({
if (this.actor._delegate && this.actor._delegate.getDragActor) { if (this.actor._delegate && this.actor._delegate.getDragActor) {
this._dragActor = this.actor._delegate.getDragActor(); this._dragActor = this.actor._delegate.getDragActor();
Main.uiGroup.add_child(this._dragActor); this._dragActor.reparent(Main.uiGroup);
this._dragActor.raise_top(); this._dragActor.raise_top();
Shell.util_set_hidden_from_pick(this._dragActor, true); Shell.util_set_hidden_from_pick(this._dragActor, true);
@ -285,8 +285,7 @@ const _Draggable = new Lang.Class({
this._dragOffsetX = actorStageX - this._dragStartX; this._dragOffsetX = actorStageX - this._dragStartX;
this._dragOffsetY = actorStageY - this._dragStartY; this._dragOffsetY = actorStageY - this._dragStartY;
this._dragOrigParent.remove_actor(this._dragActor); this._dragActor.reparent(Main.uiGroup);
Main.uiGroup.add_child(this._dragActor);
this._dragActor.raise_top(); this._dragActor.raise_top();
Shell.util_set_hidden_from_pick(this._dragActor, true); Shell.util_set_hidden_from_pick(this._dragActor, true);
} }
@ -346,7 +345,6 @@ const _Draggable = new Lang.Class({
}, },
_updateDragHover : function () { _updateDragHover : function () {
this._updateHoverId = 0;
let target = this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL, let target = this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL,
this._dragX, this._dragY); this._dragX, this._dragY);
let dragEvent = { let dragEvent = {
@ -391,7 +389,7 @@ const _Draggable = new Lang.Class({
_queueUpdateDragHover: function() { _queueUpdateDragHover: function() {
if (this._updateHoverId) if (this._updateHoverId)
return; GLib.source_remove(this._updateHoverId);
this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT,
Lang.bind(this, this._updateDragHover)); Lang.bind(this, this._updateDragHover));
@ -557,8 +555,7 @@ const _Draggable = new Lang.Class({
_onAnimationComplete : function (dragActor, eventTime) { _onAnimationComplete : function (dragActor, eventTime) {
if (this._dragOrigParent) { if (this._dragOrigParent) {
Main.uiGroup.remove_child(this._dragActor); dragActor.reparent(this._dragOrigParent);
this._dragOrigParent.add_actor(this._dragActor);
dragActor.set_scale(this._dragOrigScale, this._dragOrigScale); dragActor.set_scale(this._dragOrigScale, this._dragOrigScale);
dragActor.set_position(this._dragOrigX, this._dragOrigY); dragActor.set_position(this._dragOrigX, this._dragOrigY);
} else { } else {

View File

@ -43,22 +43,20 @@ const _DIALOG_ICON_SIZE = 32;
const GSM_SESSION_MANAGER_LOGOUT_FORCE = 2; const GSM_SESSION_MANAGER_LOGOUT_FORCE = 2;
const EndSessionDialogIface = '<node> \ const EndSessionDialogIface = <interface name="org.gnome.SessionManager.EndSessionDialog">
<interface name="org.gnome.SessionManager.EndSessionDialog"> \ <method name="Open">
<method name="Open"> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ <arg type="ao" direction="in" />
<arg type="ao" direction="in" /> \ </method>
</method> \ <method name="Close" />
<method name="Close" /> \ <signal name="ConfirmedLogout" />
<signal name="ConfirmedLogout" /> \ <signal name="ConfirmedReboot" />
<signal name="ConfirmedReboot" /> \ <signal name="ConfirmedShutdown" />
<signal name="ConfirmedShutdown" /> \ <signal name="Canceled" />
<signal name="Canceled" /> \ <signal name="Closed" />
<signal name="Closed" /> \ </interface>;
</interface> \
</node>';
const logoutDialogContent = { const logoutDialogContent = {
subjectWithUser: C_("title", "Log Out %s"), subjectWithUser: C_("title", "Log Out %s"),
@ -133,15 +131,13 @@ const DialogContent = {
const MAX_USERS_IN_SESSION_DIALOG = 5; const MAX_USERS_IN_SESSION_DIALOG = 5;
const LogindSessionIface = '<node> \ const LogindSessionIface = <interface name='org.freedesktop.login1.Session'>
<interface name="org.freedesktop.login1.Session"> \ <property name="Id" type="s" access="read"/>
<property name="Id" type="s" access="read"/> \ <property name="Remote" type="b" access="read"/>
<property name="Remote" type="b" access="read"/> \ <property name="Class" type="s" access="read"/>
<property name="Class" type="s" access="read"/> \ <property name="Type" type="s" access="read"/>
<property name="Type" type="s" access="read"/> \ <property name="State" type="s" access="read"/>
<property name="State" type="s" access="read"/> \ </interface>;
</interface> \
</node>';
const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface); const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface);
@ -273,15 +269,13 @@ const EndSessionDialog = new Lang.Class({
this._applicationHeader = new St.Label({ style_class: 'end-session-dialog-list-header', this._applicationHeader = new St.Label({ style_class: 'end-session-dialog-list-header',
text: _("Some applications are busy or have unsaved work.") }); text: _("Some applications are busy or have unsaved work.") });
this._applicationList = new St.BoxLayout({ style_class: 'end-session-dialog-app-list', this._applicationList = new St.BoxLayout({ vertical: true });
vertical: true });
this._inhibitorSection.add_actor(this._applicationHeader); this._inhibitorSection.add_actor(this._applicationHeader);
this._inhibitorSection.add_actor(this._applicationList); this._inhibitorSection.add_actor(this._applicationList);
this._sessionHeader = new St.Label({ style_class: 'end-session-dialog-list-header', this._sessionHeader = new St.Label({ style_class: 'end-session-dialog-list-header',
text: _("Other users are logged in.") }); text: _("Other users are logged in.") });
this._sessionList = new St.BoxLayout({ style_class: 'end-session-dialog-session-list', this._sessionList = new St.BoxLayout({ vertical: true });
vertical: true });
this._inhibitorSection.add_actor(this._sessionHeader); this._inhibitorSection.add_actor(this._sessionHeader);
this._inhibitorSection.add_actor(this._sessionList); this._inhibitorSection.add_actor(this._sessionList);
@ -415,7 +409,6 @@ const EndSessionDialog = new Lang.Class({
let dialogContent = DialogContent[this._type]; let dialogContent = DialogContent[this._type];
let button = dialogContent.confirmButtons[dialogContent.confirmButtons.length - 1]; let button = dialogContent.confirmButtons[dialogContent.confirmButtons.length - 1];
this._confirm(button.signal); this._confirm(button.signal);
this._timerId = 0;
return false; return false;
})); }));

View File

@ -253,7 +253,7 @@ function onEnabledExtensionsChanged() {
newEnabledExtensions.filter(function(uuid) { newEnabledExtensions.filter(function(uuid) {
return enabledExtensions.indexOf(uuid) == -1; return enabledExtensions.indexOf(uuid) == -1;
}).forEach(function(uuid) { }).forEach(function(uuid) {
enableExtension(uuid); enableExtension(uuid);
}); });
// Find and disable all the newly disabled extensions: UUIDs found in the // Find and disable all the newly disabled extensions: UUIDs found in the
@ -261,7 +261,7 @@ function onEnabledExtensionsChanged() {
enabledExtensions.filter(function(item) { enabledExtensions.filter(function(item) {
return newEnabledExtensions.indexOf(item) == -1; return newEnabledExtensions.indexOf(item) == -1;
}).forEach(function(uuid) { }).forEach(function(uuid) {
disableExtension(uuid); disableExtension(uuid);
}); });
enabledExtensions = newEnabledExtensions; enabledExtensions = newEnabledExtensions;
@ -272,7 +272,7 @@ function _loadExtensions() {
enabledExtensions = getEnabledExtensions(); enabledExtensions = getEnabledExtensions();
let finder = new ExtensionUtils.ExtensionFinder(); let finder = new ExtensionUtils.ExtensionFinder();
finder.connect('extension-found', function(finder, extension) { finder.connect('extension-found', function(signals, extension) {
loadExtension(extension); loadExtension(extension);
}); });
finder.scanExtensions(); finder.scanExtensions();

View File

@ -413,18 +413,15 @@ const IconGrid = new Lang.Class({
}, },
removeAll: function() { removeAll: function() {
this._items = [];
this._grid.remove_all_children();
},
destroyAll: function() {
this._items = []; this._items = [];
this._grid.destroy_all_children(); this._grid.destroy_all_children();
}, },
addItem: function(item, index) { addItem: function(item, index) {
if (!item.icon instanceof BaseIcon) if (!item.icon || !item.icon instanceof BaseIcon) {
throw new Error('Only items with a BaseIcon icon property can be added to IconGrid'); log('Only items with a BaseIcon icon property can be added to IconGrid');
return;
}
this._items.push(item); this._items.push(item);
if (index !== undefined) if (index !== undefined)

View File

@ -23,29 +23,27 @@ const KEYBOARD_TYPE = 'keyboard-type';
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications'; const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
const SHOW_KEYBOARD = 'screen-keyboard-enabled'; const SHOW_KEYBOARD = 'screen-keyboard-enabled';
const CaribouKeyboardIface = '<node> \ const CaribouKeyboardIface = <interface name='org.gnome.Caribou.Keyboard'>
<interface name="org.gnome.Caribou.Keyboard"> \ <method name='Show'>
<method name="Show"> \ <arg type='u' direction='in' />
<arg type="u" direction="in" /> \ </method>
</method> \ <method name='Hide'>
<method name="Hide"> \ <arg type='u' direction='in' />
<arg type="u" direction="in" /> \ </method>
</method> \ <method name='SetCursorLocation'>
<method name="SetCursorLocation"> \ <arg type='i' direction='in' />
<arg type="i" direction="in" /> \ <arg type='i' direction='in' />
<arg type="i" direction="in" /> \ <arg type='i' direction='in' />
<arg type="i" direction="in" /> \ <arg type='i' direction='in' />
<arg type="i" direction="in" /> \ </method>
</method> \ <method name='SetEntryLocation'>
<method name="SetEntryLocation"> \ <arg type='i' direction='in' />
<arg type="i" direction="in" /> \ <arg type='i' direction='in' />
<arg type="i" direction="in" /> \ <arg type='i' direction='in' />
<arg type="i" direction="in" /> \ <arg type='i' direction='in' />
<arg type="i" direction="in" /> \ </method>
</method> \ <property name='Name' access='read' type='s' />
<property name="Name" access="read" type="s" /> \ </interface>;
</interface> \
</node>';
const Key = new Lang.Class({ const Key = new Lang.Class({
Name: 'Key', Name: 'Key',

View File

@ -629,6 +629,55 @@ const Inspector = new Lang.Class({
Signals.addSignalMethods(Inspector.prototype); Signals.addSignalMethods(Inspector.prototype);
const Memory = new Lang.Class({
Name: 'Memory',
_init: function() {
this.actor = new St.BoxLayout({ vertical: true });
this._glibc_uordblks = new St.Label();
this.actor.add(this._glibc_uordblks);
this._js_bytes = new St.Label();
this.actor.add(this._js_bytes);
this._gjs_boxed = new St.Label();
this.actor.add(this._gjs_boxed);
this._gjs_gobject = new St.Label();
this.actor.add(this._gjs_gobject);
this._gjs_function = new St.Label();
this.actor.add(this._gjs_function);
this._gjs_closure = new St.Label();
this.actor.add(this._gjs_closure);
this._last_gc_seconds_ago = new St.Label();
this.actor.add(this._last_gc_seconds_ago);
this._gcbutton = new St.Button({ label: 'Full GC',
style_class: 'lg-obj-inspector-button' });
this._gcbutton.connect('clicked', Lang.bind(this, function () { System.gc(); this._renderText(); }));
this.actor.add(this._gcbutton, { x_align: St.Align.START,
x_fill: false });
this.actor.connect('notify::mapped', Lang.bind(this, this._renderText));
},
_renderText: function() {
if (!this.actor.mapped)
return;
let memInfo = global.get_memory_info();
this._glibc_uordblks.text = 'glibc_uordblks: ' + memInfo.glibc_uordblks;
this._js_bytes.text = 'js bytes: ' + memInfo.js_bytes;
this._gjs_boxed.text = 'gjs_boxed: ' + memInfo.gjs_boxed;
this._gjs_gobject.text = 'gjs_gobject: ' + memInfo.gjs_gobject;
this._gjs_function.text = 'gjs_function: ' + memInfo.gjs_function;
this._gjs_closure.text = 'gjs_closure: ' + memInfo.gjs_closure;
this._last_gc_seconds_ago.text = 'last_gc_seconds_ago: ' + memInfo.last_gc_seconds_ago;
}
});
const Extensions = new Lang.Class({ const Extensions = new Lang.Class({
Name: 'Extensions', Name: 'Extensions',
@ -831,19 +880,6 @@ const LookingGlass = new Lang.Class({
return true; return true;
})); }));
let gcIcon = new St.Icon({ icon_name: 'gnome-fs-trash-full',
icon_size: 24 });
toolbar.add_actor(gcIcon);
gcIcon.reactive = true;
gcIcon.connect('button-press-event', Lang.bind(this, function () {
gcIcon.icon_name = 'gnome-fs-trash-empty';
System.gc();
this._timeoutId = Mainloop.timeout_add(500, Lang.bind(this, function () {
gcIcon.icon_name = 'gnome-fs-trash-full';
Mainloop.source_remove(this._timeoutId);
}));
}));
let notebook = new Notebook(); let notebook = new Notebook();
this._notebook = notebook; this._notebook = notebook;
this.actor.add(notebook.actor, { expand: true }); this.actor.add(notebook.actor, { expand: true });
@ -871,6 +907,9 @@ const LookingGlass = new Lang.Class({
this._windowList = new WindowList(this); this._windowList = new WindowList(this);
notebook.appendPage('Windows', this._windowList.actor); notebook.appendPage('Windows', this._windowList.actor);
this._memory = new Memory();
notebook.appendPage('Memory', this._memory.actor);
this._extensions = new Extensions(this); this._extensions = new Extensions(this);
notebook.appendPage('Extensions', this._extensions.actor); notebook.appendPage('Extensions', this._extensions.actor);

View File

@ -9,89 +9,85 @@ const ZOOM_SERVICE_PATH = '/org/gnome/Magnifier/ZoomRegion';
// Subset of gnome-mag's Magnifier dbus interface -- to be expanded. See: // Subset of gnome-mag's Magnifier dbus interface -- to be expanded. See:
// http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml // http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml
const MagnifierIface = '<node> \ const MagnifierIface = <interface name="org.gnome.Magnifier">
<interface name="org.gnome.Magnifier"> \ <method name="setActive">
<method name="setActive"> \ <arg type="b" direction="in" />
<arg type="b" direction="in" /> \ </method>
</method> \ <method name="isActive">
<method name="isActive"> \ <arg type="b" direction="out" />
<arg type="b" direction="out" /> \ </method>
</method> \ <method name="showCursor" />
<method name="showCursor" /> \ <method name="hideCursor" />
<method name="hideCursor" /> \ <method name="createZoomRegion">
<method name="createZoomRegion"> \ <arg type="d" direction="in" />
<arg type="d" direction="in" /> \ <arg type="d" direction="in" />
<arg type="d" direction="in" /> \ <arg type="ai" direction="in" />
<arg type="ai" direction="in" /> \ <arg type="ai" direction="in" />
<arg type="ai" direction="in" /> \ <arg type="o" direction="out" />
<arg type="o" direction="out" /> \ </method>
</method> \ <method name="addZoomRegion">
<method name="addZoomRegion"> \ <arg type="o" direction="in" />
<arg type="o" direction="in" /> \ <arg type="b" direction="out" />
<arg type="b" direction="out" /> \ </method>
</method> \ <method name="getZoomRegions">
<method name="getZoomRegions"> \ <arg type="ao" direction="out" />
<arg type="ao" direction="out" /> \ </method>
</method> \ <method name="clearAllZoomRegions" />
<method name="clearAllZoomRegions" /> \ <method name="fullScreenCapable">
<method name="fullScreenCapable"> \ <arg type="b" direction="out" />
<arg type="b" direction="out" /> \ </method>
</method> \ <method name="setCrosswireSize">
<method name="setCrosswireSize"> \ <arg type="i" direction="in" />
<arg type="i" direction="in" /> \ </method>
</method> \ <method name="getCrosswireSize">
<method name="getCrosswireSize"> \ <arg type="i" direction="out" />
<arg type="i" direction="out" /> \ </method>
</method> \ <method name="setCrosswireLength">
<method name="setCrosswireLength"> \ <arg type="i" direction="in" />
<arg type="i" direction="in" /> \ </method>
</method> \ <method name="getCrosswireLength">
<method name="getCrosswireLength"> \ <arg type="i" direction="out" />
<arg type="i" direction="out" /> \ </method>
</method> \ <method name="setCrosswireClip">
<method name="setCrosswireClip"> \ <arg type="b" direction="in" />
<arg type="b" direction="in" /> \ </method>
</method> \ <method name="getCrosswireClip">
<method name="getCrosswireClip"> \ <arg type="b" direction="out" />
<arg type="b" direction="out" /> \ </method>
</method> \ <method name="setCrosswireColor">
<method name="setCrosswireColor"> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ </method>
</method> \ <method name="getCrosswireColor">
<method name="getCrosswireColor"> \ <arg type="u" direction="out" />
<arg type="u" direction="out" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
// Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded. See: // Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded. See:
// http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml // http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml
const ZoomRegionIface = '<node> \ const ZoomRegionIface = <interface name="org.gnome.Magnifier.ZoomRegion">
<interface name="org.gnome.Magnifier.ZoomRegion"> \ <method name="setMagFactor">
<method name="setMagFactor"> \ <arg type="d" direction="in" />
<arg type="d" direction="in" /> \ <arg type="d" direction="in" />
<arg type="d" direction="in" /> \ </method>
</method> \ <method name="getMagFactor">
<method name="getMagFactor"> \ <arg type="d" direction="out" />
<arg type="d" direction="out" /> \ <arg type="d" direction="out" />
<arg type="d" direction="out" /> \ </method>
</method> \ <method name="setRoi">
<method name="setRoi"> \ <arg type="ai" direction="in" />
<arg type="ai" direction="in" /> \ </method>
</method> \ <method name="getRoi">
<method name="getRoi"> \ <arg type="ai" direction="out" />
<arg type="ai" direction="out" /> \ </method>
</method> \ <method name="shiftContentsTo">
<method name="shiftContentsTo"> \ <arg type="i" direction="in" />
<arg type="i" direction="in" /> \ <arg type="i" direction="in" />
<arg type="i" direction="in" /> \ <arg type="b" direction="out" />
<arg type="b" direction="out" /> \ </method>
</method> \ <method name="moveResize">
<method name="moveResize"> \ <arg type="ai" direction="in" />
<arg type="ai" direction="in" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
// For making unique ZoomRegion DBus proxy object paths of the form: // For making unique ZoomRegion DBus proxy object paths of the form:
// '/org/gnome/Magnifier/ZoomRegion/zoomer0', // '/org/gnome/Magnifier/ZoomRegion/zoomer0',

View File

@ -112,6 +112,11 @@ function start() {
Gio.DesktopAppInfo.set_desktop_env('GNOME'); Gio.DesktopAppInfo.set_desktop_env('GNOME');
sessionMode = new SessionMode.SessionMode(); sessionMode = new SessionMode.SessionMode();
sessionMode.connect('sessions-loaded', _sessionsLoaded);
sessionMode.init();
}
function _sessionsLoaded() {
sessionMode.connect('updated', _sessionUpdated); sessionMode.connect('updated', _sessionUpdated);
_initializePrefs(); _initializePrefs();
_initializeUI(); _initializeUI();

View File

@ -280,6 +280,10 @@ const URLHighlighter = new Lang.Class({
} }
}); });
function strHasSuffix(string, suffix) {
return string.substr(-suffix.length) == suffix;
}
// NotificationPolicy: // NotificationPolicy:
// An object that holds all bits of configurable policy related to a notification // An object that holds all bits of configurable policy related to a notification
// source, such as whether to play sound or honour the critical bit. // source, such as whether to play sound or honour the critical bit.
@ -499,6 +503,7 @@ const Notification = new Lang.Class({
this.focused = false; this.focused = false;
this.acknowledged = false; this.acknowledged = false;
this._destroyed = false; this._destroyed = false;
this._useActionIcons = false;
this._customContent = false; this._customContent = false;
this.bannerBodyText = null; this.bannerBodyText = null;
this.bannerBodyMarkup = false; this.bannerBodyMarkup = false;
@ -831,7 +836,17 @@ const Notification = new Lang.Class({
} }
}, },
addButton: function(button, callback) { // addButton:
// @id: the action ID
// @label: the label for the action's button
//
// Adds a button with the given @label to the notification. All
// action buttons will appear in a single row at the bottom of
// the notification.
//
// If the button is clicked, the notification will emit the
// %action-invoked signal with @id as a parameter
addButton: function(id, label) {
if (!this._buttonBox) { if (!this._buttonBox) {
let box = new St.BoxLayout({ style_class: 'notification-actions' }); let box = new St.BoxLayout({ style_class: 'notification-actions' });
this.setActionArea(box, { x_expand: false, this.setActionArea(box, { x_expand: false,
@ -843,37 +858,43 @@ const Notification = new Lang.Class({
global.focus_manager.add_group(this._buttonBox); global.focus_manager.add_group(this._buttonBox);
} }
this._buttonBox.add(button); let button = new St.Button({ can_focus: true });
button.connect('clicked', Lang.bind(this, function() { button._actionId = id;
callback();
if (!this.resident) { let iconName = strHasSuffix(id, '-symbolic') ? id : id + '-symbolic';
// We don't hide a resident notification when the user invokes one of its actions, if (this._useActionIcons && Gtk.IconTheme.get_default().has_icon(iconName)) {
// because it is common for such notifications to update themselves with new button.add_style_class_name('notification-icon-button');
// information based on the action. We'd like to display the updated information button.child = new St.Icon({ icon_name: iconName });
// in place, rather than pop-up a new notification. } else {
this.emit('done-displaying'); button.add_style_class_name('notification-button');
this.destroy(); button.label = label;
} }
}));
this._buttonBox.add(button);
button.connect('clicked', Lang.bind(this, this._onActionInvoked, id));
this.updated(); this.updated();
return button;
}, },
// addAction: // setButtonSensitive:
// @label: the label for the action's button // @id: the action ID
// @callback: the callback for the action // @sensitive: whether the button should be sensitive
// //
// Adds a button with the given @label to the notification. All // If the notification contains a button with action ID @id,
// action buttons will appear in a single row at the bottom of // its sensitivity will be set to @sensitive. Insensitive
// the notification. // buttons cannot be clicked.
addAction: function(label, callback) { setButtonSensitive: function(id, sensitive) {
let button = new St.Button({ style_class: 'notification-button', if (!this._buttonBox)
label: label, return;
can_focus: true });
return this.addButton(button, callback); let button = this._buttonBox.get_children().filter(function(b) {
return b._actionId == id;
})[0];
if (!button || button.reactive == sensitive)
return;
button.reactive = sensitive;
}, },
setUrgency: function(urgency) { setUrgency: function(urgency) {
@ -892,6 +913,10 @@ const Notification = new Lang.Class({
this.forFeedback = forFeedback; this.forFeedback = forFeedback;
}, },
setUseActionIcons: function(useIcons) {
this._useActionIcons = useIcons;
},
_styleChanged: function() { _styleChanged: function() {
this._spacing = this._table.get_theme_node().get_length('spacing-columns'); this._spacing = this._table.get_theme_node().get_length('spacing-columns');
}, },
@ -1116,6 +1141,18 @@ const Notification = new Lang.Class({
this.actor.add_style_class_name('notification-unexpanded'); this.actor.add_style_class_name('notification-unexpanded');
}, },
_onActionInvoked: function(actor, mouseButtonClicked, id) {
this.emit('action-invoked', id);
if (!this.resident) {
// We don't hide a resident notification when the user invokes one of its actions,
// because it is common for such notifications to update themselves with new
// information based on the action. We'd like to display the updated information
// in place, rather than pop-up a new notification.
this.emit('done-displaying');
this.destroy();
}
},
_onClicked: function() { _onClicked: function() {
this.emit('clicked'); this.emit('clicked');
// We hide all types of notifications once the user clicks on them because the common // We hide all types of notifications once the user clicks on them because the common
@ -1381,7 +1418,9 @@ const Source = new Lang.Class({
if (this.notifications.indexOf(notification) >= 0) if (this.notifications.indexOf(notification) >= 0)
return; return;
notification.connect('clicked', Lang.bind(this, this.open));
notification.connect('destroy', Lang.bind(this, this._onNotificationDestroy)); notification.connect('destroy', Lang.bind(this, this._onNotificationDestroy));
this.notifications.push(notification); this.notifications.push(notification);
this.emit('notification-added', notification); this.emit('notification-added', notification);
@ -2173,10 +2212,7 @@ const MessageTray = new Lang.Class({
}, },
toggleAndNavigate: function() { toggleAndNavigate: function() {
if (!this.toggle()) if (this.toggle())
return;
if (this._traySummoned)
this._summary.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); this._summary.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
}, },
@ -2356,6 +2392,13 @@ const MessageTray = new Lang.Class({
// _updateState() figures out what (if anything) needs to be done // _updateState() figures out what (if anything) needs to be done
// at the present time. // at the present time.
_updateState: function() { _updateState: function() {
// If our state changes caused _updateState to be called,
// just exit now to prevent reentrancy issues.
if (this._updatingState)
return;
this._updatingState = true;
// Filter out acknowledged notifications. // Filter out acknowledged notifications.
this._notificationQueue = this._notificationQueue.filter(function(n) { this._notificationQueue = this._notificationQueue.filter(function(n) {
return !n.acknowledged; return !n.acknowledged;
@ -2373,6 +2416,7 @@ const MessageTray = new Lang.Class({
this._showNotification(); this._showNotification();
} }
} else if (this._notificationState == State.SHOWN) { } else if (this._notificationState == State.SHOWN) {
let pinned = this._pointerInNotification && !this._notificationRemoved;
let expired = (this._userActiveWhileNotificationShown && let expired = (this._userActiveWhileNotificationShown &&
this._notificationTimeoutId == 0 && this._notificationTimeoutId == 0 &&
!(this._notification.urgency == Urgency.CRITICAL) && !(this._notification.urgency == Urgency.CRITICAL) &&
@ -2383,9 +2427,9 @@ const MessageTray = new Lang.Class({
if (mustClose) { if (mustClose) {
let animate = hasNotifications && !this._notificationRemoved; let animate = hasNotifications && !this._notificationRemoved;
this._hideNotification(animate); this._hideNotification(animate);
} else if (this._pointerInNotification && !this._notification.expanded) { } else if (pinned && !this._notification.expanded) {
this._expandNotification(false); this._expandNotification(false);
} else if (this._pointerInNotification) { } else if (pinned) {
this._ensureNotificationFocused(); this._ensureNotificationFocused();
} }
} }
@ -2437,6 +2481,8 @@ const MessageTray = new Lang.Class({
} else if (desktopCloneIsVisible && !desktopCloneShouldBeVisible) { } else if (desktopCloneIsVisible && !desktopCloneShouldBeVisible) {
this._hideDesktopClone(); this._hideDesktopClone();
} }
this._updatingState = false;
}, },
_tween: function(actor, statevar, value, params) { _tween: function(actor, statevar, value, params) {
@ -2755,12 +2801,12 @@ const MessageTray = new Lang.Class({
} else if (this._notification.y != expandedY) { } else if (this._notification.y != expandedY) {
// Tween also opacity here, to override a possible tween that's // Tween also opacity here, to override a possible tween that's
// currently hiding the notification. // currently hiding the notification.
Tweener.addTween(this._notificationWidget, this._tween(this._notificationWidget, '_notificationState', State.SHOWN,
{ y: expandedY, { y: expandedY,
opacity: 255, opacity: 255,
time: ANIMATION_TIME, time: ANIMATION_TIME,
transition: 'easeOutQuad' transition: 'easeOutQuad'
}); });
} }
}, },
@ -2801,13 +2847,13 @@ const MessageTray = new Lang.Class({
Lang.bind(this, this._onSourceDoneDisplayingContent)); Lang.bind(this, this._onSourceDoneDisplayingContent));
this._summaryBoxPointer.bin.child = child; this._summaryBoxPointer.bin.child = child;
this._grabHelper.grab({ actor: this._summaryBoxPointer.bin.child,
onUngrab: Lang.bind(this, this._onSummaryBoxPointerUngrabbed) });
this._summaryBoxPointer.actor.opacity = 0; this._summaryBoxPointer.actor.opacity = 0;
this._summaryBoxPointer.actor.show(); this._summaryBoxPointer.actor.show();
this._adjustSummaryBoxPointerPosition(); this._adjustSummaryBoxPointerPosition();
this._grabHelper.grab({ actor: this._summaryBoxPointer.bin.child,
onUngrab: Lang.bind(this, this._onSummaryBoxPointerUngrabbed) });
this._summaryBoxPointerState = State.SHOWING; this._summaryBoxPointerState = State.SHOWING;
this._summaryBoxPointer.show(BoxPointer.PopupAnimation.FULL, Lang.bind(this, function() { this._summaryBoxPointer.show(BoxPointer.PopupAnimation.FULL, Lang.bind(this, function() {
this._summaryBoxPointerState = State.SHOWN; this._summaryBoxPointerState = State.SHOWN;

View File

@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
const GdkPixbuf = imports.gi.GdkPixbuf; const GdkPixbuf = imports.gi.GdkPixbuf;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang; const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
@ -16,56 +15,54 @@ const MessageTray = imports.ui.messageTray;
const Params = imports.misc.params; const Params = imports.misc.params;
const Util = imports.misc.util; const Util = imports.misc.util;
let nextNotificationId = 1;
// Should really be defined in Gio.js // Should really be defined in Gio.js
const BusIface = '<node> \ const BusIface = <interface name="org.freedesktop.DBus">
<interface name="org.freedesktop.DBus"> \ <method name="GetConnectionUnixProcessID">
<method name="GetConnectionUnixProcessID"> \ <arg type="s" direction="in" />
<arg type="s" direction="in" /> \ <arg type="u" direction="out" />
<arg type="u" direction="out" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface); var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface);
function Bus() { function Bus() {
return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus'); return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus');
} }
const FdoNotificationsIface = '<node> \ const NotificationDaemonIface = <interface name="org.freedesktop.Notifications">
<interface name="org.freedesktop.Notifications"> \ <method name="Notify">
<method name="Notify"> \ <arg type="s" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="u" direction="in"/>
<arg type="u" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="as" direction="in"/>
<arg type="as" direction="in"/> \ <arg type="a{sv}" direction="in"/>
<arg type="a{sv}" direction="in"/> \ <arg type="i" direction="in"/>
<arg type="i" direction="in"/> \ <arg type="u" direction="out"/>
<arg type="u" direction="out"/> \ </method>
</method> \ <method name="CloseNotification">
<method name="CloseNotification"> \ <arg type="u" direction="in"/>
<arg type="u" direction="in"/> \ </method>
</method> \ <method name="GetCapabilities">
<method name="GetCapabilities"> \ <arg type="as" direction="out"/>
<arg type="as" direction="out"/> \ </method>
</method> \ <method name="GetServerInformation">
<method name="GetServerInformation"> \ <arg type="s" direction="out"/>
<arg type="s" direction="out"/> \ <arg type="s" direction="out"/>
<arg type="s" direction="out"/> \ <arg type="s" direction="out"/>
<arg type="s" direction="out"/> \ <arg type="s" direction="out"/>
<arg type="s" direction="out"/> \ </method>
</method> \ <signal name="NotificationClosed">
<signal name="NotificationClosed"> \ <arg type="u"/>
<arg type="u"/> \ <arg type="u"/>
<arg type="u"/> \ </signal>
</signal> \ <signal name="ActionInvoked">
<signal name="ActionInvoked"> \ <arg type="u"/>
<arg type="u"/> \ <arg type="s"/>
<arg type="s"/> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const NotificationClosedReason = { const NotificationClosedReason = {
EXPIRED: 1, EXPIRED: 1,
@ -106,11 +103,11 @@ const STANDARD_TRAY_ICON_IMPLEMENTATIONS = {
'ibus-ui-gtk': 'keyboard' 'ibus-ui-gtk': 'keyboard'
}; };
const FdoNotificationDaemon = new Lang.Class({ const NotificationDaemon = new Lang.Class({
Name: 'FdoNotificationDaemon', Name: 'NotificationDaemon',
_init: function() { _init: function() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(FdoNotificationsIface, this); this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(NotificationDaemonIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications'); this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications');
this._sources = []; this._sources = [];
@ -118,8 +115,6 @@ const FdoNotificationDaemon = new Lang.Class({
this._notifications = {}; this._notifications = {};
this._busProxy = new Bus(); this._busProxy = new Bus();
this._nextNotificationId = 1;
this._trayManager = new Shell.TrayManager(); this._trayManager = new Shell.TrayManager();
this._trayIconAddedId = this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded)); this._trayIconAddedId = this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
this._trayIconRemovedId = this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved)); this._trayIconRemovedId = this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
@ -218,7 +213,7 @@ const FdoNotificationDaemon = new Lang.Class({
} }
} }
let source = new FdoNotificationDaemonSource(title, pid, sender, trayIcon, ndata ? ndata.hints['desktop-entry'] : null); let source = new Source(title, pid, sender, trayIcon, ndata ? ndata.hints['desktop-entry'] : null);
source.setTransient(isForTransientNotification); source.setTransient(isForTransientNotification);
if (!isForTransientNotification) { if (!isForTransientNotification) {
@ -257,7 +252,7 @@ const FdoNotificationDaemon = new Lang.Class({
hints['category'] == 'presence.offline')) { hints['category'] == 'presence.offline')) {
// Ignore replacesId since we already sent back a // Ignore replacesId since we already sent back a
// NotificationClosed for that id. // NotificationClosed for that id.
id = this._nextNotificationId++; id = nextNotificationId++;
Mainloop.idle_add(Lang.bind(this, Mainloop.idle_add(Lang.bind(this,
function () { function () {
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED); this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
@ -301,7 +296,7 @@ const FdoNotificationDaemon = new Lang.Class({
ndata.notification = this._notifications[replacesId].notification; ndata.notification = this._notifications[replacesId].notification;
} else { } else {
replacesId = 0; replacesId = 0;
ndata.id = id = this._nextNotificationId++; ndata.id = id = nextNotificationId++;
} }
this._notifications[id] = ndata; this._notifications[id] = ndata;
@ -356,19 +351,6 @@ const FdoNotificationDaemon = new Lang.Class({
return invocation.return_value(GLib.Variant.new('(u)', [id])); return invocation.return_value(GLib.Variant.new('(u)', [id]));
}, },
_makeButton: function(id, label, useActionIcons) {
let button = new St.Button({ can_focus: true });
let iconName = id.endsWith('-symbolic') ? id : id + '-symbolic';
if (useActionIcons && Gtk.IconTheme.get_default().has_icon(iconName)) {
button.add_style_class_name('notification-icon-button');
button.child = new St.Icon({ icon_name: iconName });
} else {
button.add_style_class_name('notification-button');
button.label = label;
}
return button;
},
_notifyForSource: function(source, ndata) { _notifyForSource: function(source, ndata) {
let [id, icon, summary, body, actions, hints, notification] = let [id, icon, summary, body, actions, hints, notification] =
[ndata.id, ndata.icon, ndata.summary, ndata.body, [ndata.id, ndata.icon, ndata.summary, ndata.body,
@ -394,6 +376,10 @@ const FdoNotificationDaemon = new Lang.Class({
} }
this._emitNotificationClosed(ndata.id, notificationClosedReason); this._emitNotificationClosed(ndata.id, notificationClosedReason);
})); }));
notification.connect('action-invoked', Lang.bind(this,
function(n, actionId) {
this._emitActionInvoked(ndata.id, actionId);
}));
} }
// Mark music notifications so they can be shown in the screen shield // Mark music notifications so they can be shown in the screen shield
@ -427,33 +413,18 @@ const FdoNotificationDaemon = new Lang.Class({
soundName: hints['sound-name'] }); soundName: hints['sound-name'] });
notification.setImage(image); notification.setImage(image);
let hasDefaultAction = false;
if (actions.length) { if (actions.length) {
let useActionIcons = (hints['action-icons'] == true); notification.setUseActionIcons(hints['action-icons'] == true);
for (let i = 0; i < actions.length - 1; i += 2) { for (let i = 0; i < actions.length - 1; i += 2) {
let [actionId, label] = [actions[i], actions[i+1]]; if (actions[i] == 'default')
if (actionId == 'default') { notification.connect('clicked', Lang.bind(this,
hasDefaultAction = true; function() {
} else { this._emitActionInvoked(ndata.id, "default");
notification.addButton(this._makeButton(actionId, label, useActionIcons), Lang.bind(this, function() { }));
this._emitActionInvoked(ndata.id, actionId); else
})); notification.addButton(actions[i], actions[i + 1]);
}
} }
} }
if (hasDefaultAction) {
notification.connect('clicked', Lang.bind(this, function() {
this._emitActionInvoked(ndata.id, 'default');
}));
} else {
notification.connect('clicked', Lang.bind(this, function() {
source.open();
}));
}
switch (hints.urgency) { switch (hints.urgency) {
case Urgency.LOW: case Urgency.LOW:
notification.setUrgency(MessageTray.Urgency.LOW); notification.setUrgency(MessageTray.Urgency.LOW);
@ -546,8 +517,8 @@ const FdoNotificationDaemon = new Lang.Class({
} }
}); });
const FdoNotificationDaemonSource = new Lang.Class({ const Source = new Lang.Class({
Name: 'FdoNotificationDaemonSource', Name: 'NotificationDaemonSource',
Extends: MessageTray.Source, Extends: MessageTray.Source,
_init: function(title, pid, sender, trayIcon, appId) { _init: function(title, pid, sender, trayIcon, appId) {
@ -582,7 +553,7 @@ const FdoNotificationDaemonSource = new Lang.Class({
}, },
_createPolicy: function() { _createPolicy: function() {
if (this.app && this.app.get_app_info()) { if (this.app) {
let id = this.app.get_id().replace(/\.desktop$/,''); let id = this.app.get_id().replace(/\.desktop$/,'');
return new MessageTray.NotificationApplicationPolicy(id); return new MessageTray.NotificationApplicationPolicy(id);
} else { } else {
@ -672,7 +643,7 @@ const FdoNotificationDaemonSource = new Lang.Class({
this.parent(title); this.parent(title);
}, },
open: function() { open: function(notification) {
this.openApp(); this.openApp();
this.destroyNonResidentNotifications(); this.destroyNonResidentNotifications();
}, },
@ -714,276 +685,3 @@ const FdoNotificationDaemonSource = new Lang.Class({
} }
} }
}); });
const GtkNotificationDaemonNotification = new Lang.Class({
Name: 'GtkNotificationDaemonNotification',
Extends: MessageTray.Notification,
_init: function(source, notification) {
this.parent(source);
this._serialized = GLib.Variant.new('a{sv}', notification);
let { "title": title,
"body": body,
"icon": gicon,
"urgent": urgent,
"buttons": buttons,
"default-action": defaultAction,
"default-action-target": defaultActionTarget } = notification;
this.setUrgency(urgent.unpack() ? MessageTray.Urgency.CRITICAL
: MessageTray.Urgency.NORMAL);
if (buttons) {
buttons.deep_unpack().forEach(Lang.bind(this, function(button) {
this.addAction(button.label.unpack(),
Lang.bind(this, this._onButtonClicked, button));
}));
}
this._defaultAction = defaultAction ? defaultAction.unpack() : null;
this._defaultActionTarget = defaultActionTarget;
this.update(title.unpack(), body ? body.unpack() : null,
{ gicon: gicon ? Gio.icon_deserialize(gicon) : null });
},
_activateAction: function(namespacedActionId, target) {
if (namespacedActionId) {
if (namespacedActionId.startsWith('app.')) {
let actionId = namespacedActionId.slice('app.'.length);
this.source.activateAction(actionId, target);
}
} else {
this.source.open();
}
},
_onButtonClicked: function(button) {
let { 'action': action, 'target': actionTarget } = button;
this._activateAction(action.unpack(), actionTarget);
},
_onClicked: function() {
this._activateAction(this._defaultAction, this._defaultActionTarget);
this.parent();
},
serialize: function() {
return this._serialized;
},
});
const FdoApplicationIface = '<node> \
<interface name="org.freedesktop.Application"> \
<method name="ActivateAction"> \
<arg type="s" direction="in" /> \
<arg type="av" direction="in" /> \
<arg type="a{sv}" direction="in" /> \
</method> \
<method name="Activate"> \
<arg type="a{sv}" direction="in" /> \
</method> \
</interface> \
</node>';
const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface);
function objectPathFromAppId(appId) {
return '/' + appId.replace(/\./g, '/');
}
function getPlatformData() {
let startupId = GLib.Variant.new('s', '_TIME' + global.get_current_time());
return { "desktop-startup-id": startupId };
}
function InvalidAppError() {}
const GtkNotificationDaemonAppSource = new Lang.Class({
Name: 'GtkNotificationDaemonAppSource',
Extends: MessageTray.Source,
_init: function(appId) {
this._appId = appId;
this._objectPath = objectPathFromAppId(appId);
this._app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
if (!this._app)
throw new InvalidAppError();
this._notifications = {};
this.parent(this._app.get_name());
},
createIcon: function(size) {
return this._app.create_icon_texture(size);
},
_createPolicy: function() {
return new MessageTray.NotificationApplicationPolicy(this._appId);
},
_createApp: function() {
return new FdoApplicationProxy(Gio.DBus.session, this._appId, this._objectPath);
},
activateAction: function(actionId, target) {
let app = this._createApp();
app.ActivateActionRemote(actionId, target ? [target] : [], getPlatformData());
},
open: function() {
let app = this._createApp();
app.ActivateRemote(getPlatformData());
},
addNotification: function(notificationId, notificationParams, showBanner) {
if (this._notifications[notificationId])
this._notifications[notificationId].destroy();
let notification = new GtkNotificationDaemonNotification(this, notificationParams);
notification.connect('destroy', Lang.bind(this, function() {
delete this._notifications[notificationId];
}));
this._notifications[notificationId] = notification;
if (showBanner)
this.notify(notification);
else
this.pushNotification(notification);
},
removeNotification: function(notificationId) {
if (this._notifications[notificationId])
this._notifications[notificationId].destroy(MessageTray.NotificationDestroyedReason.SOURCE_CLOSED);
},
serialize: function() {
let notifications = [];
for (let notificationId in this._notifications) {
let notification = this._notifications[notificationId];
notifications.push([notificationId, notification.serialize()]);
}
return [this._appId, notifications];
},
});
const GtkNotificationsIface = '<node> \
<interface name="org.gtk.Notifications"> \
<method name="AddNotification"> \
<arg type="s" direction="in" /> \
<arg type="s" direction="in" /> \
<arg type="a{sv}" direction="in" /> \
</method> \
<method name="RemoveNotification"> \
<arg type="s" direction="in" /> \
<arg type="s" direction="in" /> \
</method> \
</interface> \
</node>';
const GtkNotificationDaemon = new Lang.Class({
Name: 'GtkNotificationDaemon',
_init: function() {
this._sources = {};
this._loadNotifications();
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GtkNotificationsIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gtk/Notifications');
Gio.DBus.session.own_name('org.gtk.Notifications', Gio.BusNameOwnerFlags.REPLACE, null, null);
},
_ensureAppSource: function(appId) {
if (this._sources[appId])
return this._sources[appId];
let source = new GtkNotificationDaemonAppSource(appId);
source.connect('destroy', Lang.bind(this, function() {
delete this._sources[appId];
this._saveNotifications();
}));
source.connect('count-updated', Lang.bind(this, this._saveNotifications));
Main.messageTray.add(source);
this._sources[appId] = source;
return source;
},
_loadNotifications: function() {
this._isLoading = true;
let value = global.get_persistent_state('a(sa(sv))', 'notifications');
if (value) {
let sources = value.deep_unpack();
sources.forEach(Lang.bind(this, function([appId, notifications]) {
if (notifications.length == 0)
return;
let source;
try {
source = this._ensureAppSource(appId);
} catch(e if e instanceof InvalidAppError) {
return;
}
notifications.forEach(function([notificationId, notification]) {
source.addNotification(notificationId, notification.deep_unpack(), false);
});
}));
}
this._isLoading = false;
},
_saveNotifications: function() {
if (this._isLoading)
return;
let sources = [];
for (let appId in this._sources) {
let source = this._sources[appId];
sources.push(source.serialize());
}
global.set_persistent_state('notifications', new GLib.Variant('a(sa(sv))', sources));
},
AddNotificationAsync: function(params, invocation) {
let [appId, notificationId, notification] = params;
let source;
try {
source = this._ensureAppSource(appId);
} catch(e if e instanceof InvalidAppError) {
invocation.return_dbus_error('org.gtk.Notifications.InvalidApp', 'The app by ID "%s" could not be found'.format(appId));
return;
}
source.addNotification(notificationId, notification, true);
invocation.return_value(null);
},
RemoveNotificationAsync: function(params, invocation) {
let [appId, notificationId] = params;
let source = this._sources[appId];
if (source)
source.removeNotification(notificationId);
invocation.return_value(null);
},
});
const NotificationDaemon = new Lang.Class({
Name: 'NotificationDaemon',
_init: function() {
this._fdoNotificationDaemon = new FdoNotificationDaemon();
this._gtkNotificationDaemon = new GtkNotificationDaemon();
},
});

View File

@ -78,8 +78,10 @@ const ShellInfo = new Lang.Class({
} }
this._undoCallback = undoCallback; this._undoCallback = undoCallback;
if (undoCallback) if (undoCallback) {
notification.addAction(_("Undo"), Lang.bind(this, this._onUndoClicked)); notification.addButton('system-undo', _("Undo"));
notification.connect('action-invoked', Lang.bind(this, this._onUndoClicked));
}
this._source.notify(notification); this._source.notify(notification);
} }
@ -363,13 +365,11 @@ const Overview = new Lang.Class({
this._lastHoveredWindow = dragEvent.targetActor._delegate.metaWindow; this._lastHoveredWindow = dragEvent.targetActor._delegate.metaWindow;
this._windowSwitchTimeoutId = Mainloop.timeout_add(DND_WINDOW_SWITCH_TIMEOUT, this._windowSwitchTimeoutId = Mainloop.timeout_add(DND_WINDOW_SWITCH_TIMEOUT,
Lang.bind(this, function() { Lang.bind(this, function() {
this._windowSwitchTimeoutId = 0;
this._needsFakePointerEvent = true; this._needsFakePointerEvent = true;
Main.activateWindow(dragEvent.targetActor._delegate.metaWindow, Main.activateWindow(dragEvent.targetActor._delegate.metaWindow,
this._windowSwitchTimestamp); this._windowSwitchTimestamp);
this.hide(); this.hide();
this._lastHoveredWindow = null; this._lastHoveredWindow = null;
return false;
})); }));
} }
@ -445,17 +445,17 @@ const Overview = new Lang.Class({
this._inDrag = false; this._inDrag = false;
}, },
beginWindowDrag: function(clone) { beginWindowDrag: function(source) {
this.emit('window-drag-begin', clone); this.emit('window-drag-begin');
this._inDrag = true; this._inDrag = true;
}, },
cancelledWindowDrag: function(clone) { cancelledWindowDrag: function(source) {
this.emit('window-drag-cancelled', clone); this.emit('window-drag-cancelled');
}, },
endWindowDrag: function(clone) { endWindowDrag: function(source) {
this.emit('window-drag-end', clone); this.emit('window-drag-end');
this._inDrag = false; this._inDrag = false;
}, },

View File

@ -36,7 +36,6 @@ const SlideLayout = new Lang.Class({
_init: function(params) { _init: function(params) {
this._slideX = 1; this._slideX = 1;
this._translationX = 0;
this._direction = SlideDirection.LEFT; this._direction = SlideDirection.LEFT;
this.parent(params); this.parent(params);
@ -67,9 +66,9 @@ const SlideLayout = new Lang.Class({
let alignX = (realDirection == SlideDirection.LEFT) ? (availWidth - natWidth) : 0; let alignX = (realDirection == SlideDirection.LEFT) ? (availWidth - natWidth) : 0;
let actorBox = new Clutter.ActorBox(); let actorBox = new Clutter.ActorBox();
actorBox.x1 = box.x1 + alignX + this._translationX; actorBox.x1 = alignX;
actorBox.x2 = actorBox.x1 + (child.x_expand ? availWidth : natWidth); actorBox.x2 = actorBox.x1 + child.x_expand ? availWidth : natWidth;
actorBox.y1 = box.y1; actorBox.y1 = 0;
actorBox.y2 = actorBox.y1 + availHeight; actorBox.y2 = actorBox.y1 + availHeight;
child.allocate(actorBox, flags); child.allocate(actorBox, flags);
@ -91,16 +90,7 @@ const SlideLayout = new Lang.Class({
get slideDirection() { get slideDirection() {
return this._direction; return this._direction;
}, }
set translationX(value) {
this._translationX = value;
this.layout_changed();
},
get translationX() {
return this._translationX;
},
}); });
const SlidingControl = new Lang.Class({ const SlidingControl = new Lang.Class({
@ -109,8 +99,8 @@ const SlidingControl = new Lang.Class({
_init: function(params) { _init: function(params) {
params = Params.parse(params, { slideDirection: SlideDirection.LEFT }); params = Params.parse(params, { slideDirection: SlideDirection.LEFT });
this._visible = true; this.visible = true;
this._inDrag = false; this.inDrag = false;
this.layout = new SlideLayout(); this.layout = new SlideLayout();
this.layout.slideDirection = params.slideDirection; this.layout.slideDirection = params.slideDirection;
@ -119,7 +109,6 @@ const SlidingControl = new Lang.Class({
clip_to_allocation: true }); clip_to_allocation: true });
Main.overview.connect('showing', Lang.bind(this, this._onOverviewShowing)); Main.overview.connect('showing', Lang.bind(this, this._onOverviewShowing));
Main.overview.connect('hiding', Lang.bind(this, this._onOverviewHiding));
Main.overview.connect('item-drag-begin', Lang.bind(this, this._onDragBegin)); Main.overview.connect('item-drag-begin', Lang.bind(this, this._onDragBegin));
Main.overview.connect('item-drag-end', Lang.bind(this, this._onDragEnd)); Main.overview.connect('item-drag-end', Lang.bind(this, this._onDragEnd));
@ -130,12 +119,12 @@ const SlidingControl = new Lang.Class({
Main.overview.connect('window-drag-end', Lang.bind(this, this._onWindowDragEnd)); Main.overview.connect('window-drag-end', Lang.bind(this, this._onWindowDragEnd));
}, },
_getSlide: function() { getSlide: function() {
throw new Error('getSlide() must be overridden'); throw new Error('getSlide() must be overridden');
}, },
_updateSlide: function() { updateSlide: function() {
Tweener.addTween(this.layout, { slideX: this._getSlide(), Tweener.addTween(this.layout, { slideX: this.getSlide(),
time: SIDE_CONTROLS_ANIMATION_TIME, time: SIDE_CONTROLS_ANIMATION_TIME,
transition: 'easeOutQuad' }); transition: 'easeOutQuad' });
}, },
@ -162,30 +151,28 @@ const SlidingControl = new Lang.Class({
let translationEnd = 0; let translationEnd = 0;
let translation = this._getTranslation(); let translation = this._getTranslation();
if (this._visible) { if (this.visible) {
translationStart = translation; translationStart = translation;
} else { } else {
translationEnd = translation; translationEnd = translation;
} }
if (this.layout.translationX == translationEnd) if (this.actor.translation_x == translationEnd)
return; return;
this.layout.translationX = translationStart; this.actor.translation_x = translationStart;
Tweener.addTween(this.layout, { translationX: translationEnd, Tweener.addTween(this.actor, { translation_x: translationEnd,
time: SIDE_CONTROLS_ANIMATION_TIME, time: SIDE_CONTROLS_ANIMATION_TIME,
transition: 'easeOutQuad' }); transition: 'easeOutQuad'
});
}, },
_onOverviewShowing: function() { _onOverviewShowing: function() {
this._visible = true; // reset any translation and make sure the actor is visible when
this.layout.slideX = this._getSlide(); // entering the overview
this.layout.translationX = this._getTranslation(); this.visible = true;
this.slideIn(); this.layout.slideX = this.getSlide();
}, this.actor.translation_x = 0;
_onOverviewHiding: function() {
this.slideOut();
}, },
_onWindowDragBegin: function() { _onWindowDragBegin: function() {
@ -197,14 +184,14 @@ const SlidingControl = new Lang.Class({
}, },
_onDragBegin: function() { _onDragBegin: function() {
this._inDrag = true; this.inDrag = true;
this.layout.translationX = 0; this.actor.translation_x = 0;
this._updateSlide(); this.updateSlide();
}, },
_onDragEnd: function() { _onDragEnd: function() {
this._inDrag = false; this.inDrag = false;
this._updateSlide(); this.updateSlide();
}, },
fadeIn: function() { fadeIn: function() {
@ -222,13 +209,13 @@ const SlidingControl = new Lang.Class({
}, },
slideIn: function() { slideIn: function() {
this._visible = true; this.visible = true;
this._updateTranslation(); this._updateTranslation();
// we will update slideX and the translation from pageEmpty // we will update slideX and the translation from pageEmpty
}, },
slideOut: function() { slideOut: function() {
this._visible = false; this.visible = false;
this._updateTranslation(); this._updateTranslation();
// we will update slideX from pageEmpty // we will update slideX from pageEmpty
}, },
@ -238,7 +225,7 @@ const SlidingControl = new Lang.Class({
// selector; this means we can now safely set the full slide for // selector; this means we can now safely set the full slide for
// the next page, since slideIn or slideOut might have been called, // the next page, since slideIn or slideOut might have been called,
// changing the visiblity // changing the visiblity
this.layout.slideX = this._getSlide(); this.layout.slideX = this.getSlide();
this._updateTranslation(); this._updateTranslation();
} }
}); });
@ -257,15 +244,16 @@ const ThumbnailsSlider = new Lang.Class({
this.actor.track_hover = true; this.actor.track_hover = true;
this.actor.add_actor(this._thumbnailsBox.actor); this.actor.add_actor(this._thumbnailsBox.actor);
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._updateSlide)); Main.layoutManager.connect('monitors-changed', Lang.bind(this, this.updateSlide));
this.actor.connect('notify::hover', Lang.bind(this, this._updateSlide)); Main.overview.connect('hiding', Lang.bind(this, this.slideOut));
this.actor.connect('notify::hover', Lang.bind(this, this.updateSlide));
this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE); this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
}, },
_getAlwaysZoomOut: function() { _getAlwaysZoomOut: function() {
// Always show the pager when hover, during a drag, or if workspaces are // Always show the pager when hover, during a drag, or if workspaces are
// actually used, e.g. there are windows on more than one // actually used, e.g. there are windows on more than one
let alwaysZoomOut = this.actor.hover || this._inDrag || !Meta.prefs_get_dynamic_workspaces() || global.screen.n_workspaces > 2; let alwaysZoomOut = this.actor.hover || this.inDrag || !Meta.prefs_get_dynamic_workspaces() || global.screen.n_workspaces > 2;
if (!alwaysZoomOut) { if (!alwaysZoomOut) {
let monitors = Main.layoutManager.monitors; let monitors = Main.layoutManager.monitors;
@ -285,13 +273,20 @@ const ThumbnailsSlider = new Lang.Class({
return alwaysZoomOut; return alwaysZoomOut;
}, },
_onOverviewShowing: function() {
this.visible = true;
this.layout.slideX = this.getSlide();
this.actor.translation_x = this._getTranslation();
this.slideIn();
},
getNonExpandedWidth: function() { getNonExpandedWidth: function() {
let child = this.actor.get_first_child(); let child = this.actor.get_first_child();
return child.get_theme_node().get_length('visible-width'); return child.get_theme_node().get_length('visible-width');
}, },
_getSlide: function() { getSlide: function() {
if (!this._visible) if (!this.visible)
return 0; return 0;
let alwaysZoomOut = this._getAlwaysZoomOut(); let alwaysZoomOut = this._getAlwaysZoomOut();
@ -328,22 +323,29 @@ const DashSlider = new Lang.Class({
// available allocation // available allocation
this._dash.actor.x_expand = true; this._dash.actor.x_expand = true;
this.actor.x_expand = true;
this.actor.x_align = Clutter.ActorAlign.START; this.actor.x_align = Clutter.ActorAlign.START;
this.actor.y_expand = true; this.actor.y_expand = true;
this.actor.add_actor(this._dash.actor); this.actor.add_actor(this._dash.actor);
this._dash.connect('icon-size-changed', Lang.bind(this, this._updateSlide)); this._dash.connect('icon-size-changed', Lang.bind(this, this.updateSlide));
Main.overview.connect('hiding', Lang.bind(this, this.slideOut));
}, },
_getSlide: function() { getSlide: function() {
if (this._visible || this._inDrag) if (this.visible || this.inDrag)
return 1; return 1;
else else
return 0; return 0;
}, },
_onOverviewShowing: function() {
this.visible = true;
this.layout.slideX = this.getSlide();
this.actor.translation_x = this._getTranslation();
this.slideIn();
},
_onWindowDragBegin: function() { _onWindowDragBegin: function() {
this.fadeHalf(); this.fadeHalf();
}, },

View File

@ -7,63 +7,58 @@ const Lang = imports.lang;
const St = imports.gi.St; const St = imports.gi.St;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const FileUtils = imports.misc.fileUtils;
const Search = imports.ui.search; const Search = imports.ui.search;
const KEY_FILE_GROUP = 'Shell Search Provider'; const KEY_FILE_GROUP = 'Shell Search Provider';
const SearchProviderIface = '<node> \ const SearchProviderIface = <interface name="org.gnome.Shell.SearchProvider">
<interface name="org.gnome.Shell.SearchProvider"> \ <method name="GetInitialResultSet">
<method name="GetInitialResultSet"> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="as" direction="out" />
<arg type="as" direction="out" /> \ </method>
</method> \ <method name="GetSubsearchResultSet">
<method name="GetSubsearchResultSet"> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="as" direction="out" />
<arg type="as" direction="out" /> \ </method>
</method> \ <method name="GetResultMetas">
<method name="GetResultMetas"> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="aa{sv}" direction="out" />
<arg type="aa{sv}" direction="out" /> \ </method>
</method> \ <method name="ActivateResult">
<method name="ActivateResult"> \ <arg type="s" direction="in" />
<arg type="s" direction="in" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const SearchProvider2Iface = '<node> \ const SearchProvider2Iface = <interface name="org.gnome.Shell.SearchProvider2">
<interface name="org.gnome.Shell.SearchProvider2"> \ <method name="GetInitialResultSet">
<method name="GetInitialResultSet"> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="as" direction="out" />
<arg type="as" direction="out" /> \ </method>
</method> \ <method name="GetSubsearchResultSet">
<method name="GetSubsearchResultSet"> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="as" direction="out" />
<arg type="as" direction="out" /> \ </method>
</method> \ <method name="GetResultMetas">
<method name="GetResultMetas"> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="aa{sv}" direction="out" />
<arg type="aa{sv}" direction="out" /> \ </method>
</method> \ <method name="ActivateResult">
<method name="ActivateResult"> \ <arg type="s" direction="in" />
<arg type="s" direction="in" /> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ </method>
</method> \ <method name="LaunchSearch">
<method name="LaunchSearch"> \ <arg type="as" direction="in" />
<arg type="as" direction="in" /> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface); var SearchProviderProxy = Gio.DBusProxy.makeProxyWrapper(SearchProviderIface);
var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface); var SearchProvider2Proxy = Gio.DBusProxy.makeProxyWrapper(SearchProvider2Iface);
function loadRemoteSearchProviders(callback) { function loadRemoteSearchProviders(addProviderCallback) {
let objectPaths = {}; let objectPaths = {};
let loadedProviders = []; let loadedProviders = [];
@ -117,25 +112,30 @@ function loadRemoteSearchProviders(callback) {
} }
} }
let dataDirs = GLib.get_system_data_dirs();
dataDirs.forEach(function(dataDir) {
let path = GLib.build_filenamev([dataDir, 'gnome-shell', 'search-providers']);
let dir = Gio.File.new_for_path(path);
let fileEnum;
try {
fileEnum = dir.enumerate_children('standard::name,standard::type',
Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {
fileEnum = null;
}
if (fileEnum != null) {
let info;
while ((info = fileEnum.next_file(null)))
loadRemoteSearchProvider(fileEnum.get_child(info));
}
});
let searchSettings = new Gio.Settings({ schema: Search.SEARCH_PROVIDERS_SCHEMA }); let searchSettings = new Gio.Settings({ schema: Search.SEARCH_PROVIDERS_SCHEMA });
if (searchSettings.get_boolean('disable-external')) {
callback([]);
return;
}
FileUtils.collectFromDatadirs('search-providers', false, loadRemoteSearchProvider);
let sortOrder = searchSettings.get_strv('sort-order'); let sortOrder = searchSettings.get_strv('sort-order');
// Special case gnome-control-center to be always active and always first // Special case gnome-control-center to be always active and always first
sortOrder.unshift('gnome-control-center.desktop'); sortOrder.unshift('gnome-control-center.desktop');
loadedProviders = loadedProviders.filter(function(provider) {
let appId = provider.appInfo.get_id();
let disabled = searchSettings.get_strv('disabled');
return disabled.indexOf(appId) == -1;
});
loadedProviders.sort(function(providerA, providerB) { loadedProviders.sort(function(providerA, providerB) {
let idxA, idxB; let idxA, idxB;
let appIdA, appIdB; let appIdA, appIdB;
@ -166,32 +166,34 @@ function loadRemoteSearchProviders(callback) {
return (idxA - idxB); return (idxA - idxB);
}); });
callback(loadedProviders); loadedProviders.forEach(addProviderCallback);
} }
const RemoteSearchProvider = new Lang.Class({ const RemoteSearchProvider = new Lang.Class({
Name: 'RemoteSearchProvider', Name: 'RemoteSearchProvider',
_init: function(appInfo, dbusName, dbusPath, proxyInfo) { _init: function(appInfo, dbusName, dbusPath, proxyType) {
if (!proxyInfo) if (!proxyType)
proxyInfo = SearchProviderProxyInfo; proxyType = SearchProviderProxy;
this.proxy = new Gio.DBusProxy({ g_bus_type: Gio.BusType.SESSION, this.proxy = new proxyType(Gio.DBus.session,
g_name: dbusName, dbusName, dbusPath, Lang.bind(this, this._onProxyConstructed));
g_object_path: dbusPath,
g_interface_info: proxyInfo,
g_interface_name: proxyInfo.name,
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION |
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
this.proxy.init_async(GLib.PRIORITY_DEFAULT, null, null);
this.appInfo = appInfo; this.appInfo = appInfo;
this.id = appInfo.get_id(); this.id = appInfo.get_id();
this.isRemoteProvider = true; this.isRemoteProvider = true;
this._cancellable = new Gio.Cancellable();
},
_onProxyConstructed: function(proxy) {
// Do nothing
}, },
createIcon: function(size, meta) { createIcon: function(size, meta) {
let gicon; let gicon = null;
let icon = null;
if (meta['icon']) { if (meta['icon']) {
gicon = Gio.icon_deserialize(meta['icon']); gicon = Gio.icon_deserialize(meta['icon']);
} else if (meta['gicon']) { } else if (meta['gicon']) {
@ -203,8 +205,10 @@ const RemoteSearchProvider = new Lang.Class({
bitsPerSample, width, height, rowStride); bitsPerSample, width, height, rowStride);
} }
return new St.Icon({ gicon: gicon, if (gicon)
icon_size: size }); icon = new St.Icon({ gicon: gicon,
icon_size: size });
return icon;
}, },
filterResults: function(results, maxNumber) { filterResults: function(results, maxNumber) {
@ -217,33 +221,40 @@ const RemoteSearchProvider = new Lang.Class({
return regularResults.slice(0, maxNumber).concat(specialResults.slice(0, maxNumber)); return regularResults.slice(0, maxNumber).concat(specialResults.slice(0, maxNumber));
}, },
_getResultsFinished: function(results, error, callback) { _getResultsFinished: function(results, error) {
if (error) { if (error)
if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
log('Received error from DBus search provider %s: %s'.format(this.id, String(error)));
callback([]);
return; return;
this.searchSystem.setResults(this, results[0]);
},
getInitialResultSet: function(terms) {
this._cancellable.cancel();
this._cancellable.reset();
try {
this.proxy.GetInitialResultSetRemote(terms,
Lang.bind(this, this._getResultsFinished),
this._cancellable);
} catch(e) {
log('Error calling GetInitialResultSet for provider %s: %s'.format(this.id, e.toString()));
this.searchSystem.setResults(this, []);
} }
callback(results[0]);
}, },
getInitialResultSet: function(terms, callback, cancellable) { getSubsearchResultSet: function(previousResults, newTerms) {
this.proxy.GetInitialResultSetRemote(terms, this._cancellable.cancel();
Lang.bind(this, this._getResultsFinished, callback), this._cancellable.reset();
cancellable); try {
}, this.proxy.GetSubsearchResultSetRemote(previousResults, newTerms,
Lang.bind(this, this._getResultsFinished),
getSubsearchResultSet: function(previousResults, newTerms, callback, cancellable) { this._cancellable);
this.proxy.GetSubsearchResultSetRemote(previousResults, newTerms, } catch(e) {
Lang.bind(this, this._getResultsFinished, callback), log('Error calling GetSubsearchResultSet for provider %s: %s'.format(this.id, e.toString()));
cancellable); this.searchSystem.setResults(this, []);
}
}, },
_getResultMetasFinished: function(results, error, callback) { _getResultMetasFinished: function(results, error, callback) {
if (error) { if (error) {
if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
log('Received error from DBus search provider %s during GetResultMetas: %s'.format(this.id, String(error)));
callback([]); callback([]);
return; return;
} }
@ -265,10 +276,17 @@ const RemoteSearchProvider = new Lang.Class({
callback(resultMetas); callback(resultMetas);
}, },
getResultMetas: function(ids, callback, cancellable) { getResultMetas: function(ids, callback) {
this.proxy.GetResultMetasRemote(ids, this._cancellable.cancel();
Lang.bind(this, this._getResultMetasFinished, callback), this._cancellable.reset();
cancellable); try {
this.proxy.GetResultMetasRemote(ids,
Lang.bind(this, this._getResultMetasFinished, callback),
this._cancellable);
} catch(e) {
log('Error calling GetResultMetas for provider %s: %s'.format(this.id, e.toString()));
callback([]);
}
}, },
activateResult: function(id) { activateResult: function(id) {
@ -288,7 +306,7 @@ const RemoteSearchProvider2 = new Lang.Class({
Extends: RemoteSearchProvider, Extends: RemoteSearchProvider,
_init: function(appInfo, dbusName, dbusPath) { _init: function(appInfo, dbusName, dbusPath) {
this.parent(appInfo, dbusName, dbusPath, SearchProvider2ProxyInfo); this.parent(appInfo, dbusName, dbusPath, SearchProvider2Proxy);
this.canLaunchSearch = true; this.canLaunchSearch = true;
}, },

View File

@ -198,8 +198,8 @@ const NotificationsBox = new Lang.Class({
let body = ''; let body = '';
if (n.bannerBodyText) { if (n.bannerBodyText) {
body = n.bannerBodyMarkup ? n.bannerBodyText body = n.bannerBodyMarkup ? n.bannerBodyText :
: GLib.markup_escape_text(n.bannerBodyText, -1); GLib.markup_escape_text(n.bannerBodyMarkup, -1);
} }
let label = new St.Label({ style_class: 'screen-shield-notification-count-text' }); let label = new St.Label({ style_class: 'screen-shield-notification-count-text' });

View File

@ -9,29 +9,27 @@ const Signals = imports.signals;
const Hash = imports.misc.hash; const Hash = imports.misc.hash;
const Main = imports.ui.main; const Main = imports.ui.main;
const ScreencastIface = '<node> \ const ScreencastIface = <interface name="org.gnome.Shell.Screencast">
<interface name="org.gnome.Shell.Screencast"> \ <method name="Screencast">
<method name="Screencast"> \ <arg type="s" direction="in" name="file_template"/>
<arg type="s" direction="in" name="file_template"/> \ <arg type="a{sv}" direction="in" name="options"/>
<arg type="a{sv}" direction="in" name="options"/> \ <arg type="b" direction="out" name="success"/>
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="out" name="filename_used"/>
<arg type="s" direction="out" name="filename_used"/> \ </method>
</method> \ <method name="ScreencastArea">
<method name="ScreencastArea"> \ <arg type="i" direction="in" name="x"/>
<arg type="i" direction="in" name="x"/> \ <arg type="i" direction="in" name="y"/>
<arg type="i" direction="in" name="y"/> \ <arg type="i" direction="in" name="width"/>
<arg type="i" direction="in" name="width"/> \ <arg type="i" direction="in" name="height"/>
<arg type="i" direction="in" name="height"/> \ <arg type="s" direction="in" name="file_template"/>
<arg type="s" direction="in" name="file_template"/> \ <arg type="a{sv}" direction="in" name="options"/>
<arg type="a{sv}" direction="in" name="options"/> \ <arg type="b" direction="out" name="success"/>
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="out" name="filename_used"/>
<arg type="s" direction="out" name="filename_used"/> \ </method>
</method> \ <method name="StopScreencast">
<method name="StopScreencast"> \ <arg type="b" direction="out" name="success"/>
<arg type="b" direction="out" name="success"/> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const ScreencastService = new Lang.Class({ const ScreencastService = new Lang.Class({
Name: 'ScreencastService', Name: 'ScreencastService',

View File

@ -15,47 +15,45 @@ const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main; const Main = imports.ui.main;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const ScreenshotIface = '<node> \ const ScreenshotIface = <interface name="org.gnome.Shell.Screenshot">
<interface name="org.gnome.Shell.Screenshot"> \ <method name="ScreenshotArea">
<method name="ScreenshotArea"> \ <arg type="i" direction="in" name="x"/>
<arg type="i" direction="in" name="x"/> \ <arg type="i" direction="in" name="y"/>
<arg type="i" direction="in" name="y"/> \ <arg type="i" direction="in" name="width"/>
<arg type="i" direction="in" name="width"/> \ <arg type="i" direction="in" name="height"/>
<arg type="i" direction="in" name="height"/> \ <arg type="b" direction="in" name="flash"/>
<arg type="b" direction="in" name="flash"/> \ <arg type="s" direction="in" name="filename"/>
<arg type="s" direction="in" name="filename"/> \ <arg type="b" direction="out" name="success"/>
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="out" name="filename_used"/>
<arg type="s" direction="out" name="filename_used"/> \ </method>
</method> \ <method name="ScreenshotWindow">
<method name="ScreenshotWindow"> \ <arg type="b" direction="in" name="include_frame"/>
<arg type="b" direction="in" name="include_frame"/> \ <arg type="b" direction="in" name="include_cursor"/>
<arg type="b" direction="in" name="include_cursor"/> \ <arg type="b" direction="in" name="flash"/>
<arg type="b" direction="in" name="flash"/> \ <arg type="s" direction="in" name="filename"/>
<arg type="s" direction="in" name="filename"/> \ <arg type="b" direction="out" name="success"/>
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="out" name="filename_used"/>
<arg type="s" direction="out" name="filename_used"/> \ </method>
</method> \ <method name="Screenshot">
<method name="Screenshot"> \ <arg type="b" direction="in" name="include_cursor"/>
<arg type="b" direction="in" name="include_cursor"/> \ <arg type="b" direction="in" name="flash"/>
<arg type="b" direction="in" name="flash"/> \ <arg type="s" direction="in" name="filename"/>
<arg type="s" direction="in" name="filename"/> \ <arg type="b" direction="out" name="success"/>
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="out" name="filename_used"/>
<arg type="s" direction="out" name="filename_used"/> \ </method>
</method> \ <method name="SelectArea">
<method name="SelectArea"> \ <arg type="i" direction="out" name="x"/>
<arg type="i" direction="out" name="x"/> \ <arg type="i" direction="out" name="y"/>
<arg type="i" direction="out" name="y"/> \ <arg type="i" direction="out" name="width"/>
<arg type="i" direction="out" name="width"/> \ <arg type="i" direction="out" name="height"/>
<arg type="i" direction="out" name="height"/> \ </method>
</method> \ <method name="FlashArea">
<method name="FlashArea"> \ <arg type="i" direction="in" name="x"/>
<arg type="i" direction="in" name="x"/> \ <arg type="i" direction="in" name="y"/>
<arg type="i" direction="in" name="y"/> \ <arg type="i" direction="in" name="width"/>
<arg type="i" direction="in" name="width"/> \ <arg type="i" direction="in" name="height"/>
<arg type="i" direction="in" name="height"/> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const ScreenshotService = new Lang.Class({ const ScreenshotService = new Lang.Class({
Name: 'ScreenshotService', Name: 'ScreenshotService',

View File

@ -69,18 +69,16 @@ function waitLeisure() {
}; };
} }
const PerfHelperIface = '<node> \ const PerfHelperIface = <interface name="org.gnome.Shell.PerfHelper">
<interface name="org.gnome.Shell.PerfHelper"> \ <method name="CreateWindow">
<method name="CreateWindow"> \ <arg type="i" direction="in" />
<arg type="i" direction="in" /> \ <arg type="i" direction="in" />
<arg type="i" direction="in" /> \ <arg type="b" direction="in" />
<arg type="b" direction="in" /> \ <arg type="b" direction="in" />
<arg type="b" direction="in" /> \ </method>
</method> \ <method name="WaitWindows" />
<method name="WaitWindows" /> \ <method name="DestroyWindows" />
<method name="DestroyWindows" /> \ </interface>;
</interface> \
</node>';
var PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface); var PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface);
function PerfHelper() { function PerfHelper() {

View File

@ -1,706 +1,105 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta;
const Signals = imports.signals; const Signals = imports.signals;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const AppDisplay = imports.ui.appDisplay;
const DND = imports.ui.dnd;
const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
const RemoteSearch = imports.ui.remoteSearch;
const Separator = imports.ui.separator;
const Util = imports.misc.util;
const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers'; const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers';
const MAX_LIST_SEARCH_RESULTS_ROWS = 3;
const MAX_GRID_SEARCH_RESULTS_ROWS = 1;
const SearchSystem = new Lang.Class({ const SearchSystem = new Lang.Class({
Name: 'SearchSystem', Name: 'SearchSystem',
_init: function() { _init: function() {
this._providers = []; this._providers = [];
this._remoteProviders = [];
this._registerProvider(new AppDisplay.AppSearchProvider()); this.reset();
this._searchSettings = new Gio.Settings({ schema: SEARCH_PROVIDERS_SCHEMA });
this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));
this._reloadRemoteProviders();
this._cancellable = new Gio.Cancellable();
}, },
addProvider: function(provider) { registerProvider: function (provider) {
provider.searchSystem = this;
this._providers.push(provider); this._providers.push(provider);
this.emit('providers-changed');
if (provider.isRemoteProvider)
this._remoteProviders.push(provider);
}, },
_reloadRemoteProviders: function() { unregisterProvider: function (provider) {
let remoteProviders = this._providers.filter(function(provider) {
return provider.isRemoteProvider;
});
remoteProviders.forEach(Lang.bind(this, function(provider) {
this._unregisterProvider(provider);
}));
RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(providers) {
providers.forEach(Lang.bind(this, this._registerProvider));
}));
this.emit('providers-changed');
},
_registerProvider: function (provider) {
this._providers.push(provider);
},
_unregisterProvider: function (provider) {
let index = this._providers.indexOf(provider); let index = this._providers.indexOf(provider);
if (index == -1)
return;
provider.searchSystem = null;
this._providers.splice(index, 1); this._providers.splice(index, 1);
let remoteIndex = this._remoteProviders.indexOf(provider);
if (remoteIndex != -1)
this._remoteProviders.splice(remoteIndex, 1);
}, },
getProviders: function() { getProviders: function() {
return this._providers; return this._providers;
}, },
getRemoteProviders: function() {
return this._remoteProviders;
},
getTerms: function() { getTerms: function() {
return this._terms; return this._previousTerms;
}, },
reset: function() { reset: function() {
this._terms = []; this._previousTerms = [];
this._results = {}; this._previousResults = [];
}, },
_gotResults: function(results, provider) { setResults: function(provider, results) {
this._results[provider.id] = results; let i = this._providers.indexOf(provider);
this.emit('search-updated', provider, results); if (i == -1)
return;
this._previousResults[i] = [provider, results];
this.emit('search-updated', this._previousResults[i]);
}, },
setTerms: function(terms) { updateSearchResults: function(terms) {
this._cancellable.cancel();
this._cancellable.reset();
let previousResults = this._results;
let previousTerms = this._terms;
this.reset();
if (!terms) if (!terms)
return; return;
let searchString = terms.join(' '); let searchString = terms.join(' ');
let previousSearchString = previousTerms.join(' '); let previousSearchString = this._previousTerms.join(' ');
if (searchString == previousSearchString) if (searchString == previousSearchString)
return; return;
let isSubSearch = false; let isSubSearch = false;
if (previousTerms.length > 0) if (this._previousTerms.length > 0)
isSubSearch = searchString.indexOf(previousSearchString) == 0; isSubSearch = searchString.indexOf(previousSearchString) == 0;
this._terms = terms; let previousResultsArr = this._previousResults;
this._providers.forEach(Lang.bind(this, function(provider) { let results = [];
let previousProviderResults = previousResults[provider.id]; this._previousTerms = terms;
if (isSubSearch && previousProviderResults) this._previousResults = results;
provider.getSubsearchResultSet(previousProviderResults, terms, Lang.bind(this, this._gotResults, provider), this._cancellable);
else if (isSubSearch) {
provider.getInitialResultSet(terms, Lang.bind(this, this._gotResults, provider), this._cancellable); for (let i = 0; i < this._providers.length; i++) {
})); let [provider, previousResults] = previousResultsArr[i];
try {
results.push([provider, []]);
provider.getSubsearchResultSet(previousResults, terms);
} catch (error) {
log('A ' + error.name + ' has occured in ' + provider.id + ': ' + error.message);
}
}
} else {
for (let i = 0; i < this._providers.length; i++) {
let provider = this._providers[i];
try {
results.push([provider, []]);
provider.getInitialResultSet(terms);
} catch (error) {
log('A ' + error.name + ' has occured in ' + provider.id + ': ' + error.message);
}
}
}
} }
}); });
Signals.addSignalMethods(SearchSystem.prototype); Signals.addSignalMethods(SearchSystem.prototype);
const MaxWidthBin = new Lang.Class({
Name: 'MaxWidthBin',
Extends: St.Bin,
vfunc_allocate: function(box, flags) {
let themeNode = this.get_theme_node();
let maxWidth = themeNode.get_max_width();
let availWidth = box.x2 - box.x1;
let adjustedBox = box;
if (availWidth > maxWidth) {
let excessWidth = availWidth - maxWidth;
adjustedBox.x1 += Math.floor(excessWidth / 2);
adjustedBox.x2 -= Math.floor(excessWidth / 2);
}
this.parent(adjustedBox, flags);
}
});
const SearchResult = new Lang.Class({
Name: 'SearchResult',
_init: function(provider, metaInfo) {
this.provider = provider;
this.metaInfo = metaInfo;
this.actor = new St.Button({ reactive: true,
can_focus: true,
track_hover: true,
x_align: St.Align.START,
y_fill: true });
this.actor._delegate = this;
this.actor.connect('clicked', Lang.bind(this, this.activate));
},
activate: function() {
this.emit('activate', this.metaInfo.id);
},
setSelected: function(selected) {
if (selected)
this.actor.add_style_pseudo_class('selected');
else
this.actor.remove_style_pseudo_class('selected');
}
});
Signals.addSignalMethods(SearchResult.prototype);
const ListSearchResult = new Lang.Class({
Name: 'ListSearchResult',
Extends: SearchResult,
ICON_SIZE: 64,
_init: function(provider, metaInfo) {
this.parent(provider, metaInfo);
this.actor.style_class = 'list-search-result';
this.actor.x_fill = true;
let content = new St.BoxLayout({ style_class: 'list-search-result-content',
vertical: false });
this.actor.set_child(content);
// An icon for, or thumbnail of, content
let icon = this.metaInfo['createIcon'](this.ICON_SIZE);
if (icon) {
content.add(icon);
}
let details = new St.BoxLayout({ vertical: true });
content.add(details, { x_fill: true,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.MIDDLE });
let title = new St.Label({ style_class: 'list-search-result-title',
text: this.metaInfo['name'] })
details.add(title, { x_fill: false,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.START });
this.actor.label_actor = title;
if (this.metaInfo['description']) {
let description = new St.Label({ style_class: 'list-search-result-description' });
description.clutter_text.set_markup(this.metaInfo['description']);
details.add(description, { x_fill: false,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.END });
}
}
});
const GridSearchResult = new Lang.Class({
Name: 'GridSearchResult',
Extends: SearchResult,
_init: function(provider, metaInfo) {
this.parent(provider, metaInfo);
this.actor.style_class = 'grid-search-result';
let content = provider.createResultObject(metaInfo);
let dragSource = null;
if (content == null) {
let actor = new St.Bin();
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
{ createIcon: this.metaInfo['createIcon'] });
actor.set_child(icon.actor);
actor.label_actor = icon.label;
dragSource = icon.icon;
content = { actor: actor, icon: icon };
} else {
if (content._delegate && content._delegate.getDragActorSource)
dragSource = content._delegate.getDragActorSource();
}
this.actor.set_child(content.actor);
this.actor.label_actor = content.actor.label_actor;
this.icon = content.icon;
let draggable = DND.makeDraggable(this.actor);
draggable.connect('drag-begin',
Lang.bind(this, function() {
Main.overview.beginItemDrag(this);
}));
draggable.connect('drag-cancelled',
Lang.bind(this, function() {
Main.overview.cancelledItemDrag(this);
}));
draggable.connect('drag-end',
Lang.bind(this, function() {
Main.overview.endItemDrag(this);
}));
if (!dragSource)
// not exactly right, but alignment problems are hard to notice
dragSource = content;
this._dragActorSource = dragSource;
},
getDragActorSource: function() {
return this._dragActorSource;
},
getDragActor: function() {
return this.metaInfo['createIcon'](Main.overview.dashIconSize);
},
shellWorkspaceLaunch: function(params) {
if (this.provider.dragActivateResult)
this.provider.dragActivateResult(this.metaInfo.id, params);
else
this.provider.activateResult(this.metaInfo.id, this.terms);
}
});
const SearchResultsBase = new Lang.Class({
Name: 'SearchResultsBase',
_init: function(provider) {
this.provider = provider;
this._terms = [];
this.actor = new St.BoxLayout({ style_class: 'search-section',
vertical: true });
this._resultDisplayBin = new St.Bin({ x_fill: true,
y_fill: true });
this.actor.add(this._resultDisplayBin, { expand: true });
let separator = new Separator.HorizontalSeparator({ style_class: 'search-section-separator' });
this.actor.add(separator.actor);
this._resultDisplays = {};
this._cancellable = new Gio.Cancellable();
},
destroy: function() {
this.actor.destroy();
this._terms = [];
},
_clearResultDisplay: function() {
},
clear: function() {
this._resultDisplays = {};
this._clearResultDisplay();
this.actor.hide();
},
_keyFocusIn: function(actor) {
this.emit('key-focus-in', actor);
},
_activateResult: function(result, id) {
this.provider.activateResult(id, this._terms);
Main.overview.toggle();
},
_setMoreIconVisible: function(visible) {
},
_ensureResultActors: function(results, callback) {
let metasNeeded = results.filter(Lang.bind(this, function(resultId) {
return this._resultDisplays[resultId] === undefined;
}));
if (metasNeeded.length === 0) {
callback();
} else {
this._cancellable.cancel();
this._cancellable.reset();
this.provider.getResultMetas(metasNeeded, Lang.bind(this, function(metas) {
metasNeeded.forEach(Lang.bind(this, function(resultId, i) {
let meta = metas[i];
let display = this._createResultDisplay(meta);
display.connect('activate', Lang.bind(this, this._activateResult));
display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this._resultDisplays[resultId] = display;
}));
callback();
}), this._cancellable);
}
},
updateSearch: function(providerResults, terms, callback) {
this._terms = terms;
if (providerResults.length == 0) {
this._clearResultDisplay();
this.actor.hide();
callback();
} else {
let maxResults = this._getMaxDisplayedResults();
let results = this.provider.filterResults(providerResults, maxResults);
let hasMoreResults = results.length < providerResults.length;
this._ensureResultActors(results, Lang.bind(this, function() {
this._clearResultDisplay();
// To avoid CSS transitions causing flickering when
// the first search result stays the same, we hide the
// content while filling in the results.
this.actor.hide();
this._clearResultDisplay();
results.forEach(Lang.bind(this, function(resultId) {
this._addItem(this._resultDisplays[resultId]);
}));
this._setMoreIconVisible(hasMoreResults && this.provider.canLaunchSearch);
this.actor.show();
callback();
}));
}
}
});
const ListSearchResults = new Lang.Class({
Name: 'ListSearchResults',
Extends: SearchResultsBase,
_init: function(provider) {
this.parent(provider);
this._container = new St.BoxLayout({ style_class: 'search-section-content' });
this.providerIcon = new ProviderIcon(provider);
this.providerIcon.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this.providerIcon.connect('clicked', Lang.bind(this,
function() {
provider.launchSearch(this._terms);
Main.overview.toggle();
}));
this._container.add(this.providerIcon, { x_fill: false,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.START });
this._content = new St.BoxLayout({ style_class: 'list-search-results',
vertical: true });
this._container.add(this._content, { expand: true });
this._resultDisplayBin.set_child(this._container);
},
_setMoreIconVisible: function(visible) {
this.providerIcon.moreIcon.visible = true;
},
_getMaxDisplayedResults: function() {
return MAX_LIST_SEARCH_RESULTS_ROWS;
},
_clearResultDisplay: function () {
this._content.remove_all_children();
},
_createResultDisplay: function(meta) {
return new ListSearchResult(this.provider, meta);
},
_addItem: function(display) {
this._content.add_actor(display.actor);
},
getFirstResult: function() {
if (this._content.get_n_children() > 0)
return this._content.get_child_at_index(0)._delegate;
else
return null;
}
});
Signals.addSignalMethods(ListSearchResults.prototype);
const GridSearchResults = new Lang.Class({
Name: 'GridSearchResults',
Extends: SearchResultsBase,
_init: function(provider) {
this.parent(provider);
this._grid = new IconGrid.IconGrid({ rowLimit: MAX_GRID_SEARCH_RESULTS_ROWS,
xAlign: St.Align.START });
this._bin = new St.Bin({ x_align: St.Align.MIDDLE });
this._bin.set_child(this._grid.actor);
this._resultDisplayBin.set_child(this._bin);
},
_getMaxDisplayedResults: function() {
return this._grid.columnsForWidth(this._bin.width) * this._grid.getRowLimit();
},
_renderResults: function(metas) {
for (let i = 0; i < metas.length; i++) {
let display = new GridSearchResult(this.provider, metas[i]);
display.connect('activate', Lang.bind(this, this._activateResult));
display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this._grid.addItem(display);
}
},
_clearResultDisplay: function () {
this._grid.removeAll();
},
_createResultDisplay: function(meta) {
return new GridSearchResult(this.provider, meta);
},
_addItem: function(display) {
this._grid.addItem(display);
},
getFirstResult: function() {
if (this._grid.visibleItemsCount() > 0)
return this._grid.getItemAtIndex(0)._delegate;
else
return null;
}
});
Signals.addSignalMethods(GridSearchResults.prototype);
const SearchResults = new Lang.Class({
Name: 'SearchResults',
_init: function() {
this.actor = new St.BoxLayout({ name: 'searchResults',
vertical: true });
this._content = new St.BoxLayout({ name: 'searchResultsContent',
vertical: true });
this._contentBin = new MaxWidthBin({ name: 'searchResultsBin',
x_fill: true,
y_fill: true,
child: this._content });
let scrollChild = new St.BoxLayout();
scrollChild.add(this._contentBin, { expand: true });
this._scrollView = new St.ScrollView({ x_fill: true,
y_fill: false,
overlay_scrollbars: true,
style_class: 'search-display vfade' });
this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this._scrollView.add_actor(scrollChild);
let action = new Clutter.PanAction({ interpolate: true });
action.connect('pan', Lang.bind(this, this._onPan));
this._scrollView.add_action(action);
this.actor.add(this._scrollView, { x_fill: true,
y_fill: true,
expand: true,
x_align: St.Align.START,
y_align: St.Align.START });
this._statusText = new St.Label({ style_class: 'search-statustext' });
this._statusBin = new St.Bin({ x_align: St.Align.MIDDLE,
y_align: St.Align.MIDDLE });
this._content.add(this._statusBin, { expand: true });
this._statusBin.add_actor(this._statusText);
this._highlightDefault = false;
this._defaultResult = null;
this._searchSystem = new SearchSystem();
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateResults));
this._searchSystem.connect('providers-changed', Lang.bind(this, this._updateProviderDisplays));
this._updateProviderDisplays();
},
_onPan: function(action) {
let [dist, dx, dy] = action.get_motion_delta(0);
let adjustment = this._scrollView.vscroll.adjustment;
adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
return false;
},
_keyFocusIn: function(provider, actor) {
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
},
_ensureProviderDisplay: function(provider) {
if (provider.display)
return;
let providerDisplay;
if (provider.appInfo)
providerDisplay = new ListSearchResults(provider);
else
providerDisplay = new GridSearchResults(provider);
providerDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this._content.add(providerDisplay.actor);
provider.display = providerDisplay;
},
_updateProviderDisplays: function() {
this._searchSystem.getProviders().forEach(Lang.bind(this, this._ensureProviderDisplay));
},
_clearDisplay: function() {
this._searchSystem.getProviders().forEach(function(provider) {
provider.display.clear();
});
},
reset: function() {
this._searchSystem.reset();
this._statusBin.hide();
this._clearDisplay();
this._defaultResult = null;
},
startingSearch: function() {
this.reset();
this._statusText.set_text(_("Searching…"));
this._statusBin.show();
},
setTerms: function(terms) {
this._searchSystem.setTerms(terms);
},
_maybeSetInitialSelection: function() {
let newDefaultResult = null;
let providers = this._searchSystem.getProviders();
for (let i = 0; i < providers.length; i++) {
let provider = providers[i];
let display = provider.display;
if (!display.actor.visible)
continue;
let firstResult = display.getFirstResult();
if (firstResult) {
newDefaultResult = firstResult;
break; // select this one!
}
}
if (newDefaultResult != this._defaultResult) {
if (this._defaultResult)
this._defaultResult.setSelected(false);
if (newDefaultResult)
newDefaultResult.setSelected(this._highlightDefault);
this._defaultResult = newDefaultResult;
}
},
_updateStatusText: function () {
let haveResults = this._searchSystem.getProviders().some(function(provider) {
let display = provider.display;
return (display.getFirstResult() != null);
});
if (!haveResults) {
this._statusText.set_text(_("No results."));
this._statusBin.show();
} else {
this._statusBin.hide();
}
},
_updateResults: function(searchSystem, provider, results) {
let terms = searchSystem.getTerms();
let display = provider.display;
display.updateSearch(results, terms, Lang.bind(this, function() {
this._maybeSetInitialSelection();
this._updateStatusText();
}));
},
activateDefault: function() {
if (this._defaultResult)
this._defaultResult.activate();
},
highlightDefault: function(highlight) {
this._highlightDefault = highlight;
if (this._defaultResult)
this._defaultResult.setSelected(highlight);
},
navigateFocus: function(direction) {
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
if (direction == Gtk.DirectionType.TAB_BACKWARD ||
direction == (rtl ? Gtk.DirectionType.RIGHT
: Gtk.DirectionType.LEFT) ||
direction == Gtk.DirectionType.UP) {
this.actor.navigate_focus(null, direction, false);
return;
}
let from = this._defaultResult ? this._defaultResult.actor : null;
this.actor.navigate_focus(from, direction, false);
}
});
const ProviderIcon = new Lang.Class({
Name: 'ProviderIcon',
Extends: St.Button,
PROVIDER_ICON_SIZE: 48,
_init: function(provider) {
this.provider = provider;
this.parent({ style_class: 'search-provider-icon',
reactive: true,
can_focus: true,
accessible_name: provider.appInfo.get_name(),
track_hover: true });
this._content = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this.set_child(this._content);
let rtl = (this.get_text_direction() == Clutter.TextDirection.RTL);
this.moreIcon = new St.Widget({ style_class: 'search-provider-icon-more',
visible: false,
x_align: rtl ? Clutter.ActorAlign.START : Clutter.ActorAlign.END,
y_align: Clutter.ActorAlign.END,
x_expand: true,
y_expand: true });
let icon = new St.Icon({ icon_size: this.PROVIDER_ICON_SIZE,
gicon: provider.appInfo.get_icon() });
this._content.add_actor(icon);
this._content.add_actor(this.moreIcon);
}
});

567
js/ui/searchDisplay.js Normal file
View File

@ -0,0 +1,567 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta;
const Signals = imports.signals;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const DND = imports.ui.dnd;
const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
const Separator = imports.ui.separator;
const Search = imports.ui.search;
const Util = imports.misc.util;
const MAX_LIST_SEARCH_RESULTS_ROWS = 3;
const MAX_GRID_SEARCH_RESULTS_ROWS = 1;
const MaxWidthBin = new Lang.Class({
Name: 'MaxWidthBin',
Extends: St.Bin,
vfunc_allocate: function(box, flags) {
let themeNode = this.get_theme_node();
let maxWidth = themeNode.get_max_width();
let availWidth = box.x2 - box.x1;
let adjustedBox = box;
if (availWidth > maxWidth) {
let excessWidth = availWidth - maxWidth;
adjustedBox.x1 += Math.floor(excessWidth / 2);
adjustedBox.x2 -= Math.floor(excessWidth / 2);
}
this.parent(adjustedBox, flags);
}
});
const SearchResult = new Lang.Class({
Name: 'SearchResult',
_init: function(provider, metaInfo, terms) {
this.provider = provider;
this.metaInfo = metaInfo;
this.terms = terms;
this.actor = new St.Button({ reactive: true,
can_focus: true,
track_hover: true,
x_align: St.Align.START,
y_fill: true });
this.actor._delegate = this;
this.actor.connect('clicked', Lang.bind(this, this.activate));
},
activate: function() {
this.provider.activateResult(this.metaInfo.id, this.terms);
Main.overview.toggle();
},
setSelected: function(selected) {
if (selected)
this.actor.add_style_pseudo_class('selected');
else
this.actor.remove_style_pseudo_class('selected');
}
});
const ListSearchResult = new Lang.Class({
Name: 'ListSearchResult',
Extends: SearchResult,
ICON_SIZE: 64,
_init: function(provider, metaInfo, terms) {
this.parent(provider, metaInfo, terms);
this.actor.style_class = 'list-search-result';
this.actor.x_fill = true;
let content = new St.BoxLayout({ style_class: 'list-search-result-content',
vertical: false });
this.actor.set_child(content);
// An icon for, or thumbnail of, content
let icon = this.metaInfo['createIcon'](this.ICON_SIZE);
if (icon) {
content.add(icon);
}
let details = new St.BoxLayout({ vertical: true });
content.add(details, { x_fill: true,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.MIDDLE });
let title = new St.Label({ style_class: 'list-search-result-title',
text: this.metaInfo['name'] })
details.add(title, { x_fill: false,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.START });
this.actor.label_actor = title;
if (this.metaInfo['description']) {
let description = new St.Label({ style_class: 'list-search-result-description' });
description.clutter_text.set_markup(this.metaInfo['description']);
details.add(description, { x_fill: false,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.END });
}
}
});
const GridSearchResult = new Lang.Class({
Name: 'GridSearchResult',
Extends: SearchResult,
_init: function(provider, metaInfo, terms) {
this.parent(provider, metaInfo, terms);
this.actor.style_class = 'grid-search-result';
let content = provider.createResultObject(metaInfo, terms);
let dragSource = null;
if (content == null) {
let actor = new St.Bin();
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
{ createIcon: this.metaInfo['createIcon'] });
actor.set_child(icon.actor);
actor.label_actor = icon.label;
dragSource = icon.icon;
content = { actor: actor, icon: icon };
} else {
if (content._delegate && content._delegate.getDragActorSource)
dragSource = content._delegate.getDragActorSource();
}
this.actor.set_child(content.actor);
this.actor.label_actor = content.actor.label_actor;
this.icon = content.icon;
let draggable = DND.makeDraggable(this.actor);
draggable.connect('drag-begin',
Lang.bind(this, function() {
Main.overview.beginItemDrag(this);
}));
draggable.connect('drag-cancelled',
Lang.bind(this, function() {
Main.overview.cancelledItemDrag(this);
}));
draggable.connect('drag-end',
Lang.bind(this, function() {
Main.overview.endItemDrag(this);
}));
if (!dragSource)
// not exactly right, but alignment problems are hard to notice
dragSource = content;
this._dragActorSource = dragSource;
},
getDragActorSource: function() {
return this._dragActorSource;
},
getDragActor: function() {
return this.metaInfo['createIcon'](Main.overview.dashIconSize);
},
shellWorkspaceLaunch: function(params) {
if (this.provider.dragActivateResult)
this.provider.dragActivateResult(this.metaInfo.id, params);
else
this.provider.activateResult(this.metaInfo.id, this.terms);
}
});
const SearchResultsBase = new Lang.Class({
Name: 'SearchResultsBase',
_init: function(provider) {
this.provider = provider;
this._terms = [];
this.actor = new St.BoxLayout({ style_class: 'search-section',
vertical: true });
this._resultDisplayBin = new St.Bin({ x_fill: true,
y_fill: true });
this.actor.add(this._resultDisplayBin, { expand: true });
let separator = new Separator.HorizontalSeparator({ style_class: 'search-section-separator' });
this.actor.add(separator.actor);
},
destroy: function() {
this.actor.destroy();
this._terms = [];
},
_clearResultDisplay: function() {
},
clear: function() {
this._clearResultDisplay();
this.actor.hide();
},
_keyFocusIn: function(actor) {
this.emit('key-focus-in', actor);
},
_setMoreIconVisible: function(visible) {
},
updateSearch: function(providerResults, terms, callback) {
this._terms = terms;
if (providerResults.length == 0) {
this._clearResultDisplay();
this.actor.hide();
callback();
} else {
let maxResults = this._getMaxDisplayedResults();
let results = this.provider.filterResults(providerResults, maxResults);
let hasMoreResults = results.length < providerResults.length;
this.provider.getResultMetas(results, Lang.bind(this, function(metas) {
this.clear();
// To avoid CSS transitions causing flickering when
// the first search result stays the same, we hide the
// content while filling in the results.
this.actor.hide();
this._clearResultDisplay();
this._renderResults(metas);
this._setMoreIconVisible(hasMoreResults && this.provider.canLaunchSearch);
this.actor.show();
callback();
}));
}
}
});
const ListSearchResults = new Lang.Class({
Name: 'ListSearchResults',
Extends: SearchResultsBase,
_init: function(provider) {
this.parent(provider);
this._container = new St.BoxLayout({ style_class: 'search-section-content' });
this.providerIcon = new ProviderIcon(provider);
this.providerIcon.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this.providerIcon.connect('clicked', Lang.bind(this,
function() {
provider.launchSearch(this._terms);
Main.overview.toggle();
}));
this._container.add(this.providerIcon, { x_fill: false,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.START });
this._content = new St.BoxLayout({ style_class: 'list-search-results',
vertical: true });
this._container.add(this._content, { expand: true });
this._resultDisplayBin.set_child(this._container);
},
_setMoreIconVisible: function(visible) {
this.providerIcon.moreIcon.visible = true;
},
_getMaxDisplayedResults: function() {
return MAX_LIST_SEARCH_RESULTS_ROWS;
},
_renderResults: function(metas) {
for (let i = 0; i < metas.length; i++) {
let display = new ListSearchResult(this.provider, metas[i], this._terms);
display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this._content.add_actor(display.actor);
}
},
_clearResultDisplay: function () {
this._content.destroy_all_children();
},
getFirstResult: function() {
if (this._content.get_n_children() > 0)
return this._content.get_child_at_index(0)._delegate;
else
return null;
}
});
Signals.addSignalMethods(ListSearchResults.prototype);
const GridSearchResults = new Lang.Class({
Name: 'GridSearchResults',
Extends: SearchResultsBase,
_init: function(provider) {
this.parent(provider);
this._grid = new IconGrid.IconGrid({ rowLimit: MAX_GRID_SEARCH_RESULTS_ROWS,
xAlign: St.Align.START });
this._bin = new St.Bin({ x_align: St.Align.MIDDLE });
this._bin.set_child(this._grid.actor);
this._resultDisplayBin.set_child(this._bin);
},
_getMaxDisplayedResults: function() {
return this._grid.columnsForWidth(this._bin.width) * this._grid.getRowLimit();
},
_renderResults: function(metas) {
for (let i = 0; i < metas.length; i++) {
let display = new GridSearchResult(this.provider, metas[i], this._terms);
display.actor.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this._grid.addItem(display);
}
},
_clearResultDisplay: function () {
this._grid.removeAll();
},
getFirstResult: function() {
if (this._grid.visibleItemsCount() > 0)
return this._grid.getItemAtIndex(0)._delegate;
else
return null;
}
});
Signals.addSignalMethods(GridSearchResults.prototype);
const SearchResults = new Lang.Class({
Name: 'SearchResults',
_init: function(searchSystem) {
this._searchSystem = searchSystem;
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateResults));
this.actor = new St.BoxLayout({ name: 'searchResults',
vertical: true });
this._content = new St.BoxLayout({ name: 'searchResultsContent',
vertical: true });
this._contentBin = new MaxWidthBin({ name: 'searchResultsBin',
x_fill: true,
y_fill: true,
child: this._content });
let scrollChild = new St.BoxLayout();
scrollChild.add(this._contentBin, { expand: true });
this._scrollView = new St.ScrollView({ x_fill: true,
y_fill: false,
overlay_scrollbars: true,
style_class: 'search-display vfade' });
this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
this._scrollView.add_actor(scrollChild);
let action = new Clutter.PanAction({ interpolate: true });
action.connect('pan', Lang.bind(this, this._onPan));
this._scrollView.add_action(action);
this.actor.add(this._scrollView, { x_fill: true,
y_fill: true,
expand: true,
x_align: St.Align.START,
y_align: St.Align.START });
this._statusText = new St.Label({ style_class: 'search-statustext' });
this._statusBin = new St.Bin({ x_align: St.Align.MIDDLE,
y_align: St.Align.MIDDLE });
this._content.add(this._statusBin, { expand: true });
this._statusBin.add_actor(this._statusText);
this._providers = this._searchSystem.getProviders();
this._providerDisplays = {};
for (let i = 0; i < this._providers.length; i++) {
this.createProviderDisplay(this._providers[i]);
}
this._highlightDefault = false;
this._defaultResult = null;
},
_onPan: function(action) {
let [dist, dx, dy] = action.get_motion_delta(0);
let adjustment = this._scrollView.vscroll.adjustment;
adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
return false;
},
_keyFocusIn: function(provider, actor) {
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
},
createProviderDisplay: function(provider) {
let providerDisplay = null;
if (provider.appInfo) {
providerDisplay = new ListSearchResults(provider);
} else {
providerDisplay = new GridSearchResults(provider);
}
providerDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this._providerDisplays[provider.id] = providerDisplay;
this._content.add(providerDisplay.actor);
},
destroyProviderDisplay: function(provider) {
this._providerDisplays[provider.id].destroy();
delete this._providerDisplays[provider.id];
},
_clearDisplay: function() {
for (let i = 0; i < this._providers.length; i++) {
let provider = this._providers[i];
let providerDisplay = this._providerDisplays[provider.id];
providerDisplay.clear();
}
},
reset: function() {
this._searchSystem.reset();
this._statusBin.hide();
this._clearDisplay();
this._defaultResult = null;
},
startingSearch: function() {
this.reset();
this._statusText.set_text(_("Searching…"));
this._statusBin.show();
},
_maybeSetInitialSelection: function() {
let newDefaultResult = null;
for (let i = 0; i < this._providers.length; i++) {
let provider = this._providers[i];
let display = this._providerDisplays[provider.id];
if (!display.actor.visible)
continue;
let firstResult = display.getFirstResult();
if (firstResult) {
newDefaultResult = firstResult;
break; // select this one!
}
}
if (newDefaultResult != this._defaultResult) {
if (this._defaultResult)
this._defaultResult.setSelected(false);
if (newDefaultResult)
newDefaultResult.setSelected(this._highlightDefault);
this._defaultResult = newDefaultResult;
}
},
_updateStatusText: function () {
let haveResults = false;
for (let i = 0; i < this._providers.length; i++) {
let provider = this._providers[i];
let display = this._providerDisplays[provider.id];
if (display.getFirstResult()) {
haveResults = true;
break;
}
}
if (!haveResults) {
this._statusText.set_text(_("No results."));
this._statusBin.show();
} else {
this._statusBin.hide();
}
},
_updateResults: function(searchSystem, results) {
let terms = searchSystem.getTerms();
let [provider, providerResults] = results;
let display = this._providerDisplays[provider.id];
display.updateSearch(providerResults, terms, Lang.bind(this, function() {
this._maybeSetInitialSelection();
this._updateStatusText();
}));
},
activateDefault: function() {
if (this._defaultResult)
this._defaultResult.activate();
},
highlightDefault: function(highlight) {
this._highlightDefault = highlight;
if (this._defaultResult)
this._defaultResult.setSelected(highlight);
},
navigateFocus: function(direction) {
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
if (direction == Gtk.DirectionType.TAB_BACKWARD ||
direction == (rtl ? Gtk.DirectionType.RIGHT
: Gtk.DirectionType.LEFT) ||
direction == Gtk.DirectionType.UP) {
this.actor.navigate_focus(null, direction, false);
return;
}
let from = this._defaultResult ? this._defaultResult.actor : null;
this.actor.navigate_focus(from, direction, false);
}
});
const ProviderIcon = new Lang.Class({
Name: 'ProviderIcon',
Extends: St.Button,
PROVIDER_ICON_SIZE: 48,
_init: function(provider) {
this.provider = provider;
this.parent({ style_class: 'search-provider-icon',
reactive: true,
can_focus: true,
accessible_name: provider.appInfo.get_name(),
track_hover: true });
this._content = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this.set_child(this._content);
let rtl = (this.get_text_direction() == Clutter.TextDirection.RTL);
this.moreIcon = new St.Widget({ style_class: 'search-provider-icon-more',
visible: false,
x_align: rtl ? Clutter.ActorAlign.START : Clutter.ActorAlign.END,
y_align: Clutter.ActorAlign.END,
x_expand: true,
y_expand: true });
let icon = new St.Icon({ icon_size: this.PROVIDER_ICON_SIZE,
gicon: provider.appInfo.get_icon() });
this._content.add_actor(icon);
this._content.add_actor(this.moreIcon);
}
});

View File

@ -102,12 +102,19 @@ const _modes = {
} }
}; };
function _loadMode(file, info) { function _getModes(modesLoadedCallback) {
FileUtils.collectFromDatadirsAsync('modes',
{ processFile: _loadMode,
loadedCallback: modesLoadedCallback,
data: _modes });
}
function _loadMode(file, info, loadedData) {
let name = info.get_name(); let name = info.get_name();
let suffix = name.indexOf('.json'); let suffix = name.indexOf('.json');
let modeName = suffix == -1 ? name : name.slice(name, suffix); let modeName = suffix == -1 ? name : name.slice(name, suffix);
if (_modes.hasOwnProperty(modeName)) if (loadedData.hasOwnProperty(modeName))
return; return;
let fileContent, success, tag, newMode; let fileContent, success, tag, newMode;
@ -118,23 +125,18 @@ function _loadMode(file, info) {
return; return;
} }
_modes[modeName] = {}; loadedData[modeName] = {};
let propBlacklist = ['unlockDialog']; let propBlacklist = ['unlockDialog'];
for (let prop in loadedData[DEFAULT_MODE]) { for (let prop in loadedData[DEFAULT_MODE]) {
if (newMode[prop] !== undefined && if (newMode[prop] !== undefined &&
propBlacklist.indexOf(prop) == -1) propBlacklist.indexOf(prop) == -1)
loadedData[modeName][prop] = newMode[prop]; loadedData[modeName][prop]= newMode[prop];
} }
_modes[modeName]['isPrimary'] = true; loadedData[modeName]['isPrimary'] = true;
}
function _getModes() {
FileUtils.collectFromDatadirs('modes', false, _loadMode);
} }
function listModes() { function listModes() {
let modes = _getModes(); _getModes(function(modes) {
modes.forEach(function() {
let names = Object.getOwnPropertyNames(modes); let names = Object.getOwnPropertyNames(modes);
for (let i = 0; i < names.length; i++) for (let i = 0; i < names.length; i++)
if (_modes[names[i]].isPrimary) if (_modes[names[i]].isPrimary)
@ -147,12 +149,17 @@ function listModes() {
const SessionMode = new Lang.Class({ const SessionMode = new Lang.Class({
Name: 'SessionMode', Name: 'SessionMode',
_init: function() { init: function() {
let isPrimary = (_modes[global.session_mode] && _getModes(Lang.bind(this, function(modes) {
_modes[global.session_mode].isPrimary); this._modes = modes;
let mode = isPrimary ? global.session_mode : 'user'; let primary = modes[global.session_mode] &&
this._modeStack = [mode]; modes[global.session_mode].isPrimary;
this._sync(); let mode = primary ? global.session_mode : 'user';
this._modeStack = [mode];
this._sync();
this.emit('sessions-loaded');
}));
}, },
pushMode: function(mode) { pushMode: function(mode) {
@ -179,13 +186,13 @@ const SessionMode = new Lang.Class({
}, },
_sync: function() { _sync: function() {
let params = _modes[this.currentMode]; let params = this._modes[this.currentMode];
let defaults; let defaults;
if (params.parentMode) if (params.parentMode)
defaults = Params.parse(_modes[params.parentMode], defaults = Params.parse(this._modes[params.parentMode],
_modes[DEFAULT_MODE]); this._modes[DEFAULT_MODE]);
else else
defaults = _modes[DEFAULT_MODE]; defaults = this._modes[DEFAULT_MODE];
params = Params.parse(params, defaults); params = Params.parse(params, defaults);
// A simplified version of Lang.copyProperties, handles // A simplified version of Lang.copyProperties, handles

View File

@ -15,63 +15,59 @@ const Main = imports.ui.main;
const Screenshot = imports.ui.screenshot; const Screenshot = imports.ui.screenshot;
const ViewSelector = imports.ui.viewSelector; const ViewSelector = imports.ui.viewSelector;
const GnomeShellIface = '<node> \ const GnomeShellIface = <interface name="org.gnome.Shell">
<interface name="org.gnome.Shell"> \ <method name="Eval">
<method name="Eval"> \ <arg type="s" direction="in" name="script" />
<arg type="s" direction="in" name="script" /> \ <arg type="b" direction="out" name="success" />
<arg type="b" direction="out" name="success" /> \ <arg type="s" direction="out" name="result" />
<arg type="s" direction="out" name="result" /> \ </method>
</method> \ <method name="FocusSearch"/>
<method name="FocusSearch"/> \ <method name="ShowOSD">
<method name="ShowOSD"> \ <arg type="a{sv}" direction="in" name="params"/>
<arg type="a{sv}" direction="in" name="params"/> \ </method>
</method> \ <method name="FocusApp">
<method name="FocusApp"> \ <arg type="s" direction="in" name="id"/>
<arg type="s" direction="in" name="id"/> \ </method>
</method> \ <method name="ShowApplications" />
<method name="ShowApplications" /> \ <method name="GrabAccelerator">
<method name="GrabAccelerator"> \ <arg type="s" direction="in" name="accelerator"/>
<arg type="s" direction="in" name="accelerator"/> \ <arg type="u" direction="in" name="flags"/>
<arg type="u" direction="in" name="flags"/> \ <arg type="u" direction="out" name="action"/>
<arg type="u" direction="out" name="action"/> \ </method>
</method> \ <method name="GrabAccelerators">
<method name="GrabAccelerators"> \ <arg type="a(su)" direction="in" name="accelerators"/>
<arg type="a(su)" direction="in" name="accelerators"/> \ <arg type="au" direction="out" name="actions"/>
<arg type="au" direction="out" name="actions"/> \ </method>
</method> \ <method name="UngrabAccelerator">
<method name="UngrabAccelerator"> \ <arg type="u" direction="in" name="action"/>
<arg type="u" direction="in" name="action"/> \ <arg type="b" direction="out" name="success"/>
<arg type="b" direction="out" name="success"/> \ </method>
</method> \ <signal name="AcceleratorActivated">
<signal name="AcceleratorActivated"> \ <arg name="action" type="u" />
<arg name="action" type="u" /> \ <arg name="deviceid" type="u" />
<arg name="deviceid" type="u" /> \ <arg name="timestamp" type="u" />
<arg name="timestamp" type="u" /> \ </signal>
</signal> \ <property name="Mode" type="s" access="read" />
<property name="Mode" type="s" access="read" /> \ <property name="OverviewActive" type="b" access="readwrite" />
<property name="OverviewActive" type="b" access="readwrite" /> \ <property name="ShellVersion" type="s" access="read" />
<property name="ShellVersion" type="s" access="read" /> \ </interface>;
</interface> \
</node>';
const ScreenSaverIface = '<node> \ const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
<interface name="org.gnome.ScreenSaver"> \ <method name="Lock">
<method name="Lock"> \ </method>
</method> \ <method name="GetActive">
<method name="GetActive"> \ <arg name="active" direction="out" type="b" />
<arg name="active" direction="out" type="b" /> \ </method>
</method> \ <method name="SetActive">
<method name="SetActive"> \ <arg name="value" direction="in" type="b" />
<arg name="value" direction="in" type="b" /> \ </method>
</method> \ <method name="GetActiveTime">
<method name="GetActiveTime"> \ <arg name="value" direction="out" type="u" />
<arg name="value" direction="out" type="u" /> \ </method>
</method> \ <signal name="ActiveChanged">
<signal name="ActiveChanged"> \ <arg name="new_value" type="b" />
<arg name="new_value" type="b" /> \ </signal>
</signal> \ </interface>;
</interface> \
</node>';
const GnomeShell = new Lang.Class({ const GnomeShell = new Lang.Class({
Name: 'GnomeShellDBus', Name: 'GnomeShellDBus',
@ -119,7 +115,7 @@ const GnomeShell = new Lang.Class({
returnValue = ''; returnValue = '';
success = true; success = true;
} catch (e) { } catch (e) {
returnValue = '' + e; returnValue = JSON.stringify(e);
success = false; success = false;
} }
return [success, returnValue]; return [success, returnValue];
@ -250,43 +246,41 @@ const GnomeShell = new Lang.Class({
ShellVersion: Config.PACKAGE_VERSION ShellVersion: Config.PACKAGE_VERSION
}); });
const GnomeShellExtensionsIface = '<node> \ const GnomeShellExtensionsIface = <interface name="org.gnome.Shell.Extensions">
<interface name="org.gnome.Shell.Extensions"> \ <method name="ListExtensions">
<method name="ListExtensions"> \ <arg type="a{sa{sv}}" direction="out" name="extensions" />
<arg type="a{sa{sv}}" direction="out" name="extensions" /> \ </method>
</method> \ <method name="GetExtensionInfo">
<method name="GetExtensionInfo"> \ <arg type="s" direction="in" name="extension" />
<arg type="s" direction="in" name="extension" /> \ <arg type="a{sv}" direction="out" name="info" />
<arg type="a{sv}" direction="out" name="info" /> \ </method>
</method> \ <method name="GetExtensionErrors">
<method name="GetExtensionErrors"> \ <arg type="s" direction="in" name="extension" />
<arg type="s" direction="in" name="extension" /> \ <arg type="as" direction="out" name="errors" />
<arg type="as" direction="out" name="errors" /> \ </method>
</method> \ <signal name="ExtensionStatusChanged">
<signal name="ExtensionStatusChanged"> \ <arg type="s" name="uuid"/>
<arg type="s" name="uuid"/> \ <arg type="i" name="state"/>
<arg type="i" name="state"/> \ <arg type="s" name="error"/>
<arg type="s" name="error"/> \ </signal>
</signal> \ <method name="InstallRemoteExtension">
<method name="InstallRemoteExtension"> \ <arg type="s" direction="in" name="uuid"/>
<arg type="s" direction="in" name="uuid"/> \ <arg type="s" direction="out" name="result"/>
<arg type="s" direction="out" name="result"/> \ </method>
</method> \ <method name="UninstallExtension">
<method name="UninstallExtension"> \ <arg type="s" direction="in" name="uuid"/>
<arg type="s" direction="in" name="uuid"/> \ <arg type="b" direction="out" name="success"/>
<arg type="b" direction="out" name="success"/> \ </method>
</method> \ <method name="LaunchExtensionPrefs">
<method name="LaunchExtensionPrefs"> \ <arg type="s" direction="in" name="uuid"/>
<arg type="s" direction="in" name="uuid"/> \ </method>
</method> \ <method name="ReloadExtension">
<method name="ReloadExtension"> \ <arg type="s" direction="in" name="uuid"/>
<arg type="s" direction="in" name="uuid"/> \ </method>
</method> \ <method name="CheckForUpdates">
<method name="CheckForUpdates"> \ </method>
</method> \ <property name="ShellVersion" type="s" access="read" />
<property name="ShellVersion" type="s" access="read" /> \ </interface>;
</interface> \
</node>';
const GnomeShellExtensions = new Lang.Class({ const GnomeShellExtensions = new Lang.Class({
Name: 'GnomeShellExtensionsDBus', Name: 'GnomeShellExtensionsDBus',

View File

@ -521,38 +521,36 @@ const ShellProcessesDialog = new Lang.Class({
}); });
Signals.addSignalMethods(ShellProcessesDialog.prototype); Signals.addSignalMethods(ShellProcessesDialog.prototype);
const GnomeShellMountOpIface = '<node> \ const GnomeShellMountOpIface = <interface name="org.Gtk.MountOperationHandler">
<interface name="org.Gtk.MountOperationHandler"> \ <method name="AskPassword">
<method name="AskPassword"> \ <arg type="s" direction="in" name="object_id"/>
<arg type="s" direction="in" name="object_id"/> \ <arg type="s" direction="in" name="message"/>
<arg type="s" direction="in" name="message"/> \ <arg type="s" direction="in" name="icon_name"/>
<arg type="s" direction="in" name="icon_name"/> \ <arg type="s" direction="in" name="default_user"/>
<arg type="s" direction="in" name="default_user"/> \ <arg type="s" direction="in" name="default_domain"/>
<arg type="s" direction="in" name="default_domain"/> \ <arg type="u" direction="in" name="flags"/>
<arg type="u" direction="in" name="flags"/> \ <arg type="u" direction="out" name="response"/>
<arg type="u" direction="out" name="response"/> \ <arg type="a{sv}" direction="out" name="response_details"/>
<arg type="a{sv}" direction="out" name="response_details"/> \ </method>
</method> \ <method name="AskQuestion">
<method name="AskQuestion"> \ <arg type="s" direction="in" name="object_id"/>
<arg type="s" direction="in" name="object_id"/> \ <arg type="s" direction="in" name="message"/>
<arg type="s" direction="in" name="message"/> \ <arg type="s" direction="in" name="icon_name"/>
<arg type="s" direction="in" name="icon_name"/> \ <arg type="as" direction="in" name="choices"/>
<arg type="as" direction="in" name="choices"/> \ <arg type="u" direction="out" name="response"/>
<arg type="u" direction="out" name="response"/> \ <arg type="a{sv}" direction="out" name="response_details"/>
<arg type="a{sv}" direction="out" name="response_details"/> \ </method>
</method> \ <method name="ShowProcesses">
<method name="ShowProcesses"> \ <arg type="s" direction="in" name="object_id"/>
<arg type="s" direction="in" name="object_id"/> \ <arg type="s" direction="in" name="message"/>
<arg type="s" direction="in" name="message"/> \ <arg type="s" direction="in" name="icon_name"/>
<arg type="s" direction="in" name="icon_name"/> \ <arg type="ai" direction="in" name="application_pids"/>
<arg type="ai" direction="in" name="application_pids"/> \ <arg type="as" direction="in" name="choices"/>
<arg type="as" direction="in" name="choices"/> \ <arg type="u" direction="out" name="response"/>
<arg type="u" direction="out" name="response"/> \ <arg type="a{sv}" direction="out" name="response_details"/>
<arg type="a{sv}" direction="out" name="response_details"/> \ </method>
</method> \ <method name="Close"/>
<method name="Close"/> \ </interface>;
</interface> \
</node>';
const ShellMountOperationType = { const ShellMountOperationType = {
NONE: 0, NONE: 0,

View File

@ -105,8 +105,8 @@ const AuthNotification = new Lang.Class({
this._devicePath = device_path; this._devicePath = device_path;
this.addBody(_("Device %s wants to pair with this computer").format(long_name)); this.addBody(_("Device %s wants to pair with this computer").format(long_name));
this.addAction('allow', _("Allow")); this.addButton('allow', _("Allow"));
this.addAction('deny', _("Deny")); this.addButton('deny', _("Deny"));
this.connect('action-invoked', Lang.bind(this, function(self, action) { this.connect('action-invoked', Lang.bind(this, function(self, action) {
if (action == 'allow') if (action == 'allow')
@ -133,9 +133,9 @@ const AuthServiceNotification = new Lang.Class({
this._devicePath = device_path; this._devicePath = device_path;
this.addBody(_("Device %s wants access to the service '%s'").format(long_name, uuid)); this.addBody(_("Device %s wants access to the service '%s'").format(long_name, uuid));
this.addAction('always-grant', _("Always grant access")); this.addButton('always-grant', _("Always grant access"));
this.addAction('grant', _("Grant this time only")); this.addButton('grant', _("Grant this time only"));
this.addAction('reject', _("Reject")); this.addButton('reject', _("Reject"));
this.connect('action-invoked', Lang.bind(this, function(self, action) { this.connect('action-invoked', Lang.bind(this, function(self, action) {
switch (action) { switch (action) {
@ -172,8 +172,8 @@ const ConfirmNotification = new Lang.Class({
this.addBody(_("Please confirm whether the Passkey '%06d' matches the one on the device.").format(pin)); this.addBody(_("Please confirm whether the Passkey '%06d' matches the one on the device.").format(pin));
/* Translators: this is the verb, not the noun */ /* Translators: this is the verb, not the noun */
this.addAction('matches', _("Matches")); this.addButton('matches', _("Matches"));
this.addAction('does-not-match', _("Does not match")); this.addButton('does-not-match', _("Does not match"));
this.connect('action-invoked', Lang.bind(this, function(self, action) { this.connect('action-invoked', Lang.bind(this, function(self, action) {
if (action == 'matches') if (action == 'matches')
@ -207,46 +207,45 @@ const PinNotification = new Lang.Class({
let key = event.get_key_symbol(); let key = event.get_key_symbol();
if (key == Clutter.KEY_Return) { if (key == Clutter.KEY_Return) {
if (this._canActivateOkButton()) if (this._canActivateOkButton())
this._ok(); this.emit('action-invoked', 'ok');
return true; return true;
} else if (key == Clutter.KEY_Escape) { } else if (key == Clutter.KEY_Escape) {
this._cancel(); this.emit('action-invoked', 'cancel');
return true; return true;
} }
return false; return false;
})); }));
this.addActor(this._entry); this.addActor(this._entry);
let okButton = this.addAction(_("OK"), Lang.bind(this, this._ok)); this.addButton('ok', _("OK"));
this.addAction(_("Cancel"), Lang.bind(this, this._cancel)); this.addButton('cancel', _("Cancel"));
okButton.reactive = this._canActivateOkButton(); this.setButtonSensitive('ok', this._canActivateOkButton());
this._entry.clutter_text.connect('text-changed', Lang.bind(this, function() { this._entry.clutter_text.connect('text-changed', Lang.bind(this,
okButton.reactive = this._canActivateOkButton(); function() {
})); this.setButtonSensitive('ok', this._canActivateOkButton());
}, }));
_ok: function() { this.connect('action-invoked', Lang.bind(this, function(self, action) {
if (this._numeric) { if (action == 'ok') {
let num = parseInt(this._entry.text, 10); if (this._numeric) {
if (isNaN(num)) { let num = parseInt(this._entry.text);
// user reply was empty, or was invalid if (isNaN(num)) {
// cancel the operation // user reply was empty, or was invalid
num = -1; // cancel the operation
num = -1;
}
this._applet.agent_reply_passkey(this._devicePath, num);
} else
this._applet.agent_reply_pincode(this._devicePath, this._entry.text);
} else {
if (this._numeric)
this._applet.agent_reply_passkey(this._devicePath, -1);
else
this._applet.agent_reply_pincode(this._devicePath, null);
} }
this._applet.agent_reply_passkey(this._devicePath, num); this.destroy();
} else { }));
this._applet.agent_reply_pincode(this._devicePath, this._entry.text);
}
this.destroy();
},
_cancel: function() {
if (this._numeric)
this._applet.agent_reply_passkey(this._devicePath, -1);
else
this._applet.agent_reply_pincode(this._devicePath, null);
this.destroy();
}, },
_canActivateOkButton: function() { _canActivateOkButton: function() {

View File

@ -11,11 +11,9 @@ const Slider = imports.ui.slider;
const BUS_NAME = 'org.gnome.SettingsDaemon.Power'; const BUS_NAME = 'org.gnome.SettingsDaemon.Power';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power';
const BrightnessInterface = '<node> \ const BrightnessInterface = <interface name="org.gnome.SettingsDaemon.Power.Screen">
<interface name="org.gnome.SettingsDaemon.Power.Screen"> \ <property name='Brightness' type='i' access='readwrite'/>
<property name="Brightness" type="i" access="readwrite"/> \ </interface>;
</interface> \
</node>';
const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface); const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface);

View File

@ -41,13 +41,11 @@ const MAX_INPUT_SOURCE_ACTIVATION_TIME = 4000; // ms
const BUS_NAME = 'org.gnome.SettingsDaemon.Keyboard'; const BUS_NAME = 'org.gnome.SettingsDaemon.Keyboard';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Keyboard'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Keyboard';
const KeyboardManagerInterface = '<node> \ const KeyboardManagerInterface = <interface name="org.gnome.SettingsDaemon.Keyboard">
<interface name="org.gnome.SettingsDaemon.Keyboard"> \ <method name="SetInputSource">
<method name="SetInputSource"> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ </method>
</method> \ </interface>;
</interface> \
</node>';
const KeyboardManagerProxy = Gio.DBusProxy.makeProxyWrapper(KeyboardManagerInterface); const KeyboardManagerProxy = Gio.DBusProxy.makeProxyWrapper(KeyboardManagerInterface);

View File

@ -549,30 +549,33 @@ const NMWirelessDialogItem = new Lang.Class({
this._network = network; this._network = network;
this._ap = network.accessPoints[0]; this._ap = network.accessPoints[0];
this.actor = new St.BoxLayout({ style_class: 'nm-dialog-item', this.actor = new St.Button({ style_class: 'nm-dialog-item',
can_focus: true, can_focus: true,
reactive: true }); x_fill: true });
this.actor.connect('key-focus-in', Lang.bind(this, function() { this.actor.connect('key-focus-in', Lang.bind(this, function() {
this.emit('selected'); this.emit('selected');
})); }));
let action = new Clutter.ClickAction(); this.actor.connect('clicked', Lang.bind(this, function() {
action.connect('clicked', Lang.bind(this, function() {
this.actor.grab_key_focus(); this.actor.grab_key_focus();
})); }));
this.actor.add_action(action);
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
this._content = new St.BoxLayout({ style_class: 'nm-dialog-item-box' });
this.actor.set_child(this._content);
let title = ssidToLabel(this._ap.get_ssid()); let title = ssidToLabel(this._ap.get_ssid());
this._label = new St.Label({ text: title }); this._label = new St.Label({ text: title });
this.actor.label_actor = this._label; this.actor.label_actor = this._label;
this.actor.add(this._label, { x_align: St.Align.START }); this._content.add(this._label, { x_align: St.Align.START });
this._selectedIcon = new St.Icon({ style_class: 'nm-dialog-icon', this._selectedIcon = new St.Icon({ style_class: 'nm-dialog-icon',
icon_name: 'object-select-symbolic' }); icon_name: 'object-select-symbolic' });
this.actor.add(this._selectedIcon); this._content.add(this._selectedIcon);
this._icons = new St.BoxLayout({ style_class: 'nm-dialog-icons' }); this._icons = new St.BoxLayout({ style_class: 'nm-dialog-icons' });
this.actor.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END }); this._content.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END });
this._secureIcon = new St.Icon({ style_class: 'nm-dialog-icon' }); this._secureIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
if (this._ap._secType != NMAccessPointSecurity.NONE) if (this._ap._secType != NMAccessPointSecurity.NONE)
@ -603,6 +606,16 @@ const NMWirelessDialogItem = new Lang.Class({
return 'network-workgroup-symbolic'; return 'network-workgroup-symbolic';
else else
return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic'; return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic';
},
_onKeyPressEvent: function(actor, event) {
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return
|| symbol == Clutter.KEY_KP_Enter) {
this.emit('connect');
return true;
}
return false;
} }
}); });
Signals.addSignalMethods(NMWirelessDialogItem.prototype); Signals.addSignalMethods(NMWirelessDialogItem.prototype);
@ -955,13 +968,13 @@ const NMWirelessDialog = new Lang.Class({
_selectNetwork: function(network) { _selectNetwork: function(network) {
if (this._selectedNetwork) if (this._selectedNetwork)
this._selectedNetwork.item.actor.remove_style_pseudo_class('selected'); this._selectedNetwork.item.actor.checked = false;
this._selectedNetwork = network; this._selectedNetwork = network;
this._updateSensitivity(); this._updateSensitivity();
if (this._selectedNetwork) if (this._selectedNetwork)
this._selectedNetwork.item.actor.add_style_pseudo_class('selected'); this._selectedNetwork.item.actor.checked = true;
}, },
_createNetworkItem: function(network) { _createNetworkItem: function(network) {
@ -971,6 +984,9 @@ const NMWirelessDialog = new Lang.Class({
Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor); Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor);
this._selectNetwork(network); this._selectNetwork(network);
})); }));
network.item.connect('connect', Lang.bind(this, function() {
this._connect();
}));
}, },
}); });

View File

@ -8,22 +8,20 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const BUS_NAME = 'org.freedesktop.UPower'; const BUS_NAME = 'org.gnome.SettingsDaemon.Power';
const OBJECT_PATH = '/org/freedesktop/UPower/devices/DisplayDevice'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power';
const DisplayDeviceInterface = '<node> \ const PowerManagerInterface = <interface name="org.gnome.SettingsDaemon.Power">
<interface name="org.freedesktop.UPower.Device"> \ <method name="GetDevices">
<property name="Type" type="u" access="read"/> \ <arg type="a(susdut)" direction="out" />
<property name="State" type="u" access="read"/> \ </method>
<property name="Percentage" type="d" access="read"/> \ <method name="GetPrimaryDevice">
<property name="TimeToEmpty" type="x" access="read"/> \ <arg type="(susdut)" direction="out" />
<property name="TimeToFull" type="x" access="read"/> \ </method>
<property name="IsPresent" type="b" access="read"/> \ <property name="Icon" type="s" access="read" />
<property name="IconName" type="s" access="read"/> \ </interface>;
</interface> \
</node>';
const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface); const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(PowerManagerInterface);
const Indicator = new Lang.Class({ const Indicator = new Lang.Class({
Name: 'PowerIndicator', Name: 'PowerIndicator',
@ -34,7 +32,7 @@ const Indicator = new Lang.Class({
this._indicator = this._addIndicator(); this._indicator = this._addIndicator();
this._proxy = new PowerManagerProxy(Gio.DBus.system, BUS_NAME, OBJECT_PATH, this._proxy = new PowerManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
Lang.bind(this, function(proxy, error) { Lang.bind(this, function(proxy, error) {
if (error) { if (error) {
log(error.message); log(error.message);
@ -45,7 +43,7 @@ const Indicator = new Lang.Class({
this._sync(); this._sync();
})); }));
this._item = new PopupMenu.PopupSubMenuMenuItem("", true); this._item = new PopupMenu.PopupSubMenuMenuItem(_("Battery"), true);
this._item.menu.addSettingsAction(_("Power Settings"), 'gnome-power-panel.desktop'); this._item.menu.addSettingsAction(_("Power Settings"), 'gnome-power-panel.desktop');
this.menu.addMenuItem(this._item); this.menu.addMenuItem(this._item);
@ -58,18 +56,11 @@ const Indicator = new Lang.Class({
this.menu.setSensitive(sensitive); this.menu.setSensitive(sensitive);
}, },
_getStatus: function() { _statusForDevice: function(device) {
let seconds = 0; let [device_id, device_type, icon, percentage, state, seconds] = device;
if (this._proxy.State == UPower.DeviceState.FULLY_CHARGED) if (state == UPower.DeviceState.FULLY_CHARGED)
return _("Fully Charged"); return _("Fully Charged");
else if (this._proxy.State == UPower.DeviceState.CHARGING)
seconds = this._proxy.TimeToFull;
else if (this._proxy.State == UPower.DeviceState.DISCHARGING)
seconds = this._proxy.TimeToEmpty;
// state is one of PENDING_CHARGING, PENDING_DISCHARGING
else
return _("Estimating…");
let time = Math.round(seconds / 60); let time = Math.round(seconds / 60);
if (time == 0) { if (time == 0) {
@ -81,43 +72,44 @@ const Indicator = new Lang.Class({
let minutes = time % 60; let minutes = time % 60;
let hours = Math.floor(time / 60); let hours = Math.floor(time / 60);
if (this._proxy.State == UPower.DeviceState.DISCHARGING) { if (state == UPower.DeviceState.DISCHARGING) {
// Translators: this is <hours>:<minutes> Remaining (<percentage>) // Translators: this is <hours>:<minutes> Remaining (<percentage>)
return _("%d\u2236%02d Remaining (%d%%)").format(hours, minutes, this._proxy.Percentage); return _("%d\u2236%02d Remaining (%d%%)").format(hours, minutes, percentage);
} }
if (this._proxy.State == UPower.DeviceState.CHARGING) { if (state == UPower.DeviceState.CHARGING) {
// Translators: this is <hours>:<minutes> Until Full (<percentage>) // Translators: this is <hours>:<minutes> Until Full (<percentage>)
return _("%d\u2236%02d Until Full (%d%%)").format(hours, minutes, this._proxy.Percentage); return _("%d\u2236%02d Until Full (%d%%)").format(hours, minutes, percentage);
} }
return null; // state is one of PENDING_CHARGING, PENDING_DISCHARGING
return _("Estimating…");
}, },
_sync: function() { _sync: function() {
// Do we have batteries or a UPS? function isBattery(result) {
let visible = this._proxy.IsPresent; if (!result)
if (visible) { return false;
this._item.actor.show();
} else { let [device] = result;
// If there's no battery, then we use the power icon. let [, deviceType] = device;
this._item.actor.hide(); return (deviceType == UPower.DeviceKind.BATTERY);
this._indicator.icon_name = 'system-shutdown-symbolic';
return;
} }
// The icons this._proxy.GetPrimaryDeviceRemote(Lang.bind(this, function(result, error) {
let icon = this._proxy.IconName; if (isBattery(result)) {
this._indicator.icon_name = icon; let [device] = result;
this._item.icon.icon_name = icon; let [,, icon] = device;
let gicon = Gio.icon_new_for_string(icon);
// The status label this._indicator.gicon = gicon;
this._item.status.text = this._getStatus(); this._item.icon.gicon = gicon;
this._item.status.text = this._statusForDevice(device);
// The sub-menu heading this._item.actor.show();
if (this._proxy.Type == UPower.DeviceKind.UPS) } else {
this._item.label.text = _("UPS"); // If there's no battery, then we use the power icon.
else this._indicator.icon_name = 'system-shutdown-symbolic';
this._item.label.text = _("Battery"); this._item.actor.hide();
}
}));
}, },
}); });

View File

@ -9,11 +9,9 @@ const PopupMenu = imports.ui.popupMenu;
const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill'; const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
const RfkillManagerInterface = '<node> \ const RfkillManagerInterface = <interface name="org.gnome.SettingsDaemon.Rfkill">
<interface name="org.gnome.SettingsDaemon.Rfkill"> \ <property name="AirplaneMode" type="b" access="readwrite" />
<property name="AirplaneMode" type="b" access="readwrite" /> \ </interface>;
</interface> \
</node>';
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface); const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);

View File

@ -11,8 +11,29 @@ const Signals = imports.signals;
const Tweener = imports.tweener.tweener; const Tweener = imports.tweener.tweener;
// This is a wrapper around imports.tweener.tweener that adds a bit of // This is a wrapper around imports.tweener.tweener that adds a bit of
// Clutter integration. If the tweening target is a Clutter.Actor, then // Clutter integration and some additional callbacks:
// the tweenings will automatically be removed if the actor is destroyed. //
// 1. If the tweening target is a Clutter.Actor, then the tweenings
// will automatically be removed if the actor is destroyed
//
// 2. If target._delegate.onAnimationStart() exists, it will be
// called when the target starts being animated.
//
// 3. If target._delegate.onAnimationComplete() exists, it will be
// called once the target is no longer being animated.
//
// The onAnimationStart() and onAnimationComplete() callbacks differ
// from the tweener onStart and onComplete parameters, in that (1)
// they track whether or not the target has *any* tweens attached to
// it, as opposed to be called for *each* tween, and (2)
// onAnimationComplete() is always called when the object stops being
// animated, regardless of whether it stopped normally or abnormally.
//
// onAnimationComplete() is called at idle time, which means that if a
// tween completes and then another is added before returning to the
// main loop, the complete callback will not be called (until the new
// tween finishes).
// ActionScript Tweener methods that imports.tweener.tweener doesn't // ActionScript Tweener methods that imports.tweener.tweener doesn't
// currently implement: getTweens, getVersion, registerTransition, // currently implement: getTweens, getVersion, registerTransition,
@ -56,6 +77,7 @@ function _wrapTweening(target, tweeningParameters) {
if (!Gtk.Settings.get_default().gtk_enable_animations) if (!Gtk.Settings.get_default().gtk_enable_animations)
tweeningParameters['time'] = 0.000001; tweeningParameters['time'] = 0.000001;
_addHandler(target, tweeningParameters, 'onStart', _tweenStarted);
_addHandler(target, tweeningParameters, 'onComplete', _tweenCompleted); _addHandler(target, tweeningParameters, 'onComplete', _tweenCompleted);
} }
@ -63,7 +85,7 @@ function _getTweenState(target) {
// If we were paranoid, we could keep a plist mapping targets to // If we were paranoid, we could keep a plist mapping targets to
// states... but we're not that paranoid. // states... but we're not that paranoid.
if (!target.__ShellTweenerState) if (!target.__ShellTweenerState)
target.__ShellTweenerState = {}; _resetTweenState(target);
return target.__ShellTweenerState; return target.__ShellTweenerState;
} }
@ -73,6 +95,8 @@ function _resetTweenState(target) {
if (state) { if (state) {
if (state.destroyedId) if (state.destroyedId)
state.actor.disconnect(state.destroyedId); state.actor.disconnect(state.destroyedId);
if (state.idleCompletedId)
Mainloop.source_remove(state.idleCompletedId);
} }
target.__ShellTweenerState = {}; target.__ShellTweenerState = {};
@ -98,9 +122,32 @@ function _actorDestroyed(target) {
Tweener.removeTweens(target); Tweener.removeTweens(target);
} }
function _tweenStarted(target) {
let state = _getTweenState(target);
let delegate = target._delegate;
if (!state.running && delegate && delegate.onAnimationStart)
delegate.onAnimationStart();
state.running = true;
}
function _tweenCompleted(target) { function _tweenCompleted(target) {
if (!isTweening(target)) let state = _getTweenState(target);
if (!state.idleCompletedId)
state.idleCompletedId = Mainloop.idle_add(Lang.bind(null, _idleCompleted, target));
}
function _idleCompleted(target) {
let state = _getTweenState(target);
let delegate = target._delegate;
if (!isTweening(target)) {
_resetTweenState(target); _resetTweenState(target);
if (delegate && delegate.onAnimationComplete)
delegate.onAnimationComplete();
}
return false;
} }
function getTweenCount(scope) { function getTweenCount(scope) {

View File

@ -1,8 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
// //
// A widget showing the user avatar and name // A widget showing the user avatar and name
const Clutter = imports.gi.Clutter;
const AccountsService = imports.gi.AccountsService; const AccountsService = imports.gi.AccountsService;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
@ -57,83 +56,6 @@ const Avatar = new Lang.Class({
} }
}); });
const UserWidgetLabel = new Lang.Class({
Name: 'UserWidgetLabel',
Extends: St.Widget,
_init: function(user) {
this.parent({ layout_manager: new Clutter.BinLayout() });
this._user = user;
this._realNameLabel = new St.Label({ style_class: 'user-widget-label',
y_align: Clutter.ActorAlign.CENTER });
this.add_child(this._realNameLabel);
this._userNameLabel = new St.Label({ style_class: 'user-widget-label',
y_align: Clutter.ActorAlign.CENTER });
this.add_child(this._userNameLabel);
this._currentLabel = null;
this._userLoadedId = this._user.connect('notify::is-loaded', Lang.bind(this, this._updateUser));
this._userChangedId = this._user.connect('changed', Lang.bind(this, this._updateUser));
this._updateUser();
},
vfunc_destroy: function() {
if (this._userLoadedId != 0) {
this._user.disconnect(this._userLoadedId);
this._userLoadedId = 0;
}
if (this._userChangedId != 0) {
this._user.disconnect(this._userChangedId);
this._userChangedId = 0;
}
},
vfunc_allocate: function(box, flags) {
this.set_allocation(box, flags);
let availWidth = box.x2 - box.x1;
let availHeight = box.y2 - box.y1;
let [minRealNameWidth, minRealNameHeight,
natRealNameWidth, natRealNameHeight] = this._realNameLabel.get_preferred_size();
let [minUserNameWidth, minUserNameHeight,
natUserNameWidth, natUserNameHeight] = this._userNameLabel.get_preferred_size();
if (natRealNameWidth <= availWidth)
this._currentLabel = this._realNameLabel;
else
this._currentLabel = this._userNameLabel;
let childBox = new Clutter.ActorBox();
childBox.x1 = 0;
childBox.y1 = 0;
childBox.x2 = availWidth;
childBox.y2 = availHeight;
this._currentLabel.allocate(childBox, flags);
},
vfunc_paint: function() {
this._currentLabel.paint();
},
_updateUser: function() {
if (this._user.is_loaded) {
this._realNameLabel.text = this._user.get_real_name();
this._userNameLabel.text = this._user.get_user_name();
} else {
this._realNameLabel.text = '';
this._userNameLabel.text = '';
}
},
});
const UserWidget = new Lang.Class({ const UserWidget = new Lang.Class({
Name: 'UserWidget', Name: 'UserWidget',
@ -145,14 +67,22 @@ const UserWidget = new Lang.Class({
this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._avatar = new Avatar(user); this._avatar = new Avatar(user);
this.actor.add_child(this._avatar.actor); this.actor.add(this._avatar.actor,
{ x_fill: true, y_fill: true });
this._label = new UserWidgetLabel(user); this._label = new St.Label({ style_class: 'user-widget-label' });
this.actor.add_child(this._label); this.actor.add(this._label,
{ expand: true,
x_fill: true,
y_fill: false,
y_align: St.Align.MIDDLE });
this._userLoadedId = this._user.connect('notify::is-loaded', Lang.bind(this, this._updateUser)); this._userLoadedId = this._user.connect('notify::is-loaded',
this._userChangedId = this._user.connect('changed', Lang.bind(this, this._updateUser)); Lang.bind(this, this._updateUser));
this._updateUser(); this._userChangedId = this._user.connect('changed',
Lang.bind(this, this._updateUser));
if (this._user.is_loaded)
this._updateUser();
}, },
_onDestroy: function() { _onDestroy: function() {
@ -168,6 +98,11 @@ const UserWidget = new Lang.Class({
}, },
_updateUser: function() { _updateUser: function() {
if (this._user.is_loaded)
this._label.text = this._user.get_real_name();
else
this._label.text = '';
this._avatar.update(); this._avatar.update();
} }
}); });

View File

@ -14,9 +14,12 @@ const AppDisplay = imports.ui.appDisplay;
const Main = imports.ui.main; const Main = imports.ui.main;
const OverviewControls = imports.ui.overviewControls; const OverviewControls = imports.ui.overviewControls;
const Params = imports.misc.params; const Params = imports.misc.params;
const RemoteSearch = imports.ui.remoteSearch;
const Search = imports.ui.search; const Search = imports.ui.search;
const SearchDisplay = imports.ui.searchDisplay;
const ShellEntry = imports.ui.shellEntry; const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const Wanda = imports.ui.wanda;
const WorkspacesView = imports.ui.workspacesView; const WorkspacesView = imports.ui.workspacesView;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings'; const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
@ -63,6 +66,8 @@ const ViewSelector = new Lang.Class({
this._searchActive = false; this._searchActive = false;
this._searchTimeoutId = 0; this._searchTimeoutId = 0;
this._searchSystem = new Search.SearchSystem();
this._entry = searchEntry; this._entry = searchEntry;
ShellEntry.addContextMenu(this._entry); ShellEntry.addContextMenu(this._entry);
@ -98,11 +103,24 @@ const ViewSelector = new Lang.Class({
this._appsPage = this._addPage(this.appDisplay.actor, this._appsPage = this._addPage(this.appDisplay.actor,
_("Applications"), 'view-grid-symbolic'); _("Applications"), 'view-grid-symbolic');
this._searchResults = new Search.SearchResults(); this._searchResults = new SearchDisplay.SearchResults(this._searchSystem);
this._searchPage = this._addPage(this._searchResults.actor, this._searchPage = this._addPage(this._searchResults.actor,
_("Search"), 'edit-find-symbolic', _("Search"), 'edit-find-symbolic',
{ a11yFocus: this._entry }); { a11yFocus: this._entry });
this._searchSettings = new Gio.Settings({ schema: Search.SEARCH_PROVIDERS_SCHEMA });
this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));
// Default search providers
// Wanda comes obviously first
this.addSearchProvider(new Wanda.WandaSearchProvider());
this.addSearchProvider(new AppDisplay.AppSearchProvider());
// Load remote search providers provided by applications
RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, this.addSearchProvider));
// Since the entry isn't inside the results container we install this // Since the entry isn't inside the results container we install this
// dummy widget as the last results container child so that we can // dummy widget as the last results container child so that we can
// include the entry in the keynav tab path // include the entry in the keynav tab path
@ -468,10 +486,45 @@ const ViewSelector = new Lang.Class({
let terms = getTermsForSearchString(this._entry.get_text()); let terms = getTermsForSearchString(this._entry.get_text());
this._searchResults.setTerms(terms); this._searchSystem.updateSearchResults(terms);
this._showPage(this._searchPage); this._showPage(this._searchPage);
}, },
_shouldUseSearchProvider: function(provider) {
// the disable-external GSetting only affects remote providers
if (!provider.isRemoteProvider)
return true;
if (this._searchSettings.get_boolean('disable-external'))
return false;
let appId = provider.appInfo.get_id();
let disable = this._searchSettings.get_strv('disabled');
return disable.indexOf(appId) == -1;
},
_reloadRemoteProviders: function() {
// removeSearchProvider() modifies the provider list we iterate on,
// so make a copy first
let remoteProviders = this._searchSystem.getRemoteProviders().slice(0);
remoteProviders.forEach(Lang.bind(this, this.removeSearchProvider));
RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, this.addSearchProvider));
},
addSearchProvider: function(provider) {
if (!this._shouldUseSearchProvider(provider))
return;
this._searchSystem.registerProvider(provider);
this._searchResults.createProviderDisplay(provider);
},
removeSearchProvider: function(provider) {
this._searchSystem.unregisterProvider(provider);
this._searchResults.destroyProviderDisplay(provider);
},
getActivePage: function() { getActivePage: function() {
if (this._activePage == this._workspacesPage) if (this._activePage == this._workspacesPage)
return ViewPage.WINDOWS; return ViewPage.WINDOWS;

160
js/ui/wanda.js Normal file
View File

@ -0,0 +1,160 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const GdkPixbuf = imports.gi.GdkPixbuf;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const St = imports.gi.St;
const IconGrid = imports.ui.iconGrid;
const Layout = imports.ui.layout;
const Main = imports.ui.main;
const Panel = imports.ui.panel;
const FISH_NAME = 'wanda';
const FISH_FILENAME = 'wanda.png';
const FISH_SPEED = 300;
const FISH_COMMAND = 'fortune';
// The size of an individual frame in the animation
const FISH_HEIGHT = 22;
const FISH_WIDTH = 36;
const FISH_GROUP = 'Fish Animation';
const MAGIC_FISH_KEY = 'free the fish';
const WandaIcon = new Lang.Class({
Name: 'WandaIcon',
Extends: IconGrid.BaseIcon,
_init : function(fish, label, params) {
this.parent(label, params);
this._fish = fish;
this._imageFile = GLib.build_filenamev([global.datadir, fish + '.png']);
this._imgHeight = FISH_HEIGHT;
this._imgWidth = FISH_WIDTH;
},
createIcon: function(iconSize) {
this._animations = new Panel.Animation(this._imageFile, this._imgWidth, this._imgHeight, FISH_SPEED);
this._animations.play();
return this._animations.actor;
},
_createIconTexture: function(size) {
if (size == this.iconSize)
return;
this.parent(size);
}
});
const WandaIconBin = new Lang.Class({
Name: 'WandaIconBin',
_init: function(fish, label, params) {
this.actor = new St.Bin({ reactive: true,
track_hover: true });
this.icon = new WandaIcon(fish, label, params);
this.actor.child = this.icon.actor;
this.actor.label_actor = this.icon.label;
},
});
const FortuneDialog = new Lang.Class({
Name: 'FortuneDialog',
_init: function(name, command) {
let text;
try {
let [res, stdout, stderr, status] = GLib.spawn_command_line_sync(command);
text = String.fromCharCode.apply(null, stdout);
} catch(e) {
text = _("Sorry, no wisdom for you today:\n%s").format(e.message);
}
this._title = new St.Label({ style_class: 'prompt-dialog-headline',
text: _("%s the Oracle says").format(name) });
this._label = new St.Label({ style_class: 'prompt-dialog-description',
text: text });
this._label.clutter_text.line_wrap = true;
this._box = new St.BoxLayout({ vertical: true,
style_class: 'prompt-dialog' // this is just to force a reasonable width
});
this._box.add(this._title, { align: St.Align.MIDDLE });
this._box.add(this._label, { expand: true });
this._button = new St.Button({ button_mask: St.ButtonMask.ONE,
style_class: 'modal-dialog',
reactive: true });
this._button.connect('clicked', Lang.bind(this, this.destroy));
this._button.child = this._box;
this._bin = new St.Bin({ x_align: St.Align.MIDDLE,
y_align: St.Align.MIDDLE });
this._bin.add_constraint(new Layout.MonitorConstraint({ primary: true }));
this._bin.add_actor(this._button);
Main.layoutManager.addChrome(this._bin);
GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 10, Lang.bind(this, this.destroy));
},
destroy: function() {
this._bin.destroy();
}
});
function capitalize(str) {
return str[0].toUpperCase() + str.substring(1, str.length);
}
const WandaSearchProvider = new Lang.Class({
Name: 'WandaSearchProvider',
_init: function() {
this.id = 'wanda';
},
getResultMetas: function(fish, callback) {
callback([{ 'id': fish[0], // there may be many fish in the sea, but
// only one which speaks the truth!
'name': capitalize(fish[0]),
'createIcon': function(iconSize) {
return new St.Icon({ gicon: Gio.icon_new_for_string('face-smile'),
icon_size: iconSize });
}
}]);
},
filterResults: function(results) {
return results;
},
getInitialResultSet: function(terms) {
if (terms.join(' ') == MAGIC_FISH_KEY) {
this.searchSystem.setResults(this, [ FISH_NAME ]);
} else {
this.searchSystem.setResults(this, []);
}
},
getSubsearchResultSet: function(previousResults, terms) {
this.getInitialResultSet(terms);
},
activateResult: function(fish) {
if (this._dialog)
this._dialog.destroy();
this._dialog = new FortuneDialog(capitalize(fish), FISH_COMMAND);
},
createResultObject: function (resultMeta, terms) {
return new WandaIconBin(resultMeta.id, resultMeta.name);
}
});

View File

@ -39,9 +39,6 @@ const WindowAttentionHandler = new Lang.Class({
let [title, banner] = this._getTitleAndBanner(app, window); let [title, banner] = this._getTitleAndBanner(app, window);
let notification = new MessageTray.Notification(source, title, banner); let notification = new MessageTray.Notification(source, title, banner);
notification.connect('clicked', function() {
source.open();
});
notification.setForFeedback(true); notification.setForFeedback(true);
source.notify(notification); source.notify(notification);
@ -82,7 +79,7 @@ const Source = new Lang.Class({
return this._app.create_icon_texture(size); return this._app.create_icon_texture(size);
}, },
open: function() { open : function(notification) {
Main.activateWindow(this._window); Main.activateWindow(this._window);
this.destroy(); this.destroy();
} }

View File

@ -10,14 +10,19 @@ const St = imports.gi.St;
const Signals = imports.signals; const Signals = imports.signals;
const DND = imports.ui.dnd; const DND = imports.ui.dnd;
const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main; const Main = imports.ui.main;
const Overview = imports.ui.overview; const Overview = imports.ui.overview;
const Panel = imports.ui.panel;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const FOCUS_ANIMATION_TIME = 0.15;
const WINDOW_DND_SIZE = 256; const WINDOW_DND_SIZE = 256;
const WINDOW_CLONE_MAXIMUM_SCALE = 0.7; const WINDOW_CLONE_MAXIMUM_SCALE = 0.7;
const LIGHTBOX_FADE_TIME = 0.1;
const CLOSE_BUTTON_FADE_TIME = 0.1; const CLOSE_BUTTON_FADE_TIME = 0.1;
const DRAGGING_WINDOW_OPACITY = 100; const DRAGGING_WINDOW_OPACITY = 100;
@ -887,19 +892,6 @@ function padArea(area, padding) {
}; };
} }
function rectEqual(one, two) {
if (one == two)
return true;
if (!one || !two)
return false;
return (one.x == two.x &&
one.y == two.y &&
one.width == two.width &&
one.height == two.height);
}
/** /**
* @metaWorkspace: a #Meta.Workspace, or null * @metaWorkspace: a #Meta.Workspace, or null
*/ */
@ -975,17 +967,11 @@ const Workspace = new Lang.Class({
}, },
setFullGeometry: function(geom) { setFullGeometry: function(geom) {
if (rectEqual(this._fullGeometry, geom))
return;
this._fullGeometry = geom; this._fullGeometry = geom;
this._recalculateWindowPositions(WindowPositionFlags.NONE); this._recalculateWindowPositions(WindowPositionFlags.NONE);
}, },
setActualGeometry: function(geom) { setActualGeometry: function(geom) {
if (rectEqual(this._actualGeometry, geom))
return;
this._actualGeometry = geom; this._actualGeometry = geom;
if (this._actualGeometryLater) if (this._actualGeometryLater)
@ -1208,7 +1194,6 @@ const Workspace = new Lang.Class({
} }
this._recalculateWindowPositions(WindowPositionFlags.ANIMATE); this._recalculateWindowPositions(WindowPositionFlags.ANIMATE);
this._repositionWindowsId = 0;
return false; return false;
}, },
@ -1464,17 +1449,17 @@ const Workspace = new Lang.Class({
clone.connect('selected', clone.connect('selected',
Lang.bind(this, this._onCloneSelected)); Lang.bind(this, this._onCloneSelected));
clone.connect('drag-begin', clone.connect('drag-begin',
Lang.bind(this, function() { Lang.bind(this, function(clone) {
Main.overview.beginWindowDrag(clone); Main.overview.beginWindowDrag();
overlay.hide(); overlay.hide();
})); }));
clone.connect('drag-cancelled', clone.connect('drag-cancelled',
Lang.bind(this, function() { Lang.bind(this, function(clone) {
Main.overview.cancelledWindowDrag(clone); Main.overview.cancelledWindowDrag();
})); }));
clone.connect('drag-end', clone.connect('drag-end',
Lang.bind(this, function() { Lang.bind(this, function(clone) {
Main.overview.endWindowDrag(clone); Main.overview.endWindowDrag();
overlay.show(); overlay.show();
})); }));
clone.connect('size-changed', clone.connect('size-changed',
@ -1636,7 +1621,9 @@ const Workspace = new Lang.Class({
metaWindow.move_to_monitor(this.monitorIndex); metaWindow.move_to_monitor(this.monitorIndex);
let index = this.metaWorkspace ? this.metaWorkspace.index() : global.screen.get_active_workspace_index(); let index = this.metaWorkspace ? this.metaWorkspace.index() : global.screen.get_active_workspace_index();
metaWindow.change_workspace_by_index(index, false); metaWindow.change_workspace_by_index(index,
false, // don't create workspace
time);
return true; return true;
} else if (source.shellWorkspaceLaunch) { } else if (source.shellWorkspaceLaunch) {
source.shellWorkspaceLaunch({ workspace: this.metaWorkspace ? this.metaWorkspace.index() : -1, source.shellWorkspaceLaunch({ workspace: this.metaWorkspace ? this.metaWorkspace.index() : -1,

View File

@ -438,16 +438,16 @@ const WorkspaceThumbnail = new Lang.Class({
this.activate(time); this.activate(time);
})); }));
clone.connect('drag-begin', clone.connect('drag-begin',
Lang.bind(this, function() { Lang.bind(this, function(clone) {
Main.overview.beginWindowDrag(clone); Main.overview.beginWindowDrag();
})); }));
clone.connect('drag-cancelled', clone.connect('drag-cancelled',
Lang.bind(this, function() { Lang.bind(this, function(clone) {
Main.overview.cancelledWindowDrag(clone); Main.overview.cancelledWindowDrag();
})); }));
clone.connect('drag-end', clone.connect('drag-end',
Lang.bind(this, function() { Lang.bind(this, function(clone) {
Main.overview.endWindowDrag(clone); Main.overview.endWindowDrag();
})); }));
this._contents.add_actor(clone.actor); this._contents.add_actor(clone.actor);
@ -507,7 +507,9 @@ const WorkspaceThumbnail = new Lang.Class({
if (metaWindow.get_monitor() != this.monitorIndex) if (metaWindow.get_monitor() != this.monitorIndex)
metaWindow.move_to_monitor(this.monitorIndex); metaWindow.move_to_monitor(this.monitorIndex);
metaWindow.change_workspace_by_index(this.metaWorkspace.index(), false); metaWindow.change_workspace_by_index(this.metaWorkspace.index(),
false, // don't create workspace
time);
return true; return true;
} else if (source.shellWorkspaceLaunch) { } else if (source.shellWorkspaceLaunch) {
source.shellWorkspaceLaunch({ workspace: this.metaWorkspace ? this.metaWorkspace.index() : -1, source.shellWorkspaceLaunch({ workspace: this.metaWorkspace ? this.metaWorkspace.index() : -1,
@ -737,12 +739,14 @@ const ThumbnailsBox = new Lang.Class({
// ... move them down one. // ... move them down one.
windows.forEach(function(win) { windows.forEach(function(win) {
win.meta_window.change_workspace_by_index(win.get_workspace() + 1, true); win.meta_window.change_workspace_by_index(win.get_workspace() + 1,
true, time);
}); });
if (isWindow) if (isWindow)
// ... and bam, a workspace, good as new. // ... and bam, a workspace, good as new.
source.metaWindow.change_workspace_by_index(newWorkspaceIndex, true); source.metaWindow.change_workspace_by_index(newWorkspaceIndex,
true, time);
else if (source.shellWorkspaceLaunch) { else if (source.shellWorkspaceLaunch) {
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex, source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
timestamp: time }); timestamp: time });

View File

@ -23,92 +23,75 @@ const MAX_WORKSPACES = 16;
const OVERRIDE_SCHEMA = 'org.gnome.shell.overrides'; const OVERRIDE_SCHEMA = 'org.gnome.shell.overrides';
const WorkspacesViewBase = new Lang.Class({ function rectEqual(one, two) {
Name: 'WorkspacesViewBase', if (one == two)
return true;
_init: function(monitorIndex) { if (!one || !two)
return false;
return (one.x == two.x &&
one.y == two.y &&
one.width == two.width &&
one.height == two.height);
}
const WorkspacesView = new Lang.Class({
Name: 'WorkspacesView',
_init: function(workspaces) {
this.actor = new St.Widget({ style_class: 'workspaces-view', this.actor = new St.Widget({ style_class: 'workspaces-view',
reactive: true }); reactive: true });
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
// The actor itself isn't a drop target, so we don't want to pick on its area // The actor itself isn't a drop target, so we don't want to pick on its area
this.actor.set_size(0, 0); this.actor.set_size(0, 0);
this._monitorIndex = monitorIndex; this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this.actor.connect('style-changed', Lang.bind(this,
function() {
let node = this.actor.get_theme_node();
this._spacing = node.get_length('spacing');
this._updateWorkspaceActors(false);
}));
this._fullGeometry = null; this._fullGeometry = null;
this._actualGeometry = null; this._actualGeometry = null;
this._inDrag = false; this._spacing = 0;
this._windowDragBeginId = Main.overview.connect('window-drag-begin', Lang.bind(this, this._dragBegin));
this._windowDragEndId = Main.overview.connect('window-drag-end', Lang.bind(this, this._dragEnd));
},
_onDestroy: function() {
this._dragEnd();
if (this._windowDragBeginId > 0) {
Main.overview.disconnect(this._windowDragBeginId);
this._windowDragBeginId = 0;
}
if (this._windowDragEndId > 0) {
Main.overview.disconnect(this._windowDragEndId);
this._windowDragEndId = 0;
}
},
_dragBegin: function(overview, clone) {
this._inDrag = true;
this._setReservedSlot(clone);
},
_dragEnd: function() {
this._inDrag = false;
this._setReservedSlot(null);
},
destroy: function() {
this.actor.destroy();
},
setFullGeometry: function(geom) {
this._fullGeometry = geom;
this._syncGeometry();
},
setActualGeometry: function(geom) {
this._actualGeometry = geom;
this._syncGeometry();
},
});
const WorkspacesView = new Lang.Class({
Name: 'WorkspacesView',
Extends: WorkspacesViewBase,
_init: function(monitorIndex) {
this.parent(monitorIndex);
this._animating = false; // tweening this._animating = false; // tweening
this._scrolling = false; // swipe-scrolling this._scrolling = false; // swipe-scrolling
this._animatingScroll = false; // programatically updating the adjustment this._animatingScroll = false; // programatically updating the adjustment
this._inDrag = false; // dragging a window
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA }); this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
this._updateExtraWorkspacesId =
this._settings.connect('changed::workspaces-only-on-primary',
Lang.bind(this, this._updateExtraWorkspaces));
let activeWorkspaceIndex = global.screen.get_active_workspace_index(); let activeWorkspaceIndex = global.screen.get_active_workspace_index();
this.scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex, this._workspaces = workspaces;
lower: 0,
page_increment: 1,
page_size: 1,
step_increment: 0,
upper: 0 });
this.scrollAdjustment.connect('notify::value',
Lang.bind(this, this._onScroll));
this._workspaces = []; // Add workspace actors
this._updateWorkspaces(); for (let w = 0; w < global.screen.n_workspaces; w++)
this._updateWorkspacesId = global.screen.connect('notify::n-workspaces', Lang.bind(this, this._updateWorkspaces)); this.actor.add_actor(this._workspaces[w].actor);
this._workspaces[activeWorkspaceIndex].actor.raise_top();
this._extraWorkspaces = [];
this._updateExtraWorkspaces();
// Position/scale the desktop windows and their children after the
// workspaces have been created. This cannot be done first because
// window movement depends on the Workspaces object being accessible
// as an Overview member.
this._overviewShowingId =
Main.overview.connect('showing',
Lang.bind(this, function() {
for (let w = 0; w < this._workspaces.length; w++)
this._workspaces[w].zoomToOverview();
for (let w = 0; w < this._extraWorkspaces.length; w++)
this._extraWorkspaces[w].zoomToOverview();
}));
this._overviewShownId = this._overviewShownId =
Main.overview.connect('shown', Main.overview.connect('shown',
Lang.bind(this, function() { Lang.bind(this, function() {
@ -116,21 +99,72 @@ const WorkspacesView = new Lang.Class({
this._fullGeometry.width, this._fullGeometry.height); this._fullGeometry.width, this._fullGeometry.height);
})); }));
this.scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex,
lower: 0,
page_increment: 1,
page_size: 1,
step_increment: 0,
upper: this._workspaces.length });
this.scrollAdjustment.connect('notify::value',
Lang.bind(this, this._onScroll));
this._switchWorkspaceNotifyId = this._switchWorkspaceNotifyId =
global.window_manager.connect('switch-workspace', global.window_manager.connect('switch-workspace',
Lang.bind(this, this._activeWorkspaceChanged)); Lang.bind(this, this._activeWorkspaceChanged));
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
Lang.bind(this, this._dragBegin));
this._itemDragEndId = Main.overview.connect('item-drag-end',
Lang.bind(this, this._dragEnd));
this._windowDragBeginId = Main.overview.connect('window-drag-begin',
Lang.bind(this, this._dragBegin));
this._windowDragEndId = Main.overview.connect('window-drag-end',
Lang.bind(this, this._dragEnd));
}, },
_setReservedSlot: function(clone) { _updateExtraWorkspaces: function() {
for (let i = 0; i < this._workspaces.length; i++) this._destroyExtraWorkspaces();
this._workspaces[i].setReservedSlot(clone);
if (!this._settings.get_boolean('workspaces-only-on-primary'))
return;
let monitors = Main.layoutManager.monitors;
for (let i = 0; i < monitors.length; i++) {
if (i == Main.layoutManager.primaryIndex)
continue;
let ws = new Workspace.Workspace(null, i);
ws.setFullGeometry(monitors[i]);
ws.setActualGeometry(monitors[i]);
Main.layoutManager.overviewGroup.add_actor(ws.actor);
this._extraWorkspaces.push(ws);
}
}, },
_syncGeometry: function() { _destroyExtraWorkspaces: function() {
for (let m = 0; m < this._extraWorkspaces.length; m++)
this._extraWorkspaces[m].destroy();
this._extraWorkspaces = [];
},
setFullGeometry: function(geom) {
if (rectEqual(this._fullGeometry, geom))
return;
this._fullGeometry = geom;
for (let i = 0; i < this._workspaces.length; i++) for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setFullGeometry(this._fullGeometry); this._workspaces[i].setFullGeometry(geom);
},
setActualGeometry: function(geom) {
if (rectEqual(this._actualGeometry, geom))
return;
this._actualGeometry = geom;
for (let i = 0; i < this._workspaces.length; i++) for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setActualGeometry(this._actualGeometry); this._workspaces[i].setActualGeometry(geom);
}, },
getActiveWorkspace: function() { getActiveWorkspace: function() {
@ -138,22 +172,29 @@ const WorkspacesView = new Lang.Class({
return this._workspaces[active]; return this._workspaces[active];
}, },
zoomToOverview: function() { hide: function() {
for (let w = 0; w < this._workspaces.length; w++) let activeWorkspaceIndex = global.screen.get_active_workspace_index();
this._workspaces[w].zoomToOverview(); let activeWorkspace = this._workspaces[activeWorkspaceIndex];
this._updateWorkspaceActors(false);
}, activeWorkspace.actor.raise_top();
zoomFromOverview: function() {
this.actor.remove_clip(); this.actor.remove_clip();
for (let w = 0; w < this._workspaces.length; w++) for (let w = 0; w < this._workspaces.length; w++)
this._workspaces[w].zoomFromOverview(); this._workspaces[w].zoomFromOverview();
for (let w = 0; w < this._extraWorkspaces.length; w++)
this._extraWorkspaces[w].zoomFromOverview();
},
destroy: function() {
this.actor.destroy();
}, },
syncStacking: function(stackIndices) { syncStacking: function(stackIndices) {
for (let i = 0; i < this._workspaces.length; i++) for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].syncStacking(stackIndices); this._workspaces[i].syncStacking(stackIndices);
for (let i = 0; i < this._extraWorkspaces.length; i++)
this._extraWorkspaces[i].syncStacking(stackIndices);
}, },
_scrollToActive: function() { _scrollToActive: function() {
@ -175,7 +216,7 @@ const WorkspacesView = new Lang.Class({
Tweener.removeTweens(workspace.actor); Tweener.removeTweens(workspace.actor);
let y = (w - active) * this._fullGeometry.height; let y = (w - active) * (this._fullGeometry.height + this._spacing);
if (showAnimation) { if (showAnimation) {
let params = { y: y, let params = { y: y,
@ -235,31 +276,25 @@ const WorkspacesView = new Lang.Class({
}); });
}, },
_updateWorkspaces: function() { updateWorkspaces: function(oldNumWorkspaces, newNumWorkspaces) {
let oldNumWorkspaces = this._workspaces.length; let active = global.screen.get_active_workspace_index();
let newNumWorkspaces = global.screen.n_workspaces;
this.scrollAdjustment.upper = newNumWorkspaces; Tweener.addTween(this.scrollAdjustment,
{ upper: newNumWorkspaces,
time: WORKSPACE_SWITCH_TIME,
transition: 'easeOutQuad'
});
if (newNumWorkspaces > oldNumWorkspaces) { if (newNumWorkspaces > oldNumWorkspaces) {
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) { for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
let metaWorkspace = global.screen.get_workspace_by_index(w); this._workspaces[w].setFullGeometry(this._fullGeometry);
let workspace = new Workspace.Workspace(metaWorkspace, this._monitorIndex); if (this._actualGeometry)
this._workspaces.push(workspace); this._workspaces[w].setActualGeometry(this._actualGeometry);
this.actor.add_actor(workspace.actor); this.actor.add_actor(this._workspaces[w].actor);
} }
if (this._fullGeometry) this._updateWorkspaceActors(false);
this._updateWorkspaceActors(false);
} else if (newNumWorkspaces < oldNumWorkspaces) {
let nRemoved = (newNumWorkspaces - oldNumWorkspaces);
let removed = this._workspaces.splice(oldNumWorkspaces, nRemoved);
removed.forEach(function(workspace) {
workspace.destroy();
});
} }
this._syncGeometry();
}, },
_activeWorkspaceChanged: function(wm, from, to, direction) { _activeWorkspaceChanged: function(wm, from, to, direction) {
@ -270,12 +305,70 @@ const WorkspacesView = new Lang.Class({
}, },
_onDestroy: function() { _onDestroy: function() {
this.parent(); this._destroyExtraWorkspaces();
this.scrollAdjustment.run_dispose(); this.scrollAdjustment.run_dispose();
Main.overview.disconnect(this._overviewShowingId);
Main.overview.disconnect(this._overviewShownId); Main.overview.disconnect(this._overviewShownId);
global.window_manager.disconnect(this._switchWorkspaceNotifyId); global.window_manager.disconnect(this._switchWorkspaceNotifyId);
global.screen.disconnect(this._updateWorkspacesId); this._settings.disconnect(this._updateExtraWorkspacesId);
if (this._inDrag)
this._dragEnd();
if (this._itemDragBeginId > 0) {
Main.overview.disconnect(this._itemDragBeginId);
this._itemDragBeginId = 0;
}
if (this._itemDragEndId > 0) {
Main.overview.disconnect(this._itemDragEndId);
this._itemDragEndId = 0;
}
if (this._windowDragBeginId > 0) {
Main.overview.disconnect(this._windowDragBeginId);
this._windowDragBeginId = 0;
}
if (this._windowDragEndId > 0) {
Main.overview.disconnect(this._windowDragEndId);
this._windowDragEndId = 0;
}
},
_dragBegin: function() {
if (this._scrolling)
return;
this._inDrag = true;
this._firstDragMotion = true;
this._dragMonitor = {
dragMotion: Lang.bind(this, this._onDragMotion)
};
DND.addDragMonitor(this._dragMonitor);
},
_onDragMotion: function(dragEvent) {
if (Main.overview.animationInProgress)
return DND.DragMotionResult.CONTINUE;
if (this._firstDragMotion) {
this._firstDragMotion = false;
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
for (let i = 0; i < this._extraWorkspaces.length; i++)
this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
}
return DND.DragMotionResult.CONTINUE;
},
_dragEnd: function() {
DND.removeDragMonitor(this._dragMonitor);
this._inDrag = false;
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setReservedSlot(null);
for (let i = 0; i < this._extraWorkspaces.length; i++)
this._extraWorkspaces[i].setReservedSlot(null);
}, },
startSwipeScroll: function() { startSwipeScroll: function() {
@ -334,42 +427,6 @@ const WorkspacesView = new Lang.Class({
}); });
Signals.addSignalMethods(WorkspacesView.prototype); Signals.addSignalMethods(WorkspacesView.prototype);
const ExtraWorkspaceView = new Lang.Class({
Name: 'ExtraWorkspaceView',
Extends: WorkspacesViewBase,
_init: function(monitorIndex) {
this.parent(monitorIndex);
this._workspace = new Workspace.Workspace(null, monitorIndex);
this.actor.add_actor(this._workspace.actor);
},
_setReservedSlot: function(clone) {
this._workspace.setReservedSlot(clone);
},
_syncGeometry: function() {
this._workspace.setFullGeometry(this._fullGeometry);
this._workspace.setActualGeometry(this._actualGeometry);
},
zoomToOverview: function() {
this._workspace.zoomToOverview();
},
zoomFromOverview: function() {
this._workspace.zoomFromOverview();
},
syncStacking: function(stackIndices) {
this._workspace.syncStacking(stackIndices);
},
startSwipeScroll: function() {
},
endSwipeScroll: function() {
},
});
const WorkspacesDisplay = new Lang.Class({ const WorkspacesDisplay = new Lang.Class({
Name: 'WorkspacesDisplay', Name: 'WorkspacesDisplay',
@ -414,6 +471,7 @@ const WorkspacesDisplay = new Lang.Class({
this._primaryIndex = Main.layoutManager.primaryIndex; this._primaryIndex = Main.layoutManager.primaryIndex;
this._workspacesViews = []; this._workspacesViews = [];
this._workspaces = [];
this._primaryScrollAdjustment = null; this._primaryScrollAdjustment = null;
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA }); this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
@ -422,6 +480,9 @@ const WorkspacesDisplay = new Lang.Class({
this._workspacesOnlyOnPrimaryChanged)); this._workspacesOnlyOnPrimaryChanged));
this._workspacesOnlyOnPrimaryChanged(); this._workspacesOnlyOnPrimaryChanged();
global.screen.connect('notify::n-workspaces',
Lang.bind(this, this._workspacesChanged));
this._switchWorkspaceNotifyId = 0; this._switchWorkspaceNotifyId = 0;
this._notifyOpacityId = 0; this._notifyOpacityId = 0;
@ -439,8 +500,6 @@ const WorkspacesDisplay = new Lang.Class({
show: function() { show: function() {
this._updateWorkspacesViews(); this._updateWorkspacesViews();
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].zoomToOverview();
this._restackedNotifyId = this._restackedNotifyId =
Main.overview.connect('windows-restacked', Main.overview.connect('windows-restacked',
@ -450,8 +509,9 @@ const WorkspacesDisplay = new Lang.Class({
}, },
zoomFromOverview: function() { zoomFromOverview: function() {
for (let i = 0; i < this._workspacesViews.length; i++) for (let i = 0; i < this._workspacesViews.length; i++) {
this._workspacesViews[i].zoomFromOverview(); this._workspacesViews[i].hide();
}
}, },
hide: function() { hide: function() {
@ -483,38 +543,46 @@ const WorkspacesDisplay = new Lang.Class({
this._workspacesViews[i].destroy(); this._workspacesViews[i].destroy();
this._workspacesViews = []; this._workspacesViews = [];
this._workspaces = [];
let monitors = Main.layoutManager.monitors; let monitors = Main.layoutManager.monitors;
for (let i = 0; i < monitors.length; i++) { for (let i = 0; i < monitors.length; i++) {
let view;
if (this._workspacesOnlyOnPrimary && i != this._primaryIndex) if (this._workspacesOnlyOnPrimary && i != this._primaryIndex)
view = new ExtraWorkspaceView(i); continue; // we are only interested in the primary monitor
else
view = new WorkspacesView(i);
let monitorWorkspaces = [];
for (let w = 0; w < global.screen.n_workspaces; w++) {
let metaWorkspace = global.screen.get_workspace_by_index(w);
monitorWorkspaces.push(new Workspace.Workspace(metaWorkspace, i));
}
this._workspaces.push(monitorWorkspaces);
let view = new WorkspacesView(monitorWorkspaces);
view.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent)); view.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
if (i == this._primaryIndex) { if (this._workspacesOnlyOnPrimary || i == this._primaryIndex) {
this._scrollAdjustment = view.scrollAdjustment; this._scrollAdjustment = view.scrollAdjustment;
this._scrollAdjustment.connect('notify::value', this._scrollAdjustment.connect('notify::value',
Lang.bind(this, this._scrollValueChanged)); Lang.bind(this, this._scrollValueChanged));
} }
this._workspacesViews.push(view); this._workspacesViews.push(view);
Main.layoutManager.overviewGroup.add_actor(view.actor);
} }
this._updateWorkspacesFullGeometry(); this._updateWorkspacesFullGeometry();
this._updateWorkspacesActualGeometry(); this._updateWorkspacesActualGeometry();
for (let i = 0; i < this._workspacesViews.length; i++)
Main.layoutManager.overviewGroup.add_actor(this._workspacesViews[i].actor);
}, },
_scrollValueChanged: function() { _scrollValueChanged: function() {
if (this._workspacesOnlyOnPrimary)
return;
for (let i = 0; i < this._workspacesViews.length; i++) { for (let i = 0; i < this._workspacesViews.length; i++) {
if (i == this._primaryIndex) if (i == this._primaryIndex)
continue; continue;
let adjustment = this._workspacesViews[i].scrollAdjustment; let adjustment = this._workspacesViews[i].scrollAdjustment;
if (!adjustment)
continue;
// the adjustments work in terms of workspaces, so the // the adjustments work in terms of workspaces, so the
// values map directly // values map directly
adjustment.value = this._scrollAdjustment.value; adjustment.value = this._scrollAdjustment.value;
@ -524,7 +592,10 @@ const WorkspacesDisplay = new Lang.Class({
_getPrimaryView: function() { _getPrimaryView: function() {
if (!this._workspacesViews.length) if (!this._workspacesViews.length)
return null; return null;
return this._workspacesViews[this._primaryIndex]; if (this._workspacesOnlyOnPrimary)
return this._workspacesViews[0];
else
return this._workspacesViews[this._primaryIndex];
}, },
activeWorkspaceHasMaximizedWindows: function() { activeWorkspaceHasMaximizedWindows: function() {
@ -570,9 +641,15 @@ const WorkspacesDisplay = new Lang.Class({
return; return;
let monitors = Main.layoutManager.monitors; let monitors = Main.layoutManager.monitors;
let m = 0;
for (let i = 0; i < monitors.length; i++) { for (let i = 0; i < monitors.length; i++) {
let geometry = (i == this._primaryIndex) ? this._fullGeometry : monitors[i]; if (i == this._primaryIndex) {
this._workspacesViews[i].setFullGeometry(geometry); this._workspacesViews[m].setFullGeometry(this._fullGeometry);
m++;
} else if (!this._workspacesOnlyOnPrimary) {
this._workspacesViews[m].setFullGeometry(monitors[i]);
m++;
}
} }
}, },
@ -583,12 +660,18 @@ const WorkspacesDisplay = new Lang.Class({
let [x, y] = this.actor.get_transformed_position(); let [x, y] = this.actor.get_transformed_position();
let width = this.actor.allocation.x2 - this.actor.allocation.x1; let width = this.actor.allocation.x2 - this.actor.allocation.x1;
let height = this.actor.allocation.y2 - this.actor.allocation.y1; let height = this.actor.allocation.y2 - this.actor.allocation.y1;
let primaryGeometry = { x: x, y: y, width: width, height: height }; let geometry = { x: x, y: y, width: width, height: height };
let monitors = Main.layoutManager.monitors; let monitors = Main.layoutManager.monitors;
let m = 0;
for (let i = 0; i < monitors.length; i++) { for (let i = 0; i < monitors.length; i++) {
let geometry = (i == this._primaryIndex) ? primaryGeometry : monitors[i]; if (i == this._primaryIndex) {
this._workspacesViews[i].setActualGeometry(geometry); this._workspacesViews[m].setActualGeometry(geometry);
m++;
} else if (!this._workspacesOnlyOnPrimary) {
this._workspacesViews[m].setActualGeometry(monitors[i]);
m++;
}
} }
}, },
@ -597,6 +680,60 @@ const WorkspacesDisplay = new Lang.Class({
this._workspacesViews[i].syncStacking(stackIndices); this._workspacesViews[i].syncStacking(stackIndices);
}, },
_workspacesChanged: function() {
if (!this._workspacesViews.length)
return;
let oldNumWorkspaces = this._workspaces[0].length;
let newNumWorkspaces = global.screen.n_workspaces;
let active = global.screen.get_active_workspace_index();
let lostWorkspaces = [];
if (newNumWorkspaces > oldNumWorkspaces) {
let monitors = Main.layoutManager.monitors;
let m = 0;
for (let i = 0; i < monitors.length; i++) {
if (this._workspacesOnlyOnPrimary &&
i != this._primaryIndex)
continue;
// Assume workspaces are only added at the end
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
let metaWorkspace = global.screen.get_workspace_by_index(w);
this._workspaces[m][w] =
new Workspace.Workspace(metaWorkspace, i);
}
m++;
}
} else {
// Assume workspaces are only removed sequentially
// (e.g. 2,3,4 - not 2,4,7)
let removedIndex;
let removedNum = oldNumWorkspaces - newNumWorkspaces;
for (let w = 0; w < oldNumWorkspaces; w++) {
let metaWorkspace = global.screen.get_workspace_by_index(w);
if (this._workspaces[0][w].metaWorkspace != metaWorkspace) {
removedIndex = w;
break;
}
}
for (let i = 0; i < this._workspaces.length; i++) {
lostWorkspaces = this._workspaces[i].splice(removedIndex,
removedNum);
for (let l = 0; l < lostWorkspaces.length; l++) {
lostWorkspaces[l].disconnectAll();
lostWorkspaces[l].destroy();
}
}
}
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].updateWorkspaces(oldNumWorkspaces,
newNumWorkspaces);
},
_onScrollEvent: function(actor, event) { _onScrollEvent: function(actor, event) {
if (!this.actor.mapped) if (!this.actor.mapped)
return false; return false;

View File

@ -38,7 +38,7 @@ js/ui/panel.js
js/ui/popupMenu.js js/ui/popupMenu.js
js/ui/runDialog.js js/ui/runDialog.js
js/ui/screenShield.js js/ui/screenShield.js
js/ui/search.js js/ui/searchDisplay.js
js/ui/shellEntry.js js/ui/shellEntry.js
js/ui/shellMountOperation.js js/ui/shellMountOperation.js
js/ui/status/accessibility.js js/ui/status/accessibility.js
@ -52,6 +52,7 @@ js/ui/status/system.js
js/ui/status/volume.js js/ui/status/volume.js
js/ui/unlockDialog.js js/ui/unlockDialog.js
js/ui/viewSelector.js js/ui/viewSelector.js
js/ui/wanda.js
js/ui/windowAttentionHandler.js js/ui/windowAttentionHandler.js
js/ui/windowManager.js js/ui/windowManager.js
src/calendar-server/evolution-calendar.desktop.in.in src/calendar-server/evolution-calendar.desktop.in.in

653
po/ar.po

File diff suppressed because it is too large Load Diff

320
po/be.po
View File

@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: gnome-shell.master\n" "Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-10-02 17:58+0000\n" "POT-Creation-Date: 2013-10-15 18:32+0000\n"
"PO-Revision-Date: 2012-10-16 12:05+0300\n" "PO-Revision-Date: 2012-10-16 12:05+0300\n"
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n" "Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n" "Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
@ -273,23 +273,23 @@ msgstr ""
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца " "Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
"вышэй." "вышэй."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:692 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Скасаваць" msgstr "Скасаваць"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Далей" msgstr "Далей"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Разблакіраваць" msgstr "Разблакіраваць"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Увайсці" msgstr "Увайсці"
@ -316,23 +316,23 @@ msgstr "Імя карыстальніка: "
msgid "Login Window" msgid "Login Window"
msgstr "Акно ўваходу" msgstr "Акно ўваходу"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "Памылка ідэнтыфікацыі" msgstr "Памылка ідэнтыфікацыі"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(або правядзіце пальцам)" msgstr "(або правядзіце пальцам)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:115
msgid "Command not found" msgid "Command not found"
msgstr "Загад не знойдзены" msgstr "Загад не знойдзены"
#: ../js/misc/util.js:131 #: ../js/misc/util.js:148
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Не ўдалося разабраць загад:" msgstr "Не ўдалося разабраць загад:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:156
#, javascript-format #, javascript-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Не ўдалося выканаць \"%s\":" msgstr "Не ўдалося выканаць \"%s\":"
@ -349,15 +349,15 @@ msgstr "Часта"
msgid "All" msgid "All"
msgstr "Усе" msgstr "Усе"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1523
msgid "New Window" msgid "New Window"
msgstr "Новае акно" msgstr "Новае акно"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1526 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Выдаліць са спіса ўпадабанага" msgstr "Выдаліць са спіса ўпадабанага"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1527
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Дадаць у спіс упадабанага" msgstr "Дадаць у спіс упадабанага"
@ -371,7 +371,7 @@ msgstr "%s дададзены ў ваш спіс упадабанага."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s выдалены з вашага спіса ўпадабанага." msgstr "%s выдалены з вашага спіса ўпадабанага."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:325
msgid "Settings" msgid "Settings"
msgstr "Настройкі" msgstr "Настройкі"
@ -562,16 +562,16 @@ msgstr "Адкрыць у %s"
msgid "Eject" msgid "Eject"
msgstr "Выняць" msgstr "Выняць"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280 #: ../js/ui/components/keyring.js:89 ../js/ui/components/polkitAgent.js:280
msgid "Password:" msgid "Password:"
msgstr "Пароль:" msgstr "Пароль:"
#: ../js/ui/components/keyring.js:110 #: ../js/ui/components/keyring.js:108
msgid "Type again:" msgid "Type again:"
msgstr "Паўтарыце пароль:" msgstr "Паўтарыце пароль:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:695 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Злучыць" msgstr "Злучыць"
@ -667,60 +667,60 @@ msgstr "Ідэнтыфікаваць"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "На жаль, ідэнтыфікацыя не адбылася. Паўтарыце спробу." msgstr "На жаль, ідэнтыфікацыя не адбылася. Паўтарыце спробу."
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "Запрашэнне" msgstr "Запрашэнне"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "Званок" msgstr "Званок"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "Перадача файла" msgstr "Перадача файла"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "Чат" msgstr "Чат"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Вярнуць гук" msgstr "Вярнуць гук"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Абязгучыць" msgstr "Абязгучыць"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Учора</b>, <b>%H:%M</b>" msgstr "<b>Учора</b>, <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, <b>%H:%M</b>" msgstr "<b>%A</b>, <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%d</b> <b>%B</b>, <b>%H:%M</b>" msgstr "<b>%d</b> <b>%B</b>, <b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> " msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> "
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s змяніў імя на %s" msgstr "%s змяніў імя на %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Запрашэнне ў %s" msgstr "Запрашэнне ў %s"
@ -728,38 +728,38 @@ msgstr "Запрашэнне ў %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "Удзельнік %s запрашае вас далучыцца да %s" msgstr "Удзельнік %s запрашае вас далучыцца да %s"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Адмовіцца" msgstr "Адмовіцца"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Прыняць" msgstr "Прыняць"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Відэазванок ад %s" msgstr "Відэазванок ад %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Званок ад %s" msgstr "Званок ад %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Адказаць" msgstr "Адказаць"
@ -768,108 +768,108 @@ msgstr "Адказаць"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s пасылае вам %s" msgstr "%s пасылае вам %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s просіць дазволу на прагляд вашага сеткавага стану" msgstr "%s просіць дазволу на прагляд вашага сеткавага стану"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Сеткавая памылка" msgstr "Сеткавая памылка"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Няўдалая ідэнтыфікацыя" msgstr "Няўдалая ідэнтыфікацыя"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Памылка шыфравання" msgstr "Памылка шыфравання"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Сертыфікат не пададзены" msgstr "Сертыфікат не пададзены"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Сертыфікат не заслугоўвае даверу" msgstr "Сертыфікат не заслугоўвае даверу"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Сертыфікат састарэў" msgstr "Сертыфікат састарэў"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Сертыфікат не актывізаваны" msgstr "Сертыфікат не актывізаваны"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Назва камп'ютара ў сертыфікаце не адпавядае патрэбнай" msgstr "Назва камп'ютара ў сертыфікаце не адпавядае патрэбнай"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Адбітак сертыфіката не адпавядае патрэбнаму" msgstr "Адбітак сертыфіката не адпавядае патрэбнаму"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Сертыфікат уласнаручна падпісаны" msgstr "Сертыфікат уласнаручна падпісаны"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Уключаны рэжым па-за сеткай" msgstr "Уключаны рэжым па-за сеткай"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Шыфраванне недаступнае" msgstr "Шыфраванне недаступнае"
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Хібны сертыфікат" msgstr "Хібны сертыфікат"
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Адмоўлена ў злучэнні" msgstr "Адмоўлена ў злучэнні"
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Не ўдалося ўсталяваць злучэнне" msgstr "Не ўдалося ўсталяваць злучэнне"
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Злучэнне страчана" msgstr "Злучэнне страчана"
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Гэты конт ужо злучаны з серверам" msgstr "Гэты конт ужо злучаны з серверам"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Злучэнне заменена новым для таго ж самага рэсурсу" msgstr "Злучэнне заменена новым для таго ж самага рэсурсу"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Такі конт ужо існуе на серверы" msgstr "Такі конт ужо існуе на серверы"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Сервер надта заняты і не можа абслужыць гэта злучэнне" msgstr "Сервер надта заняты і не можа абслужыць гэта злучэнне"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Сертыфікат быў адкліканы" msgstr "Сертыфікат быў адкліканы"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "Для сертыфіката выкарыстаны слабы або небяспечны алгарытм шыфравання" msgstr "Для сертыфіката выкарыстаны слабы або небяспечны алгарытм шыфравання"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -877,22 +877,22 @@ msgstr ""
"Даўжыня сертыфіката сервера або глыбіня яго ланцуга перавышае абмежаванне, " "Даўжыня сертыфіката сервера або глыбіня яго ланцуга перавышае абмежаванне, "
"выстаўленае крыптаграфічнай бібліятэкай" "выстаўленае крыптаграфічнай бібліятэкай"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Унутраная памылка" msgstr "Унутраная памылка"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Не ўдалося злучыцца з %s" msgstr "Не ўдалося злучыцца з %s"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Праглядзець конт" msgstr "Праглядзець конт"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Невядомая прычына" msgstr "Невядомая прычына"
@ -1072,9 +1072,12 @@ msgstr "Паказваць памылкі"
msgid "Enabled" msgid "Enabled"
msgstr "Уключана" msgstr "Уключана"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../src/gvc/gvc-mixer-control.c:1830 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Выключана" msgstr "Выключана"
@ -1098,44 +1101,48 @@ msgstr "Паглядзець выточны код"
msgid "Web Page" msgid "Web Page"
msgstr "Сеціўная старонка" msgstr "Сеціўная старонка"
#: ../js/ui/messageTray.js:1222 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Адкрыць" msgstr "Адкрыць"
#: ../js/ui/messageTray.js:1229 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Выдаліць" msgstr "Выдаліць"
#: ../js/ui/messageTray.js:1513 #: ../js/ui/messageTray.js:1657
msgid "Notifications"
msgstr "Апавяшчэнні"
#: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Ачысціць спіс апавяшчэнняў" msgstr "Ачысціць спіс апавяшчэнняў"
#: ../js/ui/messageTray.js:1540 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Настройкі апавяшчэння" msgstr "Настройкі апавяшчэння"
#: ../js/ui/messageTray.js:1559 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Меню трэя" msgstr "Меню трэя"
#: ../js/ui/messageTray.js:1775 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Апавяшчэнні адсутнічаюць" msgstr "Апавяшчэнні адсутнічаюць"
#: ../js/ui/messageTray.js:1813 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Абшар апавяшчэнняў" msgstr "Абшар апавяшчэнняў"
#: ../js/ui/messageTray.js:2788 #: ../js/ui/messageTray.js:2965
msgid "System Information" msgid "System Information"
msgstr "Сістэмная інфармацыя" msgstr "Сістэмная інфармацыя"
#: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Невядомая" msgstr "Невядомая"
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1159,21 +1166,21 @@ msgstr "Агляд"
msgid "Type to search…" msgid "Type to search…"
msgstr "Увядзіце тэкст для пошуку..." msgstr "Увядзіце тэкст для пошуку..."
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Выйсці" msgstr "Выйсці"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Заняткі" msgstr "Заняткі"
#: ../js/ui/panel.js:904 #: ../js/ui/panel.js:900
msgid "Top Bar" msgid "Top Bar"
msgstr "Верхняя панэль" msgstr "Верхняя панэль"
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -1187,11 +1194,11 @@ msgstr "Закрыць"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format #, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
@ -1199,19 +1206,19 @@ msgstr[0] "%d новае апавяшчэнне"
msgstr[1] "%d новыя апавяшчэнні" msgstr[1] "%d новыя апавяшчэнні"
msgstr[2] "%d новых апавяшчэнняў" msgstr[2] "%d новых апавяшчэнняў"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:333
msgid "Lock" msgid "Lock"
msgstr "Заблакіраваць" msgstr "Заблакіраваць"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME патрабуе блакіравання экрана" msgstr "GNOME патрабуе блакіравання экрана"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Не ўдалося заблакіраваць" msgstr "Не ўдалося заблакіраваць"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Блакіраванне стрымана праграмай" msgstr "Блакіраванне стрымана праграмай"
@ -1251,62 +1258,62 @@ msgstr "Запомніць пароль"
msgid "Accessibility" msgid "Accessibility"
msgstr "Даступнасць" msgstr "Даступнасць"
#: ../js/ui/status/accessibility.js:58 #: ../js/ui/status/accessibility.js:56
msgid "Zoom" msgid "Zoom"
msgstr "Маштабаванне" msgstr "Маштабаванне"
#: ../js/ui/status/accessibility.js:65 #: ../js/ui/status/accessibility.js:63
msgid "Screen Reader" msgid "Screen Reader"
msgstr "Чытальнік з экрана" msgstr "Чытальнік з экрана"
#: ../js/ui/status/accessibility.js:69 #: ../js/ui/status/accessibility.js:67
msgid "Screen Keyboard" msgid "Screen Keyboard"
msgstr "Экранная клавіятура" msgstr "Экранная клавіятура"
#: ../js/ui/status/accessibility.js:73 #: ../js/ui/status/accessibility.js:71
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "Візуальныя сігналы" msgstr "Візуальныя сігналы"
#: ../js/ui/status/accessibility.js:76 #: ../js/ui/status/accessibility.js:74
msgid "Sticky Keys" msgid "Sticky Keys"
msgstr "Грузкія клавішы" msgstr "Грузкія клавішы"
#: ../js/ui/status/accessibility.js:79 #: ../js/ui/status/accessibility.js:77
msgid "Slow Keys" msgid "Slow Keys"
msgstr "Марудныя клавішы" msgstr "Марудныя клавішы"
#: ../js/ui/status/accessibility.js:82 #: ../js/ui/status/accessibility.js:80
msgid "Bounce Keys" msgid "Bounce Keys"
msgstr "Рыкашэтныя клавішы" msgstr "Рыкашэтныя клавішы"
#: ../js/ui/status/accessibility.js:85 #: ../js/ui/status/accessibility.js:83
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Мышыныя клавішы" msgstr "Мышыныя клавішы"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:142
msgid "High Contrast" msgid "High Contrast"
msgstr "Высокая кантраснасць" msgstr "Высокая кантраснасць"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:191
msgid "Large Text" msgid "Large Text"
msgstr "Буйны тэкст" msgstr "Буйны тэкст"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1040 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Выключыць" msgstr "Выключыць"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Настройкі Bluetooth" msgstr "Настройкі Bluetooth"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format #, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
@ -1314,73 +1321,73 @@ msgstr[0] "%d злучанае прыстасаванне"
msgstr[1] "%d злучаныя прыстасаванні" msgstr[1] "%d злучаныя прыстасаванні"
msgstr[2] "%d злучаных прыстасаванняў" msgstr[2] "%d злучаных прыстасаванняў"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format #, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Запыт на ўпаўнаважанне ад %s" msgstr "Запыт на ўпаўнаважанне ад %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format #, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Прыстасаванне %s хоча спарыцца з гэтым камп'ютарам" msgstr "Прыстасаванне %s хоча спарыцца з гэтым камп'ютарам"
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "Дазволіць" msgstr "Дазволіць"
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "Адмовіць" msgstr "Адмовіць"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format #, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Прыстасаванне %s хоча даступіцца да паслугі \"%s\"" msgstr "Прыстасаванне %s хоча даступіцца да паслугі \"%s\""
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "Заўсёды даваць дазвол" msgstr "Заўсёды даваць дазвол"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Даць дазвол аднойчы" msgstr "Даць дазвол аднойчы"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "Адмовіць" msgstr "Адмовіць"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format #, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Пацвярджэнне спарвання з %s" msgstr "Пацвярджэнне спарвання з %s"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format #, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Праверце, ці супадае пароль \"%06d\" з нумарам на прыстасаванні." msgstr "Праверце, ці супадае пароль \"%06d\" з нумарам на прыстасаванні."
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "Супадае" msgstr "Супадае"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "Не супадае" msgstr "Не супадае"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format #, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Запыт на спарванне з %s" msgstr "Запыт на спарванне з %s"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Увядзіце PIN, які паказвае прыстасаванне." msgstr "Увядзіце PIN, які паказвае прыстасаванне."
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "Добра" msgstr "Добра"
@ -1388,87 +1395,99 @@ msgstr "Добра"
msgid "Brightness" msgid "Brightness"
msgstr "Яркасць" msgstr "Яркасць"
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<невядома>" msgstr "<невядома>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1055 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Выключана" msgstr "Выключана"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:961
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Сеткавыя настройкі"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:364 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "непадкантрольна" msgstr "непадкантрольна"
#: ../js/ui/status/network.js:366 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "адлучэнне..." msgstr "адлучэнне..."
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "усталяванне злучэння..." msgstr "усталяванне злучэння..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1109 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "патрэбная ідэнтыфікацыя" msgstr "патрэбная ідэнтыфікацыя"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:383 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "няма апаратнага апраграмавання" msgstr "няма апаратнага апраграмавання"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:387 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "недаступна" msgstr "недаступна"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1111 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "не ўдалося злучыцца" msgstr "не ўдалося злучыцца"
#: ../js/ui/status/network.js:660 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
msgid "Mobile Broadband Settings"
msgstr "Настройкі шырокапалоснай мабільнай сеткі"
#: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
msgid "Hardware Disabled"
msgstr "Апаратура выключана"
#: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Сеткі Wi-Fi" msgstr "Сеткі Wi-Fi"
#: ../js/ui/status/network.js:662 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Выберыце сетку" msgstr "Выберыце сетку"
#: ../js/ui/status/network.js:686 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Няма сетак" msgstr "Няма сетак"
#: ../js/ui/status/network.js:955 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Выбраць сетку" msgstr "Выбраць сетку"
#: ../js/ui/status/network.js:1040 #: ../js/ui/status/network.js:1011
msgid "Wi-Fi Settings"
msgstr "Настройкі Wi-Fi"
#: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Уключыць" msgstr "Уключыць"
#: ../js/ui/status/network.js:1174 #: ../js/ui/status/network.js:1122
msgid "Not Connected"
msgstr "Няма злучэння"
#: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1314 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Сеткавы кіраўнік" msgstr "Сеткавы кіраўнік"
#: ../js/ui/status/network.js:1353 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Не ўдалося злучыцца" msgstr "Не ўдалося злучыцца"
#: ../js/ui/status/network.js:1354 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Не ўдалося ўключыць сеткавае злучэнне" msgstr "Не ўдалося ўключыць сеткавае злучэнне"
@ -1506,6 +1525,10 @@ msgstr "Рэжым самалёта"
msgid "On" msgid "On"
msgstr "Укл." msgstr "Укл."
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Сеткавыя настройкі"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/system.js:305
msgid "Switch User" msgid "Switch User"
msgstr "Перамяніць карыстальніка" msgstr "Перамяніць карыстальніка"
@ -1656,4 +1679,3 @@ msgstr "Пароль не можа быць пустым"
#: ../src/shell-polkit-authentication-agent.c:343 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Карыстальнік праігнараваў дыялогавае акенца ідэнтыфікацыі" msgstr "Карыстальнік праігнараваў дыялогавае акенца ідэнтыфікацыі"

354
po/cs.po
View File

@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-10-10 21:27+0000\n" "POT-Creation-Date: 2013-12-29 22:55+0000\n"
"PO-Revision-Date: 2013-10-11 16:28+0200\n" "PO-Revision-Date: 2013-12-30 00:05+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n" "Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
@ -273,23 +273,23 @@ msgid "Select an extension to configure using the combobox above."
msgstr "" msgstr ""
"Pomocí rozbalovacího seznamu výše zvolte rozšíření, které chete nastavit." "Pomocí rozbalovacího seznamu výše zvolte rozšíření, které chete nastavit."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:728 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Zrušit" msgstr "Zrušit"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Následující" msgstr "Následující"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Odemknout" msgstr "Odemknout"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Přihlásit se" msgstr "Přihlásit se"
@ -303,7 +303,6 @@ msgid "Not listed?"
msgstr "Nejste na seznamu?" msgstr "Nejste na seznamu?"
#: ../js/gdm/loginDialog.js:622 #: ../js/gdm/loginDialog.js:622
#, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(např. uživatel nebo %s)" msgstr "(např. uživatel nebo %s)"
@ -316,11 +315,11 @@ msgstr "Uživatelské jméno: "
msgid "Login Window" msgid "Login Window"
msgstr "Přihlašovací okno" msgstr "Přihlašovací okno"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "Chyba ověření" msgstr "Chyba ověření"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(nebo otiskněte prst)" msgstr "(nebo otiskněte prst)"
@ -333,7 +332,6 @@ msgid "Could not parse command:"
msgstr "Nelze analyzovat příkaz:" msgstr "Nelze analyzovat příkaz:"
#: ../js/misc/util.js:156 #: ../js/misc/util.js:156
#, javascript-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Vykonání „%s“ selhalo:" msgstr "Vykonání „%s“ selhalo:"
@ -349,30 +347,28 @@ msgstr "Časté"
msgid "All" msgid "All"
msgstr "Všechny" msgstr "Všechny"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Nové okno" msgstr "Nové okno"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstranit z oblíbených" msgstr "Odstranit z oblíbených"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Přidat mezi oblíbené" msgstr "Přidat mezi oblíbené"
#: ../js/ui/appFavorites.js:87 #: ../js/ui/appFavorites.js:87
#, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s byl přidán mezi oblíbené." msgstr "%s byl přidán mezi oblíbené."
#: ../js/ui/appFavorites.js:121 #: ../js/ui/appFavorites.js:121
#, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s byl odstraněn z oblíbených." msgstr "%s byl odstraněn z oblíbených."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Nastavení" msgstr "Nastavení"
@ -393,7 +389,7 @@ msgstr "Celý den"
#: ../js/ui/calendar.js:68 #: ../js/ui/calendar.js:68
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%k%M" msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
@ -401,7 +397,7 @@ msgstr "%k%M"
#: ../js/ui/calendar.js:77 #: ../js/ui/calendar.js:77
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
#. Translators: Calendar grid abbreviation for Sunday. #. Translators: Calendar grid abbreviation for Sunday.
#. * #. *
@ -554,7 +550,6 @@ msgid "Removable Devices"
msgstr "Výměnná zařízení" msgstr "Výměnná zařízení"
#: ../js/ui/components/autorunManager.js:594 #: ../js/ui/components/autorunManager.js:594
#, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Otevřít s %s" msgstr "Otevřít s %s"
@ -570,8 +565,8 @@ msgstr "Heslo:"
msgid "Type again:" msgid "Type again:"
msgstr "Napište znovu:" msgstr "Napište znovu:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:133 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:296 ../js/ui/status/network.js:731 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Připojit" msgstr "Připojit"
@ -604,7 +599,6 @@ msgid "Authentication required by wireless network"
msgstr "K bezdrátové síti je vyžadováno ověření" msgstr "K bezdrátové síti je vyžadováno ověření"
#: ../js/ui/components/networkAgent.js:309 #: ../js/ui/components/networkAgent.js:309
#, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"'%s'." "'%s'."
@ -641,7 +635,6 @@ msgid "Mobile broadband network password"
msgstr "Heslo k mobilní širokopásmové síti" msgstr "Heslo k mobilní širokopásmové síti"
#: ../js/ui/components/networkAgent.js:336 #: ../js/ui/components/networkAgent.js:336
#, javascript-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "Pro připojení k „%s“ je vyžadováno heslo." msgstr "Pro připojení k „%s“ je vyžadováno heslo."
@ -665,99 +658,94 @@ msgstr "Ověřit"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Ověření bohužel nebylo úspěšné. Zkuste to prosím znovu." msgstr "Ověření bohužel nebylo úspěšné. Zkuste to prosím znovu."
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "Pozvání" msgstr "Pozvání"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "Hovor" msgstr "Hovor"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "Přenos souborů" msgstr "Přenos souborů"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "Diskuse" msgstr "Diskuse"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Zrušit ztlumení" msgstr "Zrušit ztlumení"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Ztlumit" msgstr "Ztlumit"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Včera</b>, <b>%H.%M</b>" msgstr "<b>Včera</b>, <b>%H%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, <b>%H:%M</b>" msgstr "<b>%A</b>, <b>%H%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%d.</b> <b>%B</b>, <b>%H:%M</b>" msgstr "<b>%d.</b> <b>%B</b>, <b>%H%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%d.</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> " msgstr "<b>%d.</b> <b>%B</b> <b>%Y</b>, <b>%H%M</b> "
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s je teď znám jako %s" msgstr "%s je teď znám jako %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Pozvánka na připojení k %s" msgstr "Pozvánka na připojení k %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s vás zve do %s" msgstr "%s vás zve do %s"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Odmítnout" msgstr "Odmítnout"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Přijmout" msgstr "Přijmout"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Videohovor od %s" msgstr "Videohovor od %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Hovor od %s" msgstr "Hovor od %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Zvednout" msgstr "Zvednout"
@ -766,110 +754,108 @@ msgstr "Zvednout"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s vám posílá %s" msgstr "%s vám posílá %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s vás žádá o oprávnění vidět, že jste dostupní" msgstr "%s vás žádá o oprávnění vidět, že jste dostupní"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Chyba sítě" msgstr "Chyba sítě"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Ověření selhalo" msgstr "Ověření selhalo"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Chyba šifrování" msgstr "Chyba šifrování"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Certifikát neposkytnut" msgstr "Certifikát neposkytnut"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Nedůvěryhodný certifikát" msgstr "Nedůvěryhodný certifikát"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Platnost certifikátu vypršela" msgstr "Platnost certifikátu vypršela"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Certifikát není aktivován" msgstr "Certifikát není aktivován"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Název počítače certifikátu nesouhlasí" msgstr "Název počítače certifikátu nesouhlasí"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Otisk prstu certifikátu nesouhlasí" msgstr "Otisk prstu certifikátu nesouhlasí"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Certifikát je podepsán sám sebou" msgstr "Certifikát je podepsán sám sebou"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Stav nastaven na „Odhlášen“" msgstr "Stav nastaven na „Odhlášen“"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Šifrování není dostupné" msgstr "Šifrování není dostupné"
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Certifikát je neplatný" msgstr "Certifikát je neplatný"
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Spojení bylo odmítnuto" msgstr "Spojení bylo odmítnuto"
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Spojení nemohlo bát navázáno" msgstr "Spojení nemohlo bát navázáno"
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Spojení bylo ztraceno" msgstr "Spojení bylo ztraceno"
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Tento účet je již připojen k serveru" msgstr "Tento účet je již připojen k serveru"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Spojení bylo nahrazeno novým spojením, které používá stejný zdroj" msgstr "Spojení bylo nahrazeno novým spojením, které používá stejný zdroj"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Takový účet již na serveru existuje" msgstr "Takový účet již na serveru existuje"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Server je právě příliš zaneprázdněn na to, aby obsloužil spojení" msgstr "Server je právě příliš zaneprázdněn na to, aby obsloužil spojení"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Certifikát byl odvolán" msgstr "Certifikát byl odvolán"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Certifikát používá nepříliš bezpečný šifrovací algoritmus nebo je z " "Certifikát používá nepříliš bezpečný šifrovací algoritmus nebo je z "
"kryptografického hlediska slabý" "kryptografického hlediska slabý"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -877,22 +863,21 @@ msgstr ""
"Délka certifikátu serveru nebo délka zřetězených certifikátů serveru " "Délka certifikátu serveru nebo délka zřetězených certifikátů serveru "
"přesáhla omezení dané kryptografickou knihovnou" "přesáhla omezení dané kryptografickou knihovnou"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Vnitřní chyba" msgstr "Vnitřní chyba"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Nelze se připojit k „%s“" msgstr "Nelze se připojit k „%s“"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Zobrazit účet" msgstr "Zobrazit účet"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznámý důvod" msgstr "Neznámý důvod"
@ -929,7 +914,6 @@ msgid "%A %B %e, %Y"
msgstr "%A, %e. %B, %Y" msgstr "%A, %e. %B, %Y"
#: ../js/ui/endSessionDialog.js:62 #: ../js/ui/endSessionDialog.js:62
#, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Odhlásit uživatele %s" msgstr "Odhlásit uživatele %s"
@ -940,7 +924,6 @@ msgid "Log Out"
msgstr "Odhlášení" msgstr "Odhlášení"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:65
#, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "Uživatel %s bude automaticky odhlášen za %d sekundu." msgstr[0] "Uživatel %s bude automaticky odhlášen za %d sekundu."
@ -948,7 +931,6 @@ msgstr[1] "Uživatel %s bude automaticky odhlášen za %d sekundy."
msgstr[2] "Uživatel %s bude automaticky odhlášen za %d sekund." msgstr[2] "Uživatel %s bude automaticky odhlášen za %d sekund."
#: ../js/ui/endSessionDialog.js:70 #: ../js/ui/endSessionDialog.js:70
#, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Budete automaticky odhlášeni za %d sekundu." msgstr[0] "Budete automaticky odhlášeni za %d sekundu."
@ -966,7 +948,6 @@ msgid "Power Off"
msgstr "Vypnutí" msgstr "Vypnutí"
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:83
#, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Systém bude automaticky vypnut za %d sekundu." msgstr[0] "Systém bude automaticky vypnut za %d sekundu."
@ -989,7 +970,6 @@ msgid "Restart"
msgstr "Restart" msgstr "Restart"
#: ../js/ui/endSessionDialog.js:99 #: ../js/ui/endSessionDialog.js:99
#, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Systém bude automaticky restartován za %d sekundu." msgstr[0] "Systém bude automaticky restartován za %d sekundu."
@ -1002,7 +982,6 @@ msgid "Restart & Install Updates"
msgstr "Restartovat a nainstalovat aktualizace" msgstr "Restartovat a nainstalovat aktualizace"
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:114
#, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
"The system will automatically restart and install updates in %d seconds." "The system will automatically restart and install updates in %d seconds."
@ -1031,13 +1010,11 @@ msgstr "Jsou přihlášeni jiní uživatelé."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:479 #: ../js/ui/endSessionDialog.js:479
#, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (vzdálený)" msgstr "%s (vzdálený)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:482 #: ../js/ui/endSessionDialog.js:482
#, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konzola)" msgstr "%s (konzola)"
@ -1046,7 +1023,6 @@ msgid "Install"
msgstr "Instalovat" msgstr "Instalovat"
#: ../js/ui/extensionDownloader.js:204 #: ../js/ui/extensionDownloader.js:204
#, javascript-format
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?" msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?"
@ -1060,7 +1036,6 @@ msgstr "Nejsou nainstalována žádná rozšíření"
#. Translators: argument is an extension UUID. */ #. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:743 #: ../js/ui/lookingGlass.js:743
#, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "Rozšíření %s nevyvolalo žádné chyby." msgstr "Rozšíření %s nevyvolalo žádné chyby."
@ -1080,7 +1055,7 @@ msgstr "Povoleno"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:473 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Zakázáno" msgstr "Zakázáno"
@ -1105,49 +1080,48 @@ msgstr "Zobrazit zdroj"
msgid "Web Page" msgid "Web Page"
msgstr "Webová stránka" msgstr "Webová stránka"
#: ../js/ui/messageTray.js:1222 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Otevřít" msgstr "Otevřít"
#: ../js/ui/messageTray.js:1229 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Odstranit" msgstr "Odstranit"
#: ../js/ui/messageTray.js:1530 #: ../js/ui/messageTray.js:1657
msgid "Notifications" msgid "Notifications"
msgstr "Upozornění" msgstr "Upozornění"
#: ../js/ui/messageTray.js:1537 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Vymazat zprávy" msgstr "Vymazat zprávy"
#: ../js/ui/messageTray.js:1564 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Nastavení upozornění" msgstr "Nastavení upozornění"
#: ../js/ui/messageTray.js:1617 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Nabídka lišty zpráv" msgstr "Nabídka lišty zpráv"
#: ../js/ui/messageTray.js:1833 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Žádné zprávy" msgstr "Žádné zprávy"
#: ../js/ui/messageTray.js:1871 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Lišta zpráv" msgstr "Lišta zpráv"
#: ../js/ui/messageTray.js:2846 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Informace o systému" msgstr "Informace o systému"
#: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Neznámé" msgstr "Neznámé"
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
msgstr[0] "%d nová zpráva" msgstr[0] "%d nová zpráva"
@ -1170,21 +1144,21 @@ msgstr "Přehled"
msgid "Type to search…" msgid "Type to search…"
msgstr "Vyhledávejte psaním…" msgstr "Vyhledávejte psaním…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Ukončit" msgstr "Ukončit"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Činnosti" msgstr "Činnosti"
#: ../js/ui/panel.js:904 #: ../js/ui/panel.js:900
msgid "Top Bar" msgid "Top Bar"
msgstr "Horní lišta" msgstr "Horní lišta"
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -1198,31 +1172,30 @@ msgstr "Zavřít"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %e. %B" msgstr "%A, %e. %B"
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d nové upozornění" msgstr[0] "%d nové upozornění"
msgstr[1] "%d nová upozornění" msgstr[1] "%d nová upozornění"
msgstr[2] "%d nových upozornění" msgstr[2] "%d nových upozornění"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Uzamknout" msgstr "Uzamknout"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME potřebuje uzamknout obrazovku" msgstr "GNOME potřebuje uzamknout obrazovku"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Nelze uzamknout obrazovku" msgstr "Nelze uzamknout obrazovku"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Zamknutí bylo zablokováno některou z aplikací" msgstr "Zamknutí bylo zablokováno některou z aplikací"
@ -1262,136 +1235,129 @@ msgstr "Pamatovat si heslo"
msgid "Accessibility" msgid "Accessibility"
msgstr "Zpřístupnění" msgstr "Zpřístupnění"
#: ../js/ui/status/accessibility.js:58 #: ../js/ui/status/accessibility.js:56
msgid "Zoom" msgid "Zoom"
msgstr "Zvětšení" msgstr "Zvětšení"
#: ../js/ui/status/accessibility.js:65 #: ../js/ui/status/accessibility.js:63
msgid "Screen Reader" msgid "Screen Reader"
msgstr "Čtečka obrazovky" msgstr "Čtečka obrazovky"
#: ../js/ui/status/accessibility.js:69 #: ../js/ui/status/accessibility.js:67
msgid "Screen Keyboard" msgid "Screen Keyboard"
msgstr "Klávesnice na obrazovce" msgstr "Klávesnice na obrazovce"
#: ../js/ui/status/accessibility.js:73 #: ../js/ui/status/accessibility.js:71
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "Vizuální upozornění" msgstr "Vizuální upozornění"
#: ../js/ui/status/accessibility.js:76 #: ../js/ui/status/accessibility.js:74
msgid "Sticky Keys" msgid "Sticky Keys"
msgstr "Lepící klávesy" msgstr "Lepící klávesy"
#: ../js/ui/status/accessibility.js:79 #: ../js/ui/status/accessibility.js:77
msgid "Slow Keys" msgid "Slow Keys"
msgstr "Pomalé klávesy" msgstr "Pomalé klávesy"
#: ../js/ui/status/accessibility.js:82 #: ../js/ui/status/accessibility.js:80
msgid "Bounce Keys" msgid "Bounce Keys"
msgstr "Vícenásobné stisky kláves" msgstr "Vícenásobné stisky kláves"
#: ../js/ui/status/accessibility.js:85 #: ../js/ui/status/accessibility.js:83
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Myš klávesnicí" msgstr "Myš klávesnicí"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:142
msgid "High Contrast" msgid "High Contrast"
msgstr "Vysoký kontrast" msgstr "Vysoký kontrast"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:191
msgid "Large Text" msgid "Large Text"
msgstr "Styl velkého textu" msgstr "Styl velkého textu"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:133 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1085 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Vypnout" msgstr "Vypnout"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Nastavení Bluetooth" msgstr "Nastavení Bluetooth"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
msgstr[0] "%d připojené zařízení" msgstr[0] "%d připojené zařízení"
msgstr[1] "%d připojená zařízení" msgstr[1] "%d připojená zařízení"
msgstr[2] "%d připojených zařízení" msgstr[2] "%d připojených zařízení"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Požadavek na autorizaci od %s" msgstr "Požadavek na autorizaci od %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Zařízení %s se chce spárovat s tímto počítačem" msgstr "Zařízení %s se chce spárovat s tímto počítačem"
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "Povolit" msgstr "Povolit"
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "Zamítnout" msgstr "Zamítnout"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Zařízení %s požaduje přístup ke službě „%s“" msgstr "Zařízení %s požaduje přístup ke službě „%s“"
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "Vždy udělovat přístup" msgstr "Vždy udělovat přístup"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Udělit pouze tentokrát" msgstr "Udělit pouze tentokrát"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "Odmítnout" msgstr "Odmítnout"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Potvrzení spárování pro %s" msgstr "Potvrzení spárování pro %s"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Ověřte prosím, zda klíč „%06d“ odpovídá tomu na zařízení." msgstr "Ověřte prosím, zda klíč „%06d“ odpovídá tomu na zařízení."
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "Souhlasí" msgstr "Souhlasí"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "Nesouhlasí" msgstr "Nesouhlasí"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Požadavek na spárování pro %s" msgstr "Požadavek na spárování pro %s"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Zadejte prosím PIN, který je uveden na zařízení." msgstr "Zadejte prosím PIN, který je uveden na zařízení."
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "Budiž" msgstr "Budiž"
@ -1399,99 +1365,99 @@ msgstr "Budiž"
msgid "Brightness" msgid "Brightness"
msgstr "Jas" msgstr "Jas"
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<neznámé>" msgstr "<neznámé>"
#: ../js/ui/status/network.js:223 ../js/ui/status/network.js:380 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Vypnuto" msgstr "Vypnuto"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:386 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "nespravováno" msgstr "nespravováno"
#: ../js/ui/status/network.js:388 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "odpojování…" msgstr "odpojování…"
#: ../js/ui/status/network.js:394 ../js/ui/status/network.js:1160 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "připojování…" msgstr "připojování…"
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:397 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "je vyžadováno ověření" msgstr "je vyžadováno ověření"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:405 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "nedostupný firmware" msgstr "nedostupný firmware"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:409 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "nedostupné" msgstr "nedostupné"
#: ../js/ui/status/network.js:411 ../js/ui/status/network.js:1165 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "připojení selhalo" msgstr "připojení selhalo"
#: ../js/ui/status/network.js:427 ../js/ui/status/network.js:513 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Nastavení mobilní širokopásmové sítě" msgstr "Nastavení mobilní širokopásmové sítě"
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Hardware zakázán" msgstr "Hardware zakázán"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Sítě WiFi" msgstr "Sítě WiFi"
#: ../js/ui/status/network.js:698 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Vyberte síť" msgstr "Vyberte síť"
#: ../js/ui/status/network.js:722 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Žádné sítě" msgstr "Žádné sítě"
#: ../js/ui/status/network.js:991 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Vybrat síť" msgstr "Vybrat síť"
#: ../js/ui/status/network.js:997 #: ../js/ui/status/network.js:1011
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Nastavení WiFi" msgstr "Nastavení WiFi"
#: ../js/ui/status/network.js:1085 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Zapnout" msgstr "Zapnout"
#: ../js/ui/status/network.js:1108 #: ../js/ui/status/network.js:1122
msgid "Not Connected" msgid "Not Connected"
msgstr "Nepřipojeno" msgstr "Nepřipojeno"
#: ../js/ui/status/network.js:1228 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1368 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Network Manager" msgstr "Network Manager"
#: ../js/ui/status/network.js:1407 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Připojení selhalo" msgstr "Připojení selhalo"
#: ../js/ui/status/network.js:1408 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivace síťového připojení selhala" msgstr "Aktivace síťového připojení selhala"
@ -1512,12 +1478,10 @@ msgid "Estimating…"
msgstr "Odhaduje se…" msgstr "Odhaduje se…"
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, javascript-format
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "Zbývá %d%02d (%d%%)" msgstr "Zbývá %d%02d (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, javascript-format
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d do nabití (%d%%)" msgstr "%d%02d do nabití (%d%%)"
@ -1533,23 +1497,23 @@ msgstr "Zapnuto"
msgid "Network Settings" msgid "Network Settings"
msgstr "Nastavení sítě" msgstr "Nastavení sítě"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Přepnout uživatele" msgstr "Přepnout uživatele"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Odhlásit se" msgstr "Odhlásit se"
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Zámek otočení" msgstr "Zámek otočení"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Uspat do paměti" msgstr "Uspat do paměti"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Vypnout" msgstr "Vypnout"
@ -1582,7 +1546,6 @@ msgid "Search"
msgstr "Hledat" msgstr "Hledat"
#: ../js/ui/wanda.js:77 #: ../js/ui/wanda.js:77
#, javascript-format
msgid "" msgid ""
"Sorry, no wisdom for you today:\n" "Sorry, no wisdom for you today:\n"
"%s" "%s"
@ -1591,12 +1554,10 @@ msgstr ""
"%s" "%s"
#: ../js/ui/wanda.js:81 #: ../js/ui/wanda.js:81
#, javascript-format
msgid "%s the Oracle says" msgid "%s the Oracle says"
msgstr "%s říká Prorok" msgstr "%s říká Prorok"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "Připraveno „%s“" msgstr "Připraveno „%s“"
@ -1616,7 +1577,6 @@ msgid "Keep Changes"
msgstr "Zachovat" msgstr "Zachovat"
#: ../js/ui/windowManager.js:97 #: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Nastavení se obnoví na původní za %d sekundu" msgstr[0] "Nastavení se obnoví na původní za %d sekundu"

357
po/de.po
View File

@ -20,16 +20,16 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-11-03 00:53+0000\n" "POT-Creation-Date: 2014-01-01 09:10+0000\n"
"PO-Revision-Date: 2013-10-12 23:37+0100\n" "PO-Revision-Date: 2014-01-01 17:07+0100\n"
"Last-Translator: Benjamin Steinwender <b@stbe.at>\n" "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de_DE\n" "Language: de_DE\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.7\n" "X-Generator: Poedit 1.5.4\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@ -65,7 +65,6 @@ msgid "Window management and application launching"
msgstr "Fenster verwalten und Anwendungen starten" msgstr "Fenster verwalten und Anwendungen starten"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences" msgid "GNOME Shell Extension Preferences"
msgstr "Einstellungen für Erweiterungen der GNOME-Shell" msgstr "Einstellungen für Erweiterungen der GNOME-Shell"
@ -287,29 +286,20 @@ msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt." "Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt."
#: ../js/extensionPrefs/main.js:127 #: ../js/extensionPrefs/main.js:189
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "Erweiterung"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Wählen Sie oben eine Erweiterung aus, die Sie konfigurieren wollen." msgstr "Wählen Sie oben eine Erweiterung aus, die Sie konfigurieren wollen."
#: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:357 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:726 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Weiter" msgstr "Nächstes"
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
@ -321,25 +311,25 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Anmelden" msgstr "Anmelden"
#: ../js/gdm/loginDialog.js:272 #: ../js/gdm/loginDialog.js:294
msgid "Choose Session" msgid "Choose Session"
msgstr "Sitzung wählen" msgstr "Sitzung wählen"
#: ../js/gdm/loginDialog.js:432 #: ../js/gdm/loginDialog.js:454
msgid "Not listed?" msgid "Not listed?"
msgstr "Nicht aufgeführt?" msgstr "Nicht aufgeführt?"
#: ../js/gdm/loginDialog.js:600 #: ../js/gdm/loginDialog.js:622
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(z.B. Benutzer oder %s)" msgstr "(z.B. Benutzer oder %s)"
#: ../js/gdm/loginDialog.js:605 ../js/ui/components/networkAgent.js:259 #: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277 #: ../js/ui/components/networkAgent.js:277
msgid "Username: " msgid "Username: "
msgstr "Benutzername:" msgstr "Benutzername:"
#: ../js/gdm/loginDialog.js:869 #: ../js/gdm/loginDialog.js:891
msgid "Login Window" msgid "Login Window"
msgstr "Anmeldefenster" msgstr "Anmeldefenster"
@ -368,23 +358,23 @@ msgstr "Ausführung von »%s« ist gescheitert:"
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Häufig genutzte Anwendungen werden hier erscheinen" msgstr "Häufig genutzte Anwendungen werden hier erscheinen"
#: ../js/ui/appDisplay.js:715 #: ../js/ui/appDisplay.js:712
msgid "Frequent" msgid "Frequent"
msgstr "Häufig" msgstr "Häufig"
#: ../js/ui/appDisplay.js:722 #: ../js/ui/appDisplay.js:719
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: ../js/ui/appDisplay.js:1526 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Neues Fenster" msgstr "Neues Fenster"
#: ../js/ui/appDisplay.js:1529 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen" msgstr "Aus Favoriten entfernen"
#: ../js/ui/appDisplay.js:1530 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen" msgstr "Zu Favoriten hinzufügen"
@ -422,14 +412,13 @@ msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
# %k ist für das 24h-Format
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:77 #: ../js/ui/calendar.js:77
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%k%M" msgstr "%l%M%p"
#. Translators: Calendar grid abbreviation for Sunday. #. Translators: Calendar grid abbreviation for Sunday.
#. * #. *
@ -524,49 +513,48 @@ msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Sa" msgstr "Sa"
# Das passt so. Dieser Text wird nie dem Benutzer gezeigt, sondern hat eine andere Bedeutung. #: ../js/ui/calendar.js:389
#: ../js/ui/calendar.js:391
msgid "calendar:MY" msgid "calendar:MY"
msgstr "calendar:MY" msgstr "calendar:MY"
#: ../js/ui/calendar.js:449 #: ../js/ui/calendar.js:447
msgid "Previous month" msgid "Previous month"
msgstr "Vorheriger Monat" msgstr "Vorheriger Monat"
#: ../js/ui/calendar.js:459 #: ../js/ui/calendar.js:457
msgid "Next month" msgid "Next month"
msgstr "Nächster Monat" msgstr "Nächster Monat"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:755 #: ../js/ui/calendar.js:753
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Nichts geplant" msgstr "Nichts geplant"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:773 #: ../js/ui/calendar.js:771
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d. %B" msgstr "%A, %d. %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:776 #: ../js/ui/calendar.js:774
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%a, %d. %B %Y" msgstr "%a, %d. %B %Y"
#: ../js/ui/calendar.js:787 #: ../js/ui/calendar.js:785
msgid "Today" msgid "Today"
msgstr "Heute" msgstr "Heute"
#: ../js/ui/calendar.js:791 #: ../js/ui/calendar.js:789
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Morgen" msgstr "Morgen"
#: ../js/ui/calendar.js:802 #: ../js/ui/calendar.js:800
msgid "This week" msgid "This week"
msgstr "Diese Woche" msgstr "Diese Woche"
#: ../js/ui/calendar.js:810 #: ../js/ui/calendar.js:808
msgid "Next week" msgid "Next week"
msgstr "Nächste Woche" msgstr "Nächste Woche"
@ -578,16 +566,16 @@ msgstr "Externes Laufwerk verbunden"
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Externes Laufwerk getrennt" msgstr "Externes Laufwerk getrennt"
#: ../js/ui/components/autorunManager.js:296 #: ../js/ui/components/autorunManager.js:294
msgid "Removable Devices" msgid "Removable Devices"
msgstr "Wechseldatenträger" msgstr "Wechseldatenträger"
#: ../js/ui/components/autorunManager.js:596 #: ../js/ui/components/autorunManager.js:594
#, javascript-format #, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Öffnen mit %s" msgstr "Öffnen mit %s"
#: ../js/ui/components/autorunManager.js:622 #: ../js/ui/components/autorunManager.js:620
msgid "Eject" msgid "Eject"
msgstr "Auswerfen" msgstr "Auswerfen"
@ -600,7 +588,7 @@ msgid "Type again:"
msgstr "Erneut eingeben:" msgstr "Erneut eingeben:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:295 ../js/ui/status/network.js:729 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Verbinden" msgstr "Verbinden"
@ -710,11 +698,11 @@ msgstr "Dateiübertragung"
msgid "Chat" msgid "Chat"
msgstr "Chat" msgstr "Chat"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Ton an" msgstr "Ton an"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Stumm" msgstr "Stumm"
@ -761,32 +749,32 @@ msgid "%s is inviting you to join %s"
msgstr "%s lädt Sie ein, %s beizutreten" msgstr "%s lädt Sie ein, %s beizutreten"
#: ../js/ui/components/telepathyClient.js:1098 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1167 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1224 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Ablehnen" msgstr "Ablehnen"
#: ../js/ui/components/telepathyClient.js:1104 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1173 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1229 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Annehmen" msgstr "Annehmen"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1123 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Video-Anruf von %s" msgstr "Video-Anruf von %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1126 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Anruf von %s" msgstr "Anruf von %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Antworten" msgstr "Antworten"
@ -795,113 +783,113 @@ msgstr "Antworten"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1161 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s sendet Ihnen %s" msgstr "%s sendet Ihnen %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1190 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s bittet um das Recht, Ihre Online-Verfügbarkeit sehen zu dürfen" msgstr "%s bittet um das Recht, Ihre Online-Verfügbarkeit sehen zu dürfen"
#: ../js/ui/components/telepathyClient.js:1275 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Netzwerkfehler" msgstr "Netzwerkfehler"
#: ../js/ui/components/telepathyClient.js:1277 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Legitimierung fehlgeschlagen" msgstr "Legitimierung fehlgeschlagen"
#: ../js/ui/components/telepathyClient.js:1279 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Verschlüsselungsfehler" msgstr "Verschlüsselungsfehler"
#: ../js/ui/components/telepathyClient.js:1281 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Zertifikat wurde nicht bereitgestellt" msgstr "Zertifikat wurde nicht bereitgestellt"
#: ../js/ui/components/telepathyClient.js:1283 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Zertifikat nicht vertrauenswürdig" msgstr "Zertifikat nicht vertrauenswürdig"
#: ../js/ui/components/telepathyClient.js:1285 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Zertifikat abgelaufen" msgstr "Zertifikat abgelaufen"
#: ../js/ui/components/telepathyClient.js:1287 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Zertifikat nicht aktiviert" msgstr "Zertifikat nicht aktiviert"
#: ../js/ui/components/telepathyClient.js:1289 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Rechnername des Zertifikats stimmt nicht überein" msgstr "Rechnername des Zertifikats stimmt nicht überein"
#: ../js/ui/components/telepathyClient.js:1291 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Fingerabdruck des Zertifikats stimmt nicht überein" msgstr "Fingerabdruck des Zertifikats stimmt nicht überein"
#: ../js/ui/components/telepathyClient.js:1293 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Selbstsigniertes Zertifikat" msgstr "Selbstsigniertes Zertifikat"
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Der Status ist auf »Abgemeldet« gesetzt" msgstr "Der Status ist auf »Abgemeldet« gesetzt"
#: ../js/ui/components/telepathyClient.js:1297 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Verschlüsselung ist nicht verfügbar" msgstr "Verschlüsselung ist nicht verfügbar"
#: ../js/ui/components/telepathyClient.js:1299 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Zertifikat ist ungültig" msgstr "Zertifikat ist ungültig"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Verbindungsaufbau wurde verweigert" msgstr "Verbindungsaufbau wurde verweigert"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Verbindung kann nicht hergestellt werden" msgstr "Verbindung kann nicht hergestellt werden"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Verbindung wurde unterbrochen" msgstr "Verbindung wurde unterbrochen"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Dieses Konto ist bereits mit dem Server verbunden" msgstr "Dieses Konto ist bereits mit dem Server verbunden"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "" msgstr ""
"Die Verbindung wurde durch eine neue Verbindung mit der gleichen Ressource " "Die Verbindung wurde durch eine neue Verbindung mit der gleichen Ressource "
"ersetzt" "ersetzt"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Dieses Konto ist bereits auf dem Server vorhanden" msgstr "Dieses Konto ist bereits auf dem Server vorhanden"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "" msgstr ""
"Der Server ist derzeit überlastet und kann die Verbindung nicht annehmen" "Der Server ist derzeit überlastet und kann die Verbindung nicht annehmen"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Zertifikat wurde zurückgezogen" msgstr "Zertifikat wurde zurückgezogen"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Das Zertifikat verwendet einen unsicheren Chiffrier-Algorithmus oder ist " "Das Zertifikat verwendet einen unsicheren Chiffrier-Algorithmus oder ist "
"kryptografisch schwach" "kryptografisch schwach"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -910,26 +898,26 @@ msgstr ""
"überschreiten die durch die kryptografische Bibliothek gegebenen " "überschreiten die durch die kryptografische Bibliothek gegebenen "
"Beschränkungen" "Beschränkungen"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Interner Fehler" msgstr "Interner Fehler"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Verbindung zu %s fehlgeschlagen" msgstr "Verbindung zu %s fehlgeschlagen"
#: ../js/ui/components/telepathyClient.js:1336 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Konto anzeigen" msgstr "Konto anzeigen"
#: ../js/ui/components/telepathyClient.js:1368 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Unbekannter Grund" msgstr "Unbekannter Grund"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:95 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows" msgid "Windows"
msgstr "Fenster" msgstr "Fenster"
@ -961,76 +949,76 @@ msgstr "Einstellungen für Datum und Uhrzeit"
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A, %e. %B %Y" msgstr "%A, %e. %B %Y"
#: ../js/ui/endSessionDialog.js:64 #: ../js/ui/endSessionDialog.js:62
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "%s abmelden" msgstr "%s abmelden"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:63
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Abmelden" msgstr "Abmelden"
#: ../js/ui/endSessionDialog.js:67 #: ../js/ui/endSessionDialog.js:65
#, javascript-format #, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s wird automatisch in %d Sekunde abgemeldet." msgstr[0] "%s wird automatisch in %d Sekunde abgemeldet."
msgstr[1] "%s wird automatisch in %d Sekunden abgemeldet." msgstr[1] "%s wird automatisch in %d Sekunden abgemeldet."
#: ../js/ui/endSessionDialog.js:72 #: ../js/ui/endSessionDialog.js:70
#, javascript-format #, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Sie werden automatisch in %d Sekunde abgemeldet." msgstr[0] "Sie werden automatisch in %d Sekunde abgemeldet."
msgstr[1] "Sie werden automatisch in %d Sekunden abgemeldet." msgstr[1] "Sie werden automatisch in %d Sekunden abgemeldet."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:75
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Abmelden" msgstr "Abmelden"
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:81
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Ausschalten" msgstr "Ausschalten"
#: ../js/ui/endSessionDialog.js:85 #: ../js/ui/endSessionDialog.js:83
#, javascript-format #, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Das System wird automatisch in %d Sekunde ausgeschaltet." msgstr[0] "Das System wird automatisch in %d Sekunde ausgeschaltet."
msgstr[1] "Das System wird automatisch in %d Sekunden ausgeschaltet." msgstr[1] "Das System wird automatisch in %d Sekunden ausgeschaltet."
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:106 #: ../js/ui/endSessionDialog.js:88 ../js/ui/endSessionDialog.js:104
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Neu starten" msgstr "Neu starten"
#: ../js/ui/endSessionDialog.js:92 #: ../js/ui/endSessionDialog.js:90
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Ausschalten" msgstr "Ausschalten"
#: ../js/ui/endSessionDialog.js:99 #: ../js/ui/endSessionDialog.js:97
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Neu starten" msgstr "Neu starten"
#: ../js/ui/endSessionDialog.js:101 #: ../js/ui/endSessionDialog.js:99
#, javascript-format #, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Das System wird automatisch in %d Sekunde neu gestartet." msgstr[0] "Das System wird automatisch in %d Sekunde neu gestartet."
msgstr[1] "Das System wird automatisch in %d Sekunden neu gestartet." msgstr[1] "Das System wird automatisch in %d Sekunden neu gestartet."
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:112
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Neu starten und Aktualisierungen installieren" msgstr "Neu starten und Aktualisierungen installieren"
#: ../js/ui/endSessionDialog.js:116 #: ../js/ui/endSessionDialog.js:114
#, javascript-format #, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
@ -1040,28 +1028,28 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
"Das System wird automatisch in %d Sekunden neu gestartet aktualisiert." "Das System wird automatisch in %d Sekunden neu gestartet aktualisiert."
#: ../js/ui/endSessionDialog.js:121 #: ../js/ui/endSessionDialog.js:119
msgctxt "button" msgctxt "button"
msgid "Restart & Install" msgid "Restart & Install"
msgstr "Neu starten und installieren" msgstr "Neu starten und installieren"
#: ../js/ui/endSessionDialog.js:275 #: ../js/ui/endSessionDialog.js:271
msgid "Some applications are busy or have unsaved work." msgid "Some applications are busy or have unsaved work."
msgstr "" msgstr ""
"Einige Anwendungen sind beschäftigt oder besitzen nicht-gespeicherte Arbeit." "Einige Anwendungen sind beschäftigt oder besitzen nicht-gespeicherte Arbeit."
#: ../js/ui/endSessionDialog.js:282 #: ../js/ui/endSessionDialog.js:277
msgid "Other users are logged in." msgid "Other users are logged in."
msgstr "Andere Benutzer sind angemeldet." msgstr "Andere Benutzer sind angemeldet."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:485 #: ../js/ui/endSessionDialog.js:479
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (Entfernt)" msgstr "%s (Entfernt)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:488 #: ../js/ui/endSessionDialog.js:482
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (Konsole)" msgstr "%s (Konsole)"
@ -1075,29 +1063,29 @@ msgstr "Installieren"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?" msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
#: ../js/ui/keyboard.js:621 ../js/ui/status/keyboard.js:335 #: ../js/ui/keyboard.js:619
msgid "Keyboard" msgid "Keyboard"
msgstr "Tastatur" msgstr "Tastatur"
#: ../js/ui/lookingGlass.js:640 #: ../js/ui/lookingGlass.js:689
msgid "No extensions installed" msgid "No extensions installed"
msgstr "Keine Erweiterungen installiert" msgstr "Keine Erweiterungen installiert"
#. Translators: argument is an extension UUID. */ #. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:694 #: ../js/ui/lookingGlass.js:743
#, javascript-format #, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s hat keine Fehler ausgegeben." msgstr "%s hat keine Fehler ausgegeben."
#: ../js/ui/lookingGlass.js:700 #: ../js/ui/lookingGlass.js:749
msgid "Hide Errors" msgid "Hide Errors"
msgstr "Fehler verbergen" msgstr "Fehler verbergen"
#: ../js/ui/lookingGlass.js:704 ../js/ui/lookingGlass.js:764 #: ../js/ui/lookingGlass.js:753 ../js/ui/lookingGlass.js:813
msgid "Show Errors" msgid "Show Errors"
msgstr "Fehler anzeigen" msgstr "Fehler anzeigen"
#: ../js/ui/lookingGlass.js:713 #: ../js/ui/lookingGlass.js:762
msgid "Enabled" msgid "Enabled"
msgstr "Aktiviert" msgstr "Aktiviert"
@ -1105,73 +1093,73 @@ msgstr "Aktiviert"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/network.js:472 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Deaktiviert" msgstr "Deaktiviert"
#: ../js/ui/lookingGlass.js:718 #: ../js/ui/lookingGlass.js:767
msgid "Error" msgid "Error"
msgstr "Fehler" msgstr "Fehler"
#: ../js/ui/lookingGlass.js:720 #: ../js/ui/lookingGlass.js:769
msgid "Out of date" msgid "Out of date"
msgstr "Veraltet" msgstr "Veraltet"
#: ../js/ui/lookingGlass.js:722 #: ../js/ui/lookingGlass.js:771
msgid "Downloading" msgid "Downloading"
msgstr "Herunterladen" msgstr "Herunterladen"
#: ../js/ui/lookingGlass.js:746 #: ../js/ui/lookingGlass.js:795
msgid "View Source" msgid "View Source"
msgstr "Quelle zeigen" msgstr "Quelle zeigen"
#: ../js/ui/lookingGlass.js:755 #: ../js/ui/lookingGlass.js:804
msgid "Web Page" msgid "Web Page"
msgstr "Webseite" msgstr "Webseite"
#: ../js/ui/messageTray.js:1310 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Öffnen" msgstr "Öffnen"
#: ../js/ui/messageTray.js:1317 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Entfernen" msgstr "Entfernen"
#: ../js/ui/messageTray.js:1618 #: ../js/ui/messageTray.js:1657
msgid "Notifications" msgid "Notifications"
msgstr "Benachrichtigungen" msgstr "Benachrichtigungen"
#: ../js/ui/messageTray.js:1625 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Nachrichten leeren" msgstr "Nachrichten leeren"
#: ../js/ui/messageTray.js:1644 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Benachrichtigungseinstellungen" msgstr "Benachrichtigungseinstellungen"
#: ../js/ui/messageTray.js:1697 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Benachrichtigungsfeldmenü" msgstr "Benachrichtigungsfeldmenü"
#: ../js/ui/messageTray.js:1913 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Keine Nachrichten" msgstr "Keine Nachrichten"
#: ../js/ui/messageTray.js:1951 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Benachrichtigungsfeld" msgstr "Benachrichtigungsfeld"
#: ../js/ui/messageTray.js:2929 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Systeminformationen" msgstr "Systeminformationen"
#: ../js/ui/notificationDaemon.js:539 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Unbekannt" msgstr "Unbekannt"
#: ../js/ui/overviewControls.js:486 ../js/ui/screenShield.js:153 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1182,7 +1170,7 @@ msgstr[1] "%d neue Nachrichten"
msgid "Undo" msgid "Undo"
msgstr "Rückgängig" msgstr "Rückgängig"
#: ../js/ui/overview.js:125 #: ../js/ui/overview.js:127
msgid "Overview" msgid "Overview"
msgstr "Übersicht" msgstr "Übersicht"
@ -1190,7 +1178,7 @@ msgstr "Übersicht"
#. in the search entry when no search is #. in the search entry when no search is
#. active; it should not exceed ~30 #. active; it should not exceed ~30
#. characters. */ #. characters. */
#: ../js/ui/overview.js:256 #: ../js/ui/overview.js:258
msgid "Type to search…" msgid "Type to search…"
msgstr "Suchbegriff eingeben …" msgstr "Suchbegriff eingeben …"
@ -1252,11 +1240,11 @@ msgstr "Sperrung fehlgeschlagen"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert" msgstr "Sperrung wurde von einer Anwendung blockiert"
#: ../js/ui/search.js:592 #: ../js/ui/searchDisplay.js:448
msgid "Searching…" msgid "Searching…"
msgstr "Suche läuft …" msgstr "Suche läuft …"
#: ../js/ui/search.js:635 #: ../js/ui/searchDisplay.js:492
msgid "No results." msgid "No results."
msgstr "Keine Ergebnisse." msgstr "Keine Ergebnisse."
@ -1335,7 +1323,7 @@ msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1083 ../js/ui/status/rfkill.js:48 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Ausschalten" msgstr "Ausschalten"
@ -1421,20 +1409,16 @@ msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
msgid "OK" msgid "OK"
msgstr "OK" msgstr "OK"
#: ../js/ui/status/brightness.js:44 #: ../js/ui/status/brightness.js:42
msgid "Brightness" msgid "Brightness"
msgstr "Helligkeit" msgstr "Helligkeit"
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr ""
#: ../js/ui/status/network.js:71 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<Unbekannt>" msgstr "<Unbekannt>"
#: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Aus" msgstr "Aus"
@ -1448,12 +1432,12 @@ msgstr "nicht verwaltet"
msgid "disconnecting..." msgid "disconnecting..."
msgstr "Verbindungsabbau …" msgstr "Verbindungsabbau …"
#: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1158 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "Verbindungsaufbau …" msgstr "Verbindungsaufbau …"
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1161 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "Legitimierung erforderlich" msgstr "Legitimierung erforderlich"
@ -1469,7 +1453,7 @@ msgstr "Firmware fehlt"
msgid "unavailable" msgid "unavailable"
msgstr "nicht verfügbar" msgstr "nicht verfügbar"
#: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "Verbindung gescheitert" msgstr "Verbindung gescheitert"
@ -1477,93 +1461,89 @@ msgstr "Verbindung gescheitert"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Einstellungen der mobilen Breitbandverbindung" msgstr "Einstellungen der mobilen Breitbandverbindung"
#: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1102 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Hardware deaktiviert" msgstr "Hardware deaktiviert"
#: ../js/ui/status/network.js:694 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Drahtlosnetzwerke" msgstr "Drahtlosnetzwerke"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Wählen Sie ein Netzwerk" msgstr "Wählen Sie ein Netzwerk"
#: ../js/ui/status/network.js:720 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Keine Netzwerke" msgstr "Keine Netzwerke"
#: ../js/ui/status/network.js:989 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Wählen Sie ein Netzwerk aus" msgstr "Wählen Sie ein Netzwerk aus"
#: ../js/ui/status/network.js:995 #: ../js/ui/status/network.js:1011
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Drahtlos-Einstellungen" msgstr "Drahtlos-Einstellungen"
#: ../js/ui/status/network.js:1083 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Einschalten" msgstr "Einschalten"
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1122
msgid "Not Connected" msgid "Not Connected"
msgstr "Nicht verbunden" msgstr "Nicht verbunden"
#: ../js/ui/status/network.js:1226 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1366 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Netzwerk-Verwaltung" msgstr "Netzwerk-Verwaltung"
#: ../js/ui/status/network.js:1405 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Verbindung gescheitert" msgstr "Verbindung gescheitert"
#: ../js/ui/status/network.js:1406 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert" msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
#: ../js/ui/status/power.js:49 #: ../js/ui/status/power.js:46
msgid "Battery"
msgstr "Akku"
#: ../js/ui/status/power.js:47
msgid "Power Settings" msgid "Power Settings"
msgstr "Energieeinstellungen" msgstr "Energieeinstellungen"
#: ../js/ui/status/power.js:65 #: ../js/ui/status/power.js:63
msgid "Fully Charged" msgid "Fully Charged"
msgstr "Vollständig geladen" msgstr "Vollständig geladen"
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 #: ../js/ui/status/power.js:69 ../js/ui/status/power.js:86
msgid "Estimating…" msgid "Estimating…"
msgstr "Schätzung …" msgstr "Schätzung …"
#: ../js/ui/status/power.js:86 #: ../js/ui/status/power.js:77
#, javascript-format #, javascript-format
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d verbleibend (%d%%)" msgstr "%d%02d verbleibend (%d%%)"
#: ../js/ui/status/power.js:91 #: ../js/ui/status/power.js:82
#, javascript-format #, javascript-format
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d bis geladen (%d%%)" msgstr "%d%02d bis geladen (%d%%)"
#: ../js/ui/status/power.js:119 #: ../js/ui/status/rfkill.js:43
msgid "UPS"
msgstr ""
#: ../js/ui/status/power.js:121
msgid "Battery"
msgstr "Akku"
#: ../js/ui/status/rfkill.js:45
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Flugzeugmodus" msgstr "Flugzeugmodus"
#: ../js/ui/status/rfkill.js:47 #: ../js/ui/status/rfkill.js:45
msgid "On" msgid "On"
msgstr "An" msgstr "An"
#: ../js/ui/status/rfkill.js:51 #: ../js/ui/status/rfkill.js:49
msgid "Network Settings" msgid "Network Settings"
msgstr "Netzwerkeinstellungen" msgstr "Netzwerkeinstellungen"
@ -1607,14 +1587,28 @@ msgstr "Als anderer Benutzer anmelden"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Fenster entsperren" msgstr "Fenster entsperren"
#: ../js/ui/viewSelector.js:99 #: ../js/ui/viewSelector.js:104
msgid "Applications" msgid "Applications"
msgstr "Anwendungen" msgstr "Anwendungen"
#: ../js/ui/viewSelector.js:103 #: ../js/ui/viewSelector.js:108
msgid "Search" msgid "Search"
msgstr "Suchen" msgstr "Suchen"
#: ../js/ui/wanda.js:77
#, javascript-format
msgid ""
"Sorry, no wisdom for you today:\n"
"%s"
msgstr ""
"Leider steht für heute keine Weisheit zur Verfügung:\n"
"%s"
#: ../js/ui/wanda.js:81
#, javascript-format
msgid "%s the Oracle says"
msgstr "%s, das Orakel, sagt"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format #, javascript-format
msgid "'%s' is ready" msgid "'%s' is ready"
@ -1669,24 +1663,24 @@ msgstr[1] "%u Eingänge"
msgid "System Sounds" msgid "System Sounds"
msgstr "Systemklänge" msgstr "Systemklänge"
#: ../src/main.c:351 #: ../src/main.c:353
msgid "Print version" msgid "Print version"
msgstr "Version ausgeben" msgstr "Version ausgeben"
#: ../src/main.c:357 #: ../src/main.c:359
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Der durch GDM im Anmeldefenster verwendete Modus" msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
#: ../src/main.c:363 #: ../src/main.c:365
msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "" msgstr ""
"Einen spezifischen Modus nutzen, wie z.B. »gdm« für den Anmeldebildschirm" "Einen spezifischen Modus nutzen, wie z.B. »gdm« für den Anmeldebildschirm"
#: ../src/main.c:369 #: ../src/main.c:371
msgid "List possible modes" msgid "List possible modes"
msgstr "Die möglichen Modi auflisten" msgstr "Die möglichen Modi auflisten"
#: ../src/shell-app.c:639 #: ../src/shell-app.c:644
#, c-format #, c-format
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "»%s« konnte nicht gestartet werden" msgstr "»%s« konnte nicht gestartet werden"
@ -1703,12 +1697,9 @@ msgstr "Das Passwort darf nicht leer sein"
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen" msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen"
#~ msgid "" #~ msgid "There was an error loading the preferences dialog for %s:"
#~ "Sorry, no wisdom for you today:\n"
#~ "%s"
#~ msgstr "" #~ msgstr ""
#~ "Leider steht für heute keine Weisheit zur Verfügung:\n" #~ "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:"
#~ "%s"
#~ msgid "%s the Oracle says" #~ msgid "Extension"
#~ msgstr "%s, das Orakel, sagt" #~ msgstr "Erweiterung"

433
po/el.po

File diff suppressed because it is too large Load Diff

452
po/he.po

File diff suppressed because it is too large Load Diff

348
po/id.po
View File

@ -7,11 +7,11 @@
# Wibiharto <wibinem@yahoo.com>, 2011. # Wibiharto <wibinem@yahoo.com>, 2011.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell gnome-3-10\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-10-10 21:27+0000\n" "POT-Creation-Date: 2013-12-29 23:06+0000\n"
"PO-Revision-Date: 2013-10-11 10:13+0700\n" "PO-Revision-Date: 2013-12-30 13:40+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n" "Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian <gnome@i15n.org>\n" "Language-Team: Indonesian <gnome@i15n.org>\n"
"Language: id\n" "Language: id\n"
@ -278,23 +278,23 @@ msgstr ""
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas." msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:728 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Batal" msgstr "Batal"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Selanjutnya" msgstr "Selanjutnya"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Buka Kunci" msgstr "Buka Kunci"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Masuk" msgstr "Masuk"
@ -308,6 +308,7 @@ msgid "Not listed?"
msgstr "Tak masuk daftar?" msgstr "Tak masuk daftar?"
#: ../js/gdm/loginDialog.js:622 #: ../js/gdm/loginDialog.js:622
#, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(cth., pengguna dari %s)" msgstr "(cth., pengguna dari %s)"
@ -320,11 +321,11 @@ msgstr "Nama pengguna: "
msgid "Login Window" msgid "Login Window"
msgstr "Jendela Log Masuk" msgstr "Jendela Log Masuk"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "Galat otentikasi" msgstr "Galat otentikasi"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)" msgstr "(atau gesekkan jari)"
@ -337,6 +338,7 @@ msgid "Could not parse command:"
msgstr "Tidak dapat mengurai perintah:" msgstr "Tidak dapat mengurai perintah:"
#: ../js/misc/util.js:156 #: ../js/misc/util.js:156
#, javascript-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Eksekusi '%s' gagal:" msgstr "Eksekusi '%s' gagal:"
@ -352,28 +354,30 @@ msgstr "Sering"
msgid "All" msgid "All"
msgstr "Semua" msgstr "Semua"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Jendela Baru" msgstr "Jendela Baru"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Hapus dari Favorit" msgstr "Hapus dari Favorit"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Tambah ke Favorit" msgstr "Tambah ke Favorit"
#: ../js/ui/appFavorites.js:87 #: ../js/ui/appFavorites.js:87
#, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s telah ditambahkan ke favorit Anda." msgstr "%s telah ditambahkan ke favorit Anda."
#: ../js/ui/appFavorites.js:121 #: ../js/ui/appFavorites.js:121
#, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s telah dihapus dari favorit Anda." msgstr "%s telah dihapus dari favorit Anda."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Pengaturan" msgstr "Pengaturan"
@ -555,6 +559,7 @@ msgid "Removable Devices"
msgstr "Perangkat Yang Dapat Dicabut" msgstr "Perangkat Yang Dapat Dicabut"
#: ../js/ui/components/autorunManager.js:594 #: ../js/ui/components/autorunManager.js:594
#, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Buka dengan %s" msgstr "Buka dengan %s"
@ -570,8 +575,8 @@ msgstr "Sandi:"
msgid "Type again:" msgid "Type again:"
msgstr "Ketik lagi:" msgstr "Ketik lagi:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:133 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:296 ../js/ui/status/network.js:731 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Sambung" msgstr "Sambung"
@ -604,6 +609,7 @@ msgid "Authentication required by wireless network"
msgstr "Otentikasi dibutuhkan oleh jaringan nirkabel" msgstr "Otentikasi dibutuhkan oleh jaringan nirkabel"
#: ../js/ui/components/networkAgent.js:309 #: ../js/ui/components/networkAgent.js:309
#, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"'%s'." "'%s'."
@ -640,6 +646,7 @@ msgid "Mobile broadband network password"
msgstr "Sandi jaringan data seluler" msgstr "Sandi jaringan data seluler"
#: ../js/ui/components/networkAgent.js:336 #: ../js/ui/components/networkAgent.js:336
#, javascript-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "Sebuah kata sandi dibutuhkan untuk menyambung ke '%s'." msgstr "Sebuah kata sandi dibutuhkan untuk menyambung ke '%s'."
@ -663,94 +670,99 @@ msgstr "Otentikasi"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Maaf, tidak berhasil. Silakan coba lagi." msgstr "Maaf, tidak berhasil. Silakan coba lagi."
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "Undangan" msgstr "Undangan"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "Panggil" msgstr "Panggil"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "Transfer Berkas" msgstr "Transfer Berkas"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "Obrolan" msgstr "Obrolan"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Bersuara" msgstr "Bersuara"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Bisu" msgstr "Bisu"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Kemarin</b>, <b>%H:%M</b>" msgstr "<b>Kemarin</b>, <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, <b>%H:%M</b>" msgstr "<b>%A</b>, <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%d</b> <b>%B</b>, <b>%H:%M</b>" msgstr "<b>%d</b> <b>%B</b>, <b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> " msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> "
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s sekarang dikenal sebagai %s" msgstr "%s sekarang dikenal sebagai %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Undangan ke %s" msgstr "Undangan ke %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s mengundang Anda untuk bergabung dengan %s" msgstr "%s mengundang Anda untuk bergabung dengan %s"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Tolak" msgstr "Tolak"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Terima" msgstr "Terima"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Panggilan video dari %s" msgstr "Panggilan video dari %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Panggilan dari %s" msgstr "Panggilan dari %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Jawab" msgstr "Jawab"
@ -759,109 +771,111 @@ msgstr "Jawab"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s sedang mengirimi Anda %s" msgstr "%s sedang mengirimi Anda %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s ingin minta ijin melihat Anda ketika Anda daring" msgstr "%s ingin minta ijin melihat Anda ketika Anda daring"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Galat jaringan" msgstr "Galat jaringan"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Otentikasi gagal" msgstr "Otentikasi gagal"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Galat enkripsi" msgstr "Galat enkripsi"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Sertifikat tidak disediakan" msgstr "Sertifikat tidak disediakan"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Sertifikat tidak dipercaya" msgstr "Sertifikat tidak dipercaya"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Sertifikat kadaluarsa" msgstr "Sertifikat kadaluarsa"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Sertifikat tidak diaktifkan" msgstr "Sertifikat tidak diaktifkan"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Nama host sertifikat tidak cocok" msgstr "Nama host sertifikat tidak cocok"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Sidik jari sertifikat tidak cocok" msgstr "Sidik jari sertifikat tidak cocok"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Sertifikat ditandatangani sendiri" msgstr "Sertifikat ditandatangani sendiri"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Status diatur ke luring" msgstr "Status diatur ke luring"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Enkripsi tidak tersedia" msgstr "Enkripsi tidak tersedia"
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Sertifikat tidak valid" msgstr "Sertifikat tidak valid"
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Koneksi telah ditolak" msgstr "Koneksi telah ditolak"
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Koneksi tak dapat dijalin" msgstr "Koneksi tak dapat dijalin"
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Koneksi telah terputus" msgstr "Koneksi telah terputus"
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Akun ini telah tersambung pada server" msgstr "Akun ini telah tersambung pada server"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "" msgstr ""
"Koneksi telah digantikan oleh koneksi baru memakai sumberdaya yang sama" "Koneksi telah digantikan oleh koneksi baru memakai sumberdaya yang sama"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Akun ini sudah ada di server" msgstr "Akun ini sudah ada di server"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Server kini terlalu sibuk untuk menangani koneksi" msgstr "Server kini terlalu sibuk untuk menangani koneksi"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Sertifikat telah dicabut" msgstr "Sertifikat telah dicabut"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Sertifikat memakai algorima cipher yang tak aman atau lemah secara " "Sertifikat memakai algorima cipher yang tak aman atau lemah secara "
"kriptografi" "kriptografi"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -869,21 +883,22 @@ msgstr ""
"Panjang sertifikat server, atau kedalaman rantai sertifikat server, " "Panjang sertifikat server, atau kedalaman rantai sertifikat server, "
"melampaui batas yang diberlakukan oleh pustaka kriptografi" "melampaui batas yang diberlakukan oleh pustaka kriptografi"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Galat internal" msgstr "Galat internal"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Tak bisa menyambung ke %s" msgstr "Tak bisa menyambung ke %s"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Tilik akun" msgstr "Tilik akun"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Alasan yang tidak diketahui" msgstr "Alasan yang tidak diketahui"
@ -919,6 +934,7 @@ msgid "%A %B %e, %Y"
msgstr "%A, %e %B %Y" msgstr "%A, %e %B %Y"
#: ../js/ui/endSessionDialog.js:62 #: ../js/ui/endSessionDialog.js:62
#, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Keluar %s" msgstr "Keluar %s"
@ -929,11 +945,13 @@ msgid "Log Out"
msgstr "Keluar" msgstr "Keluar"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:65
#, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s akan log keluar otomatis dalam %d detik.\t\t" msgstr[0] "%s akan log keluar otomatis dalam %d detik.\t\t"
#: ../js/ui/endSessionDialog.js:70 #: ../js/ui/endSessionDialog.js:70
#, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Anda akan log keluar otomatis dalam %d detik." msgstr[0] "Anda akan log keluar otomatis dalam %d detik."
@ -949,6 +967,7 @@ msgid "Power Off"
msgstr "Matikan" msgstr "Matikan"
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:83
#, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Sistem ini akan otomatis dimatikan dalam %d detik." msgstr[0] "Sistem ini akan otomatis dimatikan dalam %d detik."
@ -969,6 +988,7 @@ msgid "Restart"
msgstr "Nyalakan Ulang" msgstr "Nyalakan Ulang"
#: ../js/ui/endSessionDialog.js:99 #: ../js/ui/endSessionDialog.js:99
#, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Sistem ini akan otomatis dimulai ulang dalam %d detik." msgstr[0] "Sistem ini akan otomatis dimulai ulang dalam %d detik."
@ -979,6 +999,7 @@ msgid "Restart & Install Updates"
msgstr "Start Ulang & Pasang Pemutakhiran" msgstr "Start Ulang & Pasang Pemutakhiran"
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:114
#, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
"The system will automatically restart and install updates in %d seconds." "The system will automatically restart and install updates in %d seconds."
@ -1001,11 +1022,13 @@ msgstr "Pengguna lain sedang log masuk."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:479 #: ../js/ui/endSessionDialog.js:479
#, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (jarak jauh)" msgstr "%s (jarak jauh)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:482 #: ../js/ui/endSessionDialog.js:482
#, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsol)" msgstr "%s (konsol)"
@ -1014,6 +1037,7 @@ msgid "Install"
msgstr "Pasang" msgstr "Pasang"
#: ../js/ui/extensionDownloader.js:204 #: ../js/ui/extensionDownloader.js:204
#, javascript-format
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Unduh dan pasang '%s' dari extensions.gnome.org?" msgstr "Unduh dan pasang '%s' dari extensions.gnome.org?"
@ -1027,6 +1051,7 @@ msgstr "Tak ada ekstensi terpasang"
#. Translators: argument is an extension UUID. */ #. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:743 #: ../js/ui/lookingGlass.js:743
#, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s tidak menampilkan galat apa pun." msgstr "%s tidak menampilkan galat apa pun."
@ -1046,7 +1071,7 @@ msgstr "Diaktifkan"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:473 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Dinonaktifkan" msgstr "Dinonaktifkan"
@ -1071,48 +1096,49 @@ msgstr "Tilik Sumber"
msgid "Web Page" msgid "Web Page"
msgstr "Halaman Web" msgstr "Halaman Web"
#: ../js/ui/messageTray.js:1222 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Buka" msgstr "Buka"
#: ../js/ui/messageTray.js:1229 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Hapus" msgstr "Hapus"
#: ../js/ui/messageTray.js:1530 #: ../js/ui/messageTray.js:1657
msgid "Notifications" msgid "Notifications"
msgstr "Pemberitahuan" msgstr "Pemberitahuan"
#: ../js/ui/messageTray.js:1537 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Bersihkan Pesan" msgstr "Bersihkan Pesan"
#: ../js/ui/messageTray.js:1564 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Pengaturan Pemberitahuan" msgstr "Pengaturan Pemberitahuan"
#: ../js/ui/messageTray.js:1617 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Menu Baki" msgstr "Menu Baki"
#: ../js/ui/messageTray.js:1833 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Tiada Pesan" msgstr "Tiada Pesan"
#: ../js/ui/messageTray.js:1871 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Baki Pesan" msgstr "Baki Pesan"
#: ../js/ui/messageTray.js:2846 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Informasi Sistem" msgstr "Informasi Sistem"
#: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Tak dikenal" msgstr "Tak dikenal"
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
msgstr[0] "%d pesan baru" msgstr[0] "%d pesan baru"
@ -1133,22 +1159,22 @@ msgstr "Gambaran"
msgid "Type to search…" msgid "Type to search…"
msgstr "Ketik untuk mencari…" msgstr "Ketik untuk mencari…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Keluar" msgstr "Keluar"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Aktivitas" msgstr "Aktivitas"
#: ../js/ui/panel.js:904 #: ../js/ui/panel.js:900
msgid "Top Bar" msgid "Top Bar"
msgstr "Bar Atas" msgstr "Bar Atas"
# Dirgita: Hayo, enaknya pake I/O atau ON/OFF?^^ # Dirgita: Hayo, enaknya pake I/O atau ON/OFF?^^
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -1162,28 +1188,29 @@ msgstr "Tutup"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d pemberitahuan baru" msgstr[0] "%d pemberitahuan baru"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Kunci" msgstr "Kunci"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME perlu mengunci layar" msgstr "GNOME perlu mengunci layar"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Tak bisa mengunci" msgstr "Tak bisa mengunci"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi" msgstr "Kunci diblokir oleh suatu aplikasi"
@ -1223,128 +1250,135 @@ msgstr "Ingat Sandi"
msgid "Accessibility" msgid "Accessibility"
msgstr "Aksesibilitas" msgstr "Aksesibilitas"
#: ../js/ui/status/accessibility.js:58 #: ../js/ui/status/accessibility.js:56
msgid "Zoom" msgid "Zoom"
msgstr "Zum" msgstr "Zum"
#: ../js/ui/status/accessibility.js:65 #: ../js/ui/status/accessibility.js:63
msgid "Screen Reader" msgid "Screen Reader"
msgstr "Pembaca Layar" msgstr "Pembaca Layar"
#: ../js/ui/status/accessibility.js:69 #: ../js/ui/status/accessibility.js:67
msgid "Screen Keyboard" msgid "Screen Keyboard"
msgstr "Papan Tik di Layar" msgstr "Papan Tik di Layar"
#: ../js/ui/status/accessibility.js:73 #: ../js/ui/status/accessibility.js:71
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "Peringatan Visual" msgstr "Peringatan Visual"
#: ../js/ui/status/accessibility.js:76 #: ../js/ui/status/accessibility.js:74
msgid "Sticky Keys" msgid "Sticky Keys"
msgstr "Tombol Lengket" msgstr "Tombol Lengket"
#: ../js/ui/status/accessibility.js:79 #: ../js/ui/status/accessibility.js:77
msgid "Slow Keys" msgid "Slow Keys"
msgstr "Tombol Lambat" msgstr "Tombol Lambat"
#: ../js/ui/status/accessibility.js:82 #: ../js/ui/status/accessibility.js:80
msgid "Bounce Keys" msgid "Bounce Keys"
msgstr "Tombol Pantul" msgstr "Tombol Pantul"
#: ../js/ui/status/accessibility.js:85 #: ../js/ui/status/accessibility.js:83
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Tombol Tetikus" msgstr "Tombol Tetikus"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:142
msgid "High Contrast" msgid "High Contrast"
msgstr "Kontras Tinggi" msgstr "Kontras Tinggi"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:191
msgid "Large Text" msgid "Large Text"
msgstr "Teks Besar" msgstr "Teks Besar"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:133 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1085 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Matikan" msgstr "Matikan"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Pengaturan Bluetooth" msgstr "Pengaturan Bluetooth"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
msgstr[0] "%d Perangkat Tersambung" msgstr[0] "%d Perangkat Tersambung"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Permintaan otorisasi dari %s" msgstr "Permintaan otorisasi dari %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Perangkat %s ingin berpasangan dengan komputer ini" msgstr "Perangkat %s ingin berpasangan dengan komputer ini"
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "Ijinkan" msgstr "Ijinkan"
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "Tolak" msgstr "Tolak"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Perangkat %s ingin mengakses layanan '%s'" msgstr "Perangkat %s ingin mengakses layanan '%s'"
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "Selalu berikan akses" msgstr "Selalu berikan akses"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Hanya untuk saat ini" msgstr "Hanya untuk saat ini"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "Tolak" msgstr "Tolak"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Konfirmasi berpasangan untuk %s" msgstr "Konfirmasi berpasangan untuk %s"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "" msgstr ""
"Harap konfirmasi apakah Passkey '%06d' sesuai dengan salah satu perangkat." "Harap konfirmasi apakah Passkey '%06d' sesuai dengan salah satu perangkat."
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "Cocok" msgstr "Cocok"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "Tidak cocok" msgstr "Tidak cocok"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Permintaan berpasangan untuk %s" msgstr "Permintaan berpasangan untuk %s"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Ketikkan PIN yang disebutkan oleh perangkat." msgstr "Ketikkan PIN yang disebutkan oleh perangkat."
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "Oke" msgstr "Oke"
@ -1352,99 +1386,99 @@ msgstr "Oke"
msgid "Brightness" msgid "Brightness"
msgstr "Kecerahan" msgstr "Kecerahan"
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<tak dikenal>" msgstr "<tak dikenal>"
#: ../js/ui/status/network.js:223 ../js/ui/status/network.js:380 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Mati" msgstr "Mati"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:386 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "tak dikelola" msgstr "tak dikelola"
#: ../js/ui/status/network.js:388 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "memutus..." msgstr "memutus..."
#: ../js/ui/status/network.js:394 ../js/ui/status/network.js:1160 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "menghubungi..." msgstr "menghubungi..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:397 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "diperlukan otentikasi" msgstr "diperlukan otentikasi"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:405 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "firmware hilang" msgstr "firmware hilang"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:409 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "tidak tersedia" msgstr "tidak tersedia"
#: ../js/ui/status/network.js:411 ../js/ui/status/network.js:1165 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "koneksi gagal" msgstr "koneksi gagal"
#: ../js/ui/status/network.js:427 ../js/ui/status/network.js:513 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Pengaturan Data Seluler" msgstr "Pengaturan Data Seluler"
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Perangkat Keras Dinonaktifkan" msgstr "Perangkat Keras Dinonaktifkan"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Jaringan Wi-Fi" msgstr "Jaringan Wi-Fi"
#: ../js/ui/status/network.js:698 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Pilih jaringan" msgstr "Pilih jaringan"
#: ../js/ui/status/network.js:722 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Tiada Jaringan" msgstr "Tiada Jaringan"
#: ../js/ui/status/network.js:991 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Pilih Jaringan" msgstr "Pilih Jaringan"
#: ../js/ui/status/network.js:997 #: ../js/ui/status/network.js:1011
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Pengaturan Wi-Fi" msgstr "Pengaturan Wi-Fi"
#: ../js/ui/status/network.js:1085 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Nyalakan" msgstr "Nyalakan"
#: ../js/ui/status/network.js:1108 #: ../js/ui/status/network.js:1122
msgid "Not Connected" msgid "Not Connected"
msgstr "Tak Tersambung" msgstr "Tak Tersambung"
#: ../js/ui/status/network.js:1228 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1368 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Manajer Jaringan" msgstr "Manajer Jaringan"
#: ../js/ui/status/network.js:1407 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Koneksi gagal" msgstr "Koneksi gagal"
#: ../js/ui/status/network.js:1408 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal" msgstr "Aktivasi koneksi jaringan gagal"
@ -1465,12 +1499,14 @@ msgid "Estimating…"
msgstr "Memperkirakan…" msgstr "Memperkirakan…"
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, javascript-format
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "%d:%02d Tersisa (%d%%)" msgstr "%d%02d Tersisa (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, javascript-format
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d:%02d Sampai Penuh (%d%%)" msgstr "%d%02d Sampai Penuh (%d%%)"
#: ../js/ui/status/rfkill.js:43 #: ../js/ui/status/rfkill.js:43
msgid "Airplane Mode" msgid "Airplane Mode"
@ -1484,23 +1520,23 @@ msgstr "Nyala"
msgid "Network Settings" msgid "Network Settings"
msgstr "Pengaturan Jaringan" msgstr "Pengaturan Jaringan"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Ganti Pengguna" msgstr "Ganti Pengguna"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Keluar" msgstr "Keluar"
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Kunci Orientasi" msgstr "Kunci Orientasi"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Suspensi" msgstr "Suspensi"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Matikan" msgstr "Matikan"
@ -1533,6 +1569,7 @@ msgid "Search"
msgstr "Cari" msgstr "Cari"
#: ../js/ui/wanda.js:77 #: ../js/ui/wanda.js:77
#, javascript-format
msgid "" msgid ""
"Sorry, no wisdom for you today:\n" "Sorry, no wisdom for you today:\n"
"%s" "%s"
@ -1541,10 +1578,12 @@ msgstr ""
"%s" "%s"
#: ../js/ui/wanda.js:81 #: ../js/ui/wanda.js:81
#, javascript-format
msgid "%s the Oracle says" msgid "%s the Oracle says"
msgstr "%s sang Peramal berkata" msgstr "%s sang Peramal berkata"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "'%s' telah siap" msgstr "'%s' telah siap"
@ -1564,6 +1603,7 @@ msgid "Keep Changes"
msgstr "Simpan Perubahan" msgstr "Simpan Perubahan"
#: ../js/ui/windowManager.js:97 #: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik" msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik"

354
po/lt.po
View File

@ -4,15 +4,15 @@
# Žygimantas Beručka <zygis@gnome.org>, 2010, 2011, 2012. # Žygimantas Beručka <zygis@gnome.org>, 2010, 2011, 2012.
# Algimantas Margevičius <gymka@mail.ru>, 2011. # Algimantas Margevičius <gymka@mail.ru>, 2011.
# Mantas Kriaučiūnas <mantas@akl.lt>, 2012, 2013. # Mantas Kriaučiūnas <mantas@akl.lt>, 2012, 2013.
# Aurimas Černius <aurisc4@gmail.com>, 2013. # Aurimas Černius <aurisc4@gmail.com>, 2013, 2014.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-10-10 21:27+0000\n" "POT-Creation-Date: 2014-01-02 13:34+0000\n"
"PO-Revision-Date: 2013-10-13 20:05+0300\n" "PO-Revision-Date: 2014-01-03 23:08+0200\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n" "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n" "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n" "Language: lt\n"
@ -276,23 +276,23 @@ msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį." msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:728 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Atsisakyti" msgstr "Atsisakyti"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Kitas" msgstr "Kitas"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Atrakinti" msgstr "Atrakinti"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Prisijungti" msgstr "Prisijungti"
@ -306,6 +306,7 @@ msgid "Not listed?"
msgstr "Nėra sąraše?" msgstr "Nėra sąraše?"
#: ../js/gdm/loginDialog.js:622 #: ../js/gdm/loginDialog.js:622
#, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(pvz., naudotojas arba %s)" msgstr "(pvz., naudotojas arba %s)"
@ -318,11 +319,11 @@ msgstr "Naudotojo vardas: "
msgid "Login Window" msgid "Login Window"
msgstr "Prisijungimo langas" msgstr "Prisijungimo langas"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "Tapatybės patvirtinimo klaida" msgstr "Tapatybės patvirtinimo klaida"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(arba perbraukite pirštu)" msgstr "(arba perbraukite pirštu)"
@ -335,6 +336,7 @@ msgid "Could not parse command:"
msgstr "Nepavyko perskaityti komandos:" msgstr "Nepavyko perskaityti komandos:"
#: ../js/misc/util.js:156 #: ../js/misc/util.js:156
#, javascript-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Nepavyko įvykdyti „%s“:" msgstr "Nepavyko įvykdyti „%s“:"
@ -350,28 +352,30 @@ msgstr "Dažnai naudojamos"
msgid "All" msgid "All"
msgstr "Visos" msgstr "Visos"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Naujas langas" msgstr "Naujas langas"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų" msgstr "Pašalinti iš mėgstamų"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų" msgstr "Pridėti prie mėgstamų"
#: ../js/ui/appFavorites.js:87 #: ../js/ui/appFavorites.js:87
#, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s pridėta prie jūsų mėgstamų." msgstr "%s pridėta prie jūsų mėgstamų."
#: ../js/ui/appFavorites.js:121 #: ../js/ui/appFavorites.js:121
#, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s pašalinta iš jūsų mėgstamų." msgstr "%s pašalinta iš jūsų mėgstamų."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Nustatymai" msgstr "Nustatymai"
@ -400,7 +404,7 @@ msgstr "%H%M"
#: ../js/ui/calendar.js:77 #: ../js/ui/calendar.js:77
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l:%M" msgstr "%l%M%p"
#. Translators: Calendar grid abbreviation for Sunday. #. Translators: Calendar grid abbreviation for Sunday.
#. * #. *
@ -553,6 +557,7 @@ msgid "Removable Devices"
msgstr "Išimami įrenginiai" msgstr "Išimami įrenginiai"
#: ../js/ui/components/autorunManager.js:594 #: ../js/ui/components/autorunManager.js:594
#, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Atverti su %s" msgstr "Atverti su %s"
@ -568,8 +573,8 @@ msgstr "Slaptažodis:"
msgid "Type again:" msgid "Type again:"
msgstr "Įveskite dar kartą:" msgstr "Įveskite dar kartą:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:133 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:296 ../js/ui/status/network.js:731 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Prisijungti" msgstr "Prisijungti"
@ -602,6 +607,7 @@ msgid "Authentication required by wireless network"
msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę" msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę"
#: ../js/ui/components/networkAgent.js:309 #: ../js/ui/components/networkAgent.js:309
#, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"'%s'." "'%s'."
@ -638,6 +644,7 @@ msgid "Mobile broadband network password"
msgstr "Mobiliojo plačiajuosčio tinklo slaptažodis" msgstr "Mobiliojo plačiajuosčio tinklo slaptažodis"
#: ../js/ui/components/networkAgent.js:336 #: ../js/ui/components/networkAgent.js:336
#, javascript-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "Būtinas slaptažodis norint prisijungti prie „%s“" msgstr "Būtinas slaptažodis norint prisijungti prie „%s“"
@ -661,94 +668,99 @@ msgstr "Patvirtinti tapatybę"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą." msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "Kvietimas" msgstr "Kvietimas"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "Skambutis" msgstr "Skambutis"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "Failo persiuntimas" msgstr "Failo persiuntimas"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "Pokalbiai" msgstr "Pokalbiai"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Įjungti garsą" msgstr "Įjungti garsą"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Nutildyti" msgstr "Nutildyti"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Vakar</b>, <b>%H:%M</b>" msgstr "<b>Vakar</b>, <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, <b>%H:%M</b>" msgstr "<b>%A</b>, <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgstr "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgstr "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s nuo šiol vadinasi %s" msgstr "%s nuo šiol vadinasi %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Kvietimas į %s" msgstr "Kvietimas į %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s jus kviečia prisijungti prie %s" msgstr "%s jus kviečia prisijungti prie %s"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Atmesti" msgstr "Atmesti"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Priimti" msgstr "Priimti"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Vaizdo skambutis nuo %s" msgstr "Vaizdo skambutis nuo %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Skambutis nuo %s" msgstr "Skambutis nuo %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Atsiliepti" msgstr "Atsiliepti"
@ -757,108 +769,110 @@ msgstr "Atsiliepti"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s jums siunčia %s" msgstr "%s jums siunčia %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s pageidauja matyti, kai esate prisijungę prie interneto" msgstr "%s pageidauja matyti, kai esate prisijungę prie interneto"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Tinklo klaida" msgstr "Tinklo klaida"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Nepavyko patvirtinti tapatybės" msgstr "Nepavyko patvirtinti tapatybės"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Šifravimo klaida" msgstr "Šifravimo klaida"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Liudijimas nepateiktas" msgstr "Liudijimas nepateiktas"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Liudijimas nepatikimas" msgstr "Liudijimas nepatikimas"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Liudijimo galiojimas pasibaigęs" msgstr "Liudijimo galiojimas pasibaigęs"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Liudijimas neaktyvuotas" msgstr "Liudijimas neaktyvuotas"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Liudijimo serverio vardo nesutapimas" msgstr "Liudijimo serverio vardo nesutapimas"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Liudijimo piršto atspaudo nesutapimas" msgstr "Liudijimo piršto atspaudo nesutapimas"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Liudijimas pačių pasirašytas" msgstr "Liudijimas pačių pasirašytas"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Nustatyta atsijungimo būsena" msgstr "Nustatyta atsijungimo būsena"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Šifravimas negalimas" msgstr "Šifravimas negalimas"
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Liudijimas netinkamas" msgstr "Liudijimas netinkamas"
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Ryšys atmestas" msgstr "Ryšys atmestas"
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Nepavyko užmegzti ryšio" msgstr "Nepavyko užmegzti ryšio"
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Ryšys nutrūko" msgstr "Ryšys nutrūko"
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Ši paskyra jau prijungta prie serverio" msgstr "Ši paskyra jau prijungta prie serverio"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių" msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Tokia paskyra serveryje jau yra" msgstr "Tokia paskyra serveryje jau yra"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Šiuo metu serveris per daug užimtas šiai užklausai apdoroti" msgstr "Šiuo metu serveris per daug užimtas šiai užklausai apdoroti"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Liudijimas atšauktas" msgstr "Liudijimas atšauktas"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai " "Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai "
"silpnas" "silpnas"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -866,21 +880,22 @@ msgstr ""
"Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos " "Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos "
"bibliotekos apribojimus" "bibliotekos apribojimus"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Vidinė klaida" msgstr "Vidinė klaida"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Nepavyksta prisijungti prie %s" msgstr "Nepavyksta prisijungti prie %s"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Rodyti paskyrą" msgstr "Rodyti paskyrą"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Nežinoma priežastis" msgstr "Nežinoma priežastis"
@ -916,6 +931,7 @@ msgid "%A %B %e, %Y"
msgstr "%A, %Y m. %B %d d." msgstr "%A, %Y m. %B %d d."
#: ../js/ui/endSessionDialog.js:62 #: ../js/ui/endSessionDialog.js:62
#, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Atjungti naudotoją %s" msgstr "Atjungti naudotoją %s"
@ -926,6 +942,7 @@ msgid "Log Out"
msgstr "Atsijungti" msgstr "Atsijungti"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:65
#, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s bus automatiškai atjungta (-s) už %d sekundės." msgstr[0] "%s bus automatiškai atjungta (-s) už %d sekundės."
@ -933,6 +950,7 @@ msgstr[1] "%s bus automatiškai atjungta (-s) už %d sekundžių."
msgstr[2] "%s bus automatiškai atjungta (-s) už %d sekundžių." msgstr[2] "%s bus automatiškai atjungta (-s) už %d sekundžių."
#: ../js/ui/endSessionDialog.js:70 #: ../js/ui/endSessionDialog.js:70
#, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Jūs būsite automatiškai atjungti už %d sekundės." msgstr[0] "Jūs būsite automatiškai atjungti už %d sekundės."
@ -950,6 +968,7 @@ msgid "Power Off"
msgstr "Išjungti" msgstr "Išjungti"
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:83
#, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Sistema automatiškai išsijungs po %d sekundės." msgstr[0] "Sistema automatiškai išsijungs po %d sekundės."
@ -972,6 +991,7 @@ msgid "Restart"
msgstr "Paleisti iš naujo" msgstr "Paleisti iš naujo"
#: ../js/ui/endSessionDialog.js:99 #: ../js/ui/endSessionDialog.js:99
#, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Sistema bus paleista iš naujo po %d sekundės." msgstr[0] "Sistema bus paleista iš naujo po %d sekundės."
@ -984,6 +1004,7 @@ msgid "Restart & Install Updates"
msgstr "Perleisti ir įdiegti atnaujinimus" msgstr "Perleisti ir įdiegti atnaujinimus"
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:114
#, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
"The system will automatically restart and install updates in %d seconds." "The system will automatically restart and install updates in %d seconds."
@ -1009,11 +1030,13 @@ msgstr "Yra prisijungusių kitų naudotojų"
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:479 #: ../js/ui/endSessionDialog.js:479
#, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (nutolęs)" msgstr "%s (nutolęs)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:482 #: ../js/ui/endSessionDialog.js:482
#, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (komandų eilutė)" msgstr "%s (komandų eilutė)"
@ -1022,6 +1045,7 @@ msgid "Install"
msgstr "Įdiegti" msgstr "Įdiegti"
#: ../js/ui/extensionDownloader.js:204 #: ../js/ui/extensionDownloader.js:204
#, javascript-format
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?" msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
@ -1035,6 +1059,7 @@ msgstr "Nėra įdiegtų plėtinių"
#. Translators: argument is an extension UUID. */ #. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:743 #: ../js/ui/lookingGlass.js:743
#, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s nepranešė apie jokias klaidas." msgstr "%s nepranešė apie jokias klaidas."
@ -1054,7 +1079,7 @@ msgstr "Įjungta"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:473 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Išjungta" msgstr "Išjungta"
@ -1079,49 +1104,49 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page" msgid "Web Page"
msgstr "Tinklalapis" msgstr "Tinklalapis"
#: ../js/ui/messageTray.js:1222 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Atverti" msgstr "Atverti"
#: ../js/ui/messageTray.js:1229 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Pašalinti" msgstr "Pašalinti"
#: ../js/ui/messageTray.js:1530 #: ../js/ui/messageTray.js:1657
#| msgid "Notification Settings"
msgid "Notifications" msgid "Notifications"
msgstr "Pranešimai" msgstr "Pranešimai"
#: ../js/ui/messageTray.js:1537 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Išvalyti pranešimus" msgstr "Išvalyti pranešimus"
#: ../js/ui/messageTray.js:1564 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Pranešimų nustatymai" msgstr "Pranešimų nustatymai"
#: ../js/ui/messageTray.js:1617 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Dėklo meniu" msgstr "Dėklo meniu"
#: ../js/ui/messageTray.js:1833 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Nėra pranešimų" msgstr "Nėra pranešimų"
#: ../js/ui/messageTray.js:1871 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Pranešimų juosta" msgstr "Pranešimų juosta"
#: ../js/ui/messageTray.js:2846 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Sistemos informacija" msgstr "Sistemos informacija"
#: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Nežinoma" msgstr "Nežinoma"
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
msgstr[0] "%d naujas pranešimas" msgstr[0] "%d naujas pranešimas"
@ -1144,21 +1169,21 @@ msgstr "Apžvalga"
msgid "Type to search…" msgid "Type to search…"
msgstr "Rašykite, ko ieškote…" msgstr "Rašykite, ko ieškote…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Užverti" msgstr "Užverti"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Apžvalga" msgstr "Apžvalga"
#: ../js/ui/panel.js:904 #: ../js/ui/panel.js:900
msgid "Top Bar" msgid "Top Bar"
msgstr "Viršutinė juosta" msgstr "Viršutinė juosta"
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -1172,30 +1197,31 @@ msgstr "Užverti"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d d." msgstr "%A, %B %d d."
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d naujas pranešimas" msgstr[0] "%d naujas pranešimas"
msgstr[1] "%d nauji pranešimai" msgstr[1] "%d nauji pranešimai"
msgstr[2] "%d naujų pranešimų" msgstr[2] "%d naujų pranešimų"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Užrakinti" msgstr "Užrakinti"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME aplinkai reikia užrakinti ekraną" msgstr "GNOME aplinkai reikia užrakinti ekraną"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Nepavyksta užrakinti" msgstr "Nepavyksta užrakinti"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Programa užblokavo užrakinimą" msgstr "Programa užblokavo užrakinimą"
@ -1235,129 +1261,136 @@ msgstr "Atsiminti slaptažodį"
msgid "Accessibility" msgid "Accessibility"
msgstr "Universali prieiga" msgstr "Universali prieiga"
#: ../js/ui/status/accessibility.js:58 #: ../js/ui/status/accessibility.js:56
msgid "Zoom" msgid "Zoom"
msgstr "Priartinimas" msgstr "Priartinimas"
#: ../js/ui/status/accessibility.js:65 #: ../js/ui/status/accessibility.js:63
msgid "Screen Reader" msgid "Screen Reader"
msgstr "Ekrano skaityklė" msgstr "Ekrano skaityklė"
#: ../js/ui/status/accessibility.js:69 #: ../js/ui/status/accessibility.js:67
msgid "Screen Keyboard" msgid "Screen Keyboard"
msgstr "Klaviatūra ekrane" msgstr "Klaviatūra ekrane"
#: ../js/ui/status/accessibility.js:73 #: ../js/ui/status/accessibility.js:71
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "Vaizdo įspėjimai" msgstr "Vaizdo įspėjimai"
#: ../js/ui/status/accessibility.js:76 #: ../js/ui/status/accessibility.js:74
msgid "Sticky Keys" msgid "Sticky Keys"
msgstr "Kibieji klavišai" msgstr "Kibieji klavišai"
#: ../js/ui/status/accessibility.js:79 #: ../js/ui/status/accessibility.js:77
msgid "Slow Keys" msgid "Slow Keys"
msgstr "Lėtieji klavišai" msgstr "Lėtieji klavišai"
#: ../js/ui/status/accessibility.js:82 #: ../js/ui/status/accessibility.js:80
msgid "Bounce Keys" msgid "Bounce Keys"
msgstr "Pasikartojantieji klavišai" msgstr "Pasikartojantieji klavišai"
#: ../js/ui/status/accessibility.js:85 #: ../js/ui/status/accessibility.js:83
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Pelės mygtukai" msgstr "Pelės mygtukai"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:142
msgid "High Contrast" msgid "High Contrast"
msgstr "Didelis kontrastas" msgstr "Didelis kontrastas"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:191
msgid "Large Text" msgid "Large Text"
msgstr "Didelis tekstas" msgstr "Didelis tekstas"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:133 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1085 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Išjungti" msgstr "Išjungti"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Bluetooth nustatymai" msgstr "Bluetooth nustatymai"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
msgstr[0] "%d prijungtas įrenginys" msgstr[0] "%d prijungtas įrenginys"
msgstr[1] "%d prijungti įrenginiai" msgstr[1] "%d prijungti įrenginiai"
msgstr[2] "%d prijungtų įrenginių" msgstr[2] "%d prijungtų įrenginių"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Tapatybės patvirtinimo užklausa iš %s" msgstr "Tapatybės patvirtinimo užklausa iš %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Įrenginys %s pageidauja būti suporuotas su šiuo kompiuteriu" msgstr "Įrenginys %s pageidauja būti suporuotas su šiuo kompiuteriu"
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "Leisti" msgstr "Leisti"
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "Drausti" msgstr "Drausti"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Įrenginys %s pageidauja prieiti prie tarnybos „%s“" msgstr "Įrenginys %s pageidauja prieiti prie tarnybos „%s“"
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "Visada leisti prieigą" msgstr "Visada leisti prieigą"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Leisti tik šį kartą" msgstr "Leisti tik šį kartą"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "Atmesti" msgstr "Atmesti"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Suporavimo patvirtinimas įrenginiui %s" msgstr "Suporavimo patvirtinimas įrenginiui %s"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Patvirtinkite, kad slaptas raktas „%06d“ sutampa su įrenginio rodomu." msgstr "Patvirtinkite, kad slaptas raktas „%06d“ sutampa su įrenginio rodomu."
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "Sutampa" msgstr "Sutampa"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "Nesutampa" msgstr "Nesutampa"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Suporavimo užklausa %s" msgstr "Suporavimo užklausa %s"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Įveskite PIN, nurodytą įrenginyje." msgstr "Įveskite PIN, nurodytą įrenginyje."
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "Gerai" msgstr "Gerai"
@ -1365,103 +1398,99 @@ msgstr "Gerai"
msgid "Brightness" msgid "Brightness"
msgstr "Ryškumas" msgstr "Ryškumas"
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<nežinoma>" msgstr "<nežinoma>"
#: ../js/ui/status/network.js:223 ../js/ui/status/network.js:380 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Išjungta" msgstr "Išjungta"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:386 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "nevaldomas" msgstr "nevaldomas"
#: ../js/ui/status/network.js:388 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "atsijungiama..." msgstr "atsijungiama..."
#: ../js/ui/status/network.js:394 ../js/ui/status/network.js:1160 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "jungiamasi..." msgstr "jungiamasi..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:397 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "reikia patvirtinti tapatybę" msgstr "reikia patvirtinti tapatybę"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:405 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "Trūksta integruotos programinės įrangos (firmware)" msgstr "Trūksta integruotos programinės įrangos (firmware)"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:409 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "nepasiekiamas" msgstr "nepasiekiamas"
#: ../js/ui/status/network.js:411 ../js/ui/status/network.js:1165 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "nepavyko prisijungti" msgstr "nepavyko prisijungti"
#: ../js/ui/status/network.js:427 ../js/ui/status/network.js:513 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
#| msgid "Mobile broadband network password"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Mobiliojo plačiajuosčio tinklo nustatymai" msgstr "Mobiliojo plačiajuosčio tinklo nustatymai"
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
#| msgid "Disabled"
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Aparatinė įranga išjungta" msgstr "Aparatinė įranga išjungta"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Wi-Fi tinklai" msgstr "Wi-Fi tinklai"
#: ../js/ui/status/network.js:698 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Pasirinkite tinklą" msgstr "Pasirinkite tinklą"
#: ../js/ui/status/network.js:722 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Nėra tinklų" msgstr "Nėra tinklų"
#: ../js/ui/status/network.js:991 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Pasirinkite tinklą" msgstr "Pasirinkite tinklą"
#: ../js/ui/status/network.js:997 #: ../js/ui/status/network.js:1011
#| msgid "Settings"
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Belaidžio ryšio nustatymai" msgstr "Belaidžio ryšio nustatymai"
#: ../js/ui/status/network.js:1085 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Įjungti" msgstr "Įjungti"
#: ../js/ui/status/network.js:1108 #: ../js/ui/status/network.js:1122
#| msgid "Connect"
msgid "Not Connected" msgid "Not Connected"
msgstr "Atsijungta" msgstr "Atsijungta"
#: ../js/ui/status/network.js:1228 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1368 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Tinklo valdymas" msgstr "Tinklo valdymas"
#: ../js/ui/status/network.js:1407 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Nepavyko prisijungti" msgstr "Nepavyko prisijungti"
#: ../js/ui/status/network.js:1408 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Tinklo ryšio nepavyko aktyvuoti" msgstr "Tinklo ryšio nepavyko aktyvuoti"
@ -1482,10 +1511,14 @@ msgid "Estimating…"
msgstr "Įvertinama…" msgstr "Įvertinama…"
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, javascript-format
#| msgid "%d\\u2236%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "Liko %d%02d (%d%%)" msgstr "Liko %d%02d (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, javascript-format
#| msgid "%d\\u2236%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d iki pilno (%d%%)" msgstr "%d%02d iki pilno (%d%%)"
@ -1501,23 +1534,23 @@ msgstr "Įjungta"
msgid "Network Settings" msgid "Network Settings"
msgstr "Tinklo nustatymai" msgstr "Tinklo nustatymai"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Keisti naudotoją" msgstr "Keisti naudotoją"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Atsijungti" msgstr "Atsijungti"
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Padėties užrakinimas" msgstr "Padėties užrakinimas"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Užmigdyti" msgstr "Užmigdyti"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Išjungti" msgstr "Išjungti"
@ -1550,6 +1583,7 @@ msgid "Search"
msgstr "Ieškoti" msgstr "Ieškoti"
#: ../js/ui/wanda.js:77 #: ../js/ui/wanda.js:77
#, javascript-format
msgid "" msgid ""
"Sorry, no wisdom for you today:\n" "Sorry, no wisdom for you today:\n"
"%s" "%s"
@ -1558,10 +1592,12 @@ msgstr ""
"%s" "%s"
#: ../js/ui/wanda.js:81 #: ../js/ui/wanda.js:81
#, javascript-format
msgid "%s the Oracle says" msgid "%s the Oracle says"
msgstr "Orakulė %s sako" msgstr "Orakulė %s sako"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "„%s“ yra pasirengusi" msgstr "„%s“ yra pasirengusi"
@ -1581,6 +1617,7 @@ msgid "Keep Changes"
msgstr "Įrašyti pakeitimus" msgstr "Įrašyti pakeitimus"
#: ../js/ui/windowManager.js:97 #: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Pakeitimai bus grąžinti po %d sekundės" msgstr[0] "Pakeitimai bus grąžinti po %d sekundės"
@ -1647,3 +1684,4 @@ msgstr "Slaptažodis negali būti tuščias"
#: ../src/shell-polkit-authentication-agent.c:343 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą" msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"

352
po/nb.po
View File

@ -6,10 +6,10 @@
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010. # Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell 3.11.x\n" "Project-Id-Version: gnome-shell 3.10.x\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-03 16:01+0100\n" "POT-Creation-Date: 2013-10-20 13:05+0200\n"
"PO-Revision-Date: 2013-11-03 16:03+0100\n" "PO-Revision-Date: 2013-10-26 15:17+0200\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n" "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n" "Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
"Language: \n" "Language: \n"
@ -52,7 +52,6 @@ msgid "Window management and application launching"
msgstr "Vindushåndtering og oppstart av programmer" msgstr "Vindushåndtering og oppstart av programmer"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences" msgid "GNOME Shell Extension Preferences"
msgstr "Brukervalg for GNOME Shell utvidelser" msgstr "Brukervalg for GNOME Shell utvidelser"
@ -252,23 +251,14 @@ msgstr "Arbeidsområder vises kun på hovedskjerm"
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
#: ../js/extensionPrefs/main.js:127 #: ../js/extensionPrefs/main.js:189
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Det oppsto en feil ved lasting av brukervalgdialog for %s:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "Utvidelse"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Velg en utvidelse som skal konfigureres med komboboksen over." msgstr "Velg en utvidelse som skal konfigureres med komboboksen over."
#: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:357 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:726 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
@ -286,25 +276,25 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Logg inn" msgstr "Logg inn"
#: ../js/gdm/loginDialog.js:272 #: ../js/gdm/loginDialog.js:294
msgid "Choose Session" msgid "Choose Session"
msgstr "Velg økt" msgstr "Velg økt"
#: ../js/gdm/loginDialog.js:432 #: ../js/gdm/loginDialog.js:454
msgid "Not listed?" msgid "Not listed?"
msgstr "Ikke listet?" msgstr "Ikke listet?"
#: ../js/gdm/loginDialog.js:600 #: ../js/gdm/loginDialog.js:622
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(f.eks. bruker eller %s)" msgstr "(f.eks. bruker eller %s)"
#: ../js/gdm/loginDialog.js:605 ../js/ui/components/networkAgent.js:259 #: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277 #: ../js/ui/components/networkAgent.js:277
msgid "Username: " msgid "Username: "
msgstr "Brukernavn: " msgstr "Brukernavn: "
#: ../js/gdm/loginDialog.js:869 #: ../js/gdm/loginDialog.js:891
msgid "Login Window" msgid "Login Window"
msgstr "Innloggingsvindu" msgstr "Innloggingsvindu"
@ -333,23 +323,23 @@ msgstr "Kjøring av «%s» feilet:"
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Ofte brukte programmer vil vises her" msgstr "Ofte brukte programmer vil vises her"
#: ../js/ui/appDisplay.js:715 #: ../js/ui/appDisplay.js:712
msgid "Frequent" msgid "Frequent"
msgstr "Ofte" msgstr "Ofte"
#: ../js/ui/appDisplay.js:722 #: ../js/ui/appDisplay.js:719
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: ../js/ui/appDisplay.js:1526 #: ../js/ui/appDisplay.js:1523
msgid "New Window" msgid "New Window"
msgstr "Nytt vindu" msgstr "Nytt vindu"
#: ../js/ui/appDisplay.js:1529 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1526 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Fjern fra favoritter" msgstr "Fjern fra favoritter"
#: ../js/ui/appDisplay.js:1530 #: ../js/ui/appDisplay.js:1527
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Legg til i favoritter" msgstr "Legg til i favoritter"
@ -364,7 +354,7 @@ msgid "%s has been removed from your favorites."
msgstr "%s ble fjernet fra dine favoritter." msgstr "%s ble fjernet fra dine favoritter."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:334 #: ../js/ui/status/system.js:325
msgid "Settings" msgid "Settings"
msgstr "Innstillinger" msgstr "Innstillinger"
@ -488,48 +478,48 @@ msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Lø" msgstr "Lø"
#: ../js/ui/calendar.js:391 #: ../js/ui/calendar.js:389
msgid "calendar:MY" msgid "calendar:MY"
msgstr "" msgstr ""
#: ../js/ui/calendar.js:449 #: ../js/ui/calendar.js:447
msgid "Previous month" msgid "Previous month"
msgstr "Forrige måned" msgstr "Forrige måned"
#: ../js/ui/calendar.js:459 #: ../js/ui/calendar.js:457
msgid "Next month" msgid "Next month"
msgstr "Neste måned" msgstr "Neste måned"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:755 #: ../js/ui/calendar.js:753
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Ingenting planlagt" msgstr "Ingenting planlagt"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:773 #: ../js/ui/calendar.js:771
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A %B %d" msgstr "%A %B %d"
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:776 #: ../js/ui/calendar.js:774
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A %B %d, %Y" msgstr "%A %B %d, %Y"
#: ../js/ui/calendar.js:787 #: ../js/ui/calendar.js:785
msgid "Today" msgid "Today"
msgstr "I dag" msgstr "I dag"
#: ../js/ui/calendar.js:791 #: ../js/ui/calendar.js:789
msgid "Tomorrow" msgid "Tomorrow"
msgstr "I morgen" msgstr "I morgen"
#: ../js/ui/calendar.js:802 #: ../js/ui/calendar.js:800
msgid "This week" msgid "This week"
msgstr "Denne uken" msgstr "Denne uken"
#: ../js/ui/calendar.js:810 #: ../js/ui/calendar.js:808
msgid "Next week" msgid "Next week"
msgstr "Neste uke" msgstr "Neste uke"
@ -541,16 +531,16 @@ msgstr "Ekstern stasjon koblet til"
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Ekstern stasjon koblet fra" msgstr "Ekstern stasjon koblet fra"
#: ../js/ui/components/autorunManager.js:296 #: ../js/ui/components/autorunManager.js:294
msgid "Removable Devices" msgid "Removable Devices"
msgstr "Avtagbare enheter" msgstr "Avtagbare enheter"
#: ../js/ui/components/autorunManager.js:596 #: ../js/ui/components/autorunManager.js:594
#, javascript-format #, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Åpne med %s" msgstr "Åpne med %s"
#: ../js/ui/components/autorunManager.js:622 #: ../js/ui/components/autorunManager.js:620
msgid "Eject" msgid "Eject"
msgstr "Løs ut" msgstr "Løs ut"
@ -563,7 +553,7 @@ msgid "Type again:"
msgstr "Skriv på nytt:" msgstr "Skriv på nytt:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:295 ../js/ui/status/network.js:729 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Koble til" msgstr "Koble til"
@ -673,11 +663,11 @@ msgstr "Filoverføring"
msgid "Chat" msgid "Chat"
msgstr "Prat" msgstr "Prat"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Fjern demping" msgstr "Fjern demping"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Demp" msgstr "Demp"
@ -724,32 +714,32 @@ msgid "%s is inviting you to join %s"
msgstr "%s inviterer deg til å bli med i %s" msgstr "%s inviterer deg til å bli med i %s"
#: ../js/ui/components/telepathyClient.js:1098 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1167 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1224 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Avslå" msgstr "Avslå"
#: ../js/ui/components/telepathyClient.js:1104 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1173 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1229 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Godta" msgstr "Godta"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1123 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Videosamtale fra %s" msgstr "Videosamtale fra %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1126 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Samtale fra %s" msgstr "Samtale fra %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Svar" msgstr "Svar"
@ -758,110 +748,110 @@ msgstr "Svar"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1161 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s sender deg %s" msgstr "%s sender deg %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1190 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s vil ha rettigheter til å se når du er tilkoblet" msgstr "%s vil ha rettigheter til å se når du er tilkoblet"
#: ../js/ui/components/telepathyClient.js:1275 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Nettverksfeil" msgstr "Nettverksfeil"
#: ../js/ui/components/telepathyClient.js:1277 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Autentisering feilet" msgstr "Autentisering feilet"
#: ../js/ui/components/telepathyClient.js:1279 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Feil ved kryptering" msgstr "Feil ved kryptering"
#: ../js/ui/components/telepathyClient.js:1281 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Sertifikat ikke oppgitt" msgstr "Sertifikat ikke oppgitt"
#: ../js/ui/components/telepathyClient.js:1283 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Stoler ikke på sertifikatet" msgstr "Stoler ikke på sertifikatet"
#: ../js/ui/components/telepathyClient.js:1285 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Sertifikatet er utløpt" msgstr "Sertifikatet er utløpt"
#: ../js/ui/components/telepathyClient.js:1287 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Sertifikatet er ikke aktivert" msgstr "Sertifikatet er ikke aktivert"
#: ../js/ui/components/telepathyClient.js:1289 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Feil vertsnavn for sertifikat" msgstr "Feil vertsnavn for sertifikat"
#: ../js/ui/components/telepathyClient.js:1291 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Feil fingeravtrykk for sertifikat" msgstr "Feil fingeravtrykk for sertifikat"
#: ../js/ui/components/telepathyClient.js:1293 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Sertifikatet er selvsignert" msgstr "Sertifikatet er selvsignert"
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Status er satt til frakoblet" msgstr "Status er satt til frakoblet"
#: ../js/ui/components/telepathyClient.js:1297 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Kryptering er ikke tilgjengelig" msgstr "Kryptering er ikke tilgjengelig"
#: ../js/ui/components/telepathyClient.js:1299 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Sertifikatet er ugyldig" msgstr "Sertifikatet er ugyldig"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Tilkobling ble nektet" msgstr "Tilkobling ble nektet"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Tilkobling kan ikke etableres" msgstr "Tilkobling kan ikke etableres"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Tilkobling tapt" msgstr "Tilkobling tapt"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Denne kontoen er allerede koblet til tjeneren" msgstr "Denne kontoen er allerede koblet til tjeneren"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "" msgstr ""
"Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs" "Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Kontoen eksisterer allerede på tjeneren" msgstr "Kontoen eksisterer allerede på tjeneren"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Tjener er for opptatt til å håndtere tilkoblingen" msgstr "Tjener er for opptatt til å håndtere tilkoblingen"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Sertifikatet er tilbaketrukket" msgstr "Sertifikatet er tilbaketrukket"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt" "Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -869,26 +859,26 @@ msgstr ""
"Lengden eller dybden på tjenersertifikatet oversteg grensen som er satt i " "Lengden eller dybden på tjenersertifikatet oversteg grensen som er satt i "
"kryptografibiblioteket" "kryptografibiblioteket"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Intern feil" msgstr "Intern feil"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Kan ikke koble til %s" msgstr "Kan ikke koble til %s"
#: ../js/ui/components/telepathyClient.js:1336 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Vis konto" msgstr "Vis konto"
#: ../js/ui/components/telepathyClient.js:1368 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Ukjent årsak" msgstr "Ukjent årsak"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:95 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows" msgid "Windows"
msgstr "Vinduer" msgstr "Vinduer"
@ -919,76 +909,76 @@ msgstr "Innstillinger for dato og klokkeslett"
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%a %e %B, %Y" msgstr "%a %e %B, %Y"
#: ../js/ui/endSessionDialog.js:64 #: ../js/ui/endSessionDialog.js:62
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Logg ut %s" msgstr "Logg ut %s"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:63
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Logg ut" msgstr "Logg ut"
#: ../js/ui/endSessionDialog.js:67 #: ../js/ui/endSessionDialog.js:65
#, javascript-format #, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s vil bli logget ut automatisk om %d sekund." msgstr[0] "%s vil bli logget ut automatisk om %d sekund."
msgstr[1] "%s vil bli logget ut automatisk om %d sekunder." msgstr[1] "%s vil bli logget ut automatisk om %d sekunder."
#: ../js/ui/endSessionDialog.js:72 #: ../js/ui/endSessionDialog.js:70
#, javascript-format #, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Du vil bli logget ut automatisk om %d sekund." msgstr[0] "Du vil bli logget ut automatisk om %d sekund."
msgstr[1] "Du vil bli logget ut automatisk om %d sekunder." msgstr[1] "Du vil bli logget ut automatisk om %d sekunder."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:75
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Logg ut" msgstr "Logg ut"
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:81
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Slå av" msgstr "Slå av"
#: ../js/ui/endSessionDialog.js:85 #: ../js/ui/endSessionDialog.js:83
#, javascript-format #, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Systemet vil slås av automatisk om %d sekund." msgstr[0] "Systemet vil slås av automatisk om %d sekund."
msgstr[1] "Systemet vil slås av automatisk om %d sekunder." msgstr[1] "Systemet vil slås av automatisk om %d sekunder."
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:106 #: ../js/ui/endSessionDialog.js:88 ../js/ui/endSessionDialog.js:104
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Start på nytt" msgstr "Start på nytt"
#: ../js/ui/endSessionDialog.js:92 #: ../js/ui/endSessionDialog.js:90
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Slå av" msgstr "Slå av"
#: ../js/ui/endSessionDialog.js:99 #: ../js/ui/endSessionDialog.js:97
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Start på nytt" msgstr "Start på nytt"
#: ../js/ui/endSessionDialog.js:101 #: ../js/ui/endSessionDialog.js:99
#, javascript-format #, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Systemet vil starte på nytt automatisk om %d sekund." msgstr[0] "Systemet vil starte på nytt automatisk om %d sekund."
msgstr[1] "Systemet vil starte på nytt automatisk om %d sekunder." msgstr[1] "Systemet vil starte på nytt automatisk om %d sekunder."
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:112
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Start på nytt og installer oppdateringer" msgstr "Start på nytt og installer oppdateringer"
#: ../js/ui/endSessionDialog.js:116 #: ../js/ui/endSessionDialog.js:114
#, javascript-format #, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
@ -1000,27 +990,27 @@ msgstr[1] ""
"Systemet vil starte på nytt og installere oppdateringer automatisk om %d " "Systemet vil starte på nytt og installere oppdateringer automatisk om %d "
"sekunder." "sekunder."
#: ../js/ui/endSessionDialog.js:121 #: ../js/ui/endSessionDialog.js:119
msgctxt "button" msgctxt "button"
msgid "Restart & Install" msgid "Restart & Install"
msgstr "Start på nytt og installer" msgstr "Start på nytt og installer"
#: ../js/ui/endSessionDialog.js:275 #: ../js/ui/endSessionDialog.js:271
msgid "Some applications are busy or have unsaved work." msgid "Some applications are busy or have unsaved work."
msgstr "Noen programmer er opptatt eller har arbeid som ikke er lagret." msgstr "Noen programmer er opptatt eller har arbeid som ikke er lagret."
#: ../js/ui/endSessionDialog.js:282 #: ../js/ui/endSessionDialog.js:277
msgid "Other users are logged in." msgid "Other users are logged in."
msgstr "Andre brukere er logget inn." msgstr "Andre brukere er logget inn."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:485 #: ../js/ui/endSessionDialog.js:479
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (ekstern)" msgstr "%s (ekstern)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:488 #: ../js/ui/endSessionDialog.js:482
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsoll)" msgstr "%s (konsoll)"
@ -1034,29 +1024,29 @@ msgstr "Installer"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Last ned og installer «%s» fra extensions.gnome.org?" msgstr "Last ned og installer «%s» fra extensions.gnome.org?"
#: ../js/ui/keyboard.js:621 ../js/ui/status/keyboard.js:335 #: ../js/ui/keyboard.js:619
msgid "Keyboard" msgid "Keyboard"
msgstr "Tastatur" msgstr "Tastatur"
#: ../js/ui/lookingGlass.js:640 #: ../js/ui/lookingGlass.js:689
msgid "No extensions installed" msgid "No extensions installed"
msgstr "Ingen utvidelser installert" msgstr "Ingen utvidelser installert"
#. Translators: argument is an extension UUID. */ #. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:694 #: ../js/ui/lookingGlass.js:743
#, javascript-format #, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s har ikke avgitt noen feil." msgstr "%s har ikke avgitt noen feil."
#: ../js/ui/lookingGlass.js:700 #: ../js/ui/lookingGlass.js:749
msgid "Hide Errors" msgid "Hide Errors"
msgstr "Skjul feil" msgstr "Skjul feil"
#: ../js/ui/lookingGlass.js:704 ../js/ui/lookingGlass.js:764 #: ../js/ui/lookingGlass.js:753 ../js/ui/lookingGlass.js:813
msgid "Show Errors" msgid "Show Errors"
msgstr "Vis feil" msgstr "Vis feil"
#: ../js/ui/lookingGlass.js:713 #: ../js/ui/lookingGlass.js:762
msgid "Enabled" msgid "Enabled"
msgstr "Aktivert" msgstr "Aktivert"
@ -1064,73 +1054,73 @@ msgstr "Aktivert"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/network.js:472 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Deaktivert" msgstr "Deaktivert"
#: ../js/ui/lookingGlass.js:718 #: ../js/ui/lookingGlass.js:767
msgid "Error" msgid "Error"
msgstr "Feil" msgstr "Feil"
#: ../js/ui/lookingGlass.js:720 #: ../js/ui/lookingGlass.js:769
msgid "Out of date" msgid "Out of date"
msgstr "Utdatert" msgstr "Utdatert"
#: ../js/ui/lookingGlass.js:722 #: ../js/ui/lookingGlass.js:771
msgid "Downloading" msgid "Downloading"
msgstr "Laster ned" msgstr "Laster ned"
#: ../js/ui/lookingGlass.js:746 #: ../js/ui/lookingGlass.js:795
msgid "View Source" msgid "View Source"
msgstr "Vis kildekode" msgstr "Vis kildekode"
#: ../js/ui/lookingGlass.js:755 #: ../js/ui/lookingGlass.js:804
msgid "Web Page" msgid "Web Page"
msgstr "Nettside" msgstr "Nettside"
#: ../js/ui/messageTray.js:1310 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Åpne" msgstr "Åpne"
#: ../js/ui/messageTray.js:1317 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Fjern" msgstr "Fjern"
#: ../js/ui/messageTray.js:1618 #: ../js/ui/messageTray.js:1657
msgid "Notifications" msgid "Notifications"
msgstr "Varslinger" msgstr "Varslinger"
#: ../js/ui/messageTray.js:1625 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Tøm meldinger" msgstr "Tøm meldinger"
#: ../js/ui/messageTray.js:1644 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Innstillinger for varsling" msgstr "Innstillinger for varsling"
#: ../js/ui/messageTray.js:1697 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Meny for varslingsområde" msgstr "Meny for varslingsområde"
#: ../js/ui/messageTray.js:1913 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Ingen meldinger" msgstr "Ingen meldinger"
#: ../js/ui/messageTray.js:1951 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Meldingstrau" msgstr "Meldingstrau"
#: ../js/ui/messageTray.js:2929 #: ../js/ui/messageTray.js:2965
msgid "System Information" msgid "System Information"
msgstr "Systeminformasjon" msgstr "Systeminformasjon"
#: ../js/ui/notificationDaemon.js:539 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Ukjent" msgstr "Ukjent"
#: ../js/ui/overviewControls.js:486 ../js/ui/screenShield.js:153 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1141,7 +1131,7 @@ msgstr[1] "%d nye meldinger"
msgid "Undo" msgid "Undo"
msgstr "Angre" msgstr "Angre"
#: ../js/ui/overview.js:125 #: ../js/ui/overview.js:127
msgid "Overview" msgid "Overview"
msgstr "Oversikt" msgstr "Oversikt"
@ -1149,7 +1139,7 @@ msgstr "Oversikt"
#. in the search entry when no search is #. in the search entry when no search is
#. active; it should not exceed ~30 #. active; it should not exceed ~30
#. characters. */ #. characters. */
#: ../js/ui/overview.js:256 #: ../js/ui/overview.js:258
msgid "Type to search…" msgid "Type to search…"
msgstr "Skriv for å søke …" msgstr "Skriv for å søke …"
@ -1192,7 +1182,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d ny varsling" msgstr[0] "%d ny varsling"
msgstr[1] "%d nye varslinger" msgstr[1] "%d nye varslinger"
#: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:333
msgid "Lock" msgid "Lock"
msgstr "Lås" msgstr "Lås"
@ -1208,11 +1198,11 @@ msgstr "Kan ikke låse"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Låsing ble stoppet av et program" msgstr "Låsing ble stoppet av et program"
#: ../js/ui/search.js:592 #: ../js/ui/searchDisplay.js:448
msgid "Searching…" msgid "Searching…"
msgstr "Søker …" msgstr "Søker …"
#: ../js/ui/search.js:635 #: ../js/ui/searchDisplay.js:492
msgid "No results." msgid "No results."
msgstr "Ingen resultater." msgstr "Ingen resultater."
@ -1291,7 +1281,7 @@ msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1083 ../js/ui/status/rfkill.js:48 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Slå av" msgstr "Slå av"
@ -1376,20 +1366,16 @@ msgstr "Vennligst oppgi PIN som oppgitt på enheten."
msgid "OK" msgid "OK"
msgstr "OK" msgstr "OK"
#: ../js/ui/status/brightness.js:44 #: ../js/ui/status/brightness.js:42
msgid "Brightness" msgid "Brightness"
msgstr "Lysstyrke" msgstr "Lysstyrke"
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Vis tastaturutforming"
#: ../js/ui/status/network.js:71 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<ukjent>" msgstr "<ukjent>"
#: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Av" msgstr "Av"
@ -1403,12 +1389,12 @@ msgstr "ikke håndtert"
msgid "disconnecting..." msgid "disconnecting..."
msgstr "kobler fra …" msgstr "kobler fra …"
#: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1158 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "kobler til …" msgstr "kobler til …"
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1161 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "autentisering kreves" msgstr "autentisering kreves"
@ -1424,7 +1410,7 @@ msgstr "fastvare mangler"
msgid "unavailable" msgid "unavailable"
msgstr "ikke tilgjengelig" msgstr "ikke tilgjengelig"
#: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "tilkobling feilet" msgstr "tilkobling feilet"
@ -1432,113 +1418,109 @@ msgstr "tilkobling feilet"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Innstillinger for mobilt bredbånd" msgstr "Innstillinger for mobilt bredbånd"
#: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1102 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Maskinvare slått av" msgstr "Maskinvare slått av"
#: ../js/ui/status/network.js:694 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Wi-Fi nettverk" msgstr "Wi-Fi nettverk"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Velg et nettverk" msgstr "Velg et nettverk"
#: ../js/ui/status/network.js:720 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Ingen nettverk" msgstr "Ingen nettverk"
#: ../js/ui/status/network.js:989 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Velg nettverk" msgstr "Velg nettverk"
#: ../js/ui/status/network.js:995 #: ../js/ui/status/network.js:1011
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Innstillinger" msgstr "Innstillinger"
#: ../js/ui/status/network.js:1083 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Slå på" msgstr "Slå på"
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1122
msgid "Not Connected" msgid "Not Connected"
msgstr "Ikke koblet til" msgstr "Ikke koblet til"
#: ../js/ui/status/network.js:1226 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1366 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Nettverkshåndtering" msgstr "Nettverkshåndtering"
#: ../js/ui/status/network.js:1405 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Tilkobling feilet" msgstr "Tilkobling feilet"
#: ../js/ui/status/network.js:1406 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivering av nettverkstilkobling feilet" msgstr "Aktivering av nettverkstilkobling feilet"
#: ../js/ui/status/power.js:49 #: ../js/ui/status/power.js:46
msgid "Battery"
msgstr "Batteri"
#: ../js/ui/status/power.js:47
msgid "Power Settings" msgid "Power Settings"
msgstr "Innstillinger for strøm" msgstr "Innstillinger for strøm"
#: ../js/ui/status/power.js:65 #: ../js/ui/status/power.js:63
msgid "Fully Charged" msgid "Fully Charged"
msgstr "Fullt oppladet" msgstr "Fullt oppladet"
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 #: ../js/ui/status/power.js:69 ../js/ui/status/power.js:86
msgid "Estimating…" msgid "Estimating…"
msgstr "Estimerer …" msgstr "Estimerer …"
#: ../js/ui/status/power.js:86 #: ../js/ui/status/power.js:77
#, javascript-format #, javascript-format
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "%d:%02d gjenstår (%d%%)" msgstr "%d:%02d gjenstår (%d%%)"
#: ../js/ui/status/power.js:91 #: ../js/ui/status/power.js:82
#, javascript-format #, javascript-format
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d:%02d til batteriet er fullt (%d%%)" msgstr "%d:%02d til batteriet er fullt (%d%%)"
#: ../js/ui/status/power.js:119 #: ../js/ui/status/rfkill.js:43
msgid "UPS"
msgstr "UPS"
#: ../js/ui/status/power.js:121
msgid "Battery"
msgstr "Batteri"
#: ../js/ui/status/rfkill.js:45
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Flymodus" msgstr "Flymodus"
#: ../js/ui/status/rfkill.js:47 #: ../js/ui/status/rfkill.js:45
msgid "On" msgid "On"
msgstr "På" msgstr "På"
#: ../js/ui/status/rfkill.js:51 #: ../js/ui/status/rfkill.js:49
msgid "Network Settings" msgid "Network Settings"
msgstr "Innstillinger for nettverk" msgstr "Innstillinger for nettverk"
#: ../js/ui/status/system.js:314 #: ../js/ui/status/system.js:305
msgid "Switch User" msgid "Switch User"
msgstr "Bytt bruker" msgstr "Bytt bruker"
#: ../js/ui/status/system.js:319 #: ../js/ui/status/system.js:310
msgid "Log Out" msgid "Log Out"
msgstr "Logg ut" msgstr "Logg ut"
#: ../js/ui/status/system.js:338 #: ../js/ui/status/system.js:329
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Lås for orientering" msgstr "Lås for orientering"
#: ../js/ui/status/system.js:346 #: ../js/ui/status/system.js:337
msgid "Suspend" msgid "Suspend"
msgstr "Hvilemodus" msgstr "Hvilemodus"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:340
msgid "Power Off" msgid "Power Off"
msgstr "Slå av" msgstr "Slå av"
@ -1562,14 +1544,28 @@ msgstr "Logg inn som en annen bruker"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Lås opp vindu" msgstr "Lås opp vindu"
#: ../js/ui/viewSelector.js:99 #: ../js/ui/viewSelector.js:104
msgid "Applications" msgid "Applications"
msgstr "Programmer" msgstr "Programmer"
#: ../js/ui/viewSelector.js:103 #: ../js/ui/viewSelector.js:108
msgid "Search" msgid "Search"
msgstr "Søk" msgstr "Søk"
#: ../js/ui/wanda.js:77
#, javascript-format
msgid ""
"Sorry, no wisdom for you today:\n"
"%s"
msgstr ""
"Beklager, ingen visdom til deg i dag:\n"
"%s"
#: ../js/ui/wanda.js:81
#, javascript-format
msgid "%s the Oracle says"
msgstr "Orakelet sier %s"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format #, javascript-format
msgid "'%s' is ready" msgid "'%s' is ready"
@ -1623,23 +1619,23 @@ msgstr[1] "%u innganger"
msgid "System Sounds" msgid "System Sounds"
msgstr "Systemlyder" msgstr "Systemlyder"
#: ../src/main.c:351 #: ../src/main.c:353
msgid "Print version" msgid "Print version"
msgstr "Skriv ut versjon" msgstr "Skriv ut versjon"
#: ../src/main.c:357 #: ../src/main.c:359
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Modus som brukes av GDM for innloggingsskjermen" msgstr "Modus som brukes av GDM for innloggingsskjermen"
#: ../src/main.c:363 #: ../src/main.c:365
msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Bruk spesifikt modus, f.eks «gdm» for innloggingsskjerm" msgstr "Bruk spesifikt modus, f.eks «gdm» for innloggingsskjerm"
#: ../src/main.c:369 #: ../src/main.c:371
msgid "List possible modes" msgid "List possible modes"
msgstr "Vis mulige modi" msgstr "Vis mulige modi"
#: ../src/shell-app.c:639 #: ../src/shell-app.c:644
#, c-format #, c-format
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "Klarte ikke å starte «%s»" msgstr "Klarte ikke å starte «%s»"

348
po/pa.po
View File

@ -7,8 +7,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-28 19:49+0000\n" "POT-Creation-Date: 2013-12-07 09:13+0000\n"
"PO-Revision-Date: 2013-09-29 05:26-0500\n" "PO-Revision-Date: 2013-12-07 19:03-0600\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n" "Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n" "Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
"Language: pa\n" "Language: pa\n"
@ -273,23 +273,23 @@ msgstr "ਪੁਆਇੰਟਰ ਦੇ ਹਿਲਣ ਤੋਂ ਰੁਕਣ ਤੱ
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "ਉੱਤੇ ਦਿੱਤੇ ਕੰਬੋਬਾਕਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਕਸਟੈਸ਼ਨ ਦੀ ਸੰਰਚਨਾ ਕਰਨ ਲਈ ਚੋਣ ਕਰੋ।" msgstr "ਉੱਤੇ ਦਿੱਤੇ ਕੰਬੋਬਾਕਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਕਸਟੈਸ਼ਨ ਦੀ ਸੰਰਚਨਾ ਕਰਨ ਲਈ ਚੋਣ ਕਰੋ।"
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:692 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "ਰੱਦ ਕਰੋ" msgstr "ਰੱਦ ਕਰੋ"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "ਅੱਗੇ" msgstr "ਅੱਗੇ"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "ਅਣ-ਲਾਕ" msgstr "ਅਣ-ਲਾਕ"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "ਸਾਇਨ ਇਨ" msgstr "ਸਾਇਨ ਇਨ"
@ -316,23 +316,23 @@ msgstr "ਯੂਜ਼ਰ ਨਾਂ: "
msgid "Login Window" msgid "Login Window"
msgstr "ਲਾਗਇਨ ਵਿੰਡੋ" msgstr "ਲਾਗਇਨ ਵਿੰਡੋ"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "ਪਰਮਾਣਕਿਤਾ ਗਲਤੀ" msgstr "ਪਰਮਾਣਕਿਤਾ ਗਲਤੀ"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ਜਾਂ ਉਂਗਲ ਰੱਖੋ)" msgstr "(ਜਾਂ ਉਂਗਲ ਰੱਖੋ)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:115
msgid "Command not found" msgid "Command not found"
msgstr "ਕਮਾਂਡ ਨਹੀਂ ਲੱਭੀ" msgstr "ਕਮਾਂਡ ਨਹੀਂ ਲੱਭੀ"
#: ../js/misc/util.js:131 #: ../js/misc/util.js:148
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "ਕਮਾਂਡ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ:" msgstr "ਕਮਾਂਡ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:156
#, javascript-format #, javascript-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:" msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:"
@ -349,15 +349,15 @@ msgstr "ਅਕਸਰ"
msgid "All" msgid "All"
msgstr "ਸਭ" msgstr "ਸਭ"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "ਨਵੀਂ ਵਿੰਡੋ" msgstr "ਨਵੀਂ ਵਿੰਡੋ"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ" msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ" msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ"
@ -371,8 +371,8 @@ msgstr "%s ਨੂੰ ਤੁਹਾਡੀ ਪਸੰਦ ਵਿੱਚ ਸ਼ਾਮ
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s ਨੂੰ ਤੁਹਾਡੀ ਪਸੰਦ ਤੋਂ ਹਟਾਇਆ ਜਾ ਚੁੱਕਿਆ ਹੈ।" msgstr "%s ਨੂੰ ਤੁਹਾਡੀ ਪਸੰਦ ਤੋਂ ਹਟਾਇਆ ਜਾ ਚੁੱਕਿਆ ਹੈ।"
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "ਸੈਟਿੰਗ" msgstr "ਸੈਟਿੰਗ"
@ -562,16 +562,16 @@ msgstr "%s ਨਾਲ ਖੋਲ੍ਹੋ"
msgid "Eject" msgid "Eject"
msgstr "ਬਾਹਰ ਕੱਢੋ" msgstr "ਬਾਹਰ ਕੱਢੋ"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280 #: ../js/ui/components/keyring.js:89 ../js/ui/components/polkitAgent.js:280
msgid "Password:" msgid "Password:"
msgstr "ਪਾਸਵਰਡ:" msgstr "ਪਾਸਵਰਡ:"
#: ../js/ui/components/keyring.js:110 #: ../js/ui/components/keyring.js:108
msgid "Type again:" msgid "Type again:"
msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼:" msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:695 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "ਕੁਨੈਕਟ ਕਰੋ" msgstr "ਕੁਨੈਕਟ ਕਰੋ"
@ -663,60 +663,60 @@ msgstr "ਪਰਮਾਣਿਤ"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "ਅਫਸੋਸ, ਉਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।" msgstr "ਅਫਸੋਸ, ਉਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।"
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "ਸੱਦਾ" msgstr "ਸੱਦਾ"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "ਕਾਲ ਕਰੋ" msgstr "ਕਾਲ ਕਰੋ"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ" msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "ਗੱਲਬਾਤ" msgstr "ਗੱਲਬਾਤ"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "ਸੁਣਾਓ" msgstr "ਸੁਣਾਓ"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "ਚੁੱਪ" msgstr "ਚੁੱਪ"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>ਕੱਲ੍ਹ</b>, <b>%H:%M</b>" msgstr "<b>ਕੱਲ੍ਹ</b>, <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, <b>%H:%M</b>" msgstr "<b>%A</b>, <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%d</b> <b>%B</b>,<b>%H:%M</b>" msgstr "<b>%d</b> <b>%B</b>,<b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> " msgstr "<b>%d</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> "
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s ਨੂੰ ਹੁਣ %s ਵਜੋਂ ਜਾਣਿਆ ਜਾਵੇਗਾ" msgstr "%s ਨੂੰ ਹੁਣ %s ਵਜੋਂ ਜਾਣਿਆ ਜਾਵੇਗਾ"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "%s ਲਈ ਸੱਦਾ" msgstr "%s ਲਈ ਸੱਦਾ"
@ -724,38 +724,38 @@ msgstr "%s ਲਈ ਸੱਦਾ"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s ਤੁਹਾਨੂੰ %s ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਸੱਦ ਰਿਹਾ ਹੈ" msgstr "%s ਤੁਹਾਨੂੰ %s ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਸੱਦ ਰਿਹਾ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "ਇਨਕਾਰ" msgstr "ਇਨਕਾਰ"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "ਮਨਜ਼ੂਰ" msgstr "ਮਨਜ਼ੂਰ"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "%s ਵਲੋਂ ਵਿਡੀਓ ਕਾਲ" msgstr "%s ਵਲੋਂ ਵਿਡੀਓ ਕਾਲ"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "%s ਵਲੋਂ ਕਾਲ" msgstr "%s ਵਲੋਂ ਕਾਲ"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "ਜਵਾਬ ਦਿਓ" msgstr "ਜਵਾਬ ਦਿਓ"
@ -764,110 +764,110 @@ msgstr "ਜਵਾਬ ਦਿਓ"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s ਤੁਹਾਨੂੰ %s ਭੇਜ ਰਿਹਾ/ਰਹੀ ਹੈ" msgstr "%s ਤੁਹਾਨੂੰ %s ਭੇਜ ਰਿਹਾ/ਰਹੀ ਹੈ"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "" msgstr ""
"%s ਤੁਹਾਨੂੰ ਵੇਖਣ ਦਾ ਅਧਿਕਾਰ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ ਹੈ, ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਆਨਲਾਈਨ ਹੋਵੋ" "%s ਤੁਹਾਨੂੰ ਵੇਖਣ ਦਾ ਅਧਿਕਾਰ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ ਹੈ, ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਆਨਲਾਈਨ ਹੋਵੋ"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "ਨੈੱਟਵਰਕ ਗਲਤੀ" msgstr "ਨੈੱਟਵਰਕ ਗਲਤੀ"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "ਪਰਮਾਣਕਿਤਾ ਫੇਲ੍ਹ ਹੋਈ" msgstr "ਪਰਮਾਣਕਿਤਾ ਫੇਲ੍ਹ ਹੋਈ"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਗਲਤੀ" msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਗਲਤੀ"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "ਸਰਟੀਫਿਕੇਟ ਨਹੀਂ ਦਿੱਤਾ" msgstr "ਸਰਟੀਫਿਕੇਟ ਨਹੀਂ ਦਿੱਤਾ"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "ਸਰਟੀਫਿਕੇਟ ਬੇਭਰੋਸੇਯੋਗ" msgstr "ਸਰਟੀਫਿਕੇਟ ਬੇਭਰੋਸੇਯੋਗ"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "ਸਰਟੀਫਿਕੇਟ ਦੀ ਮਿਆਦ ਪੁੱਗੀ" msgstr "ਸਰਟੀਫਿਕੇਟ ਦੀ ਮਿਆਦ ਪੁੱਗੀ"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "ਸਰਟੀਫਿਕੇਟ ਸਰਗਰਮ ਨਹੀਂ ਹੈ" msgstr "ਸਰਟੀਫਿਕੇਟ ਸਰਗਰਮ ਨਹੀਂ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "ਸਰਟੀਫਿਕੇਟ ਹੋਸਟ-ਨਾਂ ਨਹੀਂ ਮਿਲਦਾ" msgstr "ਸਰਟੀਫਿਕੇਟ ਹੋਸਟ-ਨਾਂ ਨਹੀਂ ਮਿਲਦਾ"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "ਸਰਟੀਫਿਕੇਟ ਫਿੰਗਰ-ਪਰਿੰਟ ਮਿਲਦਾ ਨਹੀਂ" msgstr "ਸਰਟੀਫਿਕੇਟ ਫਿੰਗਰ-ਪਰਿੰਟ ਮਿਲਦਾ ਨਹੀਂ"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "ਸਰਟੀਫਿਕੇਟ ਖੁਦ-ਦਸਤਖਤੀ ਹੈ" msgstr "ਸਰਟੀਫਿਕੇਟ ਖੁਦ-ਦਸਤਖਤੀ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "ਹਾਲਤ ਆਫਲਾਈਨ ਸੈੱਟ ਕੀਤੀ ਗਈ ਹੈ" msgstr "ਹਾਲਤ ਆਫਲਾਈਨ ਸੈੱਟ ਕੀਤੀ ਗਈ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ" msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "ਸਰਟੀਫਿਕੇਟ ਗਲਤ ਹੈ" msgstr "ਸਰਟੀਫਿਕੇਟ ਗਲਤ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ ਗਿਆ" msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ ਗਿਆ"
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋ ਗਿਆ" msgstr "ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋ ਗਿਆ"
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "ਇਹ ਅਕਾਊਂਟ ਪਹਿਲਾਂ ਹੀ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਹੈ" msgstr "ਇਹ ਅਕਾਊਂਟ ਪਹਿਲਾਂ ਹੀ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "ਉਸੇ ਸਰੋਤ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੁਨੈਕਸ਼ਨ ਨੂੰ ਨਵੇਂ ਕੁਨੈਕਸ਼ਨ ਨਾਲ ਬਦਲ ਦਿੱਤਾ ਗਿਆ ਹੈ" msgstr "ਉਸੇ ਸਰੋਤ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੁਨੈਕਸ਼ਨ ਨੂੰ ਨਵੇਂ ਕੁਨੈਕਸ਼ਨ ਨਾਲ ਬਦਲ ਦਿੱਤਾ ਗਿਆ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "ਅਕਾਊਂਟ ਸਰਵਰ ਉੱਤੇ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ" msgstr "ਅਕਾਊਂਟ ਸਰਵਰ ਉੱਤੇ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "ਸਰਵਰ ਇਸ ਵੇਲੇ ਐਨਾ ਰੁੱਝਿਆ ਹੋਇਆ ਹੈ ਕਿ ਕੁਨੈਕਸ਼ਨ ਸੰਭਾਲ ਨਹੀਂ ਸਕਦਾ" msgstr "ਸਰਵਰ ਇਸ ਵੇਲੇ ਐਨਾ ਰੁੱਝਿਆ ਹੋਇਆ ਹੈ ਕਿ ਕੁਨੈਕਸ਼ਨ ਸੰਭਾਲ ਨਹੀਂ ਸਕਦਾ"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "ਸਰਟੀਫਿਕੇਟ ਮਨਸੂਖ ਕੀਤਾ ਜਾ ਚੁੱਕਾ ਹੈ" msgstr "ਸਰਟੀਫਿਕੇਟ ਮਨਸੂਖ ਕੀਤਾ ਜਾ ਚੁੱਕਾ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"ਸਰਟੀਫਿਕੇਟ ਅਸੁਰੱਖਿਅਤ ਸੀਫ਼ਰ ਐਲਗੋਰਿਥਮ ਵਰਤਦਾ ਹੈ ਜਾਂ ਕਮਜ਼ੋਰ ਕ੍ਰਿਪਟੋਗਰਾਫਿਕਲ ਵਰਤਦਾ ਹੈ" "ਸਰਟੀਫਿਕੇਟ ਅਸੁਰੱਖਿਅਤ ਸੀਫ਼ਰ ਐਲਗੋਰਿਥਮ ਵਰਤਦਾ ਹੈ ਜਾਂ ਕਮਜ਼ੋਰ ਕ੍ਰਿਪਟੋਗਰਾਫਿਕਲ ਵਰਤਦਾ ਹੈ"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -876,22 +876,22 @@ msgstr ""
"ਲਾਇਬਰੇਰੀ ਵਲੋਂ ਰੱਖੀ " "ਲਾਇਬਰੇਰੀ ਵਲੋਂ ਰੱਖੀ "
"ਗਈ ਲਿਮਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ।" "ਗਈ ਲਿਮਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ।"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ" msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "%s ਨਾਲ ਕੁਨੈਕਟ ਹੋਣ ਲਈ ਅਸਮਰੱਥ" msgstr "%s ਨਾਲ ਕੁਨੈਕਟ ਹੋਣ ਲਈ ਅਸਮਰੱਥ"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "ਅਕਾਊਂਟ ਵੇਖੋ" msgstr "ਅਕਾਊਂਟ ਵੇਖੋ"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "ਅਣਜਾਣ ਕਾਰਨ" msgstr "ਅਣਜਾਣ ਕਾਰਨ"
@ -1065,9 +1065,12 @@ msgstr "ਗਲਤੀਆਂ ਵੇਖਾਓ"
msgid "Enabled" msgid "Enabled"
msgstr "ਚਾਲੂ ਹੈ" msgstr "ਚਾਲੂ ਹੈ"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../src/gvc/gvc-mixer-control.c:1830 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "ਬੰਦ ਹੈ" msgstr "ਬੰਦ ਹੈ"
@ -1091,44 +1094,48 @@ msgstr "ਸਰੋਤ ਵੇਖੋ"
msgid "Web Page" msgid "Web Page"
msgstr "ਵੈੱਬ ਪੇਜ਼" msgstr "ਵੈੱਬ ਪੇਜ਼"
#: ../js/ui/messageTray.js:1222 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "ਖੋਲ੍ਹੋ" msgstr "ਖੋਲ੍ਹੋ"
#: ../js/ui/messageTray.js:1229 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "ਹਟਾਓ" msgstr "ਹਟਾਓ"
#: ../js/ui/messageTray.js:1513 #: ../js/ui/messageTray.js:1657
msgid "Notifications"
msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ"
#: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "ਸੁਨੇਹੇ ਸਾਫ਼ ਕਰੋ" msgstr "ਸੁਨੇਹੇ ਸਾਫ਼ ਕਰੋ"
#: ../js/ui/messageTray.js:1540 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "ਸੂਚਨਾ ਸੈਟਿੰਗ" msgstr "ਸੂਚਨਾ ਸੈਟਿੰਗ"
#: ../js/ui/messageTray.js:1559 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "ਟਰੇ ਮੇਨੂ" msgstr "ਟਰੇ ਮੇਨੂ"
#: ../js/ui/messageTray.js:1775 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "ਕੋਈ ਸੁਨੇਹਾ ਨਹੀਂ" msgstr "ਕੋਈ ਸੁਨੇਹਾ ਨਹੀਂ"
#: ../js/ui/messageTray.js:1813 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "ਸੁਨੇਹਾ ਟਰੇ" msgstr "ਸੁਨੇਹਾ ਟਰੇ"
#: ../js/ui/messageTray.js:2788 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "ਸਿਸਟਮ ਜਾਣਕਾਰੀ" msgstr "ਸਿਸਟਮ ਜਾਣਕਾਰੀ"
#: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "ਅਣਜਾਣ" msgstr "ਅਣਜਾਣ"
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1151,21 +1158,21 @@ msgstr "ਸੰਖੇਪ"
msgid "Type to search…" msgid "Type to search…"
msgstr "…ਲੱਭਣ ਲਈ ਲਿਖੋ" msgstr "…ਲੱਭਣ ਲਈ ਲਿਖੋ"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "ਬਾਹਰ" msgstr "ਬਾਹਰ"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "ਸਰਗਰਮੀਆਂ" msgstr "ਸਰਗਰਮੀਆਂ"
#: ../js/ui/panel.js:904 #: ../js/ui/panel.js:900
msgid "Top Bar" msgid "Top Bar"
msgstr "ਉੱਤਲੀ ਪੱਟੀ" msgstr "ਉੱਤਲੀ ਪੱਟੀ"
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-us" msgstr "toggle-switch-us"
@ -1179,30 +1186,30 @@ msgstr "ਬੰਦ ਕਰੋ"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format #, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d ਨਵਾਂ ਸੂਚਨਾ" msgstr[0] "%d ਨਵਾਂ ਸੂਚਨਾ"
msgstr[1] "%d ਨਵੀਆਂ ਸੂਚਨਾਵਾਂ" msgstr[1] "%d ਨਵੀਆਂ ਸੂਚਨਾਵਾਂ"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "ਲਾਕ" msgstr "ਲਾਕ"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "ਗਨੋਮ ਨੂੰ ਸਕਰੀਨ ਲਾਕ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" msgstr "ਗਨੋਮ ਨੂੰ ਸਕਰੀਨ ਲਾਕ ਕਰਨ ਦੀ ਲੋੜ ਹੈ"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "ਅਣਲਾਕ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" msgstr "ਅਣਲਾਕ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "ਲਾਕ ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ ਵਲੋਂ ਪਾਬੰਦੀ ਲਗਾਈ" msgstr "ਲਾਕ ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ ਵਲੋਂ ਪਾਬੰਦੀ ਲਗਾਈ"
@ -1242,135 +1249,135 @@ msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ"
msgid "Accessibility" msgid "Accessibility"
msgstr "ਅਸੈੱਸਬਿਲਟੀ" msgstr "ਅਸੈੱਸਬਿਲਟੀ"
#: ../js/ui/status/accessibility.js:58 #: ../js/ui/status/accessibility.js:56
msgid "Zoom" msgid "Zoom"
msgstr "ਜ਼ੂਮ" msgstr "ਜ਼ੂਮ"
#: ../js/ui/status/accessibility.js:65 #: ../js/ui/status/accessibility.js:63
msgid "Screen Reader" msgid "Screen Reader"
msgstr "ਸਕਰੀਨ ਰੀਡਰ" msgstr "ਸਕਰੀਨ ਰੀਡਰ"
#: ../js/ui/status/accessibility.js:69 #: ../js/ui/status/accessibility.js:67
msgid "Screen Keyboard" msgid "Screen Keyboard"
msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ" msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ"
#: ../js/ui/status/accessibility.js:73 #: ../js/ui/status/accessibility.js:71
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "ਦਿੱਖ ਚੇਤਾਵਨੀ" msgstr "ਦਿੱਖ ਚੇਤਾਵਨੀ"
#: ../js/ui/status/accessibility.js:76 #: ../js/ui/status/accessibility.js:74
msgid "Sticky Keys" msgid "Sticky Keys"
msgstr "ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ" msgstr "ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ"
#: ../js/ui/status/accessibility.js:79 #: ../js/ui/status/accessibility.js:77
msgid "Slow Keys" msgid "Slow Keys"
msgstr "ਹੌਲੀ ਸਵਿੱਚਾਂ" msgstr "ਹੌਲੀ ਸਵਿੱਚਾਂ"
#: ../js/ui/status/accessibility.js:82 #: ../js/ui/status/accessibility.js:80
msgid "Bounce Keys" msgid "Bounce Keys"
msgstr "ਬਾਊਂਸ ਸਵਿੱਚਾਂ" msgstr "ਬਾਊਂਸ ਸਵਿੱਚਾਂ"
#: ../js/ui/status/accessibility.js:85 #: ../js/ui/status/accessibility.js:83
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "ਮਾਊਸ ਸਵਿੱਚਾਂ" msgstr "ਮਾਊਸ ਸਵਿੱਚਾਂ"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:142
msgid "High Contrast" msgid "High Contrast"
msgstr "ਵੱਧ ਕਨਟਰਾਸਟ" msgstr "ਵੱਧ ਕਨਟਰਾਸਟ"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:191
msgid "Large Text" msgid "Large Text"
msgstr "ਵੱਡੇ ਅੱਖਰ" msgstr "ਵੱਡੇ ਅੱਖਰ"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "ਬਲਿਊਟੁੱਥ" msgstr "ਬਲਿਊਟੁੱਥ"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1040 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "ਬੰਦ ਕਰੋ" msgstr "ਬੰਦ ਕਰੋ"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ" msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format #, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
msgstr[0] "%d ਕੁਨੈਕਟ ਹੋਇਆ ਜੰਤਰ" msgstr[0] "%d ਕੁਨੈਕਟ ਹੋਇਆ ਜੰਤਰ"
msgstr[1] "%d ਕੁਨੈਕਟ ਹੋਏ ਜੰਤਰ" msgstr[1] "%d ਕੁਨੈਕਟ ਹੋਏ ਜੰਤਰ"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format #, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ" msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format #, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ" msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ"
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "ਮਨਜ਼ੂਰ" msgstr "ਮਨਜ਼ੂਰ"
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "ਇਨਕਾਰ" msgstr "ਇਨਕਾਰ"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format #, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।" msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।"
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ ਮਨਜ਼ੂਰ" msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ ਮਨਜ਼ੂਰ"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ" msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "ਨਾ-ਮਨਜ਼ੂਰ" msgstr "ਨਾ-ਮਨਜ਼ੂਰ"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format #, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ" msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format #, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਾਸ-ਕੀ '%06d' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।" msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਾਸ-ਕੀ '%06d' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।"
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "ਮਿਲਦਾ ਹੈ" msgstr "ਮਿਲਦਾ ਹੈ"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ" msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format #, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ" msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।" msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।"
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "ਠੀਕ ਹੈ" msgstr "ਠੀਕ ਹੈ"
@ -1378,87 +1385,103 @@ msgstr "ਠੀਕ ਹੈ"
msgid "Brightness" msgid "Brightness"
msgstr "ਚਮਕ" msgstr "ਚਮਕ"
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<ਅਣਜਾਣ>" msgstr "<ਅਣਜਾਣ>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1055 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "ਬੰਦ" msgstr "ਬੰਦ"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:961
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "ਨੈੱਟਵਰਕ ਸੈਟਿੰਗ"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:364 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "ਬਿਨ-ਪਰਬੰਧ" msgstr "ਬਿਨ-ਪਰਬੰਧ"
#: ../js/ui/status/network.js:366 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "ਡਿਸ-ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." msgstr "ਡਿਸ-ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." msgstr "ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1109 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ" msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:383 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "ਫਿਰਮਵੇਅਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" msgstr "ਫਿਰਮਵੇਅਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:387 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "ਨਾ-ਉਪਲੱਬਧ" msgstr "ਨਾ-ਉਪਲੱਬਧ"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1111 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ" msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ"
#: ../js/ui/status/network.js:660 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
#| msgid "Mobile broadband"
msgid "Mobile Broadband Settings"
msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਸੈਟਿੰਗ"
#: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
#| msgid "hardware disabled"
msgid "Hardware Disabled"
msgstr "ਹਾਰਡਵੇਅਰ ਬੰਦ ਹੈ"
#: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ" msgstr "ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ"
#: ../js/ui/status/network.js:662 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "ਨੈੱਟਵਰਕ ਚੁਣੋ" msgstr "ਨੈੱਟਵਰਕ ਚੁਣੋ"
#: ../js/ui/status/network.js:686 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "ਕੋਈ ਨੈੱਟਵਰਕ ਨਹੀਂ" msgstr "ਕੋਈ ਨੈੱਟਵਰਕ ਨਹੀਂ"
#: ../js/ui/status/network.js:955 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "ਨੈੱਟਵਰਕ ਚੁਣੋ" msgstr "ਨੈੱਟਵਰਕ ਚੁਣੋ"
#: ../js/ui/status/network.js:1040 #: ../js/ui/status/network.js:1011
#| msgid "Settings"
msgid "Wi-Fi Settings"
msgstr "ਵਾਈ-ਫਾਈ ਸੈਟਿੰਗ"
#: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "ਚਾਲੂ ਕਰੋ" msgstr "ਚਾਲੂ ਕਰੋ"
#: ../js/ui/status/network.js:1173 #: ../js/ui/status/network.js:1122
#| msgid "Connect"
msgid "Not Connected"
msgstr "ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ"
#: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1313 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "ਨੈੱਟਵਰਕ ਮੈਨੇਜਰ" msgstr "ਨੈੱਟਵਰਕ ਮੈਨੇਜਰ"
#: ../js/ui/status/network.js:1352 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ" msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ"
#: ../js/ui/status/network.js:1353 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ ਦੀ ਐਕਟੀਵੇਸ਼ਨ ਫੇਲ੍ਹ ਹੋਈ" msgstr "ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ ਦੀ ਐਕਟੀਵੇਸ਼ਨ ਫੇਲ੍ਹ ਹੋਈ"
@ -1480,13 +1503,11 @@ msgstr "…ਅੰਦਾਜ਼ਾ ਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, javascript-format #, javascript-format
#| msgid "%d\\u2236%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d ਬਾਕੀ (%d%%)" msgstr "%d%02d ਬਾਕੀ (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, javascript-format #, javascript-format
#| msgid "%d\\u2236%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d ਪੂਰੀ ਹੋਣ ਲਈ (%d%%)" msgstr "%d%02d ਪੂਰੀ ਹੋਣ ਲਈ (%d%%)"
@ -1498,23 +1519,27 @@ msgstr "ਏਅਰਪਲੇਨ ਮੋਡ"
msgid "On" msgid "On"
msgstr "ਚਾਲੂ" msgstr "ਚਾਲੂ"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "ਨੈੱਟਵਰਕ ਸੈਟਿੰਗ"
#: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "ਯੂਜ਼ਰ ਬਦਲੋ" msgstr "ਯੂਜ਼ਰ ਬਦਲੋ"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "ਲਾਗ ਆਉਟ" msgstr "ਲਾਗ ਆਉਟ"
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "ਸਥਿਤੀ ਲਾਕ" msgstr "ਸਥਿਤੀ ਲਾਕ"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "ਸਸਪੈਂਡ" msgstr "ਸਸਪੈਂਡ"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "ਬੰਦ ਕਰੋ" msgstr "ਬੰਦ ਕਰੋ"
@ -1803,9 +1828,6 @@ msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋ
#~ msgid "Set Up a New Device…" #~ msgid "Set Up a New Device…"
#~ msgstr "…ਨਵਾਂ ਜੰਤਰ ਸੈਟਅੱਪ ਕਰੋ" #~ msgstr "…ਨਵਾਂ ਜੰਤਰ ਸੈਟਅੱਪ ਕਰੋ"
#~ msgid "hardware disabled"
#~ msgstr "ਹਾਰਡਵੇਅਰ ਬੰਦ ਹੈ"
#~ msgid "Connection" #~ msgid "Connection"
#~ msgstr "ਕੁਨੈਕਸ਼ਨ" #~ msgstr "ਕੁਨੈਕਸ਼ਨ"
@ -1843,9 +1865,6 @@ msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋ
#~ msgid "Auto Ethernet" #~ msgid "Auto Ethernet"
#~ msgstr "ਆਟੋ ਈਥਰਨੈੱਟ" #~ msgstr "ਆਟੋ ਈਥਰਨੈੱਟ"
#~ msgid "Mobile broadband"
#~ msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ"
#~ msgid "Auto broadband" #~ msgid "Auto broadband"
#~ msgstr "ਆਟੋ ਬਰਾਡਬੈਂਡ" #~ msgstr "ਆਟੋ ਬਰਾਡਬੈਂਡ"
@ -1943,9 +1962,6 @@ msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋ
#~ msgid "Idle" #~ msgid "Idle"
#~ msgstr "ਵੇਹਲਾ" #~ msgstr "ਵੇਹਲਾ"
#~ msgid "Notifications"
#~ msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ"
#~ msgid "Your chat status will be set to busy" #~ msgid "Your chat status will be set to busy"
#~ msgstr "ਤੁਹਾਡੀ ਚੈਟ ਹਾਲਤ ਰੁੱਝੇ ਵਜੋਂ ਸੈੱਟ ਕੀਤੀ ਜਾਵੇਗੀ" #~ msgstr "ਤੁਹਾਡੀ ਚੈਟ ਹਾਲਤ ਰੁੱਝੇ ਵਜੋਂ ਸੈੱਟ ਕੀਤੀ ਜਾਵੇਗੀ"

View File

@ -8,7 +8,7 @@
# Jonh Wendell <wendell@bani.com.br>, 2010. # Jonh Wendell <wendell@bani.com.br>, 2010.
# Rodrigo Padula <contato@rodrigopadula.com>, 2011. # Rodrigo Padula <contato@rodrigopadula.com>, 2011.
# Gabriel F. Vilar <cogumm@gmail.com>, 2011. # Gabriel F. Vilar <cogumm@gmail.com>, 2011.
# Adorilson Bezerra <adorilson@gmail.com>, 2011. # Adorilson Bezerra <adorilson@gmail.com>, 2011, 2014
# Djavan Fagundes <djavan@comum.org>, 2012. # Djavan Fagundes <djavan@comum.org>, 2012.
# Enrico Nicoletto <liverig@gmail.com>, 2013. # Enrico Nicoletto <liverig@gmail.com>, 2013.
# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013. # Rafael Ferreira <rafael.f.f1@gmail.com>, 2013.
@ -19,8 +19,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-10-26 13:17+0000\n" "POT-Creation-Date: 2014-01-01 09:10+0000\n"
"PO-Revision-Date: 2013-10-27 15:38-0300\n" "PO-Revision-Date: 2013-12-26 23:27-0300\n"
"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n" "Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n" "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
@ -367,15 +367,15 @@ msgstr "Frequente"
msgid "All" msgid "All"
msgstr "Todos" msgstr "Todos"
#: ../js/ui/appDisplay.js:1523 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Nova janela" msgstr "Nova janela"
#: ../js/ui/appDisplay.js:1526 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Remover dos favoritos" msgstr "Remover dos favoritos"
#: ../js/ui/appDisplay.js:1527 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Adicionar aos favoritos" msgstr "Adicionar aos favoritos"
@ -390,7 +390,7 @@ msgid "%s has been removed from your favorites."
msgstr "%s foi removido dos seus favoritos." msgstr "%s foi removido dos seus favoritos."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Configurações" msgstr "Configurações"
@ -514,7 +514,6 @@ msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Sab" msgstr "Sab"
# Comando javascript
#: ../js/ui/calendar.js:389 #: ../js/ui/calendar.js:389
msgid "calendar:MY" msgid "calendar:MY"
msgstr "calendar:MY" msgstr "calendar:MY"
@ -1149,7 +1148,7 @@ msgstr "Sem mensagens"
msgid "Message Tray" msgid "Message Tray"
msgstr "Área de notificação" msgstr "Área de notificação"
#: ../js/ui/messageTray.js:2965 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Informações do sistema" msgstr "Informações do sistema"
@ -1220,7 +1219,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d nova notificação" msgstr[0] "%d nova notificação"
msgstr[1] "%d novas notificações" msgstr[1] "%d novas notificações"
#: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Bloquear" msgstr "Bloquear"
@ -1526,12 +1525,12 @@ msgstr "Estimando…"
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, javascript-format #, javascript-format
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d restante(s) (%d%%)" msgstr "%d:%02d restante(s) (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, javascript-format #, javascript-format
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d até completamente carregada (%d%%)" msgstr "%d:%02d até completamente carregada (%d%%)"
#: ../js/ui/status/rfkill.js:43 #: ../js/ui/status/rfkill.js:43
msgid "Airplane Mode" msgid "Airplane Mode"
@ -1545,23 +1544,23 @@ msgstr "On"
msgid "Network Settings" msgid "Network Settings"
msgstr "Configurações de rede" msgstr "Configurações de rede"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Alternar usuário" msgstr "Alternar usuário"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Encerrar sessão" msgstr "Encerrar sessão"
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Bloqueio da orientação" msgstr "Bloqueio da orientação"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Suspender" msgstr "Suspender"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Desligar" msgstr "Desligar"
@ -1709,154 +1708,3 @@ msgstr "O diálogo de autenticação foi descartado pelo usuário"
#~ msgid "Show Keyboard Layout" #~ msgid "Show Keyboard Layout"
#~ msgstr "Exibir disposição de teclado" #~ msgstr "Exibir disposição de teclado"
#~ msgid "Settings Menu"
#~ msgstr "Menu de configurações"
#~ msgid "Session"
#~ msgstr "Sessão"
#~ msgid ""
#~ "Internally used to store the last IM presence explicitly set by the user. "
#~ "The value here is from the TpConnectionPresenceType enumeration."
#~ msgstr ""
#~ "Usado internamente para armazenar a última presença de MI explicitamente "
#~ "definida pelo usuário. O valor aqui é de uma enumeração "
#~ "TpConnectionPresenceType."
#~ msgid ""
#~ "Internally used to store the last session presence status for the user. "
#~ "The value here is from the GsmPresenceStatus enumeration."
#~ msgstr ""
#~ "Usado internamente para armazenar o último status de presença de sessão "
#~ "definida pelo usuário. O valor aqui é de uma enumeração GsmPresenceStatus."
#~ msgid "Click Log Out to quit these applications and log out of the system."
#~ msgstr ""
#~ "Clique em Encerrar sessão para finalizar estes aplicativos e sair do "
#~ "sistema."
#~ msgid "Logging out of the system."
#~ msgstr "Encerrando sessão do sistema."
#~ msgid "Click Power Off to quit these applications and power off the system."
#~ msgstr "Clique em Desligar para fechar os aplicativos e desligar o sistema."
#~ msgid "Powering off the system."
#~ msgstr "Desligando o sistema."
#~ msgid "Click Restart to quit these applications and restart the system."
#~ msgstr ""
#~ "Clique em Reiniciar para fechar os aplicativos e reiniciar o sistema."
#~ msgid "Restarting the system."
#~ msgstr "Reiniciando o sistema."
#~ msgid "Shutting down might cause them to lose unsaved work."
#~ msgstr ""
#~ "O desligamento pode fazer com que eles percam seus trabalhos não salvos."
#~ msgid "Screenshots"
#~ msgstr "Capturas de tela"
#~ msgid "Record a screencast"
#~ msgstr "Realizar uma gravação da tela"
#~ msgid "Keybinding to toggle the screen recorder"
#~ msgstr "Atalho de teclado para alternar o gravador de tela"
#~ msgid "Keybinding to start/stop the builtin screen recorder."
#~ msgstr "Atalho de teclado para iniciar/parar o gravador de tela embutido."
#~ msgid "Framerate used for recording screencasts."
#~ msgstr "Taxa de quadros usada para gravar screencasts."
#~ msgid ""
#~ "The framerate of the resulting screencast recordered by GNOME Shell's "
#~ "screencast recorder in frames-per-second."
#~ msgstr ""
#~ "A taxa de quadros do screencast resultante do gravador de screencasts do "
#~ "Shell do GNOME em quadros por segundo."
#~ msgid "The gstreamer pipeline used to encode the screencast"
#~ msgstr "A fila de processamento gstreamer usada para codificar o screencast"
#~ msgid ""
#~ "Sets the GStreamer pipeline used to encode recordings. It follows the "
#~ "syntax used for gst-launch. The pipeline should have an unconnected sink "
#~ "pad where the recorded video is recorded. It will normally have a "
#~ "unconnected source pad; output from that pad will be written into the "
#~ "output file. However the pipeline can also take care of its own output - "
#~ "this might be used to send the output to an icecast server via shout2send "
#~ "or similar. When unset or set to an empty value, the default pipeline "
#~ "will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 "
#~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to "
#~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the "
#~ "optimal thread count on the system."
#~ msgstr ""
#~ "Configura a fila de processamento GStreamer usada para codificar "
#~ "gravações. Ela segue a sintaxe usada para gst-launch. A fila de "
#~ "processamento deve ter um sink pad não conectado onde o vídeo gravado é "
#~ "escrito. Ele normalmente terá um source pad desconectado; saídas deste "
#~ "pad serão gravadas no arquivo de saída. Porém, a fila de processamento "
#~ "pode também tomar conta de sua própria saída - isto poderia ser usado "
#~ "para enviar a saída para um servidor icecast via shout2send ou similar. "
#~ "Quando não definido ou definido para um valor vazio, o fluxo de "
#~ "processamento padrão será usado. Atualmente é \"vp8enc min_quantizer=13 "
#~ "max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux"
#~ "\" e grava para WEBM usando o codec VP8. %T é usado como espaço reservado "
#~ "para um convidado na lista para uma ótima contagem de threads no sistema."
#~ msgid "File extension used for storing the screencast"
#~ msgstr "Extensão de arquivo usada para armazenagem do screencast"
#~ msgid ""
#~ "The filename for recorded screencasts will be a unique filename based on "
#~ "the current date, and use this extension. It should be changed when "
#~ "recording to a different container format."
#~ msgstr ""
#~ "O nome de arquivo para screencasts gravados será um nome de arquivo único "
#~ "baseado na data atual e usará esta extensão. Ele deve ser alterado ao "
#~ "gravar para um contêiner de formato diferente."
#~ msgid "Power"
#~ msgstr "Desligar"
#~ msgid "Restart"
#~ msgstr "Reiniciar"
#~ msgid "Screencast from %d %t"
#~ msgstr "Gravação de tela de %d %t"
#~ msgid "Volume, network, battery"
#~ msgstr "Volume, rede, bateria"
#~ msgid "Visibility"
#~ msgstr "Visibilidade"
#~ msgid "Send Files to Device…"
#~ msgstr "Enviar arquivos para dispositivo…"
#~ msgid "Set Up a New Device…"
#~ msgstr "Configurar um novo dispositivo…"
#~ msgid "Connection"
#~ msgstr "Conexão"
#~ msgid "Send Files…"
#~ msgstr "Enviar arquivos…"
#~ msgid "Wi-Fi"
#~ msgstr "Wi-Fi"
#~ msgid "disabled"
#~ msgstr "desabilitado"
#~ msgid "More…"
#~ msgstr "Mais…"
#~ msgid "Wired"
#~ msgstr "Cabeada"
#~ msgid "Networking is disabled"
#~ msgstr "Rede está desabilitada"

346
po/ru.po
View File

@ -16,8 +16,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-11-01 12:08+0000\n" "POT-Creation-Date: 2013-11-01 12:09+0000\n"
"PO-Revision-Date: 2013-11-01 23:32+0400\n" "PO-Revision-Date: 2013-11-01 23:30+0400\n"
"Last-Translator: Yuri Myasoedov <ymyasoedov@yandex.ru>\n" "Last-Translator: Yuri Myasoedov <ymyasoedov@yandex.ru>\n"
"Language-Team: Russian <gnome-cyr@gnome.org>\n" "Language-Team: Russian <gnome-cyr@gnome.org>\n"
"Language: ru\n" "Language: ru\n"
@ -62,7 +62,6 @@ msgid "Window management and application launching"
msgstr "Управление окнами и запуск приложений" msgstr "Управление окнами и запуск приложений"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences" msgid "GNOME Shell Extension Preferences"
msgstr "Параметры расширений GNOME Shell" msgstr "Параметры расширений GNOME Shell"
@ -277,23 +276,14 @@ msgstr "Рабочие места только на основном монит
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя" msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя"
#: ../js/extensionPrefs/main.js:127 #: ../js/extensionPrefs/main.js:189
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Ошибка загрузки диалога параметров для %s:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "Расширение"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Выберите расширение из выпадающего списка." msgstr "Выберите расширение из выпадающего списка."
#: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:357 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:726 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
@ -311,25 +301,25 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Войти" msgstr "Войти"
#: ../js/gdm/loginDialog.js:272 #: ../js/gdm/loginDialog.js:294
msgid "Choose Session" msgid "Choose Session"
msgstr "Выбрать сеанс" msgstr "Выбрать сеанс"
#: ../js/gdm/loginDialog.js:432 #: ../js/gdm/loginDialog.js:454
msgid "Not listed?" msgid "Not listed?"
msgstr "Нет в списке?" msgstr "Нет в списке?"
#: ../js/gdm/loginDialog.js:600 #: ../js/gdm/loginDialog.js:622
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(например, пользователь или %s)" msgstr "(например, пользователь или %s)"
#: ../js/gdm/loginDialog.js:605 ../js/ui/components/networkAgent.js:259 #: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277 #: ../js/ui/components/networkAgent.js:277
msgid "Username: " msgid "Username: "
msgstr "Имя пользователя: " msgstr "Имя пользователя: "
#: ../js/gdm/loginDialog.js:869 #: ../js/gdm/loginDialog.js:891
msgid "Login Window" msgid "Login Window"
msgstr "Окно входа в систему" msgstr "Окно входа в систему"
@ -358,23 +348,23 @@ msgstr "Не удалось выполнить «%s»:"
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Здесь появляются часто используемые приложения" msgstr "Здесь появляются часто используемые приложения"
#: ../js/ui/appDisplay.js:716 #: ../js/ui/appDisplay.js:712
msgid "Frequent" msgid "Frequent"
msgstr "Популярные" msgstr "Популярные"
#: ../js/ui/appDisplay.js:723 #: ../js/ui/appDisplay.js:719
msgid "All" msgid "All"
msgstr "Все" msgstr "Все"
#: ../js/ui/appDisplay.js:1528 #: ../js/ui/appDisplay.js:1523
msgid "New Window" msgid "New Window"
msgstr "Новое окно" msgstr "Новое окно"
#: ../js/ui/appDisplay.js:1531 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1526 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Удалить из избранного" msgstr "Удалить из избранного"
#: ../js/ui/appDisplay.js:1532 #: ../js/ui/appDisplay.js:1527
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Добавить в избранное" msgstr "Добавить в избранное"
@ -513,48 +503,48 @@ msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Сб" msgstr "Сб"
#: ../js/ui/calendar.js:391 #: ../js/ui/calendar.js:389
msgid "calendar:MY" msgid "calendar:MY"
msgstr "calendar:MY" msgstr "calendar:MY"
#: ../js/ui/calendar.js:449 #: ../js/ui/calendar.js:447
msgid "Previous month" msgid "Previous month"
msgstr "Предыдущий месяц" msgstr "Предыдущий месяц"
#: ../js/ui/calendar.js:459 #: ../js/ui/calendar.js:457
msgid "Next month" msgid "Next month"
msgstr "Следующий месяц" msgstr "Следующий месяц"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:755 #: ../js/ui/calendar.js:753
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Нет событий" msgstr "Нет событий"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:773 #: ../js/ui/calendar.js:771
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d" msgstr "%A, %B %d"
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:776 #: ../js/ui/calendar.js:774
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %B %d, %Y" msgstr "%A, %B %d, %Y"
#: ../js/ui/calendar.js:787 #: ../js/ui/calendar.js:785
msgid "Today" msgid "Today"
msgstr "Сегодня" msgstr "Сегодня"
#: ../js/ui/calendar.js:791 #: ../js/ui/calendar.js:789
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Завтра" msgstr "Завтра"
#: ../js/ui/calendar.js:802 #: ../js/ui/calendar.js:800
msgid "This week" msgid "This week"
msgstr "Эта неделя" msgstr "Эта неделя"
#: ../js/ui/calendar.js:810 #: ../js/ui/calendar.js:808
msgid "Next week" msgid "Next week"
msgstr "Следующая неделя" msgstr "Следующая неделя"
@ -566,16 +556,16 @@ msgstr "Внешний диск подключён"
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Внешний диск отключён" msgstr "Внешний диск отключён"
#: ../js/ui/components/autorunManager.js:296 #: ../js/ui/components/autorunManager.js:294
msgid "Removable Devices" msgid "Removable Devices"
msgstr "Съёмные устройства" msgstr "Съёмные устройства"
#: ../js/ui/components/autorunManager.js:596 #: ../js/ui/components/autorunManager.js:594
#, javascript-format #, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Открыть с помощью %s" msgstr "Открыть с помощью %s"
#: ../js/ui/components/autorunManager.js:622 #: ../js/ui/components/autorunManager.js:620
msgid "Eject" msgid "Eject"
msgstr "Извлечь" msgstr "Извлечь"
@ -588,7 +578,7 @@ msgid "Type again:"
msgstr "Введите ещё раз:" msgstr "Введите ещё раз:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:295 ../js/ui/status/network.js:729 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Соединиться" msgstr "Соединиться"
@ -697,11 +687,11 @@ msgstr "Передача файлов"
msgid "Chat" msgid "Chat"
msgstr "Чат" msgstr "Чат"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Восстановить громкость" msgstr "Восстановить громкость"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Приглушить звук" msgstr "Приглушить звук"
@ -748,32 +738,32 @@ msgid "%s is inviting you to join %s"
msgstr "%s приглашает вас присоединиться к %s" msgstr "%s приглашает вас присоединиться к %s"
#: ../js/ui/components/telepathyClient.js:1098 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1167 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1224 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Отказаться" msgstr "Отказаться"
#: ../js/ui/components/telepathyClient.js:1104 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1173 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1229 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Принять" msgstr "Принять"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1123 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Вас вызывает %s по видео" msgstr "Вас вызывает %s по видео"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1126 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Вас вызывает %s" msgstr "Вас вызывает %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Ответить" msgstr "Ответить"
@ -782,111 +772,111 @@ msgstr "Ответить"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1161 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s отправляет вам %s" msgstr "%s отправляет вам %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1190 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s хотел бы получить разрешение видеть, когда вы в сети" msgstr "%s хотел бы получить разрешение видеть, когда вы в сети"
#: ../js/ui/components/telepathyClient.js:1275 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Ошибка сети" msgstr "Ошибка сети"
#: ../js/ui/components/telepathyClient.js:1277 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Ошибка аутентификации" msgstr "Ошибка аутентификации"
#: ../js/ui/components/telepathyClient.js:1279 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Ошибка шифрования" msgstr "Ошибка шифрования"
#: ../js/ui/components/telepathyClient.js:1281 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Сертификат не предоставляется" msgstr "Сертификат не предоставляется"
#: ../js/ui/components/telepathyClient.js:1283 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Недоверенный сертификат" msgstr "Недоверенный сертификат"
#: ../js/ui/components/telepathyClient.js:1285 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Срок действия сертификата истёк" msgstr "Срок действия сертификата истёк"
#: ../js/ui/components/telepathyClient.js:1287 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Сертификат не активирован" msgstr "Сертификат не активирован"
#: ../js/ui/components/telepathyClient.js:1289 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Имя узла сертификата не совпадает" msgstr "Имя узла сертификата не совпадает"
#: ../js/ui/components/telepathyClient.js:1291 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Отпечаток сертификата не совпадает" msgstr "Отпечаток сертификата не совпадает"
#: ../js/ui/components/telepathyClient.js:1293 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Самоподписанный сертификат" msgstr "Самоподписанный сертификат"
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Установлен статус «не в сети»" msgstr "Установлен статус «не в сети»"
#: ../js/ui/components/telepathyClient.js:1297 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Шифрование недоступно" msgstr "Шифрование недоступно"
#: ../js/ui/components/telepathyClient.js:1299 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Недействительный сертификат" msgstr "Недействительный сертификат"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "В соединении отказано" msgstr "В соединении отказано"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Соединение не может быть установлено" msgstr "Соединение не может быть установлено"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Соединение потеряно" msgstr "Соединение потеряно"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Эта учётная запись уже подключена к серверу" msgstr "Эта учётная запись уже подключена к серверу"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Соединение было заменено новым, используя тот же источник" msgstr "Соединение было заменено новым, используя тот же источник"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Учётная запись уже существует на сервере" msgstr "Учётная запись уже существует на сервере"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "" msgstr ""
"Сервер в настоящее время сильно перегружен, чтобы обработать соединение" "Сервер в настоящее время сильно перегружен, чтобы обработать соединение"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Сертификат аннулирован" msgstr "Сертификат аннулирован"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Сертификат использует небезопасный алгоритм шифрования или он " "Сертификат использует небезопасный алгоритм шифрования или он "
"криптографически нестоек" "криптографически нестоек"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -894,26 +884,26 @@ msgstr ""
"Длина сертификата сервера, или глубина цепочки сертификатов сервера, " "Длина сертификата сервера, или глубина цепочки сертификатов сервера, "
"превышает пределы, установленные библиотекой криптографии" "превышает пределы, установленные библиотекой криптографии"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Внутренняя ошибка" msgstr "Внутренняя ошибка"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Не удалось подключиться к %s" msgstr "Не удалось подключиться к %s"
#: ../js/ui/components/telepathyClient.js:1336 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Показать учётную запись" msgstr "Показать учётную запись"
#: ../js/ui/components/telepathyClient.js:1368 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Неизвестная причина" msgstr "Неизвестная причина"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:95 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows" msgid "Windows"
msgstr "Окна" msgstr "Окна"
@ -944,18 +934,18 @@ msgstr "Настроить дату и время"
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A, %e %B, %Y" msgstr "%A, %e %B, %Y"
#: ../js/ui/endSessionDialog.js:64 #: ../js/ui/endSessionDialog.js:62
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Завершение сеанса пользователя %s" msgstr "Завершение сеанса пользователя %s"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:63
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Завершение сеанса" msgstr "Завершение сеанса"
#: ../js/ui/endSessionDialog.js:67 #: ../js/ui/endSessionDialog.js:65
#, javascript-format #, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
@ -965,7 +955,7 @@ msgstr[1] ""
"Сеанс пользователя %s будет автоматически завершён через %d секунды." "Сеанс пользователя %s будет автоматически завершён через %d секунды."
msgstr[2] "Сеанс пользователя %s будет автоматически завершён через %d секунд." msgstr[2] "Сеанс пользователя %s будет автоматически завершён через %d секунд."
#: ../js/ui/endSessionDialog.js:72 #: ../js/ui/endSessionDialog.js:70
#, javascript-format #, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
@ -973,17 +963,17 @@ msgstr[0] "Сеанс будет автоматически завершён ч
msgstr[1] "Сеанс будет автоматически завершён через %d секунды." msgstr[1] "Сеанс будет автоматически завершён через %d секунды."
msgstr[2] "Сеанс будет автоматически завершён через %d секунд." msgstr[2] "Сеанс будет автоматически завершён через %d секунд."
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:75
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Завершить сеанс" msgstr "Завершить сеанс"
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:81
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Выключение" msgstr "Выключение"
#: ../js/ui/endSessionDialog.js:85 #: ../js/ui/endSessionDialog.js:83
#, javascript-format #, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
@ -991,22 +981,22 @@ msgstr[0] "Система будет автоматически выключен
msgstr[1] "Система будет автоматически выключена через %d секунды." msgstr[1] "Система будет автоматически выключена через %d секунды."
msgstr[2] "Система будет автоматически выключена через %d секунд." msgstr[2] "Система будет автоматически выключена через %d секунд."
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:106 #: ../js/ui/endSessionDialog.js:88 ../js/ui/endSessionDialog.js:104
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Перезапустить" msgstr "Перезапустить"
#: ../js/ui/endSessionDialog.js:92 #: ../js/ui/endSessionDialog.js:90
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Выключить" msgstr "Выключить"
#: ../js/ui/endSessionDialog.js:99 #: ../js/ui/endSessionDialog.js:97
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Перезапуск" msgstr "Перезапуск"
#: ../js/ui/endSessionDialog.js:101 #: ../js/ui/endSessionDialog.js:99
#, javascript-format #, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
@ -1014,12 +1004,12 @@ msgstr[0] "Система будет автоматически перезапу
msgstr[1] "Система будет автоматически перезапущена через %d секунды." msgstr[1] "Система будет автоматически перезапущена через %d секунды."
msgstr[2] "Система будет автоматически перезапущена через %d секунд." msgstr[2] "Система будет автоматически перезапущена через %d секунд."
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:112
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Перезапуск и установка обновлений" msgstr "Перезапуск и установка обновлений"
#: ../js/ui/endSessionDialog.js:116 #: ../js/ui/endSessionDialog.js:114
#, javascript-format #, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
@ -1031,27 +1021,27 @@ msgstr[1] ""
msgstr[2] "" msgstr[2] ""
"Система автоматически перезапустится и установит обновления через %d секунд." "Система автоматически перезапустится и установит обновления через %d секунд."
#: ../js/ui/endSessionDialog.js:121 #: ../js/ui/endSessionDialog.js:119
msgctxt "button" msgctxt "button"
msgid "Restart & Install" msgid "Restart & Install"
msgstr "Перезапустить и установить" msgstr "Перезапустить и установить"
#: ../js/ui/endSessionDialog.js:275 #: ../js/ui/endSessionDialog.js:271
msgid "Some applications are busy or have unsaved work." msgid "Some applications are busy or have unsaved work."
msgstr "Некоторые приложения заняты или результаты их работы не сохранены." msgstr "Некоторые приложения заняты или результаты их работы не сохранены."
#: ../js/ui/endSessionDialog.js:282 #: ../js/ui/endSessionDialog.js:277
msgid "Other users are logged in." msgid "Other users are logged in."
msgstr "В системе имеются открытые сеансы других пользователей." msgstr "В системе имеются открытые сеансы других пользователей."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:485 #: ../js/ui/endSessionDialog.js:479
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (удалённый)" msgstr "%s (удалённый)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:488 #: ../js/ui/endSessionDialog.js:482
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (консоль)" msgstr "%s (консоль)"
@ -1065,29 +1055,29 @@ msgstr "Установить"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Загрузить и установить расширение «%s» с extensions.gnome.org?" msgstr "Загрузить и установить расширение «%s» с extensions.gnome.org?"
#: ../js/ui/keyboard.js:621 ../js/ui/status/keyboard.js:335 #: ../js/ui/keyboard.js:619
msgid "Keyboard" msgid "Keyboard"
msgstr "Клавиатура" msgstr "Клавиатура"
#: ../js/ui/lookingGlass.js:640 #: ../js/ui/lookingGlass.js:689
msgid "No extensions installed" msgid "No extensions installed"
msgstr "Расширения не установлены" msgstr "Расширения не установлены"
#. Translators: argument is an extension UUID. */ #. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:694 #: ../js/ui/lookingGlass.js:743
#, javascript-format #, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s не сообщал о каких-либо ошибках." msgstr "%s не сообщал о каких-либо ошибках."
#: ../js/ui/lookingGlass.js:700 #: ../js/ui/lookingGlass.js:749
msgid "Hide Errors" msgid "Hide Errors"
msgstr "Скрыть ошибки" msgstr "Скрыть ошибки"
#: ../js/ui/lookingGlass.js:704 ../js/ui/lookingGlass.js:764 #: ../js/ui/lookingGlass.js:753 ../js/ui/lookingGlass.js:813
msgid "Show Errors" msgid "Show Errors"
msgstr "Показать ошибки" msgstr "Показать ошибки"
#: ../js/ui/lookingGlass.js:713 #: ../js/ui/lookingGlass.js:762
msgid "Enabled" msgid "Enabled"
msgstr "Включено" msgstr "Включено"
@ -1095,73 +1085,73 @@ msgstr "Включено"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/network.js:472 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Выключено" msgstr "Выключено"
#: ../js/ui/lookingGlass.js:718 #: ../js/ui/lookingGlass.js:767
msgid "Error" msgid "Error"
msgstr "Ошибка" msgstr "Ошибка"
#: ../js/ui/lookingGlass.js:720 #: ../js/ui/lookingGlass.js:769
msgid "Out of date" msgid "Out of date"
msgstr "Устарело" msgstr "Устарело"
#: ../js/ui/lookingGlass.js:722 #: ../js/ui/lookingGlass.js:771
msgid "Downloading" msgid "Downloading"
msgstr "Загрузка" msgstr "Загрузка"
#: ../js/ui/lookingGlass.js:746 #: ../js/ui/lookingGlass.js:795
msgid "View Source" msgid "View Source"
msgstr "Показать код" msgstr "Показать код"
#: ../js/ui/lookingGlass.js:755 #: ../js/ui/lookingGlass.js:804
msgid "Web Page" msgid "Web Page"
msgstr "Веб-страница" msgstr "Веб-страница"
#: ../js/ui/messageTray.js:1310 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Открыть" msgstr "Открыть"
#: ../js/ui/messageTray.js:1317 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Удалить" msgstr "Удалить"
#: ../js/ui/messageTray.js:1618 #: ../js/ui/messageTray.js:1657
msgid "Notifications" msgid "Notifications"
msgstr "Уведомления" msgstr "Уведомления"
#: ../js/ui/messageTray.js:1625 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Очистить список сообщений" msgstr "Очистить список сообщений"
#: ../js/ui/messageTray.js:1644 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Параметры уведомлений" msgstr "Параметры уведомлений"
#: ../js/ui/messageTray.js:1697 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Меню панели" msgstr "Меню панели"
#: ../js/ui/messageTray.js:1913 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Нет сообщений" msgstr "Нет сообщений"
#: ../js/ui/messageTray.js:1951 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Панель сообщений" msgstr "Панель сообщений"
#: ../js/ui/messageTray.js:2929 #: ../js/ui/messageTray.js:2965
msgid "System Information" msgid "System Information"
msgstr "Системная информация" msgstr "Системная информация"
#: ../js/ui/notificationDaemon.js:539 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Неизвестно" msgstr "Неизвестно"
#: ../js/ui/overviewControls.js:486 ../js/ui/screenShield.js:153 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1173,7 +1163,7 @@ msgstr[2] "%d новых сообщений"
msgid "Undo" msgid "Undo"
msgstr "Отменить" msgstr "Отменить"
#: ../js/ui/overview.js:125 #: ../js/ui/overview.js:127
msgid "Overview" msgid "Overview"
msgstr "Обзор" msgstr "Обзор"
@ -1181,7 +1171,7 @@ msgstr "Обзор"
#. in the search entry when no search is #. in the search entry when no search is
#. active; it should not exceed ~30 #. active; it should not exceed ~30
#. characters. */ #. characters. */
#: ../js/ui/overview.js:256 #: ../js/ui/overview.js:258
msgid "Type to search…" msgid "Type to search…"
msgstr "Найти…" msgstr "Найти…"
@ -1241,11 +1231,11 @@ msgstr "Не удалось заблокировать"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Блокировке помешало приложение" msgstr "Блокировке помешало приложение"
#: ../js/ui/search.js:607 #: ../js/ui/searchDisplay.js:448
msgid "Searching…" msgid "Searching…"
msgstr "Поиск…" msgstr "Поиск…"
#: ../js/ui/search.js:650 #: ../js/ui/searchDisplay.js:492
msgid "No results." msgid "No results."
msgstr "Нет результатов." msgstr "Нет результатов."
@ -1324,7 +1314,7 @@ msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1083 ../js/ui/status/rfkill.js:48 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Выключить" msgstr "Выключить"
@ -1410,20 +1400,16 @@ msgstr "Введите PIN-код указанный на устройстве."
msgid "OK" msgid "OK"
msgstr "OK" msgstr "OK"
#: ../js/ui/status/brightness.js:44 #: ../js/ui/status/brightness.js:42
msgid "Brightness" msgid "Brightness"
msgstr "Яркость" msgstr "Яркость"
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Показать раскладку клавиатуры"
#: ../js/ui/status/network.js:71 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<неизвестно>" msgstr "<неизвестно>"
#: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Выключена" msgstr "Выключена"
@ -1437,12 +1423,12 @@ msgstr "не управляется"
msgid "disconnecting..." msgid "disconnecting..."
msgstr "отключение…" msgstr "отключение…"
#: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1158 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "подключение…" msgstr "подключение…"
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1161 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "требуется подтверждение подлинности" msgstr "требуется подтверждение подлинности"
@ -1458,7 +1444,7 @@ msgstr "отсутствует прошивка"
msgid "unavailable" msgid "unavailable"
msgstr "недоступное" msgstr "недоступное"
#: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "сбой подключения" msgstr "сбой подключения"
@ -1466,93 +1452,89 @@ msgstr "сбой подключения"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Параметры широкополосной мобильной связи" msgstr "Параметры широкополосной мобильной связи"
#: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1102 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Оборудование выключено" msgstr "Оборудование выключено"
#: ../js/ui/status/network.js:694 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Сети Wi-Fi" msgstr "Сети Wi-Fi"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Выберите сеть" msgstr "Выберите сеть"
#: ../js/ui/status/network.js:720 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Сети отсутствуют" msgstr "Сети отсутствуют"
#: ../js/ui/status/network.js:989 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Выбрать сеть" msgstr "Выбрать сеть"
#: ../js/ui/status/network.js:995 #: ../js/ui/status/network.js:1011
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Параметры Wi-Fi" msgstr "Параметры Wi-Fi"
#: ../js/ui/status/network.js:1083 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Включить" msgstr "Включить"
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1122
msgid "Not Connected" msgid "Not Connected"
msgstr "Не подключено" msgstr "Не подключено"
#: ../js/ui/status/network.js:1226 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1366 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Диспетчер сети" msgstr "Диспетчер сети"
#: ../js/ui/status/network.js:1405 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Сбой подключения" msgstr "Сбой подключения"
#: ../js/ui/status/network.js:1406 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Не удалось активировать сетевое подключение" msgstr "Не удалось активировать сетевое подключение"
#: ../js/ui/status/power.js:49 #: ../js/ui/status/power.js:46
msgid "Battery"
msgstr "Батарея"
#: ../js/ui/status/power.js:47
msgid "Power Settings" msgid "Power Settings"
msgstr "Параметры электропитания" msgstr "Параметры электропитания"
#: ../js/ui/status/power.js:65 #: ../js/ui/status/power.js:63
msgid "Fully Charged" msgid "Fully Charged"
msgstr "Полностью заряжена" msgstr "Полностью заряжена"
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 #: ../js/ui/status/power.js:69 ../js/ui/status/power.js:86
msgid "Estimating…" msgid "Estimating…"
msgstr "Выполняется подсчёт…" msgstr "Выполняется подсчёт…"
#: ../js/ui/status/power.js:86 #: ../js/ui/status/power.js:77
#, javascript-format #, javascript-format
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "Осталось %d%02d (%d%%)" msgstr "Осталось %d%02d (%d%%)"
#: ../js/ui/status/power.js:91 #: ../js/ui/status/power.js:82
#, javascript-format #, javascript-format
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "До полного заряда %d%02d (%d%%)" msgstr "До полного заряда %d%02d (%d%%)"
#: ../js/ui/status/power.js:119 #: ../js/ui/status/rfkill.js:43
msgid "UPS"
msgstr "ИБП"
#: ../js/ui/status/power.js:121
msgid "Battery"
msgstr "Батарея"
#: ../js/ui/status/rfkill.js:45
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Режим перелёта" msgstr "Режим перелёта"
#: ../js/ui/status/rfkill.js:47 #: ../js/ui/status/rfkill.js:45
msgid "On" msgid "On"
msgstr "Включено" msgstr "Включено"
#: ../js/ui/status/rfkill.js:51 #: ../js/ui/status/rfkill.js:49
msgid "Network Settings" msgid "Network Settings"
msgstr "Настроить сеть" msgstr "Настроить сеть"
@ -1596,14 +1578,28 @@ msgstr "Войти от имени другого пользователя"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Разблокировать окно" msgstr "Разблокировать окно"
#: ../js/ui/viewSelector.js:99 #: ../js/ui/viewSelector.js:104
msgid "Applications" msgid "Applications"
msgstr "Приложения" msgstr "Приложения"
#: ../js/ui/viewSelector.js:103 #: ../js/ui/viewSelector.js:108
msgid "Search" msgid "Search"
msgstr "Поиск" msgstr "Поиск"
#: ../js/ui/wanda.js:77
#, javascript-format
msgid ""
"Sorry, no wisdom for you today:\n"
"%s"
msgstr ""
"Извините, на сегодня нет никаких советов:\n"
"%s"
#: ../js/ui/wanda.js:81
#, javascript-format
msgid "%s the Oracle says"
msgstr "Оракул говорит: «%s»"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format #, javascript-format
msgid "'%s' is ready" msgid "'%s' is ready"
@ -1660,24 +1656,24 @@ msgstr[2] "%u входов"
msgid "System Sounds" msgid "System Sounds"
msgstr "Системные звуки" msgstr "Системные звуки"
#: ../src/main.c:351 #: ../src/main.c:353
msgid "Print version" msgid "Print version"
msgstr "Показать номер версии" msgstr "Показать номер версии"
#: ../src/main.c:357 #: ../src/main.c:359
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Режим, используемый GDM для окна входа в систему" msgstr "Режим, используемый GDM для окна входа в систему"
#: ../src/main.c:363 #: ../src/main.c:365
msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "" msgstr ""
"Использовать для экрана входа в систему определённый режим, например «gdm»" "Использовать для экрана входа в систему определённый режим, например «gdm»"
#: ../src/main.c:369 #: ../src/main.c:371
msgid "List possible modes" msgid "List possible modes"
msgstr "Список возможных режимов" msgstr "Список возможных режимов"
#: ../src/shell-app.c:639 #: ../src/shell-app.c:644
#, c-format #, c-format
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "Не удалось запустить «%s»" msgstr "Не удалось запустить «%s»"
@ -1693,13 +1689,3 @@ msgstr "Пароль не может быть пустым"
#: ../src/shell-polkit-authentication-agent.c:343 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация отклонена пользователем" msgstr "Аутентификация отклонена пользователем"
#~ msgid ""
#~ "Sorry, no wisdom for you today:\n"
#~ "%s"
#~ msgstr ""
#~ "Извините, на сегодня нет никаких советов:\n"
#~ "%s"
#~ msgid "%s the Oracle says"
#~ msgstr "Оракул говорит: «%s»"

337
po/sk.po
View File

@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-29 10:26+0000\n" "POT-Creation-Date: 2013-12-07 09:13+0000\n"
"PO-Revision-Date: 2013-09-29 17:38+0100\n" "PO-Revision-Date: 2013-10-21 10:59+0100\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n" "Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n" "Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
"Language: sk\n" "Language: sk\n"
@ -291,23 +291,23 @@ msgstr ""
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Použitím ponuky vyberte rozšírenie na nastavenie" msgstr "Použitím ponuky vyberte rozšírenie na nastavenie"
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:692 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Zrušiť" msgstr "Zrušiť"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Ďalej" msgstr "Ďalej"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Odomknúť" msgstr "Odomknúť"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Prihlásiť sa" msgstr "Prihlásiť sa"
@ -336,23 +336,23 @@ msgstr "Používateľské meno: "
msgid "Login Window" msgid "Login Window"
msgstr "Prihlasovacie okno" msgstr "Prihlasovacie okno"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "Chyba pri overovaní totožnosti" msgstr "Chyba pri overovaní totožnosti"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(alebo prejdite prstom)" msgstr "(alebo prejdite prstom)"
#: ../js/misc/util.js:98 #: ../js/misc/util.js:115
msgid "Command not found" msgid "Command not found"
msgstr "Príkaz nebol nájdený" msgstr "Príkaz nebol nájdený"
#: ../js/misc/util.js:131 #: ../js/misc/util.js:148
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Nepodarilo sa analyzovať príkaz:" msgstr "Nepodarilo sa analyzovať príkaz:"
#: ../js/misc/util.js:139 #: ../js/misc/util.js:156
#, javascript-format #, javascript-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Spustenie „%s“ zlyhalo:" msgstr "Spustenie „%s“ zlyhalo:"
@ -369,15 +369,15 @@ msgstr "Často používané"
msgid "All" msgid "All"
msgstr "Všetky" msgstr "Všetky"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Nové okno" msgstr "Nové okno"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstrániť z obľúbených" msgstr "Odstrániť z obľúbených"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Pridať do obľúbených" msgstr "Pridať do obľúbených"
@ -391,8 +391,8 @@ msgstr "Program %s bol pridaný medzi obľúbené."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Program %s bol odstránený z obľúbených." msgstr "Program %s bol odstránený z obľúbených."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Nastavenia" msgstr "Nastavenia"
@ -589,16 +589,16 @@ msgstr "Otvoriť pomocou programu %s"
msgid "Eject" msgid "Eject"
msgstr "Vysunúť" msgstr "Vysunúť"
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280 #: ../js/ui/components/keyring.js:89 ../js/ui/components/polkitAgent.js:280
msgid "Password:" msgid "Password:"
msgstr "Heslo:" msgstr "Heslo:"
#: ../js/ui/components/keyring.js:110 #: ../js/ui/components/keyring.js:108
msgid "Type again:" msgid "Type again:"
msgstr "Zadajte znovu:" msgstr "Zadajte znovu:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:695 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Pripojiť" msgstr "Pripojiť"
@ -657,7 +657,7 @@ msgstr "Požaduje sa kód PIN"
#: ../js/ui/components/networkAgent.js:328 #: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Pre zariadenie mobilnej siete je potrebný kód PIN" msgstr "Pre zariadenie mobilnej širokopásmovej siete je potrebný kód PIN"
#: ../js/ui/components/networkAgent.js:329 #: ../js/ui/components/networkAgent.js:329
msgid "PIN: " msgid "PIN: "
@ -665,7 +665,7 @@ msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:335 #: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Heslo k mobilnej sieti" msgstr "Heslo k mobilnej širokopásmovej sieti"
#: ../js/ui/components/networkAgent.js:336 #: ../js/ui/components/networkAgent.js:336
#, javascript-format #, javascript-format
@ -693,60 +693,60 @@ msgstr "Overiť totožnosť"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Prepáčte, ale nezabralo to. Skúste to, prosím, znova." msgstr "Prepáčte, ale nezabralo to. Skúste to, prosím, znova."
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "Pozvánka" msgstr "Pozvánka"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "Hovor" msgstr "Hovor"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "Prenos súborov" msgstr "Prenos súborov"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "Rozhovor" msgstr "Rozhovor"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Obnoviť zvuk" msgstr "Obnoviť zvuk"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Stlmiť" msgstr "Stlmiť"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Včera</b> o <b>%H:%M</b>" msgstr "<b>Včera</b> o <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "v <b>%A</b> o <b>%H:%M</b>" msgstr "v <b>%A</b> o <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%e.</b> <b>%B</b> o <b>%H:%M</b>" msgstr "<b>%e.</b> <b>%B</b> o <b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%e.</b> <b>%B</b> <b>%Y</b> o <b>%H:%M</b>" msgstr "<b>%e.</b> <b>%B</b> <b>%Y</b> o <b>%H:%M</b>"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "Kontakt %s odteraz vystupuje ako %s" msgstr "Kontakt %s odteraz vystupuje ako %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Pozvánka do %s" msgstr "Pozvánka do %s"
@ -754,38 +754,38 @@ msgstr "Pozvánka do %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "Kontakt %s vás pozýva aby ste sa pridali do %s" msgstr "Kontakt %s vás pozýva aby ste sa pridali do %s"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Odmietnuť" msgstr "Odmietnuť"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Prijať" msgstr "Prijať"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Videohovor od kontaktu %s" msgstr "Videohovor od kontaktu %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Hovor od kontaktu %s" msgstr "Hovor od kontaktu %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Prijať hovor" msgstr "Prijať hovor"
@ -794,110 +794,110 @@ msgstr "Prijať hovor"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "Kontakt %s vám posiela %s" msgstr "Kontakt %s vám posiela %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "Kontakt %s by chcel získať oprávnenie vidieť, kedy ste pripojený" msgstr "Kontakt %s by chcel získať oprávnenie vidieť, kedy ste pripojený"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Chyba siete" msgstr "Chyba siete"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Overenie totožnosti zlyhalo" msgstr "Overenie totožnosti zlyhalo"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Chyba šifrovania" msgstr "Chyba šifrovania"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Neposkytnutý certifikát" msgstr "Neposkytnutý certifikát"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Nedôveryhodný certifikát" msgstr "Nedôveryhodný certifikát"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Certifikát s ukončenou platnosťou" msgstr "Certifikát s ukončenou platnosťou"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Neaktivovaný certifikát" msgstr "Neaktivovaný certifikát"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Certifikát s nesúhlasným názvom hostiteľa" msgstr "Certifikát s nesúhlasným názvom hostiteľa"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Certifikát s nesúhlasným odtlačkom" msgstr "Certifikát s nesúhlasným odtlačkom"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Sebou podpísaný certifikát" msgstr "Sebou podpísaný certifikát"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Stav je nastavený na odhlásený" msgstr "Stav je nastavený na odhlásený"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Šifrovanie nie je dostupné" msgstr "Šifrovanie nie je dostupné"
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Certifikát je neplatný" msgstr "Certifikát je neplatný"
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Pripojenie bolo odmietnuté" msgstr "Pripojenie bolo odmietnuté"
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Nedá sa nadviazať spojenie" msgstr "Nedá sa nadviazať spojenie"
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Spojenie sa stratilo" msgstr "Spojenie sa stratilo"
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Tento účet je už pripojený k serveru" msgstr "Tento účet je už pripojený k serveru"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Pripojenie bolo nahradené novým, ktoré používa rovnaký zdroj" msgstr "Pripojenie bolo nahradené novým, ktoré používa rovnaký zdroj"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Účet na serveri už existuje" msgstr "Účet na serveri už existuje"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Server je momentálne príliš zaneprázdnený na zvládnutie pripojenia" msgstr "Server je momentálne príliš zaneprázdnený na zvládnutie pripojenia"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Certifikát bol zrušený" msgstr "Certifikát bol zrušený"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Šifrovací algoritmus používaný certifikátom nie je bezpečný alebo je " "Šifrovací algoritmus používaný certifikátom nie je bezpečný alebo je "
"kryptograficky slabý" "kryptograficky slabý"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -905,22 +905,22 @@ msgstr ""
"Dĺžka certifikátu servera, alebo hĺbka reťazca certifikátu servera presahuje " "Dĺžka certifikátu servera, alebo hĺbka reťazca certifikátu servera presahuje "
"limit stanovený kryptografickou knižnicou." "limit stanovený kryptografickou knižnicou."
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Vnútorná chyba" msgstr "Vnútorná chyba"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Nepodarilo sa pripojiť účet %s" msgstr "Nepodarilo sa pripojiť účet %s"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Zobraziť účet" msgstr "Zobraziť účet"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznámy dôvod" msgstr "Neznámy dôvod"
@ -1101,9 +1101,12 @@ msgstr "Zobraziť chyby"
msgid "Enabled" msgid "Enabled"
msgstr "Povolené" msgstr "Povolené"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../src/gvc/gvc-mixer-control.c:1830 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Zakázané" msgstr "Zakázané"
@ -1128,47 +1131,51 @@ msgstr "Zobraziť zdroj"
msgid "Web Page" msgid "Web Page"
msgstr "Webová stránka" msgstr "Webová stránka"
#: ../js/ui/messageTray.js:1222 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Otvoriť" msgstr "Otvoriť"
#: ../js/ui/messageTray.js:1229 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Odstrániť" msgstr "Odstrániť"
#: ../js/ui/messageTray.js:1513 #: ../js/ui/messageTray.js:1657
msgid "Notifications"
msgstr "Oznámenia"
#: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Vymazať správy" msgstr "Vymazať správy"
#: ../js/ui/messageTray.js:1540 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Nastavenia oznámení" msgstr "Nastavenia oznámení"
# MČ" zd sa mi to čudné. tuším som videl preklady „oznamovacia oblasť“, čo mi viac sedí. Toto je trošku akoby zavádzajúce, ale možno to s okolím ozrejmuje výsledok. Možno by som tam ponechal len „ponuka“ ak akolie jednoznačne naznačuje, že ide o „lištu správ“ # MČ" zd sa mi to čudné. tuším som videl preklady „oznamovacia oblasť“, čo mi viac sedí. Toto je trošku akoby zavádzajúce, ale možno to s okolím ozrejmuje výsledok. Možno by som tam ponechal len „ponuka“ ak akolie jednoznačne naznačuje, že ide o „lištu správ“
#: ../js/ui/messageTray.js:1559 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Ponuka v lište" msgstr "Ponuka v lište"
#: ../js/ui/messageTray.js:1775 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Žiadne správy" msgstr "Žiadne správy"
# DK: zvazoval som pouzit "Panel správ" # DK: zvazoval som pouzit "Panel správ"
# neviem co bude vhodnejsie ako preklad "tray" # neviem co bude vhodnejsie ako preklad "tray"
#: ../js/ui/messageTray.js:1813 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Lišta správ" msgstr "Lišta správ"
#: ../js/ui/messageTray.js:2788 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Informácie o systéme" msgstr "Informácie o systéme"
#: ../js/ui/notificationDaemon.js:629 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Neznámy" msgstr "Neznámy"
#: ../js/ui/overviewControls.js:491 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1193,21 +1200,21 @@ msgstr "Prehľad"
msgid "Type to search…" msgid "Type to search…"
msgstr "Zadajte text na vyhľadanie…" msgstr "Zadajte text na vyhľadanie…"
#: ../js/ui/panel.js:518 #: ../js/ui/panel.js:516
msgid "Quit" msgid "Quit"
msgstr "Ukončiť" msgstr "Ukončiť"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:570 #: ../js/ui/panel.js:568
msgid "Activities" msgid "Activities"
msgstr "Aktivity" msgstr "Aktivity"
#: ../js/ui/panel.js:904 #: ../js/ui/panel.js:900
msgid "Top Bar" msgid "Top Bar"
msgstr "Horná lišta" msgstr "Horná lišta"
#: ../js/ui/popupMenu.js:233 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -1224,11 +1231,11 @@ msgstr "Zavrieť"
# v ostatnych retazcoch je pouzite %e, tak to bude asi OK # v ostatnych retazcoch je pouzite %e, tak to bude asi OK
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %e. %B" msgstr "%A, %e. %B"
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format #, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
@ -1236,19 +1243,19 @@ msgstr[0] "%d nových oznámení"
msgstr[1] "%d nové oznámenie" msgstr[1] "%d nové oznámenie"
msgstr[2] "%d nové oznámenia" msgstr[2] "%d nové oznámenia"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Uzamknúť" msgstr "Uzamknúť"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Prostredie GNOME vyžaduje uzamknutie obrazovky" msgstr "Prostredie GNOME vyžaduje uzamknutie obrazovky"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Nepodarilo sa uzamknúť obrazovku" msgstr "Nepodarilo sa uzamknúť obrazovku"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Uzamknutie bolo zablokované aplikáciou" msgstr "Uzamknutie bolo zablokované aplikáciou"
@ -1288,65 +1295,65 @@ msgstr "Zapamätať heslo"
msgid "Accessibility" msgid "Accessibility"
msgstr "Zjednodušenie ovládania" msgstr "Zjednodušenie ovládania"
#: ../js/ui/status/accessibility.js:58 #: ../js/ui/status/accessibility.js:56
msgid "Zoom" msgid "Zoom"
msgstr "Lupa" msgstr "Lupa"
#: ../js/ui/status/accessibility.js:65 #: ../js/ui/status/accessibility.js:63
msgid "Screen Reader" msgid "Screen Reader"
msgstr "Čítačka obrazovky" msgstr "Čítačka obrazovky"
#: ../js/ui/status/accessibility.js:69 #: ../js/ui/status/accessibility.js:67
msgid "Screen Keyboard" msgid "Screen Keyboard"
msgstr "Klávesnica na obrazovke" msgstr "Klávesnica na obrazovke"
#: ../js/ui/status/accessibility.js:73 #: ../js/ui/status/accessibility.js:71
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "Vizuálne varovania" msgstr "Vizuálne varovania"
# z gnome control center # z gnome control center
#: ../js/ui/status/accessibility.js:76 #: ../js/ui/status/accessibility.js:74
msgid "Sticky Keys" msgid "Sticky Keys"
msgstr "Lepkavé klávesy" msgstr "Lepkavé klávesy"
# z gnome control center # z gnome control center
#: ../js/ui/status/accessibility.js:79 #: ../js/ui/status/accessibility.js:77
msgid "Slow Keys" msgid "Slow Keys"
msgstr "Pomalé klávesy" msgstr "Pomalé klávesy"
# z gnome control center # z gnome control center
#: ../js/ui/status/accessibility.js:82 #: ../js/ui/status/accessibility.js:80
msgid "Bounce Keys" msgid "Bounce Keys"
msgstr "Poskakujúce klávesy" msgstr "Poskakujúce klávesy"
#: ../js/ui/status/accessibility.js:85 #: ../js/ui/status/accessibility.js:83
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Myš klávesmi" msgstr "Myš klávesmi"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:142
msgid "High Contrast" msgid "High Contrast"
msgstr "Vysoký kontrast" msgstr "Vysoký kontrast"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:191
msgid "Large Text" msgid "Large Text"
msgstr "Veľký text" msgstr "Veľký text"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1040 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Vypnúť" msgstr "Vypnúť"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Nastavenia Bluetooth" msgstr "Nastavenia Bluetooth"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format #, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
@ -1354,75 +1361,75 @@ msgstr[0] "%d pripojených zariadení"
msgstr[1] "%d pripojené zariadenie" msgstr[1] "%d pripojené zariadenie"
msgstr[2] "%d pripojené zariadenia" msgstr[2] "%d pripojené zariadenia"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format #, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Žiadosť o potvrdenie prístupu od %s" msgstr "Žiadosť o potvrdenie prístupu od %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format #, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Zariadenie %s sa chce spárovať s týmto počítačom" msgstr "Zariadenie %s sa chce spárovať s týmto počítačom"
# button # button
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "Povoliť" msgstr "Povoliť"
# button # button
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "Zakázať" msgstr "Zakázať"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format #, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Zariadenie %s chce pristupovať k službe „%s“" msgstr "Zariadenie %s chce pristupovať k službe „%s“"
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "Vždy povoliť prístup" msgstr "Vždy povoliť prístup"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Povoliť iba teraz" msgstr "Povoliť iba teraz"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "Odmietnuť" msgstr "Odmietnuť"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format #, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Potvrdenie spárovania pre %s" msgstr "Potvrdenie spárovania pre %s"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format #, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Prosím, potvrďte, či sa heslo „%06d“ zhoduje s tým na zariadení." msgstr "Prosím, potvrďte, či sa heslo „%06d“ zhoduje s tým na zariadení."
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "Zhoduje sa" msgstr "Zhoduje sa"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "Nezhoduje sa" msgstr "Nezhoduje sa"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format #, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Požiadavka na spárovanie pre %s" msgstr "Požiadavka na spárovanie pre %s"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Zadajte PIN, ktoré je uvedené na zariadení." msgstr "Zadajte PIN, ktoré je uvedené na zariadení."
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "Ok" msgstr "Ok"
@ -1431,89 +1438,101 @@ msgid "Brightness"
msgstr "Jas" msgstr "Jas"
# zariadenie # zariadenie
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<neznáme>" msgstr "<neznáme>"
# DK: pripojenie, zariadenie # DK: pripojenie, zariadenie
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1055 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Vypnuté" msgstr "Vypnuté"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:961
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Nastavenia siete"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:364 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "nespravované" msgstr "nespravované"
#: ../js/ui/status/network.js:366 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "odpája sa…" msgstr "odpája sa…"
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "pripája sa…" msgstr "pripája sa…"
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1109 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "požaduje sa overenie totožnosti" msgstr "požaduje sa overenie totožnosti"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:383 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "chýba firmvér" msgstr "chýba firmvér"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:387 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "nedostupné" msgstr "nedostupné"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1111 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "pripojenie zlyhalo" msgstr "pripojenie zlyhalo"
#: ../js/ui/status/network.js:660 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
msgid "Mobile Broadband Settings"
msgstr "Nastavenia mobilnej širokopásmovej siete"
#: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
msgid "Hardware Disabled"
msgstr "Hardvér zakázaný"
#: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Siete Wi-Fi" msgstr "Siete Wi-Fi"
#: ../js/ui/status/network.js:662 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Vyberte sieť" msgstr "Vyberte sieť"
#: ../js/ui/status/network.js:686 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Žiadne siete" msgstr "Žiadne siete"
# item menu # item menu
#: ../js/ui/status/network.js:955 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Vybrať sieť" msgstr "Vybrať sieť"
#: ../js/ui/status/network.js:1040 #: ../js/ui/status/network.js:1011
msgid "Wi-Fi Settings"
msgstr "Nastavenia Wi-Fi"
#: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Zapnúť" msgstr "Zapnúť"
#: ../js/ui/status/network.js:1173 #: ../js/ui/status/network.js:1122
msgid "Not Connected"
msgstr "Nepripojené"
#: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1313 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Správca siete" msgstr "Správca siete"
#: ../js/ui/status/network.js:1352 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Pripojenie zlyhalo" msgstr "Pripojenie zlyhalo"
#: ../js/ui/status/network.js:1353 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivácia pripojenia k sieti zlyhala" msgstr "Aktivácia pripojenia k sieti zlyhala"
@ -1552,24 +1571,28 @@ msgstr "Režim v lietadle"
msgid "On" msgid "On"
msgstr "Zapnutý" msgstr "Zapnutý"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Nastavenia siete"
#: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Prepnúť používateľa" msgstr "Prepnúť používateľa"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Odhlásiť sa" msgstr "Odhlásiť sa"
# action button # action button
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Uzamknutie orientácie" msgstr "Uzamknutie orientácie"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Uspať" msgstr "Uspať"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Vypnúť" msgstr "Vypnúť"

318
po/sl.po
View File

@ -2,15 +2,15 @@
# Copyright (C) 2006 Free Software Foundation, Inc. # Copyright (C) 2006 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell package. # This file is distributed under the same license as the gnome-shell package.
# #
# Matej Urbančič <mateju@svn.gnome.org>, 2009-2013. # Matej Urbančič <mateju@svn.gnome.org>, 2009-2014.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-10-13 20:43+0000\n" "POT-Creation-Date: 2014-01-01 09:10+0000\n"
"PO-Revision-Date: 2013-10-13 23:39+0100\n" "PO-Revision-Date: 2014-01-01 19:33+0100\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: Slovenian\n" "Language: Slovenian\n"
@ -276,23 +276,23 @@ msgid "Select an extension to configure using the combobox above."
msgstr "" msgstr ""
"Razširitev za nastavljanje je mogoče izbrati iz spustnega seznama zgoraj." "Razširitev za nastavljanje je mogoče izbrati iz spustnega seznama zgoraj."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:728 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Prekliči" msgstr "Prekliči"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Naslednji" msgstr "Naslednji"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Odkleni" msgstr "Odkleni"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Prijava" msgstr "Prijava"
@ -306,6 +306,7 @@ msgid "Not listed?"
msgstr "Ali je ni na seznamu?" msgstr "Ali je ni na seznamu?"
#: ../js/gdm/loginDialog.js:622 #: ../js/gdm/loginDialog.js:622
#, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(na primer, uporabnika ali %s)" msgstr "(na primer, uporabnika ali %s)"
@ -318,11 +319,11 @@ msgstr "Uporabniško ime: "
msgid "Login Window" msgid "Login Window"
msgstr "Prijavno okno" msgstr "Prijavno okno"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "Napaka overitve" msgstr "Napaka overitve"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ali pa povlecite prst)" msgstr "(ali pa povlecite prst)"
@ -335,6 +336,7 @@ msgid "Could not parse command:"
msgstr "Ukaza ni mogoče razčleniti:" msgstr "Ukaza ni mogoče razčleniti:"
#: ../js/misc/util.js:156 #: ../js/misc/util.js:156
#, javascript-format
msgid "Execution of '%s' failed:" msgid "Execution of '%s' failed:"
msgstr "Izvedba '%s' je spodletela:" msgstr "Izvedba '%s' je spodletela:"
@ -350,28 +352,30 @@ msgstr "Pogosto"
msgid "All" msgid "All"
msgstr "Vse" msgstr "Vse"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Novo okno" msgstr "Novo okno"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstrani iz priljubljenih" msgstr "Odstrani iz priljubljenih"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj med priljubljene" msgstr "Dodaj med priljubljene"
#: ../js/ui/appFavorites.js:87 #: ../js/ui/appFavorites.js:87
#, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "Program \"%s\" je dodan med priljubljeno." msgstr "Program \"%s\" je dodan med priljubljeno."
#: ../js/ui/appFavorites.js:121 #: ../js/ui/appFavorites.js:121
#, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Program \"%s\" je odstranjen iz priljubljenih." msgstr "Program \"%s\" je odstranjen iz priljubljenih."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Nastavitve" msgstr "Nastavitve"
@ -553,6 +557,7 @@ msgid "Removable Devices"
msgstr "Odstranljive naprave" msgstr "Odstranljive naprave"
#: ../js/ui/components/autorunManager.js:594 #: ../js/ui/components/autorunManager.js:594
#, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Odpri s programom %s" msgstr "Odpri s programom %s"
@ -568,8 +573,8 @@ msgstr "Geslo:"
msgid "Type again:" msgid "Type again:"
msgstr "Vpišite znova:" msgstr "Vpišite znova:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:133 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:296 ../js/ui/status/network.js:731 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Poveži" msgstr "Poveži"
@ -602,6 +607,7 @@ msgid "Authentication required by wireless network"
msgstr "Zahtevana overitev za brezžično omrežje" msgstr "Zahtevana overitev za brezžično omrežje"
#: ../js/ui/components/networkAgent.js:309 #: ../js/ui/components/networkAgent.js:309
#, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"'%s'." "'%s'."
@ -638,6 +644,7 @@ msgid "Mobile broadband network password"
msgstr "Geslo mobilnega širokopasovnega dostopa" msgstr "Geslo mobilnega širokopasovnega dostopa"
#: ../js/ui/components/networkAgent.js:336 #: ../js/ui/components/networkAgent.js:336
#, javascript-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "Za povezavo z omrežjem '%s' je zahtevano geslo." msgstr "Za povezavo z omrežjem '%s' je zahtevano geslo."
@ -661,94 +668,99 @@ msgstr "Overi"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Dejanje je spodletelo. Poskusite znova." msgstr "Dejanje je spodletelo. Poskusite znova."
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "Povabilo" msgstr "Povabilo"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "Pokliči" msgstr "Pokliči"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "Prenos datotek" msgstr "Prenos datotek"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "Klepet" msgstr "Klepet"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Povrni glasnost" msgstr "Povrni glasnost"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Utišaj" msgstr "Utišaj"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Včeraj</b>, <b>%H:%M</b>" msgstr "<b>Včeraj</b>, <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, <b>%H:%M</b>" msgstr "<b>%A</b>, <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%d.</b> <b>%B</b>, <b>%H:%M</b>" msgstr "<b>%d.</b> <b>%B</b>, <b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%d.</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> " msgstr "<b>%d.</b> <b>%B</b> <b>%Y</b>, <b>%H:%M</b> "
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s je sedaj znan kot v %s" msgstr "%s je sedaj znan kot v %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Povabilo v %s" msgstr "Povabilo v %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s vas vabi, da se pridružite v %s" msgstr "%s vas vabi, da se pridružite v %s"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Zavrni" msgstr "Zavrni"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Sprejmi" msgstr "Sprejmi"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "%s želi vzpostaviti video klic" msgstr "%s želi vzpostaviti video klic"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "%s kliče" msgstr "%s kliče"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Odgovori" msgstr "Odgovori"
@ -757,107 +769,109 @@ msgstr "Odgovori"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s pošilja %s" msgstr "%s pošilja %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s želi dovoljenje za pogled dosegljivosti" msgstr "%s želi dovoljenje za pogled dosegljivosti"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Napaka omrežja" msgstr "Napaka omrežja"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Overitev je spodletela" msgstr "Overitev je spodletela"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Napaka šifriranja" msgstr "Napaka šifriranja"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Potrdilo ni na voljo" msgstr "Potrdilo ni na voljo"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Potrdilo ni zaupljivo" msgstr "Potrdilo ni zaupljivo"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Potrdilo je preteklo" msgstr "Potrdilo je preteklo"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Potrdilo ni potrjeno" msgstr "Potrdilo ni potrjeno"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Neustrezno ime gostitelja potrdila" msgstr "Neustrezno ime gostitelja potrdila"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Neustrezen prstni odtis potrdila" msgstr "Neustrezen prstni odtis potrdila"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Potrdilo je samo-podpisano" msgstr "Potrdilo je samo-podpisano"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Stanje je nastavljeno na brez povezave" msgstr "Stanje je nastavljeno na brez povezave"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Šifriranje ni na voljo." msgstr "Šifriranje ni na voljo."
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Potrdilo je neveljavno." msgstr "Potrdilo je neveljavno."
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Povezava je zavrnjena." msgstr "Povezava je zavrnjena."
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Povezave ni mogoče vzpostaviti." msgstr "Povezave ni mogoče vzpostaviti."
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Povezava je prekinjena." msgstr "Povezava je prekinjena."
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Račun je s strežnikom že povezan" msgstr "Račun je s strežnikom že povezan"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Povezava je zamenjana z novo povezavo, ki uporablja isti vir." msgstr "Povezava je zamenjana z novo povezavo, ki uporablja isti vir."
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Račun na strežniku že obstaja" msgstr "Račun na strežniku že obstaja"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Strežnik je trenutno preveč zaposlen za upravljanje s povezavo." msgstr "Strežnik je trenutno preveč zaposlen za upravljanje s povezavo."
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Potrdilo je preklicano" msgstr "Potrdilo je preklicano"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Potrdilo ne uporablja varnega algoritma ali pa uporablja šibko šifriranje." "Potrdilo ne uporablja varnega algoritma ali pa uporablja šibko šifriranje."
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -865,21 +879,22 @@ msgstr ""
"Dolžina potrdila strežnika ali pa globina verige potrdila presega omejitev, " "Dolžina potrdila strežnika ali pa globina verige potrdila presega omejitev, "
"ki je določena s šifrirno knjižnico." "ki je določena s šifrirno knjižnico."
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Notranja napaka" msgstr "Notranja napaka"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Povezava z %s ni mogoča." msgstr "Povezava z %s ni mogoča."
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Poglej račun" msgstr "Poglej račun"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznan vzrok" msgstr "Neznan vzrok"
@ -915,6 +930,7 @@ msgid "%A %B %e, %Y"
msgstr "%a, %e. %b., %R" msgstr "%a, %e. %b., %R"
#: ../js/ui/endSessionDialog.js:62 #: ../js/ui/endSessionDialog.js:62
#, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Odjava %s" msgstr "Odjava %s"
@ -925,6 +941,7 @@ msgid "Log Out"
msgstr "Odjava" msgstr "Odjava"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:65
#, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "Uporabnik %s bo samodejno odjavljen čez %d sekund." msgstr[0] "Uporabnik %s bo samodejno odjavljen čez %d sekund."
@ -933,6 +950,7 @@ msgstr[2] "Uporabnik %s bo samodejno odjavljen čez %d sekundi."
msgstr[3] "Uporabnik %s bo samodejno odjavljen čez %d sekunde." msgstr[3] "Uporabnik %s bo samodejno odjavljen čez %d sekunde."
#: ../js/ui/endSessionDialog.js:70 #: ../js/ui/endSessionDialog.js:70
#, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Uporabnik bo samodejno odjavljen čez %d sekund." msgstr[0] "Uporabnik bo samodejno odjavljen čez %d sekund."
@ -951,6 +969,7 @@ msgid "Power Off"
msgstr "Izklop" msgstr "Izklop"
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:83
#, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Sistem se bo samodejno izklopil čez %d sekund." msgstr[0] "Sistem se bo samodejno izklopil čez %d sekund."
@ -974,6 +993,7 @@ msgid "Restart"
msgstr "Ponoven zagon" msgstr "Ponoven zagon"
#: ../js/ui/endSessionDialog.js:99 #: ../js/ui/endSessionDialog.js:99
#, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Sistem se bo samodejno ponovno zagnal čez %d sekund." msgstr[0] "Sistem se bo samodejno ponovno zagnal čez %d sekund."
@ -987,6 +1007,7 @@ msgid "Restart & Install Updates"
msgstr "Namesti posodobitve in ponovno zaženi" msgstr "Namesti posodobitve in ponovno zaženi"
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:114
#, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
"The system will automatically restart and install updates in %d seconds." "The system will automatically restart and install updates in %d seconds."
@ -1015,11 +1036,13 @@ msgstr "Prijavljeni so tudi drugi uporabniki."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:479 #: ../js/ui/endSessionDialog.js:479
#, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (oddaljeno)" msgstr "%s (oddaljeno)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:482 #: ../js/ui/endSessionDialog.js:482
#, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konzola)" msgstr "%s (konzola)"
@ -1028,6 +1051,7 @@ msgid "Install"
msgstr "Namesti" msgstr "Namesti"
#: ../js/ui/extensionDownloader.js:204 #: ../js/ui/extensionDownloader.js:204
#, javascript-format
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "" msgstr ""
"Ali naj se razširitev '%s' namesti preko povezave z extensions.gnome.org?" "Ali naj se razširitev '%s' namesti preko povezave z extensions.gnome.org?"
@ -1042,6 +1066,7 @@ msgstr "Ni nameščenih razširitev"
#. Translators: argument is an extension UUID. */ #. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:743 #: ../js/ui/lookingGlass.js:743
#, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s ni javil napak." msgstr "%s ni javil napak."
@ -1061,7 +1086,7 @@ msgstr "Omogočeno"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:473 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Onemogočeno" msgstr "Onemogočeno"
@ -1086,48 +1111,49 @@ msgstr "Poglej vir"
msgid "Web Page" msgid "Web Page"
msgstr "Spletna stran" msgstr "Spletna stran"
#: ../js/ui/messageTray.js:1227 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Odpri" msgstr "Odpri"
#: ../js/ui/messageTray.js:1234 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Odstrani" msgstr "Odstrani"
#: ../js/ui/messageTray.js:1535 #: ../js/ui/messageTray.js:1657
msgid "Notifications" msgid "Notifications"
msgstr "Obvestila" msgstr "Obvestila"
#: ../js/ui/messageTray.js:1542 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Počisti sporočila" msgstr "Počisti sporočila"
#: ../js/ui/messageTray.js:1569 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Nastavitve obvestil" msgstr "Nastavitve obvestil"
#: ../js/ui/messageTray.js:1622 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Meni sistemske vrstice" msgstr "Meni sistemske vrstice"
#: ../js/ui/messageTray.js:1838 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Ni sporočil" msgstr "Ni sporočil"
#: ../js/ui/messageTray.js:1876 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Sporočilna vrstica" msgstr "Sporočilna vrstica"
#: ../js/ui/messageTray.js:2851 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Podrobnosti sistema" msgstr "Podrobnosti sistema"
#: ../js/ui/notificationDaemon.js:630 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Neznano" msgstr "Neznano"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
msgstr[0] "%d novih sporočil" msgstr[0] "%d novih sporočil"
@ -1165,7 +1191,7 @@ msgstr "Dejavnosti"
msgid "Top Bar" msgid "Top Bar"
msgstr "Vrhnja vrstica" msgstr "Vrhnja vrstica"
#: ../js/ui/popupMenu.js:259 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -1179,11 +1205,12 @@ msgstr "Zapri"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d. %m." msgstr "%A, %d. %m."
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d novih obvestil" msgstr[0] "%d novih obvestil"
@ -1191,19 +1218,19 @@ msgstr[1] "%d novo obvestilo"
msgstr[2] "%d novi obvestili" msgstr[2] "%d novi obvestili"
msgstr[3] "%d nova obvestila" msgstr[3] "%d nova obvestila"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Zakleni" msgstr "Zakleni"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Zakleniti je treba zaslon" msgstr "Zakleniti je treba zaslon"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Zaklep ni mogoč" msgstr "Zaklep ni mogoč"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Zaklep je preprečil program" msgstr "Zaklep je preprečil program"
@ -1283,22 +1310,23 @@ msgstr "Visok kontrast"
msgid "Large Text" msgid "Large Text"
msgstr "Veliko besedilo" msgstr "Veliko besedilo"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:133 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1085 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Onemogoči" msgstr "Onemogoči"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Nastavitve za Bluetooth" msgstr "Nastavitve za Bluetooth"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
msgstr[0] "%d povezanih naprav" msgstr[0] "%d povezanih naprav"
@ -1306,67 +1334,73 @@ msgstr[1] "%d povezana naprava"
msgstr[2] "%d povezani napravi" msgstr[2] "%d povezani napravi"
msgstr[3] "%d povezane naprave" msgstr[3] "%d povezane naprave"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Zahteva za pooblastitev od %s" msgstr "Zahteva za pooblastitev od %s"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Naprava %s se poskuša seznaniti s tem računalnikom" msgstr "Naprava %s se poskuša seznaniti s tem računalnikom"
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "Dovoli" msgstr "Dovoli"
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "Zavrni" msgstr "Zavrni"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Naprava %s želi dostop do storitve '%s'." msgstr "Naprava %s želi dostop do storitve '%s'."
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "Vedno odobri dostop" msgstr "Vedno odobri dostop"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Odobri le tokrat" msgstr "Odobri le tokrat"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "Zavrni" msgstr "Zavrni"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Potrditev razčlenjevanja za %s" msgstr "Potrditev razčlenjevanja za %s"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Potrdite, ali se PIN '%06d' ujema s tistim na napravi." msgstr "Potrdite, ali se PIN '%06d' ujema s tistim na napravi."
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "Ujemanja" msgstr "Ujemanja"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "Se ne ujema" msgstr "Se ne ujema"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Zahteva razčlenjevanja za %s" msgstr "Zahteva razčlenjevanja za %s"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Vnesite PIN, ki je naveden na napravi." msgstr "Vnesite PIN, ki je naveden na napravi."
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "V redu" msgstr "V redu"
@ -1374,99 +1408,99 @@ msgstr "V redu"
msgid "Brightness" msgid "Brightness"
msgstr "Svetlost" msgstr "Svetlost"
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<neznano>" msgstr "<neznano>"
#: ../js/ui/status/network.js:223 ../js/ui/status/network.js:380 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Nepovezano" msgstr "Nepovezano"
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:386 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "neupravljano" msgstr "neupravljano"
#: ../js/ui/status/network.js:388 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "prekinjanje povezave ..." msgstr "prekinjanje povezave ..."
#: ../js/ui/status/network.js:394 ../js/ui/status/network.js:1160 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "povezovanje ..." msgstr "povezovanje ..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:397 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "zahtevana je overitev" msgstr "zahtevana je overitev"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:405 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "manjka strojna programska oprema" msgstr "manjka strojna programska oprema"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:409 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "ni na voljo" msgstr "ni na voljo"
#: ../js/ui/status/network.js:411 ../js/ui/status/network.js:1165 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "povezovanje je spodletelo" msgstr "povezovanje je spodletelo"
#: ../js/ui/status/network.js:427 ../js/ui/status/network.js:513 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Nastavitve mobilega širokopasovnega dostopa" msgstr "Nastavitve mobilega širokopasovnega dostopa"
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Strojna oprema je onemogočena" msgstr "Strojna oprema je onemogočena"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Omrežja Wi-Fi" msgstr "Omrežja Wi-Fi"
#: ../js/ui/status/network.js:698 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Izbor omrežja" msgstr "Izbor omrežja"
#: ../js/ui/status/network.js:722 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Ni omrežij" msgstr "Ni omrežij"
#: ../js/ui/status/network.js:991 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Izbor omrežja" msgstr "Izbor omrežja"
#: ../js/ui/status/network.js:997 #: ../js/ui/status/network.js:1011
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Nastavitve Wi-Fi" msgstr "Nastavitve Wi-Fi"
#: ../js/ui/status/network.js:1085 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Omogoči" msgstr "Omogoči"
#: ../js/ui/status/network.js:1108 #: ../js/ui/status/network.js:1122
msgid "Not Connected" msgid "Not Connected"
msgstr "Ni vzpostavljene povezave" msgstr "Ni vzpostavljene povezave"
#: ../js/ui/status/network.js:1228 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1368 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Upravljalnik omrežij" msgstr "Upravljalnik omrežij"
#: ../js/ui/status/network.js:1407 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Povezava je spodletela" msgstr "Povezava je spodletela"
#: ../js/ui/status/network.js:1408 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Omogočanje omrežne povezave je spodletelo." msgstr "Omogočanje omrežne povezave je spodletelo."
@ -1487,10 +1521,14 @@ msgid "Estimating…"
msgstr "Ocenjevanje ...." msgstr "Ocenjevanje ...."
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, javascript-format
#| msgid "%d\\u2236%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d do konca (%d%%)" msgstr "%d%02d do konca (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, javascript-format
#| msgid "%d\\u2236%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d do polnosti (%d%%)" msgstr "%d%02d do polnosti (%d%%)"
@ -1506,23 +1544,23 @@ msgstr "Povezano"
msgid "Network Settings" msgid "Network Settings"
msgstr "Omrežne nastavitve" msgstr "Omrežne nastavitve"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Preklopi uporabnika" msgstr "Preklopi uporabnika"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Odjava" msgstr "Odjava"
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Zaklep položaja" msgstr "Zaklep položaja"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Zaustavi" msgstr "Zaustavi"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Izklop" msgstr "Izklop"
@ -1555,6 +1593,7 @@ msgid "Search"
msgstr "Poišči" msgstr "Poišči"
#: ../js/ui/wanda.js:77 #: ../js/ui/wanda.js:77
#, javascript-format
msgid "" msgid ""
"Sorry, no wisdom for you today:\n" "Sorry, no wisdom for you today:\n"
"%s" "%s"
@ -1563,10 +1602,12 @@ msgstr ""
"%s" "%s"
#: ../js/ui/wanda.js:81 #: ../js/ui/wanda.js:81
#, javascript-format
msgid "%s the Oracle says" msgid "%s the Oracle says"
msgstr "Riba %s pravi" msgstr "Riba %s pravi"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "'%s' storitev je pripravljena" msgstr "'%s' storitev je pripravljena"
@ -1586,6 +1627,7 @@ msgid "Keep Changes"
msgstr "Sledi spremembam" msgstr "Sledi spremembam"
#: ../js/ui/windowManager.js:97 #: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Spremembe nastavitev bodo povrnjene v %d sekundah." msgstr[0] "Spremembe nastavitev bodo povrnjene v %d sekundah."

302
po/sr.po
View File

@ -1,17 +1,17 @@
# Serbian translation for gnome-shell. # Serbian translation for gnome-shell.
# Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package. # This file is distributed under the same license as the gnome-shell package.
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011, 2012, 2013. # Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011, 2012, 2013, 2014.
# Милош Поповић <gpopac@gmail.com>, 2010, 2011. # Милош Поповић <gpopac@gmail.com>, 2010, 2011.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-10-13 17:05+0000\n" "POT-Creation-Date: 2014-01-13 08:28+0000\n"
"PO-Revision-Date: 2013-10-14 10:25+0200\n" "PO-Revision-Date: 2014-01-13 09:51+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n" "Language-Team: Serbian <(nothing)>\n"
"Language: sr\n" "Language: sr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -270,23 +270,23 @@ msgstr "Застој првог плана се мења у режиму миш
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Изаберите проширење за подешавање користећи прозорче за избор." msgstr "Изаберите проширење за подешавање користећи прозорче за избор."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:728 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Откажи" msgstr "Откажи"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Даље" msgstr "Даље"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Откључај" msgstr "Откључај"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Пријави ме" msgstr "Пријави ме"
@ -313,11 +313,11 @@ msgstr "Корисничко име: "
msgid "Login Window" msgid "Login Window"
msgstr "Прозор за пријављивање" msgstr "Прозор за пријављивање"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "Грешка потврђивања идентитета" msgstr "Грешка потврђивања идентитета"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(или лупите прст)" msgstr "(или лупите прст)"
@ -346,15 +346,15 @@ msgstr "Често"
msgid "All" msgid "All"
msgstr "Све" msgstr "Све"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Нови прозор" msgstr "Нови прозор"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Уклони из омиљених" msgstr "Уклони из омиљених"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Додај у омиљене" msgstr "Додај у омиљене"
@ -369,7 +369,7 @@ msgid "%s has been removed from your favorites."
msgstr "„%s“ је уклоњен из омиљених." msgstr "„%s“ је уклоњен из омиљених."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Подешавања" msgstr "Подешавања"
@ -567,8 +567,8 @@ msgstr "Лозинка:"
msgid "Type again:" msgid "Type again:"
msgstr "Упишите поново:" msgstr "Упишите поново:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:133 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:296 ../js/ui/status/network.js:731 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Повежи се" msgstr "Повежи се"
@ -661,60 +661,60 @@ msgstr "Потврди идентитет"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Погрешили сте! Покушајте поново." msgstr "Погрешили сте! Покушајте поново."
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "Позивница" msgstr "Позивница"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "Позив" msgstr "Позив"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "Пренос датотека" msgstr "Пренос датотека"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "Ћаскање" msgstr "Ћаскање"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Укључи тон" msgstr "Укључи тон"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Утишај" msgstr "Утишај"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Јуче</b>, у <b>%H:%M</b>" msgstr "<b>Јуче</b>, у <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, у <b>%H:%M</b>" msgstr "<b>%A</b>, у <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%d</b>. <b>%B</b> у <b>%H:%M</b>" msgstr "<b>%d</b>. <b>%B</b> у <b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%d</b>. <b>%B</b> <b>%Y</b>. у <b>%H:%M</b>" msgstr "<b>%d</b>. <b>%B</b> <b>%Y</b>. у <b>%H:%M</b>"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s је сада познат као %s" msgstr "%s је сада познат као %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Позивница за %s" msgstr "Позивница за %s"
@ -722,38 +722,38 @@ msgstr "Позивница за %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s вас позива да се придружите %s" msgstr "%s вас позива да се придружите %s"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Одбиј" msgstr "Одбиј"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Прихвати" msgstr "Прихвати"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "%s вам је упутио видео позив" msgstr "%s вам је упутио видео позив"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "%s вас зове" msgstr "%s вас зове"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Одговори" msgstr "Одговори"
@ -762,109 +762,109 @@ msgstr "Одговори"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s вам шаље „%s“" msgstr "%s вам шаље „%s“"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s тражи одобрење да види када сте на вези" msgstr "%s тражи одобрење да види када сте на вези"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Грешка мреже" msgstr "Грешка мреже"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Потврђивање идентитета није успело" msgstr "Потврђивање идентитета није успело"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Грешка шифровања" msgstr "Грешка шифровања"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Уверење није прослеђено" msgstr "Уверење није прослеђено"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Уверење није поверљиво" msgstr "Уверење није поверљиво"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Уверење је истекло" msgstr "Уверење је истекло"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Уверење није активирано" msgstr "Уверење није активирано"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Назив домаћина уверења се не поклапа" msgstr "Назив домаћина уверења се не поклапа"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Отисак уверења се не поклапа" msgstr "Отисак уверења се не поклапа"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Уверење је самопотписано" msgstr "Уверење је самопотписано"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Стање је постављено на „неповезан“" msgstr "Стање је постављено на „неповезан“"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Шифровање није доступно" msgstr "Шифровање није доступно"
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Уверење није исправно" msgstr "Уверење није исправно"
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Веза је одбијена" msgstr "Веза је одбијена"
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Веза не може бити успостављена" msgstr "Веза не може бити успостављена"
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Веза је изгубљена" msgstr "Веза је изгубљена"
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Овај налог је већ повезан са сервером" msgstr "Овај налог је већ повезан са сервером"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Веза је замењена новом везом користећи исти ресурс" msgstr "Веза је замењена новом везом користећи исти ресурс"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Овај налог већ постоји на серверу" msgstr "Овај налог већ постоји на серверу"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Сервер је тренутно превише заузет да би руковао везом" msgstr "Сервер је тренутно превише заузет да би руковао везом"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Уверење је опозвано" msgstr "Уверење је опозвано"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Уверење користи несигуран алгоритам шифровања или је криптографски слабо" "Уверење користи несигуран алгоритам шифровања или је криптографски слабо"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -872,22 +872,22 @@ msgstr ""
"Дужина уверења сервера, или дубина ланца уверења сервера, премашује границе " "Дужина уверења сервера, или дубина ланца уверења сервера, премашује границе "
"које је задала библиотека шифровања" "које је задала библиотека шифровања"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Унутрашња грешка" msgstr "Унутрашња грешка"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Не могу да се повежем са „%s“" msgstr "Не могу да се повежем са „%s“"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Види налог" msgstr "Види налог"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Непознат разлог" msgstr "Непознат разлог"
@ -1077,7 +1077,7 @@ msgstr "Укључено"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:473 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Искључено" msgstr "Искључено"
@ -1102,49 +1102,48 @@ msgstr "Прикажи код"
msgid "Web Page" msgid "Web Page"
msgstr "Веб страница" msgstr "Веб страница"
#: ../js/ui/messageTray.js:1227 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Отвори" msgstr "Отвори"
#: ../js/ui/messageTray.js:1234 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Уклони" msgstr "Уклони"
#: ../js/ui/messageTray.js:1535 #: ../js/ui/messageTray.js:1657
#| msgid "Notification Settings"
msgid "Notifications" msgid "Notifications"
msgstr "Обавештења" msgstr "Обавештења"
#: ../js/ui/messageTray.js:1542 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Очисти поруке" msgstr "Очисти поруке"
#: ../js/ui/messageTray.js:1569 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Поставке обавештења" msgstr "Поставке обавештења"
#: ../js/ui/messageTray.js:1622 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Изборник фиоке" msgstr "Изборник фиоке"
#: ../js/ui/messageTray.js:1838 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Нема порука" msgstr "Нема порука"
#: ../js/ui/messageTray.js:1876 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Фиока порука" msgstr "Фиока порука"
#: ../js/ui/messageTray.js:2851 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Подаци о систему" msgstr "Подаци о систему"
#: ../js/ui/notificationDaemon.js:630 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Непознат" msgstr "Непознат"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1183,7 +1182,7 @@ msgstr "Активности"
msgid "Top Bar" msgid "Top Bar"
msgstr "Горња трака" msgstr "Горња трака"
#: ../js/ui/popupMenu.js:259 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -1197,11 +1196,11 @@ msgstr "Затвори"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d. %B" msgstr "%A, %d. %B"
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format #, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
@ -1210,19 +1209,19 @@ msgstr[1] "%d нова обавештења"
msgstr[2] "%d нових обавештења" msgstr[2] "%d нових обавештења"
msgstr[3] "%d ново обавештење" msgstr[3] "%d ново обавештење"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Закључај" msgstr "Закључај"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Гном мора да закључа екран" msgstr "Гном мора да закључа екран"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Не могу да закључам" msgstr "Не могу да закључам"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Неки програм је блокирао закључавање" msgstr "Неки програм је блокирао закључавање"
@ -1302,22 +1301,22 @@ msgstr "Велики контраст"
msgid "Large Text" msgid "Large Text"
msgstr "Велики текст" msgstr "Велики текст"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Блутут" msgstr "Блутут"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:133 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1085 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Искључи" msgstr "Искључи"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Подешавања Блутута" msgstr "Подешавања Блутута"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format #, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
@ -1326,49 +1325,49 @@ msgstr[1] "%d прикључена уређаја"
msgstr[2] "%d прикључених уређаја" msgstr[2] "%d прикључених уређаја"
msgstr[3] "%d прикључени уређај" msgstr[3] "%d прикључени уређај"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format #, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Захтев за овлашћење са „%s“" msgstr "Захтев за овлашћење са „%s“"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format #, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Уређај „%s“ жели да се упари са овим рачунаром" msgstr "Уређај „%s“ жели да се упари са овим рачунаром"
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "Дозволи" msgstr "Дозволи"
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "Забрани" msgstr "Забрани"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format #, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Уређај „%s“ жели приступ услузи „%s“" msgstr "Уређај „%s“ жели приступ услузи „%s“"
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "Увек дозволи приступ" msgstr "Увек дозволи приступ"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Одобри само овај пут" msgstr "Одобри само овај пут"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "Одбиј" msgstr "Одбиј"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format #, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Упарујем потврду за „%s“" msgstr "Упарујем потврду за „%s“"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format #, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1376,24 +1375,24 @@ msgstr ""
"Молим потврдите да ли се пропусни кључ „%06d“ подудара са оним на уређају." "Молим потврдите да ли се пропусни кључ „%06d“ подудара са оним на уређају."
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "Подудара се" msgstr "Подудара се"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "Не подудара се" msgstr "Не подудара се"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format #, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Захтев за упаривање за „%s“" msgstr "Захтев за упаривање за „%s“"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Молим унесите ПИН назначен на уређају." msgstr "Молим унесите ПИН назначен на уређају."
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "У реду" msgstr "У реду"
@ -1401,103 +1400,99 @@ msgstr "У реду"
msgid "Brightness" msgid "Brightness"
msgstr "Осветљеност" msgstr "Осветљеност"
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<непознато>" msgstr "<непознато>"
#: ../js/ui/status/network.js:223 ../js/ui/status/network.js:380 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Искљ." msgstr "Искљ."
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:386 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "није управљано" msgstr "није управљано"
#: ../js/ui/status/network.js:388 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "прекидам везу..." msgstr "прекидам везу..."
#: ../js/ui/status/network.js:394 ../js/ui/status/network.js:1160 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "повезујем се..." msgstr "повезујем се..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:397 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "потребна је пријава" msgstr "потребна је пријава"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:405 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "недостаје фирмвер" msgstr "недостаје фирмвер"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:409 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "недоступно" msgstr "недоступно"
#: ../js/ui/status/network.js:411 ../js/ui/status/network.js:1165 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "повезивање није успело" msgstr "повезивање није успело"
#: ../js/ui/status/network.js:427 ../js/ui/status/network.js:513 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
#| msgid "Mobile broadband network password"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Подешавања мобилне широкопојасне везе" msgstr "Подешавања мобилне широкопојасне везе"
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
#| msgid "Disabled"
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Уређај је искључен" msgstr "Уређај је искључен"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Бежичне мреже" msgstr "Бежичне мреже"
#: ../js/ui/status/network.js:698 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Изаберите мрежу" msgstr "Изаберите мрежу"
#: ../js/ui/status/network.js:722 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Нема мрежа" msgstr "Нема мрежа"
#: ../js/ui/status/network.js:991 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Изабери мрежу" msgstr "Изабери мрежу"
#: ../js/ui/status/network.js:997 #: ../js/ui/status/network.js:1011
#| msgid "Settings"
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Подешавања бежичне везе" msgstr "Подешавања бежичне везе"
#: ../js/ui/status/network.js:1085 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Укључи" msgstr "Укључи"
#: ../js/ui/status/network.js:1108 #: ../js/ui/status/network.js:1122
#| msgid "Connect"
msgid "Not Connected" msgid "Not Connected"
msgstr "Неповезан" msgstr "Неповезан"
#: ../js/ui/status/network.js:1228 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "ВПН" msgstr "ВПН"
#: ../js/ui/status/network.js:1368 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Управник мреже" msgstr "Управник мреже"
#: ../js/ui/status/network.js:1407 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Повезивање није успело" msgstr "Повезивање није успело"
#: ../js/ui/status/network.js:1408 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Активирање мрежне везе није успело" msgstr "Активирање мрежне везе није успело"
@ -1519,11 +1514,13 @@ msgstr "Приближно…"
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, javascript-format #, javascript-format
#| msgid "%d\\u2236%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "Преостаје %d:%02d (%d%%)" msgstr "Преостаје %d:%02d (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, javascript-format #, javascript-format
#| msgid "%d\\u2236%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d:%02d до краја пуњења (%d%%)" msgstr "%d:%02d до краја пуњења (%d%%)"
@ -1539,23 +1536,23 @@ msgstr "Укљ."
msgid "Network Settings" msgid "Network Settings"
msgstr "Подешавања мреже" msgstr "Подешавања мреже"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Промени корисника" msgstr "Промени корисника"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Одјави ме" msgstr "Одјави ме"
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Катанац окренутости" msgstr "Катанац окренутости"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Обустави" msgstr "Обустави"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Искључи" msgstr "Искључи"
@ -1692,3 +1689,20 @@ msgstr "Лозинка не може бити празна"
#: ../src/shell-polkit-authentication-agent.c:343 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Корисник је одбацио прозорче за потврђивање идентитета" msgstr "Корисник је одбацио прозорче за потврђивање идентитета"
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "Дошло је до грешке при учитавању прозорчета поставки за %s:"
#~ msgid "Extension"
#~ msgstr "Проширење"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H:%M"
#~ msgctxt "event list time"
#~ msgid "%l\\u2236%M\\u2009%p"
#~ msgstr "%l:%M:%p"
#~ msgid "Show Keyboard Layout"
#~ msgstr "Прикажи распоред тастатуре"

View File

@ -1,17 +1,17 @@
# Serbian translation for gnome-shell. # Serbian translation for gnome-shell.
# Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package. # This file is distributed under the same license as the gnome-shell package.
# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011, 2012, 2013. # Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011, 2012, 2013, 2014.
# Miloš Popović <gpopac@gmail.com>, 2010, 2011. # Miloš Popović <gpopac@gmail.com>, 2010, 2011.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-10-13 17:05+0000\n" "POT-Creation-Date: 2014-01-13 08:28+0000\n"
"PO-Revision-Date: 2013-10-14 10:25+0200\n" "PO-Revision-Date: 2014-01-13 09:51+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n" "Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n" "Language-Team: Serbian <(nothing)>\n"
"Language: sr\n" "Language: sr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -270,23 +270,23 @@ msgstr "Zastoj prvog plana se menja u režimu miša dok se pokazivač ne zaustav
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "Izaberite proširenje za podešavanje koristeći prozorče za izbor." msgstr "Izaberite proširenje za podešavanje koristeći prozorče za izbor."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:728 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "Otkaži" msgstr "Otkaži"
#: ../js/gdm/authPrompt.js:167 ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Dalje" msgstr "Dalje"
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Otključaj" msgstr "Otključaj"
#: ../js/gdm/authPrompt.js:213 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Prijavi me" msgstr "Prijavi me"
@ -313,11 +313,11 @@ msgstr "Korisničko ime: "
msgid "Login Window" msgid "Login Window"
msgstr "Prozor za prijavljivanje" msgstr "Prozor za prijavljivanje"
#: ../js/gdm/util.js:306 #: ../js/gdm/util.js:321
msgid "Authentication error" msgid "Authentication error"
msgstr "Greška potvrđivanja identiteta" msgstr "Greška potvrđivanja identiteta"
#: ../js/gdm/util.js:436 #: ../js/gdm/util.js:451
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ili lupite prst)" msgstr "(ili lupite prst)"
@ -346,15 +346,15 @@ msgstr "Često"
msgid "All" msgid "All"
msgstr "Sve" msgstr "Sve"
#: ../js/ui/appDisplay.js:1514 #: ../js/ui/appDisplay.js:1525
msgid "New Window" msgid "New Window"
msgstr "Novi prozor" msgstr "Novi prozor"
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1528 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih" msgstr "Ukloni iz omiljenih"
#: ../js/ui/appDisplay.js:1518 #: ../js/ui/appDisplay.js:1529
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj u omiljene" msgstr "Dodaj u omiljene"
@ -369,7 +369,7 @@ msgid "%s has been removed from your favorites."
msgstr "„%s“ je uklonjen iz omiljenih." msgstr "„%s“ je uklonjen iz omiljenih."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:806
#: ../js/ui/status/system.js:325 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "Podešavanja" msgstr "Podešavanja"
@ -567,8 +567,8 @@ msgstr "Lozinka:"
msgid "Type again:" msgid "Type again:"
msgstr "Upišite ponovo:" msgstr "Upišite ponovo:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:133 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:296 ../js/ui/status/network.js:731 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "Poveži se" msgstr "Poveži se"
@ -661,60 +661,60 @@ msgstr "Potvrdi identitet"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Pogrešili ste! Pokušajte ponovo." msgstr "Pogrešili ste! Pokušajte ponovo."
#: ../js/ui/components/telepathyClient.js:238 #: ../js/ui/components/telepathyClient.js:237
msgid "Invitation" msgid "Invitation"
msgstr "Pozivnica" msgstr "Pozivnica"
#: ../js/ui/components/telepathyClient.js:298 #: ../js/ui/components/telepathyClient.js:297
msgid "Call" msgid "Call"
msgstr "Poziv" msgstr "Poziv"
#: ../js/ui/components/telepathyClient.js:314 #: ../js/ui/components/telepathyClient.js:313
msgid "File Transfer" msgid "File Transfer"
msgstr "Prenos datoteka" msgstr "Prenos datoteka"
#: ../js/ui/components/telepathyClient.js:418 #: ../js/ui/components/telepathyClient.js:417
msgid "Chat" msgid "Chat"
msgstr "Ćaskanje" msgstr "Ćaskanje"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "Uključi ton" msgstr "Uključi ton"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "Utišaj" msgstr "Utišaj"
#. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/ #. Translators: this is the word "Yesterday" followed by a time string. i.e. "Yesterday, 14:30"*/
#: ../js/ui/components/telepathyClient.js:942 #: ../js/ui/components/telepathyClient.js:941
msgid "<b>Yesterday</b>, <b>%H:%M</b>" msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgstr "<b>Juče</b>, u <b>%H:%M</b>" msgstr "<b>Juče</b>, u <b>%H:%M</b>"
#. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/ #. Translators: this is the week day name followed by a time string. i.e. "Monday, 14:30*/
#: ../js/ui/components/telepathyClient.js:948 #: ../js/ui/components/telepathyClient.js:947
msgid "<b>%A</b>, <b>%H:%M</b>" msgid "<b>%A</b>, <b>%H:%M</b>"
msgstr "<b>%A</b>, u <b>%H:%M</b>" msgstr "<b>%A</b>, u <b>%H:%M</b>"
#. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/ #. Translators: this is the month name and day number followed by a time string. i.e. "May 25, 14:30"*/
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:952
msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>" msgid "<b>%B</b> <b>%d</b>, <b>%H:%M</b>"
msgstr "<b>%d</b>. <b>%B</b> u <b>%H:%M</b>" msgstr "<b>%d</b>. <b>%B</b> u <b>%H:%M</b>"
#. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/ #. Translators: this is the month name, day number, year number followed by a time string. i.e. "May 25 2012, 14:30"*/
#: ../js/ui/components/telepathyClient.js:957 #: ../js/ui/components/telepathyClient.js:956
msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> " msgid "<b>%B</b> <b>%d</b> <b>%Y</b>, <b>%H:%M</b> "
msgstr "<b>%d</b>. <b>%B</b> <b>%Y</b>. u <b>%H:%M</b>" msgstr "<b>%d</b>. <b>%B</b> <b>%Y</b>. u <b>%H:%M</b>"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:985
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s je sada poznat kao %s" msgstr "%s je sada poznat kao %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1089 #: ../js/ui/components/telepathyClient.js:1088
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Pozivnica za %s" msgstr "Pozivnica za %s"
@ -722,38 +722,38 @@ msgstr "Pozivnica za %s"
#. translators: first argument is the name of a contact and the second #. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1097 #: ../js/ui/components/telepathyClient.js:1096
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s vas poziva da se pridružite %s" msgstr "%s vas poziva da se pridružite %s"
#: ../js/ui/components/telepathyClient.js:1099 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1180 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1243 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "Odbij" msgstr "Odbij"
#: ../js/ui/components/telepathyClient.js:1100 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1181 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1244 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "Prihvati" msgstr "Prihvati"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1130 #: ../js/ui/components/telepathyClient.js:1129
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "%s vam je uputio video poziv" msgstr "%s vam je uputio video poziv"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1132
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "%s vas zove" msgstr "%s vas zove"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1142 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "Odgovori" msgstr "Odgovori"
@ -762,109 +762,109 @@ msgstr "Odgovori"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1174 #: ../js/ui/components/telepathyClient.js:1173
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s vam šalje „%s“" msgstr "%s vam šalje „%s“"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1209 #: ../js/ui/components/telepathyClient.js:1208
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s traži odobrenje da vidi kada ste na vezi" msgstr "%s traži odobrenje da vidi kada ste na vezi"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "Greška mreže" msgstr "Greška mreže"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Potvrđivanje identiteta nije uspelo" msgstr "Potvrđivanje identiteta nije uspelo"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "Greška šifrovanja" msgstr "Greška šifrovanja"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Uverenje nije prosleđeno" msgstr "Uverenje nije prosleđeno"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Uverenje nije poverljivo" msgstr "Uverenje nije poverljivo"
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Uverenje je isteklo" msgstr "Uverenje je isteklo"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Uverenje nije aktivirano" msgstr "Uverenje nije aktivirano"
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Naziv domaćina uverenja se ne poklapa" msgstr "Naziv domaćina uverenja se ne poklapa"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Otisak uverenja se ne poklapa" msgstr "Otisak uverenja se ne poklapa"
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Uverenje je samopotpisano" msgstr "Uverenje je samopotpisano"
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Stanje je postavljeno na „nepovezan“" msgstr "Stanje je postavljeno na „nepovezan“"
#: ../js/ui/components/telepathyClient.js:1323 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Šifrovanje nije dostupno" msgstr "Šifrovanje nije dostupno"
#: ../js/ui/components/telepathyClient.js:1325 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Uverenje nije ispravno" msgstr "Uverenje nije ispravno"
#: ../js/ui/components/telepathyClient.js:1327 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Veza je odbijena" msgstr "Veza je odbijena"
#: ../js/ui/components/telepathyClient.js:1329 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Veza ne može biti uspostavljena" msgstr "Veza ne može biti uspostavljena"
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Veza je izgubljena" msgstr "Veza je izgubljena"
#: ../js/ui/components/telepathyClient.js:1333 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Ovaj nalog je već povezan sa serverom" msgstr "Ovaj nalog je već povezan sa serverom"
#: ../js/ui/components/telepathyClient.js:1335 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Veza je zamenjena novom vezom koristeći isti resurs" msgstr "Veza je zamenjena novom vezom koristeći isti resurs"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Ovaj nalog već postoji na serveru" msgstr "Ovaj nalog već postoji na serveru"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Server je trenutno previše zauzet da bi rukovao vezom" msgstr "Server je trenutno previše zauzet da bi rukovao vezom"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Uverenje je opozvano" msgstr "Uverenje je opozvano"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Uverenje koristi nesiguran algoritam šifrovanja ili je kriptografski slabo" "Uverenje koristi nesiguran algoritam šifrovanja ili je kriptografski slabo"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -872,22 +872,22 @@ msgstr ""
"Dužina uverenja servera, ili dubina lanca uverenja servera, premašuje granice " "Dužina uverenja servera, ili dubina lanca uverenja servera, premašuje granice "
"koje je zadala biblioteka šifrovanja" "koje je zadala biblioteka šifrovanja"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "Unutrašnja greška" msgstr "Unutrašnja greška"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1356
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Ne mogu da se povežem sa „%s“" msgstr "Ne mogu da se povežem sa „%s“"
#: ../js/ui/components/telepathyClient.js:1362 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "Vidi nalog" msgstr "Vidi nalog"
#: ../js/ui/components/telepathyClient.js:1401 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Nepoznat razlog" msgstr "Nepoznat razlog"
@ -1077,7 +1077,7 @@ msgstr "Uključeno"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:473 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "Isključeno" msgstr "Isključeno"
@ -1102,49 +1102,48 @@ msgstr "Prikaži kod"
msgid "Web Page" msgid "Web Page"
msgstr "Veb stranica" msgstr "Veb stranica"
#: ../js/ui/messageTray.js:1227 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "Otvori" msgstr "Otvori"
#: ../js/ui/messageTray.js:1234 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "Ukloni" msgstr "Ukloni"
#: ../js/ui/messageTray.js:1535 #: ../js/ui/messageTray.js:1657
#| msgid "Notification Settings"
msgid "Notifications" msgid "Notifications"
msgstr "Obaveštenja" msgstr "Obaveštenja"
#: ../js/ui/messageTray.js:1542 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Očisti poruke" msgstr "Očisti poruke"
#: ../js/ui/messageTray.js:1569 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Postavke obaveštenja" msgstr "Postavke obaveštenja"
#: ../js/ui/messageTray.js:1622 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Izbornik fioke" msgstr "Izbornik fioke"
#: ../js/ui/messageTray.js:1838 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "Nema poruka" msgstr "Nema poruka"
#: ../js/ui/messageTray.js:1876 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "Fioka poruka" msgstr "Fioka poruka"
#: ../js/ui/messageTray.js:2851 #: ../js/ui/messageTray.js:2974
msgid "System Information" msgid "System Information"
msgstr "Podaci o sistemu" msgstr "Podaci o sistemu"
#: ../js/ui/notificationDaemon.js:630 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Nepoznat" msgstr "Nepoznat"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:152 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1183,7 +1182,7 @@ msgstr "Aktivnosti"
msgid "Top Bar" msgid "Top Bar"
msgstr "Gornja traka" msgstr "Gornja traka"
#: ../js/ui/popupMenu.js:259 #: ../js/ui/popupMenu.js:260
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -1197,11 +1196,11 @@ msgstr "Zatvori"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:89
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d. %B" msgstr "%A, %d. %B"
#: ../js/ui/screenShield.js:154 #: ../js/ui/screenShield.js:155
#, javascript-format #, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
@ -1210,19 +1209,19 @@ msgstr[1] "%d nova obaveštenja"
msgstr[2] "%d novih obaveštenja" msgstr[2] "%d novih obaveštenja"
msgstr[3] "%d novo obaveštenje" msgstr[3] "%d novo obaveštenje"
#: ../js/ui/screenShield.js:477 ../js/ui/status/system.js:333 #: ../js/ui/screenShield.js:478 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "Zaključaj" msgstr "Zaključaj"
#: ../js/ui/screenShield.js:704 #: ../js/ui/screenShield.js:712
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Gnom mora da zaključa ekran" msgstr "Gnom mora da zaključa ekran"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297 #: ../js/ui/screenShield.js:839 ../js/ui/screenShield.js:1305
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Ne mogu da zaključam" msgstr "Ne mogu da zaključam"
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298 #: ../js/ui/screenShield.js:840 ../js/ui/screenShield.js:1306
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Neki program je blokirao zaključavanje" msgstr "Neki program je blokirao zaključavanje"
@ -1302,22 +1301,22 @@ msgstr "Veliki kontrast"
msgid "Large Text" msgid "Large Text"
msgstr "Veliki tekst" msgstr "Veliki tekst"
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63 #: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128 #: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195 #: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Blutut" msgstr "Blutut"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:133 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1085 ../js/ui/status/rfkill.js:46 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "Isključi" msgstr "Isključi"
#: ../js/ui/status/bluetooth.js:33 #: ../js/ui/status/bluetooth.js:32
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Podešavanja Blututa" msgstr "Podešavanja Blututa"
#: ../js/ui/status/bluetooth.js:58 #: ../js/ui/status/bluetooth.js:57
#, javascript-format #, javascript-format
msgid "%d Connected Device" msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
@ -1326,49 +1325,49 @@ msgstr[1] "%d priključena uređaja"
msgstr[2] "%d priključenih uređaja" msgstr[2] "%d priključenih uređaja"
msgstr[3] "%d priključeni uređaj" msgstr[3] "%d priključeni uređaj"
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129 #: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#, javascript-format #, javascript-format
msgid "Authorization request from %s" msgid "Authorization request from %s"
msgstr "Zahtev za ovlašćenje sa „%s“" msgstr "Zahtev za ovlašćenje sa „%s“"
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:203 #: ../js/ui/status/bluetooth.js:202
#, javascript-format #, javascript-format
msgid "Device %s wants to pair with this computer" msgid "Device %s wants to pair with this computer"
msgstr "Uređaj „%s“ želi da se upari sa ovim računarom" msgstr "Uređaj „%s“ želi da se upari sa ovim računarom"
#: ../js/ui/status/bluetooth.js:109 #: ../js/ui/status/bluetooth.js:108
msgid "Allow" msgid "Allow"
msgstr "Dozvoli" msgstr "Dozvoli"
#: ../js/ui/status/bluetooth.js:110 #: ../js/ui/status/bluetooth.js:109
msgid "Deny" msgid "Deny"
msgstr "Zabrani" msgstr "Zabrani"
#: ../js/ui/status/bluetooth.js:135 #: ../js/ui/status/bluetooth.js:134
#, javascript-format #, javascript-format
msgid "Device %s wants access to the service '%s'" msgid "Device %s wants access to the service '%s'"
msgstr "Uređaj „%s“ želi pristup usluzi „%s“" msgstr "Uređaj „%s“ želi pristup usluzi „%s“"
#: ../js/ui/status/bluetooth.js:137 #: ../js/ui/status/bluetooth.js:136
msgid "Always grant access" msgid "Always grant access"
msgstr "Uvek dozvoli pristup" msgstr "Uvek dozvoli pristup"
#: ../js/ui/status/bluetooth.js:138 #: ../js/ui/status/bluetooth.js:137
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Odobri samo ovaj put" msgstr "Odobri samo ovaj put"
#: ../js/ui/status/bluetooth.js:139 #: ../js/ui/status/bluetooth.js:138
msgid "Reject" msgid "Reject"
msgstr "Odbij" msgstr "Odbij"
#. Translators: argument is the device short name */ #. Translators: argument is the device short name */
#: ../js/ui/status/bluetooth.js:166 #: ../js/ui/status/bluetooth.js:165
#, javascript-format #, javascript-format
msgid "Pairing confirmation for %s" msgid "Pairing confirmation for %s"
msgstr "Uparujem potvrdu za „%s“" msgstr "Uparujem potvrdu za „%s“"
#: ../js/ui/status/bluetooth.js:173 #: ../js/ui/status/bluetooth.js:172
#, javascript-format #, javascript-format
msgid "" msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device." "Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1376,24 +1375,24 @@ msgstr ""
"Molim potvrdite da li se propusni ključ „%06d“ podudara sa onim na uređaju." "Molim potvrdite da li se propusni ključ „%06d“ podudara sa onim na uređaju."
#. Translators: this is the verb, not the noun */ #. Translators: this is the verb, not the noun */
#: ../js/ui/status/bluetooth.js:176 #: ../js/ui/status/bluetooth.js:175
msgid "Matches" msgid "Matches"
msgstr "Podudara se" msgstr "Podudara se"
#: ../js/ui/status/bluetooth.js:177 #: ../js/ui/status/bluetooth.js:176
msgid "Does not match" msgid "Does not match"
msgstr "Ne podudara se" msgstr "Ne podudara se"
#: ../js/ui/status/bluetooth.js:196 #: ../js/ui/status/bluetooth.js:195
#, javascript-format #, javascript-format
msgid "Pairing request for %s" msgid "Pairing request for %s"
msgstr "Zahtev za uparivanje za „%s“" msgstr "Zahtev za uparivanje za „%s“"
#: ../js/ui/status/bluetooth.js:204 #: ../js/ui/status/bluetooth.js:203
msgid "Please enter the PIN mentioned on the device." msgid "Please enter the PIN mentioned on the device."
msgstr "Molim unesite PIN naznačen na uređaju." msgstr "Molim unesite PIN naznačen na uređaju."
#: ../js/ui/status/bluetooth.js:221 #: ../js/ui/status/bluetooth.js:220
msgid "OK" msgid "OK"
msgstr "U redu" msgstr "U redu"
@ -1401,103 +1400,99 @@ msgstr "U redu"
msgid "Brightness" msgid "Brightness"
msgstr "Osvetljenost" msgstr "Osvetljenost"
#: ../js/ui/status/network.js:72 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<nepoznato>" msgstr "<nepoznato>"
#: ../js/ui/status/network.js:223 ../js/ui/status/network.js:380 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1120
msgid "Off" msgid "Off"
msgstr "Isklj." msgstr "Isklj."
#. Translators: this is for network devices that are physically present but are not #. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */ #. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:386 #: ../js/ui/status/network.js:385
msgid "unmanaged" msgid "unmanaged"
msgstr "nije upravljano" msgstr "nije upravljano"
#: ../js/ui/status/network.js:388 #: ../js/ui/status/network.js:387
msgid "disconnecting..." msgid "disconnecting..."
msgstr "prekidam vezu..." msgstr "prekidam vezu..."
#: ../js/ui/status/network.js:394 ../js/ui/status/network.js:1160 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "povezujem se..." msgstr "povezujem se..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:397 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "potrebna je prijava" msgstr "potrebna je prijava"
#. Translators: this is for devices that require some kind of firmware or kernel #. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */ #. module, which is missing */
#: ../js/ui/status/network.js:405 #: ../js/ui/status/network.js:404
msgid "firmware missing" msgid "firmware missing"
msgstr "nedostaje firmver" msgstr "nedostaje firmver"
#. Translators: this is for a network device that cannot be activated (for example it #. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */ #. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:409 #: ../js/ui/status/network.js:408
msgid "unavailable" msgid "unavailable"
msgstr "nedostupno" msgstr "nedostupno"
#: ../js/ui/status/network.js:411 ../js/ui/status/network.js:1165 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "povezivanje nije uspelo" msgstr "povezivanje nije uspelo"
#: ../js/ui/status/network.js:427 ../js/ui/status/network.js:513 #: ../js/ui/status/network.js:426 ../js/ui/status/network.js:512
#| msgid "Mobile broadband network password"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Podešavanja mobilne širokopojasne veze" msgstr "Podešavanja mobilne širokopojasne veze"
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
#| msgid "Disabled"
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Uređaj je isključen" msgstr "Uređaj je isključen"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:707
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Bežične mreže" msgstr "Bežične mreže"
#: ../js/ui/status/network.js:698 #: ../js/ui/status/network.js:709
msgid "Select a network" msgid "Select a network"
msgstr "Izaberite mrežu" msgstr "Izaberite mrežu"
#: ../js/ui/status/network.js:722 #: ../js/ui/status/network.js:733
msgid "No Networks" msgid "No Networks"
msgstr "Nema mreža" msgstr "Nema mreža"
#: ../js/ui/status/network.js:991 #: ../js/ui/status/network.js:1005
msgid "Select Network" msgid "Select Network"
msgstr "Izaberi mrežu" msgstr "Izaberi mrežu"
#: ../js/ui/status/network.js:997 #: ../js/ui/status/network.js:1011
#| msgid "Settings"
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Podešavanja bežične veze" msgstr "Podešavanja bežične veze"
#: ../js/ui/status/network.js:1085 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "Uključi" msgstr "Uključi"
#: ../js/ui/status/network.js:1108 #: ../js/ui/status/network.js:1122
#| msgid "Connect"
msgid "Not Connected" msgid "Not Connected"
msgstr "Nepovezan" msgstr "Nepovezan"
#: ../js/ui/status/network.js:1228 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1368 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "Upravnik mreže" msgstr "Upravnik mreže"
#: ../js/ui/status/network.js:1407 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "Povezivanje nije uspelo" msgstr "Povezivanje nije uspelo"
#: ../js/ui/status/network.js:1408 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktiviranje mrežne veze nije uspelo" msgstr "Aktiviranje mrežne veze nije uspelo"
@ -1519,11 +1514,13 @@ msgstr "Približno…"
#: ../js/ui/status/power.js:77 #: ../js/ui/status/power.js:77
#, javascript-format #, javascript-format
#| msgid "%d\\u2236%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)" msgid "%d%02d Remaining (%d%%)"
msgstr "Preostaje %d:%02d (%d%%)" msgstr "Preostaje %d:%02d (%d%%)"
#: ../js/ui/status/power.js:82 #: ../js/ui/status/power.js:82
#, javascript-format #, javascript-format
#| msgid "%d\\u2236%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)" msgid "%d%02d Until Full (%d%%)"
msgstr "%d:%02d do kraja punjenja (%d%%)" msgstr "%d:%02d do kraja punjenja (%d%%)"
@ -1539,23 +1536,23 @@ msgstr "Uklj."
msgid "Network Settings" msgid "Network Settings"
msgstr "Podešavanja mreže" msgstr "Podešavanja mreže"
#: ../js/ui/status/system.js:305 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "Promeni korisnika" msgstr "Promeni korisnika"
#: ../js/ui/status/system.js:310 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "Odjavi me" msgstr "Odjavi me"
#: ../js/ui/status/system.js:329 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Katanac okrenutosti" msgstr "Katanac okrenutosti"
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "Obustavi" msgstr "Obustavi"
#: ../js/ui/status/system.js:340 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "Isključi" msgstr "Isključi"
@ -1692,3 +1689,20 @@ msgstr "Lozinka ne može biti prazna"
#: ../src/shell-polkit-authentication-agent.c:343 #: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Korisnik je odbacio prozorče za potvrđivanje identiteta" msgstr "Korisnik je odbacio prozorče za potvrđivanje identiteta"
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "Došlo je do greške pri učitavanju prozorčeta postavki za %s:"
#~ msgid "Extension"
#~ msgstr "Proširenje"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H:%M"
#~ msgctxt "event list time"
#~ msgid "%l\\u2236%M\\u2009%p"
#~ msgstr "%l:%M:%p"
#~ msgid "Show Keyboard Layout"
#~ msgstr "Prikaži raspored tastature"

363
po/ta.po
View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-11-03 00:53+0000\n" "POT-Creation-Date: 2013-11-01 19:31+0000\n"
"PO-Revision-Date: 2013-11-11 14:44+0530\n" "PO-Revision-Date: 2013-11-11 15:02+0530\n"
"Last-Translator: Shantha kumar <shkumar@redhat.com>\n" "Last-Translator: Shantha kumar <shkumar@redhat.com>\n"
"Language-Team: American English <>\n" "Language-Team: American English <>\n"
"Language: ta\n" "Language: ta\n"
@ -54,7 +54,6 @@ msgid "Window management and application launching"
msgstr "சாளர மேலாண்மை மற்றும் பயன்பாடு துவக்கம்" msgstr "சாளர மேலாண்மை மற்றும் பயன்பாடு துவக்கம்"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1 #: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences" msgid "GNOME Shell Extension Preferences"
msgstr "க்னோம் ஷெல் நீட்சி விருப்பங்கள்" msgstr "க்னோம் ஷெல் நீட்சி விருப்பங்கள்"
@ -269,22 +268,14 @@ msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"சொடுக்கி பயன்முறையில் கவனப் பகுதி மாற்றங்களை சுட்டி நகர்வது நிற்கும் வரை தாமதப்படுத்தவும்" "சொடுக்கி பயன்முறையில் கவனப் பகுதி மாற்றங்களை சுட்டி நகர்வது நிற்கும் வரை தாமதப்படுத்தவும்"
#: ../js/extensionPrefs/main.js:127 #: ../js/extensionPrefs/main.js:189
msgid "There was an error loading the preferences dialog for %s:"
msgstr "%s க்கு விருப்பங்கள் உரையாடலை ஏற்றுகையில் பிழை நேர்ந்தது:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "நீட்சி"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above." msgid "Select an extension to configure using the combobox above."
msgstr "மேலுள்ள கூட்டுப்பெட்டியை பயன்படுத்தி வடிவமைக்க ஒரு நீட்சியை தேர்ந்தெடுக்கவும்" msgstr "மேலுள்ள கூட்டுப்பெட்டியை பயன்படுத்தி வடிவமைக்க ஒரு நீட்சியை தேர்ந்தெடுக்கவும்"
#: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:357 #: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:726 #: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:739
msgid "Cancel" msgid "Cancel"
msgstr "ரத்துசெய்க" msgstr "ரத்துசெய்க"
@ -302,25 +293,25 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "உள்நுழை" msgstr "உள்நுழை"
#: ../js/gdm/loginDialog.js:272 #: ../js/gdm/loginDialog.js:294
#| msgid "Switch Session" #| msgid "Switch Session"
msgid "Choose Session" msgid "Choose Session"
msgstr "அமர்வைத் தேர்வு செய்யவும்" msgstr "அமர்வைத் தேர்வு செய்யவும்"
#: ../js/gdm/loginDialog.js:432 #: ../js/gdm/loginDialog.js:454
msgid "Not listed?" msgid "Not listed?"
msgstr "பட்டியலில் இல்லை?" msgstr "பட்டியலில் இல்லை?"
#: ../js/gdm/loginDialog.js:600 #: ../js/gdm/loginDialog.js:622
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(எ.கா., பயனர் அல்லது %s)" msgstr "(எ.கா., பயனர் அல்லது %s)"
#: ../js/gdm/loginDialog.js:605 ../js/ui/components/networkAgent.js:259 #: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277 #: ../js/ui/components/networkAgent.js:277
msgid "Username: " msgid "Username: "
msgstr "பயனர்பெயர்: " msgstr "பயனர்பெயர்: "
#: ../js/gdm/loginDialog.js:869 #: ../js/gdm/loginDialog.js:891
msgid "Login Window" msgid "Login Window"
msgstr "உள்புகு சாளரம்" msgstr "உள்புகு சாளரம்"
@ -348,23 +339,23 @@ msgstr "'%s' ஐ நிறைவேற்றுதல் தோல்வி அ
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "அதிகம் பயன்படுத்தும் பயன்பாடுகள் இங்கு காண்பிக்கப்படும்" msgstr "அதிகம் பயன்படுத்தும் பயன்பாடுகள் இங்கு காண்பிக்கப்படும்"
#: ../js/ui/appDisplay.js:715 #: ../js/ui/appDisplay.js:712
msgid "Frequent" msgid "Frequent"
msgstr "அடிக்கடி" msgstr "அடிக்கடி"
#: ../js/ui/appDisplay.js:722 #: ../js/ui/appDisplay.js:719
msgid "All" msgid "All"
msgstr "எல்லா" msgstr "எல்லா"
#: ../js/ui/appDisplay.js:1526 #: ../js/ui/appDisplay.js:1523
msgid "New Window" msgid "New Window"
msgstr "புதிய சாளரம்" msgstr "புதிய சாளரம்"
#: ../js/ui/appDisplay.js:1529 ../js/ui/dash.js:284 #: ../js/ui/appDisplay.js:1526 ../js/ui/dash.js:284
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "விருப்பத்தில் இருந்து நீக்கு" msgstr "விருப்பத்தில் இருந்து நீக்கு"
#: ../js/ui/appDisplay.js:1530 #: ../js/ui/appDisplay.js:1527
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "விருப்பங்களுக்கு சேர்" msgstr "விருப்பங்களுக்கு சேர்"
@ -501,48 +492,48 @@ msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "ச" msgstr "ச"
#: ../js/ui/calendar.js:391 #: ../js/ui/calendar.js:389
msgid "calendar:MY" msgid "calendar:MY"
msgstr "நாள்காட்டி:MY" msgstr "நாள்காட்டி:MY"
#: ../js/ui/calendar.js:449 #: ../js/ui/calendar.js:447
msgid "Previous month" msgid "Previous month"
msgstr "முந்தைய மாதம்" msgstr "முந்தைய மாதம்"
#: ../js/ui/calendar.js:459 #: ../js/ui/calendar.js:457
msgid "Next month" msgid "Next month"
msgstr "அடுத்த மாதம்" msgstr "அடுத்த மாதம்"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:755 #: ../js/ui/calendar.js:753
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "திட்டம் எதுவுமில்லை" msgstr "திட்டம் எதுவுமில்லை"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:773 #: ../js/ui/calendar.js:771
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d" msgstr "%A, %B %d"
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:776 #: ../js/ui/calendar.js:774
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %B %d, %Y" msgstr "%A, %B %d, %Y"
#: ../js/ui/calendar.js:787 #: ../js/ui/calendar.js:785
msgid "Today" msgid "Today"
msgstr "இன்று" msgstr "இன்று"
#: ../js/ui/calendar.js:791 #: ../js/ui/calendar.js:789
msgid "Tomorrow" msgid "Tomorrow"
msgstr "நாளை" msgstr "நாளை"
#: ../js/ui/calendar.js:802 #: ../js/ui/calendar.js:800
msgid "This week" msgid "This week"
msgstr "இந்த வாரம்" msgstr "இந்த வாரம்"
#: ../js/ui/calendar.js:810 #: ../js/ui/calendar.js:808
msgid "Next week" msgid "Next week"
msgstr "அடுத்த வாரம்" msgstr "அடுத்த வாரம்"
@ -554,15 +545,15 @@ msgstr "வெளிப்புற இயக்கி இணைக்கப்
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "வெளிப்புற இயக்கி இணைப்பு நீக்கப்பட்டது" msgstr "வெளிப்புற இயக்கி இணைப்பு நீக்கப்பட்டது"
#: ../js/ui/components/autorunManager.js:296 #: ../js/ui/components/autorunManager.js:294
msgid "Removable Devices" msgid "Removable Devices"
msgstr "நீக்கப்படக்கூடிய சாதனங்கள் " msgstr "நீக்கப்படக்கூடிய சாதனங்கள் "
#: ../js/ui/components/autorunManager.js:596 #: ../js/ui/components/autorunManager.js:594
msgid "Open with %s" msgid "Open with %s"
msgstr "%s ஆல் திற" msgstr "%s ஆல் திற"
#: ../js/ui/components/autorunManager.js:622 #: ../js/ui/components/autorunManager.js:620
msgid "Eject" msgid "Eject"
msgstr "வெளியேற்று" msgstr "வெளியேற்று"
@ -575,7 +566,7 @@ msgid "Type again:"
msgstr "மீண்டும் உள்ளிடவும்:" msgstr "மீண்டும் உள்ளிடவும்:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132 #: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:295 ../js/ui/status/network.js:729 #: ../js/ui/status/network.js:295 ../js/ui/status/network.js:742
msgid "Connect" msgid "Connect"
msgstr "இணை" msgstr "இணை"
@ -681,11 +672,11 @@ msgstr "கோப்பு பறிமாற்றம் "
msgid "Chat" msgid "Chat"
msgstr "அரட்டை" msgstr "அரட்டை"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Unmute" msgid "Unmute"
msgstr "ஒலி நிறுத்தம் நீக்கு" msgstr "ஒலி நிறுத்தம் நீக்கு"
#: ../js/ui/components/telepathyClient.js:480 #: ../js/ui/components/telepathyClient.js:479
msgid "Mute" msgid "Mute"
msgstr "ஒலி நிறுத்தம்" msgstr "ஒலி நிறுத்தம்"
@ -729,30 +720,30 @@ msgid "%s is inviting you to join %s"
msgstr "%s உங்களை %s உடன் சேர அழைக்கிறார்." msgstr "%s உங்களை %s உடன் சேர அழைக்கிறார்."
#: ../js/ui/components/telepathyClient.js:1098 #: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1133 #: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1167 #: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1224 #: ../js/ui/components/telepathyClient.js:1242
msgid "Decline" msgid "Decline"
msgstr "நிராகரி" msgstr "நிராகரி"
#: ../js/ui/components/telepathyClient.js:1104 #: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1173 #: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1229 #: ../js/ui/components/telepathyClient.js:1243
msgid "Accept" msgid "Accept"
msgstr "ஏற்றுக்கொள்" msgstr "ஏற்றுக்கொள்"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1123 #: ../js/ui/components/telepathyClient.js:1129
msgid "Video call from %s" msgid "Video call from %s"
msgstr "%s இடமிருந்து விடியோ அழைப்பு" msgstr "%s இடமிருந்து விடியோ அழைப்பு"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1126 #: ../js/ui/components/telepathyClient.js:1132
msgid "Call from %s" msgid "Call from %s"
msgstr "%s இடமிருந்து அழைப்பு" msgstr "%s இடமிருந்து அழைப்பு"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1140 #: ../js/ui/components/telepathyClient.js:1141
msgid "Answer" msgid "Answer"
msgstr "பதிலளி" msgstr "பதிலளி"
@ -761,108 +752,108 @@ msgstr "பதிலளி"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1161 #: ../js/ui/components/telepathyClient.js:1173
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s உங்களுக்கு %s அனுப்புகிறார்" msgstr "%s உங்களுக்கு %s அனுப்புகிறார்"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1190 #: ../js/ui/components/telepathyClient.js:1208
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s நீங்கள் இணைப்பில் இருக்கும் போது காண அனுமதி வேண்டுகிறார். " msgstr "%s நீங்கள் இணைப்பில் இருக்கும் போது காண அனுமதி வேண்டுகிறார். "
#: ../js/ui/components/telepathyClient.js:1275 #: ../js/ui/components/telepathyClient.js:1300
msgid "Network error" msgid "Network error"
msgstr "வலையமைப்பு பிழை" msgstr "வலையமைப்பு பிழை"
#: ../js/ui/components/telepathyClient.js:1277 #: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed" msgid "Authentication failed"
msgstr "உறுதி செய்தல் தோல்வி" msgstr "உறுதி செய்தல் தோல்வி"
#: ../js/ui/components/telepathyClient.js:1279 #: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error" msgid "Encryption error"
msgstr "மறையாக்க பிழை" msgstr "மறையாக்க பிழை"
#: ../js/ui/components/telepathyClient.js:1281 #: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "சான்றிதழ் தரப்படவில்லை" msgstr "சான்றிதழ் தரப்படவில்லை"
#: ../js/ui/components/telepathyClient.js:1283 #: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "சான்றிதழில் நம்பக தன்மை இல்லை" msgstr "சான்றிதழில் நம்பக தன்மை இல்லை"
#: ../js/ui/components/telepathyClient.js:1285 #: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired" msgid "Certificate expired"
msgstr "சான்றிதழ் காலாவதியானது" msgstr "சான்றிதழ் காலாவதியானது"
#: ../js/ui/components/telepathyClient.js:1287 #: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "சான்றிதழ் செயல்படுத்தப்படவில்லை" msgstr "சான்றிதழ் செயல்படுத்தப்படவில்லை"
#: ../js/ui/components/telepathyClient.js:1289 #: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "சான்றிதழ் புரவலன் பெயர் ஒத்திசையவில்லை" msgstr "சான்றிதழ் புரவலன் பெயர் ஒத்திசையவில்லை"
#: ../js/ui/components/telepathyClient.js:1291 #: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "சான்றிதழ் அடையாளம் ஒத்திசையவில்லை" msgstr "சான்றிதழ் அடையாளம் ஒத்திசையவில்லை"
#: ../js/ui/components/telepathyClient.js:1293 #: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "சான்றிதழ் தானே கையெழுத்திட்டது" msgstr "சான்றிதழ் தானே கையெழுத்திட்டது"
#: ../js/ui/components/telepathyClient.js:1295 #: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "நிலை இப்போது இணைப்பு விலகி " msgstr "நிலை இப்போது இணைப்பு விலகி "
#: ../js/ui/components/telepathyClient.js:1297 #: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "குறீயீட்டுமுறை கிடைப்பில் இல்லை" msgstr "குறீயீட்டுமுறை கிடைப்பில் இல்லை"
#: ../js/ui/components/telepathyClient.js:1299 #: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "சான்றிதழ் செல்லுபடியாகாது" msgstr "சான்றிதழ் செல்லுபடியாகாது"
#: ../js/ui/components/telepathyClient.js:1301 #: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "இணைப்பு மறுக்கப்பட்டது" msgstr "இணைப்பு மறுக்கப்பட்டது"
#: ../js/ui/components/telepathyClient.js:1303 #: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "இணைக்க முடியவில்லை" msgstr "இணைக்க முடியவில்லை"
#: ../js/ui/components/telepathyClient.js:1305 #: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "இணைப்பு அற்றுப்போயிற்று" msgstr "இணைப்பு அற்றுப்போயிற்று"
#: ../js/ui/components/telepathyClient.js:1307 #: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "இந்த கணக்கு ஏற்கனவே சேவையகத்துக்கு இணைக்கப்பட்டது" msgstr "இந்த கணக்கு ஏற்கனவே சேவையகத்துக்கு இணைக்கப்பட்டது"
#: ../js/ui/components/telepathyClient.js:1309 #: ../js/ui/components/telepathyClient.js:1334
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "இணைப்பு அதே முலத்துடன் புதிய இணைப்பால் மாற்றப்பட்டது." msgstr "இணைப்பு அதே முலத்துடன் புதிய இணைப்பால் மாற்றப்பட்டது."
#: ../js/ui/components/telepathyClient.js:1311 #: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "இந்த கணக்கு ஏற்கனவே சேவையகத்தில் உள்ளது" msgstr "இந்த கணக்கு ஏற்கனவே சேவையகத்தில் உள்ளது"
#: ../js/ui/components/telepathyClient.js:1313 #: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "இணைப்பை கையாள சேவையகம் இப்போது மிகவும் வேலை பளுவில் உள்ளது." msgstr "இணைப்பை கையாள சேவையகம் இப்போது மிகவும் வேலை பளுவில் உள்ளது."
#: ../js/ui/components/telepathyClient.js:1315 #: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "சான்றிதழ் ரத்து செய்யப்பட்டது" msgstr "சான்றிதழ் ரத்து செய்யப்பட்டது"
#: ../js/ui/components/telepathyClient.js:1317 #: ../js/ui/components/telepathyClient.js:1342
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"சான்றிதழ் பாதுகாப்பில்லாத சைபர் அல்கோரிதத்தை பயன்படுத்துகிறது. இது மறையாக்கத்தில் " "சான்றிதழ் பாதுகாப்பில்லாத சைபர் அல்கோரிதத்தை பயன்படுத்துகிறது. இது மறையாக்கத்தில் "
"பலகீனமானது." "பலகீனமானது."
#: ../js/ui/components/telepathyClient.js:1319 #: ../js/ui/components/telepathyClient.js:1344
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -870,25 +861,25 @@ msgstr ""
"சேவயகத்தின் சான்றிதழின் நீளம் அல்லது சங்கிலியின் ஆழம் மறையாக்க நூலகம் வரயறுத்த மதிப்பை " "சேவயகத்தின் சான்றிதழின் நீளம் அல்லது சங்கிலியின் ஆழம் மறையாக்க நூலகம் வரயறுத்த மதிப்பை "
"தாண்டியது." "தாண்டியது."
#: ../js/ui/components/telepathyClient.js:1321 #: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error" msgid "Internal error"
msgstr "உள்ளார்ந்த பிழை" msgstr "உள்ளார்ந்த பிழை"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1331 #: ../js/ui/components/telepathyClient.js:1356
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "%s க்கு இணைக்க முடியவில்லை" msgstr "%s க்கு இணைக்க முடியவில்லை"
#: ../js/ui/components/telepathyClient.js:1336 #: ../js/ui/components/telepathyClient.js:1361
msgid "View account" msgid "View account"
msgstr "கணக்கை காட்டவும்" msgstr "கணக்கை காட்டவும்"
#: ../js/ui/components/telepathyClient.js:1368 #: ../js/ui/components/telepathyClient.js:1400
msgid "Unknown reason" msgid "Unknown reason"
msgstr "தெரியாத காரணம்" msgstr "தெரியாத காரணம்"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:95 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows" msgid "Windows"
msgstr "சாளரங்கள்" msgstr "சாளரங்கள்"
@ -919,72 +910,72 @@ msgstr "தேதி நேரம் அமைப்புகள்"
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A %B %e, %Y" msgstr "%A %B %e, %Y"
#: ../js/ui/endSessionDialog.js:64 #: ../js/ui/endSessionDialog.js:62
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "%s யிலிருந்து வெளியேறு" msgstr "%s யிலிருந்து வெளியேறு"
#: ../js/ui/endSessionDialog.js:65 #: ../js/ui/endSessionDialog.js:63
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "வெளியேறு" msgstr "வெளியேறு"
#: ../js/ui/endSessionDialog.js:67 #: ../js/ui/endSessionDialog.js:65
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s தானியங்கியாக %d வினாடியில் வெளியேறும்" msgstr[0] "%s தானியங்கியாக %d வினாடியில் வெளியேறும்"
msgstr[1] "%s தானியங்கியாக %d வினாடிகளில் வெளியேறும்" msgstr[1] "%s தானியங்கியாக %d வினாடிகளில் வெளியேறும்"
#: ../js/ui/endSessionDialog.js:72 #: ../js/ui/endSessionDialog.js:70
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "நீங்கள் தானியங்கியாக %d வினாடியில் வெளியேற்றப்படுவீர்கள் " msgstr[0] "நீங்கள் தானியங்கியாக %d வினாடியில் வெளியேற்றப்படுவீர்கள் "
msgstr[1] "நீங்கள் தானியங்கியாக %d வினாடிகளில் வெளியேற்றப்படுவீர்கள் " msgstr[1] "நீங்கள் தானியங்கியாக %d வினாடிகளில் வெளியேற்றப்படுவீர்கள் "
#: ../js/ui/endSessionDialog.js:77 #: ../js/ui/endSessionDialog.js:75
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "வெளியேறு" msgstr "வெளியேறு"
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:81
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "மின்சக்தி நிறுத்தம்" msgstr "மின்சக்தி நிறுத்தம்"
#: ../js/ui/endSessionDialog.js:85 #: ../js/ui/endSessionDialog.js:83
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "கணினி தானியங்கியாக %d வினாடியில் மின் நிறுத்தப்படும்" msgstr[0] "கணினி தானியங்கியாக %d வினாடியில் மின் நிறுத்தப்படும்"
msgstr[1] "கணினி தானியங்கியாக %d வினாடிகளில் மின் நிறுத்தப்படும்" msgstr[1] "கணினி தானியங்கியாக %d வினாடிகளில் மின் நிறுத்தப்படும்"
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:106 #: ../js/ui/endSessionDialog.js:88 ../js/ui/endSessionDialog.js:104
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "மறு துவக்கம்" msgstr "மறு துவக்கம்"
#: ../js/ui/endSessionDialog.js:92 #: ../js/ui/endSessionDialog.js:90
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "மின்சக்தி நிறுத்தம்" msgstr "மின்சக்தி நிறுத்தம்"
#: ../js/ui/endSessionDialog.js:99 #: ../js/ui/endSessionDialog.js:97
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "மறு துவக்கம்" msgstr "மறு துவக்கம்"
#: ../js/ui/endSessionDialog.js:101 #: ../js/ui/endSessionDialog.js:99
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "கணினி தானியங்கியாக %d வினாடியில் மீள் துவக்கம் செய்யப்படும்." msgstr[0] "கணினி தானியங்கியாக %d வினாடியில் மீள் துவக்கம் செய்யப்படும்."
msgstr[1] "கணினி தானியங்கியாக %d வினாடிகளில் மீள் துவக்கம் செய்யப்படும்." msgstr[1] "கணினி தானியங்கியாக %d வினாடிகளில் மீள் துவக்கம் செய்யப்படும்."
#: ../js/ui/endSessionDialog.js:114 #: ../js/ui/endSessionDialog.js:112
#| msgid "Install Updates & Restart" #| msgid "Install Updates & Restart"
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "மறுதுவக்கி புதுப்பிப்புகளை நிறுவு" msgstr "மறுதுவக்கி புதுப்பிப்புகளை நிறுவு"
#: ../js/ui/endSessionDialog.js:116 #: ../js/ui/endSessionDialog.js:114
#| msgid "The system will restart automatically in %d second." #| msgid "The system will restart automatically in %d second."
#| msgid_plural "The system will restart automatically in %d seconds." #| msgid_plural "The system will restart automatically in %d seconds."
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
@ -993,26 +984,26 @@ msgid_plural ""
msgstr[0] "%d வினாடியில் கணினி தானாகவே மறுதுவக்கமாகி புதுப்பிப்புகளை நிறுவும்." msgstr[0] "%d வினாடியில் கணினி தானாகவே மறுதுவக்கமாகி புதுப்பிப்புகளை நிறுவும்."
msgstr[1] "%d வினாடிகளில் கணினி தானாகவே மறுதுவக்கமாகி புதுப்பிப்புகளை நிறுவும்." msgstr[1] "%d வினாடிகளில் கணினி தானாகவே மறுதுவக்கமாகி புதுப்பிப்புகளை நிறுவும்."
#: ../js/ui/endSessionDialog.js:121 #: ../js/ui/endSessionDialog.js:119
msgctxt "button" msgctxt "button"
msgid "Restart & Install" msgid "Restart & Install"
msgstr "மறுதுவக்கி நிறுவு" msgstr "மறுதுவக்கி நிறுவு"
#: ../js/ui/endSessionDialog.js:275 #: ../js/ui/endSessionDialog.js:271
msgid "Some applications are busy or have unsaved work." msgid "Some applications are busy or have unsaved work."
msgstr "சில பயன்பாடுகள் பணிமிகுதியாக உள்ளன அல்லது சேமிக்கப்படாத பணியைக் கொண்டுள்ளன." msgstr "சில பயன்பாடுகள் பணிமிகுதியாக உள்ளன அல்லது சேமிக்கப்படாத பணியைக் கொண்டுள்ளன."
#: ../js/ui/endSessionDialog.js:282 #: ../js/ui/endSessionDialog.js:277
msgid "Other users are logged in." msgid "Other users are logged in."
msgstr "மற்ற பயனர்கள் புகுபதிவு செய்துள்ளனர்." msgstr "மற்ற பயனர்கள் புகுபதிவு செய்துள்ளனர்."
#. Translators: Remote here refers to a remote session, like a ssh login */ #. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:485 #: ../js/ui/endSessionDialog.js:479
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (தொலைநிலை)" msgstr "%s (தொலைநிலை)"
#. Translators: Console here refers to a tty like a VT console */ #. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:488 #: ../js/ui/endSessionDialog.js:482
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (கன்சோல்)" msgstr "%s (கன்சோல்)"
@ -1024,28 +1015,28 @@ msgstr "நிறுவு"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "'%s' ஐ எக்ஸ்டென்ஷன்ஸ்.க்னோம்.ஆர்க். இலிருந்து தரவிறக்கி நிறுவவா?" msgstr "'%s' ஐ எக்ஸ்டென்ஷன்ஸ்.க்னோம்.ஆர்க். இலிருந்து தரவிறக்கி நிறுவவா?"
#: ../js/ui/keyboard.js:621 ../js/ui/status/keyboard.js:335 #: ../js/ui/keyboard.js:619
msgid "Keyboard" msgid "Keyboard"
msgstr "விசைப்பலகை" msgstr "விசைப்பலகை"
#: ../js/ui/lookingGlass.js:640 #: ../js/ui/lookingGlass.js:689
msgid "No extensions installed" msgid "No extensions installed"
msgstr "நீட்சிகள் ஏதும் நிறுவப்படவில்லை" msgstr "நீட்சிகள் ஏதும் நிறுவப்படவில்லை"
#. Translators: argument is an extension UUID. */ #. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:694 #: ../js/ui/lookingGlass.js:743
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s எந்த பிழையையும் வெளியிடவில்லை" msgstr "%s எந்த பிழையையும் வெளியிடவில்லை"
#: ../js/ui/lookingGlass.js:700 #: ../js/ui/lookingGlass.js:749
msgid "Hide Errors" msgid "Hide Errors"
msgstr "பிழைகளை மறை" msgstr "பிழைகளை மறை"
#: ../js/ui/lookingGlass.js:704 ../js/ui/lookingGlass.js:764 #: ../js/ui/lookingGlass.js:753 ../js/ui/lookingGlass.js:813
msgid "Show Errors" msgid "Show Errors"
msgstr "பிழைகளை காட்டுக" msgstr "பிழைகளை காட்டுக"
#: ../js/ui/lookingGlass.js:713 #: ../js/ui/lookingGlass.js:762
msgid "Enabled" msgid "Enabled"
msgstr "செயலாக்கப்பட்டது" msgstr "செயலாக்கப்பட்டது"
@ -1053,73 +1044,73 @@ msgstr "செயலாக்கப்பட்டது"
#. because it's disabled by rfkill (airplane mode) */ #. because it's disabled by rfkill (airplane mode) */
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/network.js:472 #: ../js/ui/lookingGlass.js:765 ../js/ui/status/network.js:472
#: ../src/gvc/gvc-mixer-control.c:1830 #: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled" msgid "Disabled"
msgstr "செயல்நீக்கப்பட்டது" msgstr "செயல்நீக்கப்பட்டது"
#: ../js/ui/lookingGlass.js:718 #: ../js/ui/lookingGlass.js:767
msgid "Error" msgid "Error"
msgstr "பிழை" msgstr "பிழை"
#: ../js/ui/lookingGlass.js:720 #: ../js/ui/lookingGlass.js:769
msgid "Out of date" msgid "Out of date"
msgstr "காலாவதியானது" msgstr "காலாவதியானது"
#: ../js/ui/lookingGlass.js:722 #: ../js/ui/lookingGlass.js:771
msgid "Downloading" msgid "Downloading"
msgstr "பதிவிறக்குகிறது" msgstr "பதிவிறக்குகிறது"
#: ../js/ui/lookingGlass.js:746 #: ../js/ui/lookingGlass.js:795
msgid "View Source" msgid "View Source"
msgstr "மூலத்தை பார்க்க" msgstr "மூலத்தை பார்க்க"
#: ../js/ui/lookingGlass.js:755 #: ../js/ui/lookingGlass.js:804
msgid "Web Page" msgid "Web Page"
msgstr "இணைய பக்கம்" msgstr "இணைய பக்கம்"
#: ../js/ui/messageTray.js:1310 #: ../js/ui/messageTray.js:1347
msgid "Open" msgid "Open"
msgstr "திற" msgstr "திற"
#: ../js/ui/messageTray.js:1317 #: ../js/ui/messageTray.js:1354
msgid "Remove" msgid "Remove"
msgstr "நீக்கு" msgstr "நீக்கு"
#: ../js/ui/messageTray.js:1618 #: ../js/ui/messageTray.js:1657
msgid "Notifications" msgid "Notifications"
msgstr "அறிவிப்புகள்" msgstr "அறிவிப்புகள்"
#: ../js/ui/messageTray.js:1625 #: ../js/ui/messageTray.js:1664
msgid "Clear Messages" msgid "Clear Messages"
msgstr "செய்திகளை அழி" msgstr "செய்திகளை அழி"
#: ../js/ui/messageTray.js:1644 #: ../js/ui/messageTray.js:1683
msgid "Notification Settings" msgid "Notification Settings"
msgstr "அறிவிப்பு அமைப்புகள்" msgstr "அறிவிப்பு அமைப்புகள்"
#: ../js/ui/messageTray.js:1697 #: ../js/ui/messageTray.js:1736
msgid "Tray Menu" msgid "Tray Menu"
msgstr "ட்ரே மெனு" msgstr "ட்ரே மெனு"
#: ../js/ui/messageTray.js:1913 #: ../js/ui/messageTray.js:1952
msgid "No Messages" msgid "No Messages"
msgstr "செய்திகள் இல்லை" msgstr "செய்திகள் இல்லை"
#: ../js/ui/messageTray.js:1951 #: ../js/ui/messageTray.js:1990
msgid "Message Tray" msgid "Message Tray"
msgstr "அறிவிப்பு பலகம்" msgstr "அறிவிப்பு பலகம்"
#: ../js/ui/messageTray.js:2929 #: ../js/ui/messageTray.js:2965
msgid "System Information" msgid "System Information"
msgstr "கணினி தகவல்கள்" msgstr "கணினி தகவல்கள்"
#: ../js/ui/notificationDaemon.js:539 ../src/shell-app.c:396 #: ../js/ui/notificationDaemon.js:510 ../src/shell-app.c:396
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "தெரியாத" msgstr "தெரியாத"
#: ../js/ui/overviewControls.js:486 ../js/ui/screenShield.js:153 #: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:153
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
msgstr[0] "%d புதிய செய்தி" msgstr[0] "%d புதிய செய்தி"
@ -1129,7 +1120,7 @@ msgstr[1] "%d புதிய செய்திகள்"
msgid "Undo" msgid "Undo"
msgstr "மறை" msgstr "மறை"
#: ../js/ui/overview.js:125 #: ../js/ui/overview.js:127
msgid "Overview" msgid "Overview"
msgstr "மேலோட்டம்" msgstr "மேலோட்டம்"
@ -1137,7 +1128,7 @@ msgstr "மேலோட்டம்"
#. in the search entry when no search is #. in the search entry when no search is
#. active; it should not exceed ~30 #. active; it should not exceed ~30
#. characters. */ #. characters. */
#: ../js/ui/overview.js:256 #: ../js/ui/overview.js:258
msgid "Type to search…" msgid "Type to search…"
msgstr "தேட தட்டச்சு செய்யவும்..." msgstr "தேட தட்டச்சு செய்யவும்..."
@ -1195,11 +1186,11 @@ msgstr "பூட்ட முடியவில்லை"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "ஒரு பயன்பாடு பூட்டுதலை முடக்கியுள்ளது" msgstr "ஒரு பயன்பாடு பூட்டுதலை முடக்கியுள்ளது"
#: ../js/ui/search.js:592 #: ../js/ui/searchDisplay.js:448
msgid "Searching…" msgid "Searching…"
msgstr "தேடுகிறது..." msgstr "தேடுகிறது..."
#: ../js/ui/search.js:635 #: ../js/ui/searchDisplay.js:492
msgid "No results." msgid "No results."
msgstr "விடைகள் இல்லை." msgstr "விடைகள் இல்லை."
@ -1278,7 +1269,7 @@ msgid "Bluetooth"
msgstr "ப்ளூடூத்" msgstr "ப்ளூடூத்"
#: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132 #: ../js/ui/status/bluetooth.js:29 ../js/ui/status/network.js:132
#: ../js/ui/status/network.js:1083 ../js/ui/status/rfkill.js:48 #: ../js/ui/status/network.js:1099 ../js/ui/status/rfkill.js:46
msgid "Turn Off" msgid "Turn Off"
msgstr "அணை" msgstr "அணை"
@ -1360,20 +1351,16 @@ msgstr "சாதனத்தின் சொல்லும் பின் ஐ
msgid "OK" msgid "OK"
msgstr "சரி" msgstr "சரி"
#: ../js/ui/status/brightness.js:44 #: ../js/ui/status/brightness.js:42
msgid "Brightness" msgid "Brightness"
msgstr "ஒளிர்வு" msgstr "ஒளிர்வு"
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "விசைப்பலகை இடவமைவை காட்டுக"
#: ../js/ui/status/network.js:71 #: ../js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<தெரியாத>" msgstr "<தெரியாத>"
#: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379 #: ../js/ui/status/network.js:222 ../js/ui/status/network.js:379
#: ../js/ui/status/network.js:1104 #: ../js/ui/status/network.js:1120
#| msgid "Offline" #| msgid "Offline"
msgid "Off" msgid "Off"
msgstr "ஆஃப்" msgstr "ஆஃப்"
@ -1388,12 +1375,12 @@ msgstr "மேலாண்மை இல்லாத"
msgid "disconnecting..." msgid "disconnecting..."
msgstr "துண்டிக்கப்படுகிறது......" msgstr "துண்டிக்கப்படுகிறது......"
#: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1158 #: ../js/ui/status/network.js:393 ../js/ui/status/network.js:1174
msgid "connecting..." msgid "connecting..."
msgstr "இணைக்கிறது..." msgstr "இணைக்கிறது..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1161 #: ../js/ui/status/network.js:396 ../js/ui/status/network.js:1177
msgid "authentication required" msgid "authentication required"
msgstr "உறுதிப்படுத்துதல் தேவை" msgstr "உறுதிப்படுத்துதல் தேவை"
@ -1409,7 +1396,7 @@ msgstr "தள நிரல் காணவில்லை"
msgid "unavailable" msgid "unavailable"
msgstr "செயலாக்க முடியாதவை" msgstr "செயலாக்க முடியாதவை"
#: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1163 #: ../js/ui/status/network.js:410 ../js/ui/status/network.js:1179
msgid "connection failed" msgid "connection failed"
msgstr "இணைப்பு தோல்வி அடைந்தது" msgstr "இணைப்பு தோல்வி அடைந்தது"
@ -1418,99 +1405,95 @@ msgstr "இணைப்பு தோல்வி அடைந்தது"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "மொபைல் பிராட்பேன்ட் அமைவுகள்" msgstr "மொபைல் பிராட்பேன்ட் அமைவுகள்"
#: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1102 #: ../js/ui/status/network.js:468 ../js/ui/status/network.js:1118
#| msgid "hardware disabled" #| msgid "hardware disabled"
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "வன்பொருள் முடக்கப்பட்டது" msgstr "வன்பொருள் முடக்கப்பட்டது"
#: ../js/ui/status/network.js:694 #: ../js/ui/status/network.js:707
#| msgid "Network" #| msgid "Network"
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Wi-Fi பிணையங்கள்" msgstr "Wi-Fi பிணையங்கள்"
#: ../js/ui/status/network.js:696 #: ../js/ui/status/network.js:709
#| msgid "Enable networking" #| msgid "Enable networking"
msgid "Select a network" msgid "Select a network"
msgstr "ஒரு பிணையத்தைத் தேர்ந்தெடுக்கவும்" msgstr "ஒரு பிணையத்தைத் தேர்ந்தெடுக்கவும்"
#: ../js/ui/status/network.js:720 #: ../js/ui/status/network.js:733
#| msgid "Network" #| msgid "Network"
msgid "No Networks" msgid "No Networks"
msgstr "பிணையங்கள் இல்லை" msgstr "பிணையங்கள் இல்லை"
#: ../js/ui/status/network.js:989 #: ../js/ui/status/network.js:1005
#| msgid "Network" #| msgid "Network"
msgid "Select Network" msgid "Select Network"
msgstr "பிணையத்தைத் தேர்ந்தெடுக்கவும்" msgstr "பிணையத்தைத் தேர்ந்தெடுக்கவும்"
#: ../js/ui/status/network.js:995 #: ../js/ui/status/network.js:1011
#| msgid "Settings" #| msgid "Settings"
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Wi-Fi அமைவுகள்" msgstr "Wi-Fi அமைவுகள்"
#: ../js/ui/status/network.js:1083 #: ../js/ui/status/network.js:1099
msgid "Turn On" msgid "Turn On"
msgstr "இயக்கு" msgstr "இயக்கு"
#: ../js/ui/status/network.js:1106 #: ../js/ui/status/network.js:1122
#| msgid "Connect" #| msgid "Connect"
msgid "Not Connected" msgid "Not Connected"
msgstr "இணைக்கப்படவில்லை" msgstr "இணைக்கப்படவில்லை"
#: ../js/ui/status/network.js:1226 #: ../js/ui/status/network.js:1242
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1366 #: ../js/ui/status/network.js:1382
msgid "Network Manager" msgid "Network Manager"
msgstr "வலைப்பின்னல் மேலாளர்" msgstr "வலைப்பின்னல் மேலாளர்"
#: ../js/ui/status/network.js:1405 #: ../js/ui/status/network.js:1421
msgid "Connection failed" msgid "Connection failed"
msgstr "இணைப்பு தோல்வியுற்றது" msgstr "இணைப்பு தோல்வியுற்றது"
#: ../js/ui/status/network.js:1406 #: ../js/ui/status/network.js:1422
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "வலைப்பின்னல் இணைப்பு செயலாக்கம் தோல்வி அடைந்தது" msgstr "வலைப்பின்னல் இணைப்பு செயலாக்கம் தோல்வி அடைந்தது"
#: ../js/ui/status/power.js:49 #: ../js/ui/status/power.js:46
msgid "Power Settings"
msgstr "மின்சக்தி அமைப்புகள்"
#: ../js/ui/status/power.js:65
msgid "Fully Charged"
msgstr "முழுதும் சார்ஜ் ஆகியுள்ளது"
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
msgid "Estimating…"
msgstr "கணிக்கிறது…"
#: ../js/ui/status/power.js:86
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d மீதமுள்ளது (%d%%)"
#: ../js/ui/status/power.js:91
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d நிரம்ப உள்ளது (%d%%)"
#: ../js/ui/status/power.js:119
msgid "UPS"
msgstr "யூபிஎஸ்"
#: ../js/ui/status/power.js:121
msgid "Battery" msgid "Battery"
msgstr "மின்கலம்" msgstr "மின்கலம்"
#: ../js/ui/status/rfkill.js:45 #: ../js/ui/status/power.js:47
msgid "Power Settings"
msgstr "மின்சக்தி அமைப்புகள்"
#: ../js/ui/status/power.js:63
msgid "Fully Charged"
msgstr "முழுதும் சார்ஜ் ஆகியுள்ளது"
#: ../js/ui/status/power.js:69 ../js/ui/status/power.js:86
msgid "Estimating…"
msgstr "கணிக்கிறது…"
#: ../js/ui/status/power.js:77
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d மீதமுள்ளது (%d%%)"
#: ../js/ui/status/power.js:82
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d நிரம்ப உள்ளது (%d%%)"
#: ../js/ui/status/rfkill.js:43
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "விமானப் பயன்முறை" msgstr "விமானப் பயன்முறை"
#: ../js/ui/status/rfkill.js:47 #: ../js/ui/status/rfkill.js:45
#| msgid "Open" #| msgid "Open"
msgid "On" msgid "On"
msgstr "ஆன்" msgstr "ஆன்"
#: ../js/ui/status/rfkill.js:51 #: ../js/ui/status/rfkill.js:49
msgid "Network Settings" msgid "Network Settings"
msgstr "வலைப்பின்னல் அமைப்புகள்" msgstr "வலைப்பின்னல் அமைப்புகள்"
@ -1554,14 +1537,26 @@ msgstr "வேறு பயனராக உள்நுழைக"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "சாளர பூட்டு திறக்கவும்" msgstr "சாளர பூட்டு திறக்கவும்"
#: ../js/ui/viewSelector.js:99 #: ../js/ui/viewSelector.js:104
msgid "Applications" msgid "Applications"
msgstr "பயன்பாடுகள்" msgstr "பயன்பாடுகள்"
#: ../js/ui/viewSelector.js:103 #: ../js/ui/viewSelector.js:108
msgid "Search" msgid "Search"
msgstr "தேடு" msgstr "தேடு"
#: ../js/ui/wanda.js:77
msgid ""
"Sorry, no wisdom for you today:\n"
"%s"
msgstr ""
"மன்னிக்க இன்றூ உங்களுக்கு பொன்மொழி இல்லை:\n"
"%s"
#: ../js/ui/wanda.js:81
msgid "%s the Oracle says"
msgstr "%s அசரீரி சொல்லுகிறது"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:19
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "'%s' தயாராக உள்ளது" msgstr "'%s' தயாராக உள்ளது"
@ -1614,23 +1609,23 @@ msgstr[1] "%u உள்ளீடுகள்"
msgid "System Sounds" msgid "System Sounds"
msgstr "கணினி ஒலிகள்" msgstr "கணினி ஒலிகள்"
#: ../src/main.c:351 #: ../src/main.c:353
msgid "Print version" msgid "Print version"
msgstr "அச்சுப் பதிப்பு" msgstr "அச்சுப் பதிப்பு"
#: ../src/main.c:357 #: ../src/main.c:359
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "ஜிடிஎம் உள்நுழைவு திரைக்கு பயன்படுத்தும் பாங்கு" msgstr "ஜிடிஎம் உள்நுழைவு திரைக்கு பயன்படுத்தும் பாங்கு"
#: ../src/main.c:363 #: ../src/main.c:365
msgid "Use a specific mode, e.g. \"gdm\" for login screen" msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "உள்நுழைவு திரைக்கு குறிப்பிட்ட பாங்கை, எ.கா. \"gdm\" பயன்படுத்துக" msgstr "உள்நுழைவு திரைக்கு குறிப்பிட்ட பாங்கை, எ.கா. \"gdm\" பயன்படுத்துக"
#: ../src/main.c:369 #: ../src/main.c:371
msgid "List possible modes" msgid "List possible modes"
msgstr "இயன்ற பாங்குகளின் பட்டியல்" msgstr "இயன்ற பாங்குகளின் பட்டியல்"
#: ../src/shell-app.c:639 #: ../src/shell-app.c:644
#, c-format #, c-format
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "'%s' ஐ துவக்க முடியவில்லை" msgstr "'%s' ஐ துவக்க முடியவில்லை"
@ -1734,3 +1729,9 @@ msgstr "பயனர் உறுதிப்படுத்தல் உரை
#~ "ஸ்க்ரீன்காஸ்ட் இல் பதிவாவனக்கான கோப்புப்பெயர் தனித்தன்மை வாய்ந்தது. இது நடப்பு தேதியை " #~ "ஸ்க்ரீன்காஸ்ட் இல் பதிவாவனக்கான கோப்புப்பெயர் தனித்தன்மை வாய்ந்தது. இது நடப்பு தேதியை "
#~ "அடிப்படையாக கொண்டது; இந்த பின்னொட்டை பயன்படுத்தும். பதிவதை வேறு கொள்கலத்தின் ஒழுங்கில் " #~ "அடிப்படையாக கொண்டது; இந்த பின்னொட்டை பயன்படுத்தும். பதிவதை வேறு கொள்கலத்தின் ஒழுங்கில் "
#~ "மாற்றுகையில் இதையும் மாற்ற வேண்டும்." #~ "மாற்றுகையில் இதையும் மாற்ற வேண்டும்."
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "%s க்கு விருப்பங்கள் உரையாடலை ஏற்றுகையில் பிழை நேர்ந்தது:"
#~ msgid "Extension"
#~ msgstr "நீட்சி"

789
po/tr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -156,10 +156,8 @@ libst_1_0_la_SOURCES = \
$(st_source_private_h) \ $(st_source_private_h) \
$(st_source_private_c) \ $(st_source_private_c) \
$(st_source_h) \ $(st_source_h) \
$(NULL)
nodist_libst_1_0_la_SOURCES = \
$(st_built_sources) \
st.h \ st.h \
$(st_built_sources) \
$(NULL) $(NULL)
libst_1_0_la_CPPFLAGS = $(st_cflags) libst_1_0_la_CPPFLAGS = $(st_cflags)
libst_1_0_la_LDFLAGS = $(LDADD) libst_1_0_la_LDFLAGS = $(LDADD)

View File

@ -4,6 +4,8 @@ tray_cflags = \
$(TRAY_CFLAGS) \ $(TRAY_CFLAGS) \
$(NULL) $(NULL)
BUILT_SOURCES += $(tray_built_sources)
# please, keep this sorted alphabetically # please, keep this sorted alphabetically
tray_source = \ tray_source = \
tray/na-tray-child.c \ tray/na-tray-child.c \
@ -17,6 +19,7 @@ noinst_LTLIBRARIES += libtray.la
libtray_la_LIBADD = $(TRAY_LIBS) libtray_la_LIBADD = $(TRAY_LIBS)
libtray_la_SOURCES = \ libtray_la_SOURCES = \
$(tray_source) \ $(tray_source) \
$(tray_built_sources) \
$(NULL) $(NULL)
libtray_la_CPPFLAGS = $(tray_cflags) libtray_la_CPPFLAGS = $(tray_cflags)
libtray_la_LDFLAGS = $(LDADD) libtray_la_LDFLAGS = $(LDADD)

View File

@ -75,7 +75,8 @@ gnome_shell_cflags = \
-DDATADIR=\"$(datadir)\" \ -DDATADIR=\"$(datadir)\" \
-DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \ -DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \
-DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \ -DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \
-DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" -DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \
-DJSDIR=\"$(pkgdatadir)/js\"
privlibdir = $(pkglibdir) privlibdir = $(pkglibdir)
privlib_LTLIBRARIES = libgnome-shell-js.la libgnome-shell-menu.la libgnome-shell.la privlib_LTLIBRARIES = libgnome-shell-js.la libgnome-shell-menu.la libgnome-shell.la
@ -151,6 +152,7 @@ libgnome_shell_base_la_SOURCES = \
$(NULL) $(NULL)
libgnome_shell_sources = \ libgnome_shell_sources = \
$(shell_built_sources) \
$(shell_public_headers_h) \ $(shell_public_headers_h) \
shell-app-private.h \ shell-app-private.h \
shell-app-system-private.h \ shell-app-system-private.h \
@ -171,17 +173,10 @@ libgnome_shell_sources = \
shell-wm.c \ shell-wm.c \
$(NULL) $(NULL)
libgnome_shell_built_sources = \
$(shell_built_sources) \
$(top_builddir)/js/js-resources.c \
$(top_builddir)/js/js-resources.h \
$(NULL)
libgnome_shell_la_SOURCES = $(libgnome_shell_sources) libgnome_shell_la_SOURCES = $(libgnome_shell_sources)
nodist_libgnome_shell_la_SOURCES = $(libgnome_shell_built_sources)
libgnome_shell_la_gir_sources = \ libgnome_shell_la_gir_sources = \
$(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_base_la_SOURCES) $(libgnome_shell_sources) $(libgnome_shell_built_sources)) $(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_base_la_SOURCES) $(libgnome_shell_sources))
gnome_shell_SOURCES = main.c gnome_shell_SOURCES = main.c
gnome_shell_CPPFLAGS = \ gnome_shell_CPPFLAGS = \
@ -196,7 +191,6 @@ gnome_shell_DEPENDENCIES = libgnome-shell.la
if HAVE_MUTTER_WAYLAND if HAVE_MUTTER_WAYLAND
libgnome_shell_wayland_la_SOURCES = $(libgnome_shell_sources) libgnome_shell_wayland_la_SOURCES = $(libgnome_shell_sources)
nodist_libgnome_shell_wayland_la_SOURCES = $(libgnome_shell_built_sources)
gnome_shell_wayland_SOURCES = main.c gnome_shell_wayland_SOURCES = main.c
gnome_shell_wayland_CPPFLAGS = \ gnome_shell_wayland_CPPFLAGS = \
@ -213,7 +207,7 @@ endif HAVE_MUTTER_WAYLAND
libgnome_shell_js_la_SOURCES = \ libgnome_shell_js_la_SOURCES = \
shell-js.h \ shell-js.h \
shell-js.cpp \ shell-js.c \
$(NULL) $(NULL)
libgnome_shell_js_la_LIBADD = \ libgnome_shell_js_la_LIBADD = \

View File

@ -29,6 +29,8 @@
#include "shell-perf-log.h" #include "shell-perf-log.h"
#include "st.h" #include "st.h"
#include <jsapi.h>
extern GType gnome_shell_plugin_get_type (void); extern GType gnome_shell_plugin_get_type (void);
#define SHELL_DBUS_SERVICE "org.gnome.Shell" #define SHELL_DBUS_SERVICE "org.gnome.Shell"

View File

@ -12,9 +12,9 @@ G_BEGIN_DECLS
ShellApp* _shell_app_new_for_window (MetaWindow *window); ShellApp* _shell_app_new_for_window (MetaWindow *window);
ShellApp* _shell_app_new (GDesktopAppInfo *info); ShellApp* _shell_app_new (GMenuTreeEntry *entry);
void _shell_app_set_app_info (ShellApp *app, GDesktopAppInfo *info); void _shell_app_set_entry (ShellApp *app, GMenuTreeEntry *entry);
void _shell_app_handle_startup_sequence (ShellApp *app, SnStartupSequence *sequence); void _shell_app_handle_startup_sequence (ShellApp *app, SnStartupSequence *sequence);

View File

@ -38,12 +38,18 @@ enum {
static guint signals[LAST_SIGNAL] = { 0 }; static guint signals[LAST_SIGNAL] = { 0 };
struct _ShellAppSystemPrivate { struct _ShellAppSystemPrivate {
GMenuTree *apps_tree;
GHashTable *running_apps; GHashTable *running_apps;
GHashTable *visible_id_to_app;
GHashTable *id_to_app; GHashTable *id_to_app;
GHashTable *startup_wm_class_to_id; GHashTable *startup_wm_class_to_app;
GSList *known_vendor_prefixes;
}; };
static void shell_app_system_finalize (GObject *object); static void shell_app_system_finalize (GObject *object);
static void on_apps_tree_changed_cb (GMenuTree *tree, gpointer user_data);
G_DEFINE_TYPE(ShellAppSystem, shell_app_system, G_TYPE_OBJECT); G_DEFINE_TYPE(ShellAppSystem, shell_app_system, G_TYPE_OBJECT);
@ -71,45 +77,10 @@ static void shell_app_system_class_init(ShellAppSystemClass *klass)
g_type_class_add_private (gobject_class, sizeof (ShellAppSystemPrivate)); g_type_class_add_private (gobject_class, sizeof (ShellAppSystemPrivate));
} }
static void
scan_startup_wm_class_to_id (ShellAppSystem *self)
{
ShellAppSystemPrivate *priv = self->priv;
GList *apps, *l;
g_hash_table_remove_all (priv->startup_wm_class_to_id);
apps = g_app_info_get_all ();
for (l = apps; l != NULL; l = l->next)
{
GAppInfo *info = l->data;
const char *startup_wm_class, *id;
id = g_app_info_get_id (info);
startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info));
if (startup_wm_class != NULL)
g_hash_table_insert (priv->startup_wm_class_to_id, (char *) startup_wm_class, (char *) id);
}
g_list_free_full (apps, g_object_unref);
}
static void
installed_changed (GAppInfoMonitor *monitor,
gpointer user_data)
{
ShellAppSystem *self = user_data;
scan_startup_wm_class_to_id (self);
g_signal_emit (self, signals[INSTALLED_CHANGED], 0, NULL);
}
static void static void
shell_app_system_init (ShellAppSystem *self) shell_app_system_init (ShellAppSystem *self)
{ {
ShellAppSystemPrivate *priv; ShellAppSystemPrivate *priv;
GAppInfoMonitor *monitor;
self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (self, self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
SHELL_TYPE_APP_SYSTEM, SHELL_TYPE_APP_SYSTEM,
@ -120,11 +91,19 @@ shell_app_system_init (ShellAppSystem *self)
NULL, NULL,
(GDestroyNotify)g_object_unref); (GDestroyNotify)g_object_unref);
priv->startup_wm_class_to_id = g_hash_table_new (g_str_hash, g_str_equal); /* All the objects in this hash table are owned by id_to_app */
priv->visible_id_to_app = g_hash_table_new (g_str_hash, g_str_equal);
monitor = g_app_info_monitor_get (); priv->startup_wm_class_to_app = g_hash_table_new_full (g_str_hash, g_str_equal,
g_signal_connect (monitor, "changed", G_CALLBACK (installed_changed), self); NULL,
installed_changed (monitor, self); (GDestroyNotify)g_object_unref);
/* We want to track NoDisplay apps, so we add INCLUDE_NODISPLAY. We'll
* filter NoDisplay apps out when showing them to the user. */
priv->apps_tree = gmenu_tree_new ("applications.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
g_signal_connect (priv->apps_tree, "changed", G_CALLBACK (on_apps_tree_changed_cb), self);
on_apps_tree_changed_cb (priv->apps_tree, self);
} }
static void static void
@ -133,13 +112,313 @@ shell_app_system_finalize (GObject *object)
ShellAppSystem *self = SHELL_APP_SYSTEM (object); ShellAppSystem *self = SHELL_APP_SYSTEM (object);
ShellAppSystemPrivate *priv = self->priv; ShellAppSystemPrivate *priv = self->priv;
g_object_unref (priv->apps_tree);
g_hash_table_destroy (priv->running_apps); g_hash_table_destroy (priv->running_apps);
g_hash_table_destroy (priv->id_to_app); g_hash_table_destroy (priv->id_to_app);
g_hash_table_destroy (priv->startup_wm_class_to_id); g_hash_table_destroy (priv->visible_id_to_app);
g_hash_table_destroy (priv->startup_wm_class_to_app);
g_slist_free_full (priv->known_vendor_prefixes, g_free);
priv->known_vendor_prefixes = NULL;
G_OBJECT_CLASS (shell_app_system_parent_class)->finalize (object); G_OBJECT_CLASS (shell_app_system_parent_class)->finalize (object);
} }
static char *
get_prefix_for_entry (GMenuTreeEntry *entry)
{
char *prefix = NULL, *file_prefix = NULL;
const char *id;
GFile *file;
char *name;
int i = 0;
id = gmenu_tree_entry_get_desktop_file_id (entry);
file = g_file_new_for_path (gmenu_tree_entry_get_desktop_file_path (entry));
name = g_file_get_basename (file);
if (!name)
{
g_object_unref (file);
return NULL;
}
for (i = 0; vendor_prefixes[i]; i++)
{
if (g_str_has_prefix (name, vendor_prefixes[i]))
{
file_prefix = g_strdup (vendor_prefixes[i]);
break;
}
}
while (strcmp (name, id) != 0)
{
char *t;
char *pname;
GFile *parent = g_file_get_parent (file);
if (!parent)
{
g_warn_if_reached ();
break;
}
pname = g_file_get_basename (parent);
if (!pname)
{
g_object_unref (parent);
break;
}
if (!g_strstr_len (id, -1, pname))
{
/* handle <LegacyDir prefix="..."> */
char *t;
size_t name_len = strlen (name);
size_t id_len = strlen (id);
char *t_id = g_strdup (id);
t_id[id_len - name_len] = '\0';
t = g_strdup(t_id);
g_free (prefix);
g_free (t_id);
g_free (name);
name = g_strdup (id);
prefix = t;
g_object_unref (file);
file = parent;
g_free (pname);
g_free (file_prefix);
file_prefix = NULL;
break;
}
t = g_strconcat (pname, "-", name, NULL);
g_free (name);
name = t;
t = g_strconcat (pname, "-", prefix, NULL);
g_free (prefix);
prefix = t;
g_object_unref (file);
file = parent;
g_free (pname);
}
if (file)
g_object_unref (file);
if (strcmp (name, id) == 0)
{
g_free (name);
if (file_prefix && !prefix)
return file_prefix;
if (file_prefix)
{
char *t = g_strconcat (prefix, "-", file_prefix, NULL);
g_free (prefix);
g_free (file_prefix);
prefix = t;
}
return prefix;
}
g_free (name);
g_free (prefix);
g_free (file_prefix);
g_return_val_if_reached (NULL);
}
static void
get_flattened_entries_recurse (GMenuTreeDirectory *dir,
GHashTable *entry_set)
{
GMenuTreeIter *iter = gmenu_tree_directory_iter (dir);
GMenuTreeItemType next_type;
while ((next_type = gmenu_tree_iter_next (iter)) != GMENU_TREE_ITEM_INVALID)
{
gpointer item = NULL;
switch (next_type)
{
case GMENU_TREE_ITEM_ENTRY:
{
GMenuTreeEntry *entry;
item = entry = gmenu_tree_iter_get_entry (iter);
/* Key is owned by entry */
g_hash_table_replace (entry_set,
(char*)gmenu_tree_entry_get_desktop_file_id (entry),
gmenu_tree_item_ref (entry));
}
break;
case GMENU_TREE_ITEM_DIRECTORY:
{
item = gmenu_tree_iter_get_directory (iter);
get_flattened_entries_recurse ((GMenuTreeDirectory*)item, entry_set);
}
break;
default:
break;
}
if (item != NULL)
gmenu_tree_item_unref (item);
}
gmenu_tree_iter_unref (iter);
}
static GHashTable *
get_flattened_entries_from_tree (GMenuTree *tree)
{
GHashTable *table;
GMenuTreeDirectory *root;
table = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify) NULL,
(GDestroyNotify) gmenu_tree_item_unref);
root = gmenu_tree_get_root_directory (tree);
if (root != NULL)
get_flattened_entries_recurse (root, table);
gmenu_tree_item_unref (root);
return table;
}
static void
on_apps_tree_changed_cb (GMenuTree *tree,
gpointer user_data)
{
ShellAppSystem *self = SHELL_APP_SYSTEM (user_data);
GError *error = NULL;
GHashTable *new_apps;
GHashTableIter iter;
gpointer key, value;
g_assert (tree == self->priv->apps_tree);
g_hash_table_remove_all (self->priv->visible_id_to_app);
g_slist_free_full (self->priv->known_vendor_prefixes, g_free);
self->priv->known_vendor_prefixes = NULL;
if (!gmenu_tree_load_sync (self->priv->apps_tree, &error))
{
if (error)
{
g_warning ("Failed to load apps: %s", error->message);
g_error_free (error);
}
else
{
g_warning ("Failed to load apps");
}
return;
}
new_apps = get_flattened_entries_from_tree (self->priv->apps_tree);
g_hash_table_iter_init (&iter, new_apps);
while (g_hash_table_iter_next (&iter, &key, &value))
{
const char *id = key;
GMenuTreeEntry *entry = value;
GMenuTreeEntry *old_entry;
char *prefix;
ShellApp *app;
GDesktopAppInfo *info;
const char *startup_wm_class;
prefix = get_prefix_for_entry (entry);
if (prefix != NULL
&& !g_slist_find_custom (self->priv->known_vendor_prefixes, prefix,
(GCompareFunc)g_strcmp0))
self->priv->known_vendor_prefixes = g_slist_append (self->priv->known_vendor_prefixes,
prefix);
else
g_free (prefix);
app = g_hash_table_lookup (self->priv->id_to_app, id);
if (app != NULL)
{
/* We hold a reference to the original entry temporarily,
* because otherwise the hash table would be referencing
* potentially free'd memory until we replace it below with
* the new data.
*/
old_entry = shell_app_get_tree_entry (app);
gmenu_tree_item_ref (old_entry);
_shell_app_set_entry (app, entry);
g_object_ref (app); /* Extra ref, removed in _replace below */
}
else
{
old_entry = NULL;
app = _shell_app_new (entry);
}
/* Note that "id" is owned by app->entry. Since we're always
* setting a new entry, even if the app already exists in the
* hash table we need to replace the key so that the new id
* string is pointed to.
*/
g_hash_table_replace (self->priv->id_to_app, (char*)id, app);
if (!gmenu_tree_entry_get_is_nodisplay_recurse (entry))
g_hash_table_replace (self->priv->visible_id_to_app, (char*)id, app);
if (old_entry)
{
GDesktopAppInfo *old_info;
const gchar *old_startup_wm_class;
old_info = gmenu_tree_entry_get_app_info (old_entry);
old_startup_wm_class = g_desktop_app_info_get_startup_wm_class (old_info);
if (old_startup_wm_class)
g_hash_table_remove (self->priv->startup_wm_class_to_app, old_startup_wm_class);
}
info = gmenu_tree_entry_get_app_info (entry);
startup_wm_class = g_desktop_app_info_get_startup_wm_class (info);
if (startup_wm_class)
g_hash_table_replace (self->priv->startup_wm_class_to_app,
(char*)startup_wm_class, g_object_ref (app));
if (old_entry)
gmenu_tree_item_unref (old_entry);
}
/* Now iterate over the apps again; we need to unreference any apps
* which have been removed. The JS code may still be holding a
* reference; that's fine.
*/
g_hash_table_iter_init (&iter, self->priv->id_to_app);
while (g_hash_table_iter_next (&iter, &key, &value))
{
const char *id = key;
if (!g_hash_table_lookup (new_apps, id))
g_hash_table_iter_remove (&iter);
}
g_hash_table_destroy (new_apps);
g_signal_emit (self, signals[INSTALLED_CHANGED], 0);
}
/**
* shell_app_system_get_tree:
*
* Return Value: (transfer none): The #GMenuTree for apps
*/
GMenuTree *
shell_app_system_get_tree (ShellAppSystem *self)
{
return self->priv->apps_tree;
}
/** /**
* shell_app_system_get_default: * shell_app_system_get_default:
* *
@ -167,21 +446,61 @@ ShellApp *
shell_app_system_lookup_app (ShellAppSystem *self, shell_app_system_lookup_app (ShellAppSystem *self,
const char *id) const char *id)
{ {
ShellAppSystemPrivate *priv = self->priv; return g_hash_table_lookup (self->priv->id_to_app, id);
}
/**
* shell_app_system_lookup_app_by_tree_entry:
* @system: a #ShellAppSystem
* @entry: a #GMenuTreeEntry
*
* Find a #ShellApp corresponding to a #GMenuTreeEntry.
*
* Return value: (transfer none): The #ShellApp for @entry, or %NULL if none
*/
ShellApp *
shell_app_system_lookup_app_by_tree_entry (ShellAppSystem *self,
GMenuTreeEntry *entry)
{
/* If we looked up directly in ->entry_to_app, we'd lose the
* override of running apps. Thus, indirect through the id.
*/
return shell_app_system_lookup_app (self, gmenu_tree_entry_get_desktop_file_id (entry));
}
/**
* shell_app_system_lookup_app_for_path:
* @system: a #ShellAppSystem
* @desktop_path: (type utf8): UTF-8 encoded absolute file name
*
* Find or create a #ShellApp corresponding to a given absolute file
* name which must be in the standard paths (XDG_DATA_DIRS). For
* files outside the datadirs, this function returns %NULL.
*
* Return value: (transfer none): The #ShellApp for id, or %NULL if none
*/
ShellApp *
shell_app_system_lookup_app_for_path (ShellAppSystem *system,
const char *desktop_path)
{
const char *basename;
const char *app_path;
ShellApp *app; ShellApp *app;
GDesktopAppInfo *info;
app = g_hash_table_lookup (priv->id_to_app, id); basename = g_strrstr (desktop_path, "/");
if (app) if (basename)
return app; basename += 1;
else
basename = desktop_path;
info = g_desktop_app_info_new (id); app = shell_app_system_lookup_app (system, basename);
if (!info) if (!app)
return NULL;
app_path = g_desktop_app_info_get_filename (shell_app_get_app_info (app));
if (strcmp (desktop_path, app_path) != 0)
return NULL; return NULL;
app = _shell_app_new (info);
g_hash_table_insert (priv->id_to_app, (char *) shell_app_get_id (app), app);
g_object_unref (info);
return app; return app;
} }
@ -201,15 +520,15 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
const char *name) const char *name)
{ {
ShellApp *result; ShellApp *result;
const char *const *prefix; GSList *prefix;
result = shell_app_system_lookup_app (system, name); result = shell_app_system_lookup_app (system, name);
if (result != NULL) if (result != NULL)
return result; return result;
for (prefix = vendor_prefixes; *prefix != NULL; prefix++) for (prefix = system->priv->known_vendor_prefixes; prefix; prefix = g_slist_next (prefix))
{ {
char *tmpid = g_strconcat (*prefix, name, NULL); char *tmpid = g_strconcat ((char*)prefix->data, name, NULL);
result = shell_app_system_lookup_app (system, tmpid); result = shell_app_system_lookup_app (system, tmpid);
g_free (tmpid); g_free (tmpid);
if (result != NULL) if (result != NULL)
@ -284,16 +603,10 @@ ShellApp *
shell_app_system_lookup_startup_wmclass (ShellAppSystem *system, shell_app_system_lookup_startup_wmclass (ShellAppSystem *system,
const char *wmclass) const char *wmclass)
{ {
const char *id;
if (wmclass == NULL) if (wmclass == NULL)
return NULL; return NULL;
id = g_hash_table_lookup (system->priv->startup_wm_class_to_id, wmclass); return g_hash_table_lookup (system->priv->startup_wm_class_to_app, wmclass);
if (id == NULL)
return NULL;
return shell_app_system_lookup_app (system, id);
} }
void void
@ -368,22 +681,13 @@ sort_and_concat_results (ShellAppSystem *system,
GSList *prefix_matches, GSList *prefix_matches,
GSList *substring_matches) GSList *substring_matches)
{ {
GSList *matches = NULL;
GSList *l;
prefix_matches = g_slist_sort_with_data (prefix_matches, prefix_matches = g_slist_sort_with_data (prefix_matches,
compare_apps_by_usage, compare_apps_by_usage,
system); system);
substring_matches = g_slist_sort_with_data (substring_matches, substring_matches = g_slist_sort_with_data (substring_matches,
compare_apps_by_usage, compare_apps_by_usage,
system); system);
return g_slist_concat (prefix_matches, substring_matches);
for (l = substring_matches; l != NULL; l = l->next)
matches = g_slist_prepend (matches, (char *) shell_app_get_id (SHELL_APP (l->data)));
for (l = prefix_matches; l != NULL; l = l->next)
matches = g_slist_prepend (matches, (char *) shell_app_get_id (SHELL_APP (l->data)));
return g_slist_reverse (matches);
} }
/** /**
@ -430,6 +734,7 @@ search_tree (ShellAppSystem *self,
g_slist_free_full (normalized_terms, g_free); g_slist_free_full (normalized_terms, g_free);
return sort_and_concat_results (self, prefix_results, substring_results); return sort_and_concat_results (self, prefix_results, substring_results);
} }
/** /**
@ -439,26 +744,26 @@ search_tree (ShellAppSystem *self,
* *
* Search through applications for the given search terms. * Search through applications for the given search terms.
* *
* Returns: (transfer container) (element-type utf8): List of applications * Returns: (transfer container) (element-type ShellApp): List of applications
*/ */
GSList * GSList *
shell_app_system_initial_search (ShellAppSystem *self, shell_app_system_initial_search (ShellAppSystem *self,
GSList *terms) GSList *terms)
{ {
return search_tree (self, terms, self->priv->id_to_app); return search_tree (self, terms, self->priv->visible_id_to_app);
} }
/** /**
* shell_app_system_subsearch: * shell_app_system_subsearch:
* @system: A #ShellAppSystem * @system: A #ShellAppSystem
* @previous_results: (element-type utf8): List of previous results * @previous_results: (element-type ShellApp): List of previous results
* @terms: (element-type utf8): List of terms, logical AND * @terms: (element-type utf8): List of terms, logical AND
* *
* Search through a previous result set; for more information, see * Search through a previous result set; for more information, see
* js/ui/search.js. Note that returned strings are only valid until * js/ui/search.js. Note that returned strings are only valid until
* a return to the main loop. * a return to the main loop.
* *
* Returns: (transfer container) (element-type utf8): List of application identifiers * Returns: (transfer container) (element-type ShellApp): List of application identifiers
*/ */
GSList * GSList *
shell_app_system_subsearch (ShellAppSystem *system, shell_app_system_subsearch (ShellAppSystem *system,
@ -474,8 +779,8 @@ shell_app_system_subsearch (ShellAppSystem *system,
for (iter = previous_results; iter; iter = iter->next) for (iter = previous_results; iter; iter = iter->next)
{ {
ShellApp *app = shell_app_system_lookup_app (system, iter->data); ShellApp *app = iter->data;
_shell_app_do_match (app, normalized_terms, _shell_app_do_match (app, normalized_terms,
&prefix_results, &prefix_results,
&substring_results); &substring_results);

View File

@ -5,6 +5,8 @@
#include <gio/gio.h> #include <gio/gio.h>
#include <clutter/clutter.h> #include <clutter/clutter.h>
#include <meta/window.h> #include <meta/window.h>
#define GMENU_I_KNOW_THIS_IS_UNSTABLE
#include <gmenu-tree.h>
#include "shell-app.h" #include "shell-app.h"
@ -37,8 +39,14 @@ struct _ShellAppSystemClass
GType shell_app_system_get_type (void) G_GNUC_CONST; GType shell_app_system_get_type (void) G_GNUC_CONST;
ShellAppSystem *shell_app_system_get_default (void); ShellAppSystem *shell_app_system_get_default (void);
GMenuTree *shell_app_system_get_tree (ShellAppSystem *system);
ShellApp *shell_app_system_lookup_app (ShellAppSystem *system, ShellApp *shell_app_system_lookup_app (ShellAppSystem *system,
const char *id); const char *id);
ShellApp *shell_app_system_lookup_app_by_tree_entry (ShellAppSystem *system,
GMenuTreeEntry *entry);
ShellApp *shell_app_system_lookup_app_for_path (ShellAppSystem *system,
const char *desktop_path);
ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system, ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
const char *id); const char *id);

View File

@ -17,12 +17,6 @@
#include "st.h" #include "st.h"
#include "gtkactionmuxer.h" #include "gtkactionmuxer.h"
#ifdef HAVE_SYSTEMD
#include <systemd/sd-journal.h>
#include <errno.h>
#include <unistd.h>
#endif
typedef enum { typedef enum {
MATCH_NONE, MATCH_NONE,
MATCH_SUBSTRING, /* Not prefix, substring */ MATCH_SUBSTRING, /* Not prefix, substring */
@ -43,7 +37,7 @@ typedef struct {
GSList *windows; GSList *windows;
/* Whether or not we need to resort the windows; this is done on demand */ /* Whether or not we need to resort the windows; this is done on demand */
guint window_sort_stale : 1; gboolean window_sort_stale : 1;
/* DBus property notification subscription */ /* DBus property notification subscription */
guint properties_changed_id : 1; guint properties_changed_id : 1;
@ -59,7 +53,7 @@ typedef struct {
* SECTION:shell-app * SECTION:shell-app
* @short_description: Object representing an application * @short_description: Object representing an application
* *
* This object wraps a #GDesktopAppInfo, providing methods and signals * This object wraps a #GMenuTreeEntry, providing methods and signals
* primarily useful for running applications. * primarily useful for running applications.
*/ */
struct _ShellApp struct _ShellApp
@ -70,7 +64,7 @@ struct _ShellApp
ShellAppState state; ShellAppState state;
GDesktopAppInfo *info; /* If NULL, this app is backed by one or more GMenuTreeEntry *entry; /* If NULL, this app is backed by one or more
* MetaWindow. For purposes of app title * MetaWindow. For purposes of app title
* etc., we use the first window added, * etc., we use the first window added,
* because it's most likely to be what we * because it's most likely to be what we
@ -143,15 +137,15 @@ shell_app_get_property (GObject *gobject,
const char * const char *
shell_app_get_id (ShellApp *app) shell_app_get_id (ShellApp *app)
{ {
if (app->info) if (app->entry)
return g_app_info_get_id (G_APP_INFO (app->info)); return gmenu_tree_entry_get_desktop_file_id (app->entry);
return app->window_id_string; return app->window_id_string;
} }
static MetaWindow * static MetaWindow *
window_backed_app_get_window (ShellApp *app) window_backed_app_get_window (ShellApp *app)
{ {
g_assert (app->info == NULL); g_assert (app->entry == NULL);
g_assert (app->running_state); g_assert (app->running_state);
g_assert (app->running_state->windows); g_assert (app->running_state->windows);
return app->running_state->windows->data; return app->running_state->windows->data;
@ -200,10 +194,10 @@ shell_app_create_icon_texture (ShellApp *app,
ret = NULL; ret = NULL;
if (app->info == NULL) if (app->entry == NULL)
return window_backed_app_get_icon (app, size); return window_backed_app_get_icon (app, size);
icon = g_app_info_get_icon (G_APP_INFO (app->info)); icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
if (icon != NULL) if (icon != NULL)
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, size); ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, size);
@ -251,7 +245,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
info = NULL; info = NULL;
icon = g_app_info_get_icon (G_APP_INFO (app->info)); icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
if (icon != NULL) if (icon != NULL)
{ {
info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (), info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
@ -353,7 +347,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
* property tracking bits, and this helps us visually distinguish * property tracking bits, and this helps us visually distinguish
* app-tracked from not. * app-tracked from not.
*/ */
if (!app->info) if (!app->entry)
return window_backed_app_get_icon (app, size); return window_backed_app_get_icon (app, size);
/* Use icon: prefix so that we get evicted from the cache on /* Use icon: prefix so that we get evicted from the cache on
@ -390,8 +384,8 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
const char * const char *
shell_app_get_name (ShellApp *app) shell_app_get_name (ShellApp *app)
{ {
if (app->info) if (app->entry)
return g_app_info_get_name (G_APP_INFO (app->info)); return g_app_info_get_name (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
else else
{ {
MetaWindow *window = window_backed_app_get_window (app); MetaWindow *window = window_backed_app_get_window (app);
@ -407,8 +401,8 @@ shell_app_get_name (ShellApp *app)
const char * const char *
shell_app_get_description (ShellApp *app) shell_app_get_description (ShellApp *app)
{ {
if (app->info) if (app->entry)
return g_app_info_get_description (G_APP_INFO (app->info)); return g_app_info_get_description (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
else else
return NULL; return NULL;
} }
@ -423,7 +417,7 @@ shell_app_get_description (ShellApp *app)
gboolean gboolean
shell_app_is_window_backed (ShellApp *app) shell_app_is_window_backed (ShellApp *app)
{ {
return app->info == NULL; return app->entry == NULL;
} }
typedef struct { typedef struct {
@ -639,7 +633,12 @@ shell_app_activate_full (ShellApp *app,
case SHELL_APP_STATE_STOPPED: case SHELL_APP_STATE_STOPPED:
{ {
GError *error = NULL; GError *error = NULL;
if (!shell_app_launch (app, timestamp, workspace, &error)) if (!shell_app_launch (app,
timestamp,
NULL,
workspace,
NULL,
&error))
{ {
char *msg; char *msg;
msg = g_strdup_printf (_("Failed to launch '%s'"), shell_app_get_name (app)); msg = g_strdup_printf (_("Failed to launch '%s'"), shell_app_get_name (app));
@ -671,7 +670,7 @@ void
shell_app_open_new_window (ShellApp *app, shell_app_open_new_window (ShellApp *app,
int workspace) int workspace)
{ {
g_return_if_fail (app->info != NULL); g_return_if_fail (app->entry != NULL);
/* Here we just always launch the application again, even if we know /* Here we just always launch the application again, even if we know
* it was already running. For most applications this * it was already running. For most applications this
@ -681,7 +680,12 @@ shell_app_open_new_window (ShellApp *app,
* as say Pidgin. Ideally, we have the application express to us * as say Pidgin. Ideally, we have the application express to us
* that it supports an explicit new-window action. * that it supports an explicit new-window action.
*/ */
shell_app_launch (app, 0, workspace, NULL); shell_app_launch (app,
0,
NULL,
workspace,
NULL,
NULL);
} }
/** /**
@ -735,10 +739,10 @@ shell_app_compare_windows (gconstpointer a,
* shell_app_get_windows: * shell_app_get_windows:
* @app: * @app:
* *
* Get the toplevel, interesting windows which are associated with this * Get the windows which are associated with this application. The
* application. The returned list will be sorted first by whether * returned list will be sorted first by whether they're on the
* they're on the active workspace, then by whether they're visible, * active workspace, then by whether they're visible, and finally
* and finally by the time the user last interacted with them. * by the time the user last interacted with them.
* *
* Returns: (transfer none) (element-type MetaWindow): List of windows * Returns: (transfer none) (element-type MetaWindow): List of windows
*/ */
@ -861,24 +865,25 @@ _shell_app_new_for_window (MetaWindow *window)
} }
ShellApp * ShellApp *
_shell_app_new (GDesktopAppInfo *info) _shell_app_new (GMenuTreeEntry *info)
{ {
ShellApp *app; ShellApp *app;
app = g_object_new (SHELL_TYPE_APP, NULL); app = g_object_new (SHELL_TYPE_APP, NULL);
_shell_app_set_app_info (app, info); _shell_app_set_entry (app, info);
return app; return app;
} }
void void
_shell_app_set_app_info (ShellApp *app, _shell_app_set_entry (ShellApp *app,
GDesktopAppInfo *info) GMenuTreeEntry *entry)
{ {
g_clear_object (&app->info); if (app->entry != NULL)
app->info = g_object_ref (info); gmenu_tree_item_unref (app->entry);
app->entry = gmenu_tree_item_ref (entry);
if (app->name_collation_key != NULL) if (app->name_collation_key != NULL)
g_free (app->name_collation_key); g_free (app->name_collation_key);
app->name_collation_key = g_utf8_collate_key (shell_app_get_name (app), -1); app->name_collation_key = g_utf8_collate_key (shell_app_get_name (app), -1);
@ -1167,50 +1172,40 @@ _gather_pid_callback (GDesktopAppInfo *gapp,
app); app);
} }
#ifdef HAVE_SYSTEMD
/* This sets up the launched application to log to the journal
* using its own identifier, instead of just "gnome-session".
*/
static void
app_child_setup (gpointer user_data)
{
const char *appid = user_data;
int res;
int journalfd = sd_journal_stream_fd (appid, LOG_INFO, FALSE);
if (journalfd >= 0)
{
do
res = dup2 (journalfd, 1);
while (G_UNLIKELY (res == -1 && errno == EINTR));
do
res = dup2 (journalfd, 2);
while (G_UNLIKELY (res == -1 && errno == EINTR));
(void) close (journalfd);
}
}
#endif
/** /**
* shell_app_launch: * shell_app_launch:
* @timestamp: Event timestamp, or 0 for current event timestamp * @timestamp: Event timestamp, or 0 for current event timestamp
* @uris: (element-type utf8): List of uris to pass to application
* @workspace: Start on this workspace, or -1 for default * @workspace: Start on this workspace, or -1 for default
* @startup_id: (out): Returned startup notification ID, or %NULL if none
* @error: A #GError * @error: A #GError
*/ */
gboolean gboolean
shell_app_launch (ShellApp *app, shell_app_launch (ShellApp *app,
guint timestamp, guint timestamp,
GList *uris,
int workspace, int workspace,
char **startup_id,
GError **error) GError **error)
{ {
GDesktopAppInfo *gapp;
GdkAppLaunchContext *context; GdkAppLaunchContext *context;
gboolean ret; gboolean ret;
ShellGlobal *global; ShellGlobal *global;
MetaScreen *screen; MetaScreen *screen;
GdkDisplay *gdisplay; GdkDisplay *gdisplay;
if (app->info == NULL) if (startup_id)
*startup_id = NULL;
if (app->entry == NULL)
{ {
MetaWindow *window = window_backed_app_get_window (app); MetaWindow *window = window_backed_app_get_window (app);
/* We can't pass URIs into a window; shouldn't hit this
* code path. If we do, fix the caller to disallow it.
*/
g_return_val_if_fail (uris == NULL, TRUE);
meta_window_activate (window, timestamp); meta_window_activate (window, timestamp);
return TRUE; return TRUE;
} }
@ -1229,14 +1224,11 @@ shell_app_launch (ShellApp *app,
gdk_app_launch_context_set_timestamp (context, timestamp); gdk_app_launch_context_set_timestamp (context, timestamp);
gdk_app_launch_context_set_desktop (context, workspace); gdk_app_launch_context_set_desktop (context, workspace);
ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL, gapp = gmenu_tree_entry_get_app_info (app->entry);
ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
G_APP_LAUNCH_CONTEXT (context), G_APP_LAUNCH_CONTEXT (context),
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
#ifdef HAVE_SYSTEMD
app_child_setup, (gpointer)shell_app_get_id (app),
#else
NULL, NULL, NULL, NULL,
#endif
_gather_pid_callback, app, _gather_pid_callback, app,
error); error);
g_object_unref (context); g_object_unref (context);
@ -1253,7 +1245,21 @@ shell_app_launch (ShellApp *app,
GDesktopAppInfo * GDesktopAppInfo *
shell_app_get_app_info (ShellApp *app) shell_app_get_app_info (ShellApp *app)
{ {
return app->info; if (app->entry)
return gmenu_tree_entry_get_app_info (app->entry);
return NULL;
}
/**
* shell_app_get_tree_entry:
* @app: a #ShellApp
*
* Returns: (transfer none): The #GMenuTreeEntry for this app, or %NULL if backed by a window
*/
GMenuTreeEntry *
shell_app_get_tree_entry (ShellApp *app)
{
return app->entry;
} }
static void static void
@ -1368,22 +1374,24 @@ shell_app_init_search_data (ShellApp *app)
const char *exec; const char *exec;
const char * const *keywords; const char * const *keywords;
char *normalized_exec; char *normalized_exec;
GDesktopAppInfo *appinfo;
name = g_app_info_get_name (G_APP_INFO (app->info)); appinfo = gmenu_tree_entry_get_app_info (app->entry);
name = g_app_info_get_name (G_APP_INFO (appinfo));
app->casefolded_name = shell_util_normalize_casefold_and_unaccent (name); app->casefolded_name = shell_util_normalize_casefold_and_unaccent (name);
generic_name = g_desktop_app_info_get_generic_name (app->info); generic_name = g_desktop_app_info_get_generic_name (appinfo);
if (generic_name) if (generic_name)
app->casefolded_generic_name = shell_util_normalize_casefold_and_unaccent (generic_name); app->casefolded_generic_name = shell_util_normalize_casefold_and_unaccent (generic_name);
else else
app->casefolded_generic_name = NULL; app->casefolded_generic_name = NULL;
exec = g_app_info_get_executable (G_APP_INFO (app->info)); exec = g_app_info_get_executable (G_APP_INFO (appinfo));
normalized_exec = shell_util_normalize_casefold_and_unaccent (exec); normalized_exec = shell_util_normalize_casefold_and_unaccent (exec);
app->casefolded_exec = trim_exec_line (normalized_exec); app->casefolded_exec = trim_exec_line (normalized_exec);
g_free (normalized_exec); g_free (normalized_exec);
keywords = g_desktop_app_info_get_keywords (app->info); keywords = g_desktop_app_info_get_keywords (appinfo);
if (keywords) if (keywords)
{ {
@ -1504,14 +1512,16 @@ _shell_app_do_match (ShellApp *app,
GSList **substring_results) GSList **substring_results)
{ {
ShellAppSearchMatch match; ShellAppSearchMatch match;
GAppInfo *appinfo;
g_assert (app != NULL); g_assert (app != NULL);
/* Skip window-backed apps */ /* Skip window-backed apps */
if (app->info == NULL) appinfo = (GAppInfo*)shell_app_get_app_info (app);
if (appinfo == NULL)
return; return;
/* Skip not-visible apps */ /* Skip not-visible apps */
if (!g_app_info_should_show (G_APP_INFO (app->info))) if (!g_app_info_should_show (appinfo))
return; return;
match = _shell_app_match_search_terms (app, terms); match = _shell_app_match_search_terms (app, terms);
@ -1540,7 +1550,11 @@ shell_app_dispose (GObject *object)
{ {
ShellApp *app = SHELL_APP (object); ShellApp *app = SHELL_APP (object);
g_clear_object (&app->info); if (app->entry)
{
gmenu_tree_item_unref (app->entry);
app->entry = NULL;
}
if (app->running_state) if (app->running_state)
{ {

View File

@ -4,8 +4,9 @@
#include <clutter/clutter.h> #include <clutter/clutter.h>
#include <gio/gio.h> #include <gio/gio.h>
#include <gio/gdesktopappinfo.h>
#include <meta/window.h> #include <meta/window.h>
#define GMENU_I_KNOW_THIS_IS_UNSTABLE
#include <gmenu-tree.h>
G_BEGIN_DECLS G_BEGIN_DECLS
@ -38,6 +39,7 @@ GType shell_app_get_type (void) G_GNUC_CONST;
const char *shell_app_get_id (ShellApp *app); const char *shell_app_get_id (ShellApp *app);
GMenuTreeEntry *shell_app_get_tree_entry (ShellApp *app);
GDesktopAppInfo *shell_app_get_app_info (ShellApp *app); GDesktopAppInfo *shell_app_get_app_info (ShellApp *app);
ClutterActor *shell_app_create_icon_texture (ShellApp *app, int size); ClutterActor *shell_app_create_icon_texture (ShellApp *app, int size);
@ -71,7 +73,9 @@ gboolean shell_app_is_on_workspace (ShellApp *app, MetaWorkspace *workspace);
gboolean shell_app_launch (ShellApp *app, gboolean shell_app_launch (ShellApp *app,
guint timestamp, guint timestamp,
GList *uris,
int workspace, int workspace,
char **startup_id,
GError **error); GError **error);
int shell_app_compare_by_name (ShellApp *app, ShellApp *other); int shell_app_compare_by_name (ShellApp *app, ShellApp *other);

View File

@ -22,6 +22,7 @@
#include <clutter/x11/clutter-x11.h> #include <clutter/x11/clutter-x11.h>
#include <gdk/gdkx.h> #include <gdk/gdkx.h>
#include <gio/gio.h> #include <gio/gio.h>
#include <gjs/gjs-module.h>
#include <girepository.h> #include <girepository.h>
#include <meta/display.h> #include <meta/display.h>
#include <meta/util.h> #include <meta/util.h>
@ -33,11 +34,6 @@
#include <malloc.h> #include <malloc.h>
#endif #endif
#ifdef __OpenBSD__
#include <sys/param.h>
#include <sys/sysctl.h>
#endif
#include "shell-enum-types.h" #include "shell-enum-types.h"
#include "shell-global-private.h" #include "shell-global-private.h"
#include "shell-perf-log.h" #include "shell-perf-log.h"
@ -84,11 +80,10 @@ struct _ShellGlobal {
const char *datadir; const char *datadir;
const char *imagedir; const char *imagedir;
const char *userdatadir; const char *userdatadir;
GFile *userdatadir_path;
GFile *runtime_state_path;
StFocusManager *focus_manager; StFocusManager *focus_manager;
GFile *runtime_state_path;
guint work_count; guint work_count;
GSList *leisure_closures; GSList *leisure_closures;
guint leisure_function_id; guint leisure_function_id;
@ -257,7 +252,6 @@ shell_global_init (ShellGlobal *global)
/* Ensure config dir exists for later use */ /* Ensure config dir exists for later use */
global->userdatadir = g_build_filename (g_get_user_data_dir (), "gnome-shell", NULL); global->userdatadir = g_build_filename (g_get_user_data_dir (), "gnome-shell", NULL);
g_mkdir_with_parents (global->userdatadir, 0700); g_mkdir_with_parents (global->userdatadir, 0700);
global->userdatadir_path = g_file_new_for_path (global->userdatadir);
#if G_BYTE_ORDER == G_LITTLE_ENDIAN #if G_BYTE_ORDER == G_LITTLE_ENDIAN
byteorder_string = "LE"; byteorder_string = "LE";
@ -288,16 +282,9 @@ shell_global_init (ShellGlobal *global)
NULL); NULL);
ca_context_open (global->sound_context); ca_context_open (global->sound_context);
if (shell_js) if (!shell_js)
{ shell_js = JSDIR;
search_path = g_strsplit (shell_js, ":", -1); search_path = g_strsplit (shell_js, ":", -1);
}
else
{
search_path = g_malloc0 (2 * sizeof (char *));
search_path[0] = g_strdup ("resource:///org/gnome/shell");
}
global->js_context = g_object_new (GJS_TYPE_CONTEXT, global->js_context = g_object_new (GJS_TYPE_CONTEXT,
"search-path", search_path, "search-path", search_path,
"js-version", "1.8", "js-version", "1.8",
@ -319,7 +306,6 @@ shell_global_finalize (GObject *object)
the_object = NULL; the_object = NULL;
g_clear_object (&global->userdatadir_path);
g_clear_object (&global->runtime_state_path); g_clear_object (&global->runtime_state_path);
G_OBJECT_CLASS(shell_global_parent_class)->finalize (object); G_OBJECT_CLASS(shell_global_parent_class)->finalize (object);
@ -1114,30 +1100,20 @@ shell_global_reexec_self (ShellGlobal *global)
char *buf_p; char *buf_p;
char *buf_end; char *buf_end;
GError *error = NULL; GError *error = NULL;
#if defined __linux__ /* Linux specific (I think, anyways). */
if (!g_file_get_contents ("/proc/self/cmdline", &buf, &len, &error)) if (!g_file_get_contents ("/proc/self/cmdline", &buf, &len, &error))
{ {
g_warning ("failed to get /proc/self/cmdline: %s", error->message); g_warning ("failed to get /proc/self/cmdline: %s", error->message);
return; return;
} }
#elif defined __OpenBSD__
int pid = getpid();
int mib[] = { CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_ARGV };
if (sysctl(mib, G_N_ELEMENTS (mib), &buf, &len, NULL, 0) == -1) {
g_warning ("failed to get command line args: %d", errno);
return;
}
#else
return;
#endif
buf_end = buf+len; buf_end = buf+len;
arr = g_ptr_array_new (); arr = g_ptr_array_new ();
/* The cmdline file is NUL-separated */ /* The cmdline file is NUL-separated */
for (buf_p = buf; buf_p < buf_end; buf_p = buf_p + strlen (buf_p) + 1) for (buf_p = buf; buf_p < buf_end; buf_p = buf_p + strlen (buf_p) + 1)
g_ptr_array_add (arr, buf_p); g_ptr_array_add (arr, buf_p);
g_ptr_array_add (arr, NULL); g_ptr_array_add (arr, NULL);
/* Close all file descriptors other than stdin/stdout/stderr, otherwise /* Close all file descriptors other than stdin/stdout/stderr, otherwise
@ -1163,6 +1139,44 @@ shell_global_on_gc (GjsContext *context,
global->last_gc_end_time = g_get_monotonic_time (); global->last_gc_end_time = g_get_monotonic_time ();
} }
/**
* shell_global_get_memory_info:
* @global:
* @meminfo: (out caller-allocates): Output location for memory information
*
* Load process-global data about memory usage.
*/
void
shell_global_get_memory_info (ShellGlobal *global,
ShellMemoryInfo *meminfo)
{
JSContext *context;
gint64 now;
#ifdef HAVE_MALLINFO
{
struct mallinfo info = mallinfo ();
meminfo->glibc_uordblks = info.uordblks;
}
#else
meminfo->glibc_uordblks = 0;
#endif
context = gjs_context_get_native_context (global->js_context);
meminfo->js_bytes = JS_GetGCParameter (JS_GetRuntime (context), JSGC_BYTES);
meminfo->gjs_boxed = (unsigned int) gjs_counter_boxed.value;
meminfo->gjs_gobject = (unsigned int) gjs_counter_object.value;
meminfo->gjs_function = (unsigned int) gjs_counter_function.value;
meminfo->gjs_closure = (unsigned int) gjs_counter_closure.value;
now = g_get_monotonic_time ();
meminfo->last_gc_seconds_ago = (now - global->last_gc_end_time) / G_TIME_SPAN_SECOND;
}
/** /**
* shell_global_notify_error: * shell_global_notify_error:
* @global: a #ShellGlobal * @global: a #ShellGlobal
@ -1732,14 +1746,31 @@ shell_global_get_session_mode (ShellGlobal *global)
return global->session_mode; return global->session_mode;
} }
static void static GFile *
save_variant (GFile *dir, get_runtime_state_path (ShellGlobal *global,
const char *property_name, const char *property_name)
GVariant *variant)
{ {
GFile *path = g_file_get_child (dir, property_name); return g_file_get_child (global->runtime_state_path, property_name);
}
if (variant == NULL || g_variant_get_data (variant) == NULL) /**
* shell_global_set_runtime_state:
* @global: a #ShellGlobal
* @property_name: Name of the property
* @variant: (allow-none): A #GVariant, or %NULL to unset
*
* Change the value of serialized runtime state.
*/
void
shell_global_set_runtime_state (ShellGlobal *global,
const char *property_name,
GVariant *variant)
{
GFile *path;
path = get_runtime_state_path (global, property_name);
if (variant == NULL)
(void) g_file_delete (path, NULL, NULL); (void) g_file_delete (path, NULL, NULL);
else else
{ {
@ -1752,17 +1783,29 @@ save_variant (GFile *dir,
g_object_unref (path); g_object_unref (path);
} }
static GVariant * /**
load_variant (GFile *dir, * shell_global_get_runtime_state:
const char *property_type, * @global: a #ShellGlobal
const char *property_name) * @property_type: Expected data type
* @property_name: Name of the property
*
* The shell maintains "runtime" state which does not persist across
* logout or reboot.
*
* Returns: (transfer floating): The value of a serialized property, or %NULL if none stored
*/
GVariant *
shell_global_get_runtime_state (ShellGlobal *global,
const char *property_type,
const char *property_name)
{ {
GVariant *res = NULL; GVariant *res = NULL;
GMappedFile *mfile; GMappedFile *mfile;
GFile *path = g_file_get_child (dir, property_name); GFile *path;
char *pathstr; char *pathstr;
GError *local_error = NULL; GError *local_error = NULL;
path = get_runtime_state_path (global, property_name);
pathstr = g_file_get_path (path); pathstr = g_file_get_path (path);
mfile = g_mapped_file_new (pathstr, FALSE, &local_error); mfile = g_mapped_file_new (pathstr, FALSE, &local_error);
if (!mfile) if (!mfile)
@ -1786,73 +1829,3 @@ load_variant (GFile *dir,
return res; return res;
} }
/**
* shell_global_set_runtime_state:
* @global: a #ShellGlobal
* @property_name: Name of the property
* @variant: (allow-none): A #GVariant, or %NULL to unset
*
* Change the value of serialized runtime state.
*/
void
shell_global_set_runtime_state (ShellGlobal *global,
const char *property_name,
GVariant *variant)
{
save_variant (global->runtime_state_path, property_name, variant);
}
/**
* shell_global_get_runtime_state:
* @global: a #ShellGlobal
* @property_type: Expected data type
* @property_name: Name of the property
*
* The shell maintains "runtime" state which does not persist across
* logout or reboot.
*
* Returns: (transfer floating): The value of a serialized property, or %NULL if none stored
*/
GVariant *
shell_global_get_runtime_state (ShellGlobal *global,
const char *property_type,
const char *property_name)
{
return load_variant (global->runtime_state_path, property_type, property_name);
}
/**
* shell_global_set_persistent_state:
* @global: a #ShellGlobal
* @property_name: Name of the property
* @variant: (allow-none): A #GVariant, or %NULL to unset
*
* Change the value of serialized persistent state.
*/
void
shell_global_set_persistent_state (ShellGlobal *global,
const char *property_name,
GVariant *variant)
{
save_variant (global->userdatadir_path, property_name, variant);
}
/**
* shell_global_get_persistent_state:
* @global: a #ShellGlobal
* @property_type: Expected data type
* @property_name: Name of the property
*
* The shell maintains "persistent" state which will persist after
* logout or reboot.
*
* Returns: (transfer none): The value of a serialized property, or %NULL if none stored
*/
GVariant *
shell_global_get_persistent_state (ShellGlobal *global,
const char *property_type,
const char *property_name)
{
return load_variant (global->userdatadir_path, property_type, property_name);
}

View File

@ -69,6 +69,10 @@ typedef struct {
guint last_gc_seconds_ago; guint last_gc_seconds_ago;
} ShellMemoryInfo; } ShellMemoryInfo;
void shell_global_get_memory_info (ShellGlobal *global,
ShellMemoryInfo *meminfo);
/* Run-at-leisure API */ /* Run-at-leisure API */
void shell_global_begin_work (ShellGlobal *global); void shell_global_begin_work (ShellGlobal *global);
void shell_global_end_work (ShellGlobal *global); void shell_global_end_work (ShellGlobal *global);
@ -125,19 +129,13 @@ void shell_global_reexec_self (ShellGlobal *global);
const char * shell_global_get_session_mode (ShellGlobal *global); const char * shell_global_get_session_mode (ShellGlobal *global);
void shell_global_set_runtime_state (ShellGlobal *global, void shell_global_set_runtime_state (ShellGlobal *global,
const char *property_name, const char *property_name,
GVariant *variant); GVariant *variant);
GVariant * shell_global_get_runtime_state (ShellGlobal *global, GVariant * shell_global_get_runtime_state (ShellGlobal *global,
const char *property_type, const char *property_type,
const char *property_name); const char *property_name);
void shell_global_set_persistent_state (ShellGlobal *global,
const char *property_name,
GVariant *variant);
GVariant * shell_global_get_persistent_state (ShellGlobal *global,
const char *property_type,
const char *property_name);
G_END_DECLS G_END_DECLS

View File

@ -38,7 +38,7 @@ shell_js_add_extension_importer (const char *target_object_script,
* we should only ever have one context, so this * we should only ever have one context, so this
* should be alright. */ * should be alright. */
contexts = gjs_context_get_all (); contexts = gjs_context_get_all ();
context = (JSContext*) gjs_context_get_native_context ((GjsContext*)contexts->data); context = gjs_context_get_native_context (contexts->data);
g_list_free_full (contexts, g_object_unref); g_list_free_full (contexts, g_object_unref);
JS_BeginRequest (context); JS_BeginRequest (context);

View File

@ -177,7 +177,7 @@ shell_window_tracker_is_window_interesting (MetaWindow *window)
return TRUE; return TRUE;
} }
/** /*
* get_app_from_window_wmclass: * get_app_from_window_wmclass:
* *
* Looks only at the given window, and attempts to determine * Looks only at the given window, and attempts to determine
@ -256,6 +256,17 @@ get_app_from_window_wmclass (MetaWindow *window)
return NULL; return NULL;
} }
/*
* get_app_from_gapplication_id:
* @monitor: a #ShellWindowTracker
* @window: a #MetaWindow
*
* Looks only at the given window, and attempts to determine
* an application based on _GTK_APPLICATION_ID. If one can't be determined,
* return %NULL.
*
* Return value: (transfer full): A newly-referenced #ShellApp, or %NULL
*/
static ShellApp * static ShellApp *
get_app_from_gapplication_id (MetaWindow *window) get_app_from_gapplication_id (MetaWindow *window)
{ {
@ -268,16 +279,18 @@ get_app_from_gapplication_id (MetaWindow *window)
id = meta_window_get_gtk_application_id (window); id = meta_window_get_gtk_application_id (window);
if (!id) if (!id)
return FALSE; return NULL;
desktop_file = g_strconcat (id, ".desktop", NULL); desktop_file = g_strconcat (id, ".desktop", NULL);
app = shell_app_system_lookup_app (appsys, desktop_file); app = shell_app_system_lookup_app (appsys, desktop_file);
if (app)
g_object_ref (app);
g_free (desktop_file); g_free (desktop_file);
return app; return app;
} }
/** /*
* get_app_from_window_group: * get_app_from_window_group:
* @monitor: a #ShellWindowTracker * @monitor: a #ShellWindowTracker
* @window: a #MetaWindow * @window: a #MetaWindow
@ -325,7 +338,7 @@ get_app_from_window_group (ShellWindowTracker *tracker,
return result; return result;
} }
/** /*
* get_app_from_window_pid: * get_app_from_window_pid:
* @tracker: a #ShellWindowTracker * @tracker: a #ShellWindowTracker
* @window: a #MetaWindow * @window: a #MetaWindow
@ -489,9 +502,6 @@ track_window (ShellWindowTracker *self,
{ {
ShellApp *app; ShellApp *app;
if (!shell_window_tracker_is_window_interesting (window))
return;
app = get_app_for_window (self, window); app = get_app_for_window (self, window);
if (!app) if (!app)
return; return;
@ -530,11 +540,8 @@ disassociate_window (ShellWindowTracker *self,
g_hash_table_remove (self->window_to_app, window); g_hash_table_remove (self->window_to_app, window);
if (shell_window_tracker_is_window_interesting (window)) _shell_app_remove_window (app, window);
{ g_signal_handlers_disconnect_by_func (window, G_CALLBACK(on_wm_class_changed), self);
_shell_app_remove_window (app, window);
g_signal_handlers_disconnect_by_func (window, G_CALLBACK(on_wm_class_changed), self);
}
g_signal_emit (self, signals[TRACKED_WINDOWS_CHANGED], 0); g_signal_emit (self, signals[TRACKED_WINDOWS_CHANGED], 0);
@ -844,7 +851,6 @@ ShellApp *
shell_startup_sequence_get_app (ShellStartupSequence *sequence) shell_startup_sequence_get_app (ShellStartupSequence *sequence)
{ {
const char *appid; const char *appid;
char *basename;
ShellAppSystem *appsys; ShellAppSystem *appsys;
ShellApp *app; ShellApp *app;
@ -852,10 +858,8 @@ shell_startup_sequence_get_app (ShellStartupSequence *sequence)
if (!appid) if (!appid)
return NULL; return NULL;
basename = g_path_get_basename (appid);
appsys = shell_app_system_get_default (); appsys = shell_app_system_get_default ();
app = shell_app_system_lookup_app (appsys, basename); app = shell_app_system_lookup_app_for_path (appsys, appid);
g_free (basename);
return app; return app;
} }

View File

@ -45,7 +45,7 @@ struct _StAdjustmentPrivate
{ {
/* Do not sanity-check values while constructing, /* Do not sanity-check values while constructing,
* not all properties may be set yet. */ * not all properties may be set yet. */
guint is_constructing : 1; gboolean is_constructing : 1;
gdouble lower; gdouble lower;
gdouble upper; gdouble upper;

Some files were not shown because too many files have changed in this diff Show More