Compare commits

..

13 Commits

Author SHA1 Message Date
4590903159 Bump version to 3.12.1
Update NEWS.
2014-04-15 23:37:57 +02:00
8b6fcbea50 layout: Don't always extend struts to the screen edge
NetWM struts are defined in terms of screen edges (rather than monitor
edges), which works poorly with vertical monitor layouts (as it renders
entire monitors unusable). Don't extend struts in those cases.

https://bugzilla.gnome.org/show_bug.cgi?id=663690
2014-04-15 23:36:33 +02:00
c6067ffa1d extension-prefs: Force linking with libgnome-shell-js
Use the same hack we use for the main executable to fool the linker
when using --as-needed.

https://bugzilla.gnome.org/show_bug.cgi?id=727948
2014-04-15 23:36:33 +02:00
7b4254da4e Revert "global: Run maybe_gc at leisure again"
It's causing segfaults so let's back it out for 3.12.1

This reverts commit 2f576e3076.
2014-04-15 14:14:47 +02:00
2f576e3076 global: Run maybe_gc at leisure again
The deadlocks are now fixed this should keep memory usage low,
avoid memory fragmentation and prevent the gc from running at
inconvient times.
2014-04-14 23:11:30 +02:00
60d7c3ad86 Updated Serbian translation 2014-04-14 19:33:40 +02:00
43fdc15ac0 l10n: Update Japanese translation 2014-04-15 00:36:18 +09:00
f082a58071 Updated Danish translation 2014-04-13 21:58:56 +02:00
ae5dfb5740 Updated Hungarian translation 2014-04-13 15:42:58 +02:00
e8fdba4f66 Updated Latvian translation 2014-04-12 12:36:23 +03:00
1030cdfe8a layout: Change setDummyCursorPosition to also set the size
If we are being used to follow a text entry cursor we also need to set
the size so that the popup menu avoids covering it.

https://bugzilla.gnome.org/show_bug.cgi?id=727579
2014-04-11 16:51:31 +02:00
ca2d626b59 Added Khmer translation 2014-04-10 23:35:19 +02:00
2b4eaf6b3f Updated Indonesian translation 2014-04-10 23:35:11 +02:00
120 changed files with 9295 additions and 9384 deletions

3
.gitignore vendored
View File

@ -78,8 +78,11 @@ src/gnome-shell-calendar-server
src/gnome-shell-extension-prefs
src/gnome-shell-extension-tool
src/gnome-shell-hotplug-sniffer
src/gnome-shell-jhbuild
src/gnome-shell-perf-helper
src/gnome-shell-perf-tool
src/gnome-shell-real
src/gnome-shell-wayland
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
src/run-js-test
src/test-recorder

50
NEWS
View File

@ -1,28 +1,4 @@
3.13.2
======
* Make airplane mode menu insensitive in lock screen [Giovanni; #729224]
* Don't always extend struts to the screen edge [Florian; #683819]
* Fix keynav for alternatives in AltSwitcher [Florian; #727259]
* Implement window menus in the shell [Jasper; #726352]
* Support resource:/// URLs in GNOME_SHELL_JS envvar [Owen; #730409]
* Fix switcher popups with keybindings containing Escape [Rui; #730739]
* Update extension-prefs UI to follow GNOME 3 patterns [Florian; #730829]
* Add support for fallback app menu in window decorations [Florian; #730752]
* Fix keynav escaping open app folders [Florian; #726760]
* Misc. bug fixes [Kalev, Florian, Owen; #729429, #728449, #730408, #730753,
#730653]
Contributors:
Giovanni Campagna, Piotr Drąg, Kalev Lember, Rui Matos, Florian Müllner,
Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre, Owen W. Taylor
Translations:
Ihar Hrachyshka [be], Giovanni Campagna [it], Carles Ferrando [ca@valencia],
Daniel Mustieles [es], Aurimas Černius [lt], Enrico Nicoletto [pt_BR],
Yosef Or Boczko [he], Marek Černocký [cs], Muhammet Kara [tr],
Georges Neto [pt_BR], Andika Triwidada [id]
3.13.1
3.12.1
======
* Ensure the currently focused app icon is viewable [Rui; #726759]
* Improve language in location menu [Zeeshan; #726498]
@ -31,27 +7,12 @@ Translations:
* Fix bad antialiasing on panel menu buttons [Carlos; #727336]
* Don't hide location menu [Zeeshan; #727398]
* Fix IM candidate window obscuring current text [Rui; #727579]
* Fix extension-prefs tool when linked with --as-needed [Florian; #727948]
* Don't always extend struts to the screen edge [Florian; #663690]
* Add shortcuts for switching to the last workspace [Elad; #659288]
* Show OSD window on all monitors [Adel; #722684]
* Improve consistency of labels in network menu [Paul; #727163]
* Fix zombie search providers showing up [Jasper; #728597]
* Remove ConsoleKit support [Florian; #686626]
* Fix region screenshots with open shell menus [Florian; #709126]
* Support <shift>insert in text entries [Florian; #648318]
* Improve app picker scrolling on touch [Jasper; #729064]
* Don't make date button clickable when on current date [Carlos; #726724]
* Tweak heuristic for hiding workspace switcher [Florian; #662457]
* Add option to show in Software to app context menu [Matthias; #643043]
* Misc. bug fixes and cleanups [Bastien, Florian, Giovanni, Adel, Vadim,
Carlos; #727983, #727948, #728512, #728681, #728897, #727384, #728820,
#715042, #728449, #728343]
Contributors:
Elad Alfassa, Zeeshan Ali (Khattak), Giovanni Campagna, Cosimo Cecchi,
Matthias Clasen, Piotr Drąg, Adel Gadllah, Paul Lange, Rui Matos,
Simon McVittie, Florian Müllner, Bastien Nocera, Alejandro Piñeiro,
Vadim Rutkovsky, Carlos Soriano, Jasper St. Pierre
Zeeshan Ali (Khattak), Cosimo Cecchi, Piotr Drąg, Rui Matos, Simon McVittie,
Florian Müllner, Alejandro Piñeiro, Carlos Soriano
Translations:
Khaled Hosny [ar], Piotr Drąg [pl], Yosef Or Boczko [he],
@ -63,8 +24,7 @@ Translations:
Fran Diéguez [gl], Pau Iranzo [ca], Luca Ferretti [it], Milo Casagrande [it],
Tiago S [pt], Victor Ibragimov [tg], Dirgita [id], Khoem Sokhem [km],
Rūdolfs Mazurs [lv], Balázs Úr [hu], Ask H. Larsen [da], Ikuya Awashiro [ja],
Wouter Bolsterlee [nl], Daniel Korostil [uk], Daniel Șerbănescu [ro],
Enrico Nicoletto [pt_BR]
Мирослав Николић [sr, sr@latin]
3.12.0
======

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.13.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.12.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c])
@ -76,7 +76,7 @@ AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.15.90
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.39.0
MUTTER_MIN_VERSION=3.13.2
MUTTER_MIN_VERSION=3.12.1
GTK_MIN_VERSION=3.7.9
GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3
@ -112,6 +112,13 @@ fi
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION)
PKG_CHECK_MODULES(MUTTER_WAYLAND, [libmutter-wayland >= $MUTTER_MIN_VERSION],
[MUTTER_WAYLAND_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter-wayland`
AC_SUBST(MUTTER_WAYLAND_TYPELIB_DIR)
have_mutter_wayland=yes],
[have_mutter_wayland=no])
AM_CONDITIONAL(HAVE_MUTTER_WAYLAND, test $have_mutter_wayland != no)
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)
@ -223,14 +230,6 @@ fi
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
GNOME_COMPILE_WARNINGS([error])
case "$WARN_CFLAGS" in
*-Werror*)
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
;;
esac
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
AC_SUBST(AM_CFLAGS)
BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])

View File

@ -1,5 +1,9 @@
desktopdir=$(datadir)/applications
desktop_DATA = gnome-shell.desktop gnome-shell-wayland.desktop gnome-shell-extension-prefs.desktop
desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop
if HAVE_MUTTER_WAYLAND
desktop_DATA += gnome-shell-wayland.desktop
endif HAVE_MUTTER_WAYLAND
# We substitute in bindir so it works as an autostart
# file when built in a non-system prefix

View File

@ -2,7 +2,7 @@
Type=Application
_Name=GNOME Shell (wayland compositor)
_Comment=Window management and application launching
Exec=@bindir@/gnome-shell --wayland --display-server
Exec=@bindir@/mutter-launch -- gnome-shell-wayland --wayland --display-server
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-shell
X-GNOME-Bugzilla-Component=general

View File

@ -31,7 +31,7 @@
</_description>
</key>
<key name="favorite-apps" type="as">
<default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Documents.desktop' ]</default>
<default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default>
<_summary>List of desktop file IDs for favorite applications</_summary>
<_description>
The applications corresponding to these identifiers
@ -221,6 +221,15 @@
</_description>
</key>
<key name="button-layout" type="s">
<default>":close"</default>
<_summary>Arrangement of buttons on the titlebar</_summary>
<_description>
This key overrides the key in org.gnome.desktop.wm.preferences when
running GNOME Shell.
</_description>
</key>
<key name="edge-tiling" type="b">
<default>true</default>
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>

View File

@ -153,21 +153,6 @@ StScrollBar StButton#vhandle:active {
-arrow-rise: 11px;
}
.popup-menu-boxpointer.fallback-app-menu {
-arrow-border-radius: 4px;
-arrow-background-color: #ededed;
-arrow-border-width: 1px;
-arrow-border-color: #a6a6a6;
-arrow-base: 24px;
-arrow-rise: 11px;
}
.popup-menu-boxpointer.fallback-app-menu.dark {
-arrow-background-color: #3f4747;
-arrow-border-color: #282b2b;
}
.popup-menu {
min-width: 200px;
}
@ -181,15 +166,6 @@ StScrollBar StButton#vhandle:active {
background-color: #333333;
}
.fallback-app-menu .popup-submenu-menu-item:open {
background-color: #888888;
color: white;
}
.fallback-app-menu.dark .popup-submenu-menu-item:open {
background-color: #333333;
}
.popup-sub-menu {
background-gradient-start: rgba(80,80,80,0.3);
background-gradient-end: rgba(80,80,80,0.4);
@ -197,20 +173,6 @@ StScrollBar StButton#vhandle:active {
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9);
}
.fallback-app-menu .popup-sub-menu {
background-gradient-start: #dddddd;
background-gradient-end: #dfdfdf;
background-gradient-direction: vertical;
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.4);
}
.fallback-app-menu.dark .popup-sub-menu {
background-gradient-start: #474747;
background-gradient-end: #4b4b4b;
background-gradient-direction: vertical;
box-shadow: inset 0px 2px 4px rgba(0,0,0,0.9);
}
.popup-sub-menu:scrolled .popup-menu-item:ltr {
padding-right: 0em;
}
@ -259,29 +221,7 @@ StScrollBar StButton#vhandle:active {
color: #9f9f9f;
}
.fallback-app-menu .popup-menu-item {
color: #43484a;
}
.fallback-app-menu .popup-menu-item:active {
color: white;
background-color: #4689cd;
}
.fallback-app-menu .popup-menu-item:insensitive {
color: gray;
}
.fallback-app-menu.dark .popup-menu-item {
color: white;
}
.fallback-app-menu.dark .popup-menu-item:active {
background-color: #445f7d;
}
.fallback-app-menu.dark .popup-menu-item:insensitive {
color: #9f9f9f;
.popup-image-menu-item {
}
.popup-separator-menu-item {
@ -293,15 +233,8 @@ StScrollBar StButton#vhandle:active {
padding: 8px 0px;
}
.fallback-app-menu .popup-separator-menu-item {
-gradient-start: #a0a2a3;
-gradient-end: #a0a2a3;
-margin-horizontal: 0;
}
.fallback-app-menu.dark .popup-separator-menu-item {
-gradient-start: #818584;
-gradient-end: #818584;
.popup-alternating-menu-item:alternate {
font-weight: bold;
}
.popup-status-menu-item {
@ -403,18 +336,13 @@ StScrollBar StButton#vhandle:active {
icon-size: 16px;
}
.no-networks-label {
color: #999999;
}
.no-networks-box {
spacing: 12px;
}
/* Buttons */
.candidate-page-button,
.notification-button,
.notification-icon-button,
.hotplug-notification-item,
.hotplug-resident-eject-button,
.modal-dialog-button,
.app-view-control {
border: 1px solid #8b8b8b;
@ -428,12 +356,17 @@ StScrollBar StButton#vhandle:active {
}
.candidate-page-button:hover,
.notification-button:hover,
.notification-icon-button:hover,
.hotplug-notification-item:hover,
.hotplug-resident-eject-button:hover,
.modal-dialog-button:hover {
background-gradient-start: rgba(255, 255, 255, 0.3);
background-gradient-end: rgba(255, 255, 255, 0.1);
}
.notification-button:focus,
.notification-icon-button:focus,
.hotplug-notification-item:focus,
.modal-dialog-button:focus,
.app-view-control:focus {
@ -447,7 +380,10 @@ StScrollBar StButton#vhandle:active {
.candidate-page-button:active,
.candidate-page-button:pressed,
.notification-button:active,
.notification-icon-button:active,
.hotplug-notification-item:active,
.hotplug-resident-eject-button:active,
.modal-dialog-button:active,
.modal-dialog-button:pressed,
.app-view-control:checked {
@ -456,6 +392,8 @@ StScrollBar StButton#vhandle:active {
}
.candidate-page-button:insensitive,
.notification-button:insensitive,
.notification-icon-button:insensitive,
.modal-dialog-button:insensitive {
border-color: #666666;
color: #9f9f9f;
@ -467,6 +405,7 @@ StScrollBar StButton#vhandle:active {
#searchEntry,
.modal-dialog-button,
.notification-button,
.hotplug-notification-item,
.app-view-controls,
#screenShieldNotifications {
@ -643,6 +582,11 @@ StScrollBar StButton#vhandle:active {
app-icon-bottom-clip: 2px;
}
.app-menu-icon {
width: 24px;
height: 24px;
}
.panel-button {
-natural-hpadding: 12px;
-minimum-hpadding: 6px;
@ -1213,6 +1157,11 @@ StScrollBar StButton#vhandle:active {
text-shadow: black 0px 2px 2px;
}
#LookingGlassDialog .lg-inspector-title {
font-weight: bold;
padding-bottom: 8px;
}
.lg-dialog StEntry {
selection-background-color: #bbbbbb;
selected-color: #333333;
@ -1292,8 +1241,14 @@ StScrollBar StButton#vhandle:active {
width: 0.3em;
}
#calendarPopup .calendar {
padding: 10px;
}
.calendar {
padding: .4em 1.75em .8em 1.75em;
spacing-rows: 0px;
spacing-columns: 0px;
}
.calendar-month-label {
@ -1489,87 +1444,111 @@ StScrollBar StButton#vhandle:active {
padding-right: 8pt;
}
/* Message Tray */
.notification-drawer {
background: rgba(0,0,0,0.8);
padding: 1em;
border: 2px solid #4c4c4c;
border-bottom: 0px;
border-radius: 6px 6px 0 0;
}
.system-tray-icons,
.notification-drawer-footer-actions {
spacing: 0.5em;
}
.system-tray-icon-button,
.notification-drawer-button {
border-radius: 4px;
border: 1px solid #4c4c4c;
padding: 4px;
}
.system-tray-icon-button {
width: 22px;
height: 22px;
}
.notification-drawer-button StIcon {
icon-size: 22px;
}
.system-tray-icon-button:hover,
.notification-drawer-button:hover {
background: 1px solid #4c4c4c;
}
.url-highlighter {
link-color: #ccccff;
}
.notification, #notification-container, .notification-drawer {
/* Message Tray */
#message-tray {
background: #2e3436 url(message-tray-background.png);
background-repeat: repeat;
height: 72px;
}
.message-tray-summary {
height: 72px;
}
.message-tray-menu-button StIcon {
padding: 0 20px;
color: #aaaaaa;
icon-size: 24px;
}
.message-tray-menu-button:hover StIcon,
.message-tray-menu-button:active StIcon,
.message-tray-menu-button:focus StIcon {
color: #eeeeee;
}
.no-messages-label,
.no-networks-label {
color: #999999;
}
.no-networks-box {
spacing: 12px;
}
.notification {
border-radius: 10px 10px 0px 0px;
background: rgba(0,0,0,0.9);
padding: 8px 8px 4px 8px;
spacing-rows: 4px;
spacing-columns: 10px;
}
.notification, #notification-container {
font-size: 11pt;
width: 34em;
}
.notification-main-content {
padding: 8px;
spacing: 8px;
border-radius: 10px 10px 0px 0px;
background: rgba(0,0,0,0.8);
.notification.multi-line-notification {
padding-bottom: 8px;
}
.notification-action-area {
padding: 8px;
.notification-unexpanded {
/* We want to force the actor at a specific size, irrespective
of its minimum and preferred size, so we override both */
min-height: 36px;
height: 36px;
}
.notification-action-area,
.notification-button {
background: rgba(0,0,0,0.8);
border-top: 1px solid #666;
/* We use row-span = 2 for the image cell, which prevents its height preferences to be
taken into account during allocation, so its height ends up being limited by the height
of the content in the other rows. To avoid showing a stretched image, we set the minimum
height of the table to be ICON_SIZE + IMAGE_SIZE + spacing-rows = 24 + 125 + 10 = 159 */
.notification-with-image {
min-height: 159px;
}
.notification-button {
padding: 8px 0px;
border-right: 1px solid #666;
.summary-boxpointer {
-arrow-border-radius: 15px;
-arrow-background-color: rgba(0,0,0,0.9);
-arrow-base: 36px;
-arrow-rise: 18px;
color: white;
-boxpointer-gap: 4px;
}
.notification-button:hover {
background: rgba(255,255,255,0.3);
.summary-boxpointer .notification {
border-radius: 9px;
background: rgba(0,0,0,0) !important;
padding-bottom: 12px;
}
.notification-button:active {
background: rgba(255,255,255,0.1);
.summary-boxpointer #summary-right-click-menu {
padding-top: 12px;
padding-bottom: 12px;
}
.notification-button:last-child {
border-right-width: 0px;
.summary-notification-stack-scrollview {
max-height: 18em;
padding-top: 8px;
padding-bottom: 8px;
}
.notification-title-box {
spacing: 8px;
.summary-notification-stack-scrollview:ltr {
padding-right: 8px;
}
.summary-notification-stack-scrollview:rtl {
padding-left: 8px;
}
.notification-scrollview {
max-height: 10em;
-st-vfade-offset: 24px;
}
.notification-scrollview:ltr > StScrollBar {
@ -1580,9 +1559,37 @@ StScrollBar StButton#vhandle:active {
padding-right: 6px;
}
.notification-scrollview {
max-height: 10em;
-st-vfade-offset: 24px;
.notification-body {
spacing: 5px;
}
.notification-actions {
padding-top: 18px;
spacing: 10px;
}
.notification-button {
-st-natural-width: 140px;
padding: 4px 4px 5px;
}
.notification-button:focus {
-st-natural-width: 138px;
padding: 3px 4px 4px;
}
.notification-icon-button {
border-radius: 5px;
padding: 5px;
}
.notification-icon-button:focus {
padding: 4px;
}
.notification-icon-button > StIcon {
icon-size: 16px;
padding: 8px;
}
.secondary-icon {
@ -1607,6 +1614,45 @@ StScrollBar StButton#vhandle:active {
padding: 2px 5px;
}
.hotplug-resident-box {
spacing: 8px;
}
.hotplug-resident-mount {
spacing: 8px;
border-radius: 4px;
color: #ccc;
}
.hotplug-resident-mount:hover {
background-gradient-direction: horizontal;
background-gradient-start: rgba(255, 255, 255, 0.1);
background-gradient-end: rgba(255, 255, 255, 0);
color: #fff;
}
.hotplug-resident-mount-label {
color: inherit;
padding-left: 6px;
}
.hotplug-resident-mount-icon {
icon-size: 24px;
padding-left: 6px;
}
.hotplug-resident-eject-icon {
icon-size: 16px;
}
.hotplug-resident-eject-button {
padding: 7px;
border-radius: 5px;
color: #ccc;
}
.chat-log-message {
color: #888888;
}
@ -1646,11 +1692,7 @@ StScrollBar StButton#vhandle:active {
padding-right: 4px;
}
.chat-notification-body-box {
spacing: 5px;
}
.chat-notification-scrollview {
.chat-notification-scrollview{
max-height: 22em;
}
@ -1700,28 +1742,6 @@ StScrollBar StButton#vhandle:active {
-shell-counter-overlap-y: 13px;
}
.message-tray-indicator {
spacing: 4px;
}
.message-tray-indicator-count {
font-size: 1.2em;
font-weight: bold;
color: black;
background-color: rgba(255, 255, 255, 0.7);
border-radius: 1em;
padding: 1em;
text-align: center;
}
.message-tray-indicator-glow {
height: 4px;
background-gradient-start: rgba(255, 255, 255, 0);
background-gradient-end: rgba(255, 255, 255, 1);
background-gradient-direction: vertical;
}
/* OSD */
.osd-window {
text-align: center;
@ -1753,6 +1773,26 @@ StScrollBar StButton#vhandle:active {
spacing: 8px;
}
.thumbnail-scroll-gradient-left {
background-gradient-direction: horizontal;
background-gradient-start: rgba(51, 51, 51, 1.0);
background-gradient-end: rgba(51, 51, 51, 0);
border-radius: 24px;
border-radius-topright: 0px;
border-radius-bottomright: 0px;
width: 60px;
}
.thumbnail-scroll-gradient-right {
background-gradient-direction: horizontal;
background-gradient-start: rgba(51, 51, 51, 0);
background-gradient-end: rgba(51, 51, 51, 1.0);
border-radius: 24px;
border-radius-topleft: 0px;
border-radius-bottomleft: 0px;
width: 60px;
}
.switcher-list .item-box {
padding: 8px;
border-radius: 8px;
@ -2022,6 +2062,10 @@ StScrollBar StButton#vhandle:active {
icon-size: 48px;
}
.mount-password-reask {
color: red;
}
.show-processes-dialog,
.mount-question-dialog {
spacing: 24px;
@ -2317,6 +2361,13 @@ StScrollBar StButton#vhandle:active {
padding-bottom: 1em;
}
.login-dialog-title {
font-size: 14pt;
font-weight: bold;
color: #666666;
padding-bottom: 2em;
}
.login-dialog {
/* Reset border and background */
border: none;
@ -2365,6 +2416,10 @@ StScrollBar StButton#vhandle:active {
background-size: contain;
}
.login-dialog-user-list-item-text-box {
padding: 0 0.5em;
}
.login-dialog-user-list-item .login-dialog-timed-login-indicator {
background-color: rgba(0,0,0,0.0);
height: 2px;
@ -2591,7 +2646,8 @@ StScrollBar StButton#vhandle:active {
padding-bottom: 0px;
}
#screenShieldNotifications .notification-button {
#screenShieldNotifications .notification-button,
#screenShieldNotifications .notification-icon-button {
border: 1px rgba(255,255,255,0.5);
}

View File

@ -66,7 +66,6 @@ IGNORE_HFILES= \
gactionmuxer.h \
gactionobservable.h \
gactionobserver.h \
shell-network-agent.h \
shell-recorder-src.h
if !BUILD_RECORDER

View File

@ -50,6 +50,7 @@
<xi:include href="xml/shell-wm.xml"/>
<xi:include href="xml/shell-util.xml"/>
<xi:include href="xml/shell-mount-operation.xml"/>
<xi:include href="xml/shell-network-agent.xml"/>
<xi:include href="xml/shell-polkit-authentication-agent.xml"/>
<xi:include href="xml/shell-tp-client.xml"/>
</chapter>

View File

@ -23,11 +23,6 @@ const GnomeShellIface = '<node> \
</interface> \
</node>';
const customCss = '.prefs-button { \
padding: 8px; \
border-radius: 20px; \
}';
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
function stripPrefix(string, prefix) {
@ -51,9 +46,13 @@ const Application = new Lang.Class({
this._extensionPrefsModules = {};
this._extensionIters = {};
this._startupUuid = null;
this._loaded = false;
this._skipMainWindow = false;
},
_buildModel: function() {
this._model = new Gtk.ListStore();
this._model.set_column_types([GObject.TYPE_STRING, GObject.TYPE_STRING]);
},
_extensionAvailable: function(uuid) {
@ -71,6 +70,11 @@ const Application = new Lang.Class({
return true;
},
_setExtensionInsensitive: function(layout, cell, model, iter, data) {
let uuid = model.get_value(iter, 0);
cell.set_sensitive(this._extensionAvailable(uuid));
},
_getExtensionPrefsModule: function(extension) {
let uuid = extension.metadata.uuid;
@ -100,23 +104,21 @@ const Application = new Lang.Class({
widget = this._buildErrorUI(extension, e);
}
let dialog = new Gtk.Dialog({ use_header_bar: true,
modal: true,
title: extension.metadata.name });
// Destroy the current prefs widget, if it exists
if (this._extensionPrefsBin.get_child())
this._extensionPrefsBin.get_child().destroy();
if (this._skipMainWindow) {
this.application.add_window(dialog);
if (this._window)
this._window.destroy();
this._window = dialog;
this._window.window_position = Gtk.WindowPosition.CENTER;
} else {
dialog.transient_for = this._window;
}
this._extensionPrefsBin.add(widget);
this._extensionSelector.set_active_iter(this._extensionIters[uuid]);
},
dialog.set_default_size(600, 400);
dialog.get_content_area().add(widget);
dialog.show();
_extensionSelected: function() {
let [success, iter] = this._extensionSelector.get_active_iter();
if (!success)
return;
let uuid = this._model.get_value(iter, 0);
this._selectExtension(uuid);
},
_buildErrorUI: function(extension, exc) {
@ -149,26 +151,48 @@ const Application = new Lang.Class({
_buildUI: function(app) {
this._window = new Gtk.ApplicationWindow({ application: app,
window_position: Gtk.WindowPosition.CENTER });
window_position: Gtk.WindowPosition.CENTER,
title: _("GNOME Shell Extension Preferences") });
this._window.set_size_request(800, 500);
this._window.set_size_request(600, 400);
this._titlebar = new Gtk.HeaderBar({ show_close_button: true,
title: _("GNOME Shell Extensions") });
this._window.set_titlebar(this._titlebar);
let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL });
this._window.add(vbox);
let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER,
shadow_type: Gtk.ShadowType.IN,
halign: Gtk.Align.CENTER,
margin: 18 });
this._window.add(scroll);
let toolbar = new Gtk.Toolbar();
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);
vbox.add(toolbar);
let toolitem;
this._extensionSelector = new Gtk.ListBox({ selection_mode: Gtk.SelectionMode.NONE });
this._extensionSelector.set_sort_func(Lang.bind(this, this._sortList));
this._extensionSelector.set_header_func(Lang.bind(this, this._updateHeader));
let label = new Gtk.Label({ label: '<b>' + _("Extension") + '</b>',
use_markup: true });
toolitem = new Gtk.ToolItem({ child: label });
toolbar.add(toolitem);
scroll.add(this._extensionSelector);
this._extensionSelector = new Gtk.ComboBox({ model: this._model,
margin_left: 8,
hexpand: true });
this._extensionSelector.get_style_context().add_class(Gtk.STYLE_CLASS_RAISED);
let renderer = new Gtk.CellRendererText();
this._extensionSelector.pack_start(renderer, true);
this._extensionSelector.add_attribute(renderer, 'text', 1);
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive));
this._extensionSelector.connect('changed', Lang.bind(this, this._extensionSelected));
toolitem = new Gtk.ToolItem({ child: this._extensionSelector });
toolitem.set_expand(true);
toolbar.add(toolitem);
this._extensionPrefsBin = new Gtk.Frame();
vbox.add(this._extensionPrefsBin);
let label = new Gtk.Label({
label: _("Select an extension to configure using the combobox above."),
vexpand: true
});
this._extensionPrefsBin.add(label);
this._shellProxy = new GnomeShellProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell');
this._shellProxy.connectSignal('ExtensionStatusChanged', Lang.bind(this, function(proxy, senderName, [uuid, state, error]) {
@ -179,35 +203,6 @@ const Application = new Lang.Class({
this._window.show_all();
},
_addCustomStyle: function() {
let provider = new Gtk.CssProvider();
try {
provider.load_from_data(customCss, -1);
} catch(e) {
log('Failed to add application style');
return;
}
let screen = this._window.window.get_screen();
let priority = Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION;
Gtk.StyleContext.add_provider_for_screen(screen, provider, priority);
},
_sortList: function(row1, row2) {
let name1 = ExtensionUtils.extensions[row1.uuid].metadata.name;
let name2 = ExtensionUtils.extensions[row2.uuid].metadata.name;
return name1.localeCompare(name2);
},
_updateHeader: function(row, before) {
if (!before || row.get_header())
return;
let sep = new Gtk.Separator({ orientation: Gtk.Orientation.HORIZONTAL });
row.set_header(sep);
},
_scanExtensions: function() {
let finder = new ExtensionUtils.ExtensionFinder();
finder.connect('extension-found', Lang.bind(this, this._extensionFound));
@ -216,24 +211,15 @@ const Application = new Lang.Class({
},
_extensionFound: function(finder, extension) {
let row = new ExtensionRow(extension.uuid);
row.prefsButton.visible = this._extensionAvailable(row.uuid);
row.prefsButton.connect('clicked', Lang.bind(this,
function() {
this._selectExtension(row.uuid);
}));
row.show_all();
this._extensionSelector.add(row);
let iter = this._model.append();
this._model.set(iter, [0, 1], [extension.uuid, extension.metadata.name]);
this._extensionIters[extension.uuid] = iter;
},
_extensionsLoaded: function() {
if (this._startupUuid && this._extensionAvailable(this._startupUuid))
this._selectExtension(this._startupUuid);
this._startupUuid = null;
this._skipMainWindow = false;
this._loaded = true;
},
_onActivate: function() {
@ -241,125 +227,29 @@ const Application = new Lang.Class({
},
_onStartup: function(app) {
this._buildModel();
this._buildUI(app);
this._addCustomStyle();
this._scanExtensions();
},
_onCommandLine: function(app, commandLine) {
app.activate();
let args = commandLine.get_arguments();
if (args.length) {
let uuid = args[0];
this._skipMainWindow = true;
// Strip off "extension:///" prefix which fakes a URI, if it exists
uuid = stripPrefix(uuid, "extension:///");
if (this._extensionAvailable(uuid))
this._selectExtension(uuid);
else if (!this._loaded)
this._startupUuid = uuid;
else
this._skipMainWindow = false;
this._startupUuid = uuid;
}
return 0;
}
});
const ExtensionRow = new Lang.Class({
Name: 'ExtensionRow',
Extends: Gtk.ListBoxRow,
_init: function(uuid) {
this.parent();
this.uuid = uuid;
this._settings = new Gio.Settings({ schema: 'org.gnome.shell' });
this._settings.connect('changed::enabled-extensions', Lang.bind(this,
function() {
this._switch.state = this._isEnabled();
}));
this._buildUI();
},
_buildUI: function() {
let extension = ExtensionUtils.extensions[this.uuid];
let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL,
hexpand: true, margin: 12, spacing: 6 });
this.add(hbox);
let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL,
spacing: 6, hexpand: true });
hbox.add(vbox);
let name = GLib.markup_escape_text(extension.metadata.name, -1);
let label = new Gtk.Label({ label: '<b>' + name + '</b>',
use_markup: true,
halign: Gtk.Align.START });
vbox.add(label);
let desc = extension.metadata.description.split('\n')[0];
label = new Gtk.Label({ label: desc,
ellipsize: Pango.EllipsizeMode.END,
halign: Gtk.Align.START });
vbox.add(label);
let button = new Gtk.Button({ valign: Gtk.Align.CENTER,
no_show_all: true });
button.add(new Gtk.Image({ icon_name: 'emblem-system-symbolic',
icon_size: Gtk.IconSize.BUTTON,
visible: true }));
button.get_style_context().add_class('prefs-button');
hbox.add(button);
this.prefsButton = button;
this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER,
state: this._isEnabled() });
this._switch.connect('notify::active', Lang.bind(this,
function() {
if (this._switch.active)
this._enable();
else
this._disable();
}));
this._switch.connect('state-set', function() { return true; });
hbox.add(this._switch);
},
_isEnabled: function() {
let extensions = this._settings.get_strv('enabled-extensions');
return extensions.indexOf(this.uuid) != -1;
},
_enable: function() {
let extensions = this._settings.get_strv('enabled-extensions');
if (extensions.indexOf(this.uuid) != -1)
return;
extensions.push(this.uuid);
this._settings.set_strv('enabled-extensions', extensions);
},
_disable: function() {
let extensions = this._settings.get_strv('enabled-extensions');
let pos = extensions.indexOf(this.uuid);
if (pos == -1)
return;
do {
extensions.splice(pos, 1);
pos = extensions.indexOf(this.uuid);
} while (pos != -1);
this._settings.set_strv('enabled-extensions', extensions);
}
});
function initEnvironment() {
// Monkey-patch in a "global" object that fakes some Shell utilities
// that ExtensionUtils depends on.

View File

@ -48,6 +48,8 @@ const _SCROLL_ANIMATION_TIME = 0.5;
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
const _LOGO_ICON_HEIGHT = 48;
let _loginDialog = null;
const UserListItem = new Lang.Class({
Name: 'UserListItem',
@ -481,7 +483,7 @@ const LoginDialog = new Lang.Class({
},
_ensureUserListLoaded: function() {
if (!this._userManager.is_loaded) {
if (!this._userManager.is_loaded)
this._userManagerLoadedId = this._userManager.connect('notify::is-loaded',
Lang.bind(this, function() {
if (this._userManager.is_loaded) {
@ -490,10 +492,8 @@ const LoginDialog = new Lang.Class({
this._userManagerLoadedId = 0;
}
}));
} else {
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this._loadUserList));
GLib.Source.set_name_by_id(id, '[gnome-shell] _loadUserList');
}
else
GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, this._loadUserList));
},
_updateDisableUserList: function() {
@ -686,11 +686,10 @@ const LoginDialog = new Lang.Class({
},
onUpdateScope: this,
onComplete: function() {
let id = Mainloop.idle_add(Lang.bind(this, function() {
Mainloop.idle_add(Lang.bind(this, function() {
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync');
},
onCompleteScope: this });
},
@ -746,7 +745,6 @@ const LoginDialog = new Lang.Class({
hold.release();
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginAnimationTime');
return hold;
},

View File

@ -252,7 +252,6 @@ const ShellUserVerifier = new Lang.Class({
this._queueMessageTimeout();
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._messageQueueTimeoutId, '[gnome-shell] this._queueMessageTimeout');
},
_queueMessage: function(message, messageType) {

View File

@ -84,7 +84,6 @@
<file>ui/userWidget.js</file>
<file>ui/viewSelector.js</file>
<file>ui/windowAttentionHandler.js</file>
<file>ui/windowMenu.js</file>
<file>ui/windowManager.js</file>
<file>ui/workspace.js</file>
<file>ui/workspaceSwitcherPopup.js</file>

View File

@ -46,6 +46,32 @@ const SystemdLoginSessionIface = '<node> \
const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
const ConsoleKitManagerIface = '<node> \
<interface name="org.freedesktop.ConsoleKit.Manager"> \
<method name="CanRestart"> \
<arg type="b" direction="out"/> \
</method> \
<method name="CanStop"> \
<arg type="b" direction="out"/> \
</method> \
<method name="Restart" /> \
<method name="Stop" /> \
<method name="GetCurrentSession"> \
<arg type="o" direction="out" /> \
</method> \
</interface> \
</node>';
const ConsoleKitSessionIface = '<node> \
<interface name="org.freedesktop.ConsoleKit.Session"> \
<signal name="Lock" /> \
<signal name="Unlock" /> \
</interface> \
</node>';
const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface);
const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface);
function haveSystemd() {
return GLib.access("/run/systemd/seats", 0) >= 0;
}
@ -75,7 +101,7 @@ function canLock() {
-1, null);
let version = result.deep_unpack()[0].deep_unpack();
return haveSystemd() && versionCompare('3.5.91', version);
return versionCompare('3.5.91', version);
} catch(e) {
return false;
}
@ -93,7 +119,7 @@ function getLoginManager() {
if (haveSystemd())
_loginManager = new LoginManagerSystemd();
else
_loginManager = new LoginManagerDummy();
_loginManager = new LoginManagerConsoleKit();
}
return _loginManager;
@ -110,6 +136,9 @@ const LoginManagerSystemd = new Lang.Class({
Lang.bind(this, this._prepareForSleep));
},
// Having this function is a bit of a hack since the Systemd and ConsoleKit
// session objects have different interfaces - but in both cases there are
// Lock/Unlock signals, and that's all we count upon at the moment.
getCurrentSessionProxy: function(callback) {
if (this._currentSession) {
callback (this._currentSession);
@ -162,7 +191,7 @@ const LoginManagerSystemd = new Lang.Class({
let fd = -1;
try {
let [outVariant, fdList] = proxy.call_with_unix_fd_list_finish(result);
fd = fdList.steal_fds()[0];
fd = fdList.steal_fds(outVariant.deep_unpack())[0];
callback(new Gio.UnixInputStream({ fd: fd }));
} catch(e) {
logError(e, "Error getting systemd inhibitor");
@ -177,13 +206,35 @@ const LoginManagerSystemd = new Lang.Class({
});
Signals.addSignalMethods(LoginManagerSystemd.prototype);
const LoginManagerDummy = new Lang.Class({
Name: 'LoginManagerDummy',
const LoginManagerConsoleKit = new Lang.Class({
Name: 'LoginManagerConsoleKit',
_init: function() {
this._proxy = new ConsoleKitManager(Gio.DBus.system,
'org.freedesktop.ConsoleKit',
'/org/freedesktop/ConsoleKit/Manager');
},
// Having this function is a bit of a hack since the Systemd and ConsoleKit
// session objects have different interfaces - but in both cases there are
// Lock/Unlock signals, and that's all we count upon at the moment.
getCurrentSessionProxy: function(callback) {
// we could return a DummySession object that fakes whatever callers
// expect (at the time of writing: connect() and connectSignal()
// methods), but just never calling the callback should be safer
if (this._currentSession) {
callback (this._currentSession);
return;
}
this._proxy.GetCurrentSessionRemote(Lang.bind(this,
function(result, error) {
if (error) {
logError(error, 'Could not get a proxy for the current session');
} else {
this._currentSession = new ConsoleKitSession(Gio.DBus.system,
'org.freedesktop.ConsoleKit',
result[0]);
callback(this._currentSession);
}
}));
},
canSuspend: function(asyncCallback) {
@ -203,4 +254,4 @@ const LoginManagerDummy = new Lang.Class({
callback(null);
}
});
Signals.addSignalMethods(LoginManagerDummy.prototype);
Signals.addSignalMethods(LoginManagerConsoleKit.prototype);

View File

@ -129,7 +129,7 @@ function trySpawn(argv)
// Dummy child watch; we don't want to double-fork internally
// because then we lose the parent-child relationship, which
// can break polkit. See https://bugzilla.redhat.com//show_bug.cgi?id=819275
GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {});
GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {}, null);
}
// trySpawnCommandLine:

View File

@ -167,8 +167,6 @@ const AppSwitcherPopup = new Lang.Class({
this._select(this._selectedIndex, this._nextWindow());
else if (keysym == Clutter.Up)
this._select(this._selectedIndex, null, true);
else
return Clutter.EVENT_PROPAGATE;
} else {
if (keysym == Clutter.Left)
this._select(this._previous());
@ -176,11 +174,7 @@ const AppSwitcherPopup = new Lang.Class({
this._select(this._next());
else if (keysym == Clutter.Down)
this._select(this._selectedIndex, 0);
else
return Clutter.EVENT_PROPAGATE;
}
return Clutter.EVENT_STOP;
},
_scrollHandler: function(direction) {
@ -311,7 +305,6 @@ const AppSwitcherPopup = new Lang.Class({
this._thumbnailTimeoutId = Mainloop.timeout_add (
THUMBNAIL_POPUP_TIME,
Lang.bind(this, this._timeoutPopupThumbnails));
GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails');
}
},
@ -372,7 +365,7 @@ const WindowSwitcherPopup = new Lang.Class({
_getWindowList: function() {
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
return global.display.get_tab_list(Meta.TabList.NORMAL, global.screen, workspace);
},
_createSwitcher: function() {
@ -410,11 +403,7 @@ const WindowSwitcherPopup = new Lang.Class({
this._select(this._previous());
else if (keysym == Clutter.Right)
this._select(this._next());
else
return Clutter.EVENT_PROPAGATE;
}
return Clutter.EVENT_STOP;
},
_finish: function() {
@ -459,7 +448,8 @@ const AppSwitcher = new Lang.Class({
let settings = new Gio.Settings({ schema: 'org.gnome.shell.app-switcher' });
let workspace = settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace()
: null;
let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL,
global.screen, workspace);
// Construct the AppIcons, add to the popup
for (let i = 0; i < apps.length; i++) {
@ -566,7 +556,6 @@ const AppSwitcher = new Lang.Class({
this._mouseTimeOutId = 0;
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem');
} else
this._itemEntered(index);
},

View File

@ -34,7 +34,6 @@ const Animation = new Lang.Class({
this._showFrame(0);
this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update');
}
this._isPlaying = true;

View File

@ -41,7 +41,9 @@ const MIN_FREQUENT_APPS_COUNT = 3;
const INDICATORS_BASE_TIME = 0.25;
const INDICATORS_ANIMATION_DELAY = 0.125;
const INDICATORS_ANIMATION_MAX_TIME = 0.75;
// Fraction of page height the finger or mouse must reach
// to change page
const PAGE_SWITCH_TRESHOLD = 0.2;
const PAGE_SWITCH_TIME = 0.3;
const VIEWS_SWITCH_TIME = 0.4;
@ -79,10 +81,6 @@ function _getFolderName(folder) {
return name;
}
function clamp(value, min, max) {
return Math.max(min, Math.min(max, value));
}
const BaseAppView = new Lang.Class({
Name: 'BaseAppView',
Abstract: true,
@ -441,8 +439,8 @@ const AllView = new Lang.Class({
},
goToPage: function(pageNumber) {
pageNumber = clamp(pageNumber, 0, this._grid.nPages() - 1);
if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1)
return;
if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup)
return;
if (this._displayingPopup && this._currentPopup)
@ -474,12 +472,14 @@ const AllView = new Lang.Class({
// longer than PAGE_SWITCH_TIME
time = Math.min(time, PAGE_SWITCH_TIME);
this._currentPage = pageNumber;
Tweener.addTween(this._adjustment,
{ value: this._grid.getPageY(this._currentPage),
time: time,
transition: 'easeOutQuad' });
this._pageIndicators.setCurrentPage(pageNumber);
if (pageNumber < this._grid.nPages() && pageNumber >= 0) {
this._currentPage = pageNumber;
Tweener.addTween(this._adjustment,
{ value: this._grid.getPageY(this._currentPage),
time: time,
transition: 'easeOutQuad' });
this._pageIndicators.setCurrentPage(pageNumber);
}
},
_diffToPage: function (pageNumber) {
@ -526,19 +526,15 @@ const AllView = new Lang.Class({
_onPanEnd: function(action) {
if (this._displayingPopup)
return;
let pageHeight = this._grid.getPageHeight();
// Calculate the scroll value we'd be at, which is our current
// scroll plus any velocity the user had when they released
// their finger.
let velocity = -action.get_velocity(0)[2];
let endPanValue = this._adjustment.value + velocity;
let closestPage = Math.round(endPanValue / pageHeight);
this.goToPage(closestPage);
let diffCurrentPage = this._diffToPage(this._currentPage);
if (diffCurrentPage > this._scrollView.height * PAGE_SWITCH_TRESHOLD) {
if (action.get_velocity(0)[2] > 0)
this.goToPage(this._currentPage - 1);
else
this.goToPage(this._currentPage + 1);
} else {
this.goToPage(this._currentPage);
}
this._panning = false;
},
@ -768,7 +764,7 @@ const AppDisplay = new Lang.Class({
this._viewStack = new St.Widget({ x_expand: true, y_expand: true,
layout_manager: this._viewStackLayout });
this._viewStackLayout.connect('allocated-size-changed', Lang.bind(this, this._onAllocatedSizeChanged));
this.actor.add_actor(this._viewStack);
this.actor.add_actor(this._viewStack, { expand: true });
let layout = new ControlsBoxLayout({ homogeneous: true });
this._controls = new St.Widget({ style_class: 'app-view-controls',
layout_manager: layout });
@ -1406,7 +1402,6 @@ const AppIcon = new Lang.Class({
this.popupMenu();
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._menuTimeoutId, '[gnome-shell] this.popupMenu');
} else if (button == 3) {
this.popupMenu();
return Clutter.EVENT_STOP;
@ -1602,26 +1597,6 @@ const AppIconMenu = new Lang.Class({
favs.addFavorite(this._source.app.get_id());
}));
}
if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) {
this._appendSeparator();
let item = this._appendMenuItem(_("Show Details"));
item.connect('activate', Lang.bind(this, function() {
let id = this._source.app.get_id();
let args = GLib.Variant.new('(ss)', [id, '']);
Gio.DBus.get(Gio.BusType.SESSION, null,
function(o, res) {
let bus = Gio.DBus.get_finish(res);
bus.call('org.gnome.Software',
'/org/gnome/Software',
'org.gtk.Actions', 'Activate',
GLib.Variant.new('(sava{sv})',
['details', [args], null]),
null, 0, -1, null, null);
Main.overview.hide();
});
}));
}
}
},

View File

@ -271,11 +271,10 @@ const BackgroundCache = new Lang.Class({
if (this._animationFilename == params.filename) {
if (params.onLoaded) {
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
params.onLoaded(this._animation);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
}
}
@ -287,11 +286,10 @@ const BackgroundCache = new Lang.Class({
this._animation = animation;
if (params.onLoaded) {
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
params.onLoaded(this._animation);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
}
}));
}
@ -388,11 +386,10 @@ const Background = new Lang.Class({
this.isLoaded = true;
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
this.emit('loaded');
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this.emit');
},
_loadPattern: function() {
@ -535,7 +532,6 @@ const Background = new Lang.Class({
this._updateAnimation();
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation');
},
_loadAnimation: function(filename) {

View File

@ -14,9 +14,6 @@ const Shell = imports.gi.Shell;
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
const SHOW_WEEKDATE_KEY = 'show-weekdate';
// alias to prevent xgettext from picking up strings translated in GTK+
const gtk30_ = Gettext_gtk30.gettext;
// in org.gnome.desktop.interface
const CLOCK_FORMAT_KEY = 'clock-format';
@ -390,7 +387,7 @@ const Calendar = new Lang.Class({
// Find the ordering for month/year in the calendar heading
this._headerFormatWithoutYear = '%B';
switch (gtk30_('calendar:MY')) {
switch (Gettext_gtk30.gettext('calendar:MY')) {
case 'calendar:MY':
this._headerFormat = '%B %Y';
break;
@ -408,9 +405,9 @@ const Calendar = new Lang.Class({
this._shouldDateGrabFocus = false;
this.actor = new St.Widget({ style_class: 'calendar',
layout_manager: new Clutter.TableLayout(),
reactive: true });
this.actor = new St.Table({ homogeneous: false,
style_class: 'calendar',
reactive: true });
this.actor.connect('scroll-event',
Lang.bind(this, this._onScroll));
@ -441,14 +438,13 @@ const Calendar = new Lang.Class({
},
_buildHeader: function() {
let layout = this.actor.layout_manager;
let offsetCols = this._useWeekdate ? 1 : 0;
this.actor.destroy_all_children();
// Top line of the calendar '<| September 2009 |>'
this._topBox = new St.BoxLayout();
layout.pack(this._topBox, 0, 0);
layout.set_span(this._topBox, offsetCols + 7, 1);
this.actor.add(this._topBox,
{ row: 0, col: 0, col_span: offsetCols + 7 });
this._backButton = new St.Button({ style_class: 'calendar-change-month-back',
accessible_name: _("Previous month"),
@ -480,8 +476,10 @@ const Calendar = new Lang.Class({
let customDayAbbrev = _getCalendarDayAbbreviation(iter.getDay());
let label = new St.Label({ style_class: 'calendar-day-base calendar-day-heading',
text: customDayAbbrev });
let col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
layout.pack(label, col, 1);
this.actor.add(label,
{ row: 1,
col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7,
x_fill: false, x_align: St.Align.MIDDLE });
iter.setTime(iter.getTime() + MSECS_IN_DAY);
}
@ -600,7 +598,6 @@ const Calendar = new Lang.Class({
beginDate.setTime(beginDate.getTime() - (weekPadding + daysToWeekStart) * MSECS_IN_DAY);
let layout = this.actor.layout_manager;
let iter = new Date(beginDate);
let row = 2;
// nRows here means 6 weeks + one header + one navbar
@ -648,15 +645,16 @@ const Calendar = new Lang.Class({
button.style_class = styleClass;
let offsetCols = this._useWeekdate ? 1 : 0;
let col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
layout.pack(button, col, row);
this.actor.add(button,
{ row: row, col: offsetCols + (7 + iter.getDay() - this._weekStart) % 7 });
this._buttons.push(button);
if (this._useWeekdate && iter.getDay() == 4) {
let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(),
style_class: 'calendar-day-base calendar-week-number'});
layout.pack(label, 0, row);
this.actor.add(label,
{ row: row, col: 0, y_align: St.Align.MIDDLE });
}
iter.setTime(iter.getTime() + MSECS_IN_DAY);
@ -699,10 +697,7 @@ const EventsList = new Lang.Class({
Name: 'EventsList',
_init: function() {
let layout = new Clutter.TableLayout();
this.actor = new St.Widget({ style_class: 'events-table',
layout_manager: layout });
layout.hookup_style(this.actor);
this.actor = new St.Table({ style_class: 'events-table' });
this._date = new Date();
this._desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
this._desktopSettings.connect('changed', Lang.bind(this, this._update));
@ -726,11 +721,9 @@ const EventsList = new Lang.Class({
dayLabel.clutter_text.line_wrap = false;
dayLabel.clutter_text.ellipsize = false;
let layout = this.actor.layout_manager;
layout.pack(dayLabel, 0, index);
layout.child_set(dayLabel, { x_expand: false,
x_align: Clutter.TableAlignment.END,
y_align: Clutter.TableAlignment.START });
this.actor.add(dayLabel, { row: index, col: 0,
x_expand: false, x_align: St.Align.END,
y_fill: false, y_align: St.Align.START });
let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
let timeString = _formatEventTime(event, clockFormat);
@ -739,17 +732,18 @@ const EventsList = new Lang.Class({
timeLabel.clutter_text.line_wrap = false;
timeLabel.clutter_text.ellipsize = false;
layout.pack(timeLabel, 1, index);
layout.child_set(timeLabel, { x_expand: false,
y_align: Clutter.TableAlignment.START });
this.actor.add(timeLabel, { row: index, col: 1,
x_expand: false, x_align: St.Align.MIDDLE,
y_fill: false, y_align: St.Align.START });
let titleLabel = new St.Label({ style_class: 'events-day-task',
text: event.summary });
titleLabel.clutter_text.line_wrap = true;
titleLabel.clutter_text.ellipsize = false;
layout.pack(titleLabel, 2, index);
layout.child_set(titleLabel, { x_expand: true });
this.actor.add(titleLabel, { row: index, col: 2,
x_expand: true, x_align: St.Align.START,
y_fill: false, y_align: St.Align.START });
},
_addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) {
@ -758,10 +752,13 @@ const EventsList = new Lang.Class({
if (events.length == 0 && !showNothingScheduled)
return index;
let label = new St.Label({ style_class: 'events-day-header', text: header });
let layout = this.actor.layout_manager;
layout.pack(label, 0, index);
layout.child_set(label, { column_span: 3, x_expand: false });
this.actor.add(new St.Label({ style_class: 'events-day-header', text: header }),
{ row: index, col: 0, col_span: 3,
// In theory, x_expand should be true here, but x_expand
// is a property of the column for StTable, ie all day cells
// get it too
x_expand: false, x_align: St.Align.START,
y_fill: false, y_align: St.Align.START });
index++;
for (let n = 0; n < events.length; n++) {

View File

@ -43,7 +43,6 @@ const AutomountManager = new Lang.Class({
this._driveEjectButtonId = this._volumeMonitor.connect('drive-eject-button', Lang.bind(this, this._onDriveEjectButton));
this._mountAllId = Mainloop.idle_add(Lang.bind(this, this._startupMountAll));
GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll');
},
disable: function() {
@ -235,11 +234,10 @@ const AutomountManager = new Lang.Class({
},
_allowAutorunExpire: function(volume) {
let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, function() {
Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, function() {
volume.allowAutorun = false;
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun');
}
});
const Component = AutomountManager;

View File

@ -170,6 +170,17 @@ const AutorunManager = new Lang.Class({
this._transDispatcher = new AutorunTransientDispatcher(this);
},
_ensureResidentSource: function() {
if (this._residentSource)
return;
this._residentSource = new AutorunResidentSource(this);
let destroyId = this._residentSource.connect('destroy', Lang.bind(this, function() {
this._residentSource.disconnect(destroyId);
this._residentSource = null;
}));
},
enable: function() {
this._scanMounts();
@ -178,12 +189,17 @@ const AutorunManager = new Lang.Class({
},
disable: function() {
if (this._residentSource)
this._residentSource.destroy();
this._volumeMonitor.disconnect(this._mountAddedId);
this._volumeMonitor.disconnect(this._mountRemovedId);
},
_processMount: function(mount, hotplug) {
let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) {
this._ensureResidentSource();
this._residentSource.addMount(mount, apps);
if (hotplug)
this._transDispatcher.addMount(mount, apps, contentTypes);
}));
@ -208,6 +224,8 @@ const AutorunManager = new Lang.Class({
_onMountRemoved: function(monitor, mount) {
this._transDispatcher.removeMount(mount);
if (this._residentSource)
this._residentSource.removeMount(mount);
},
ejectMount: function(mount) {
@ -270,6 +288,153 @@ const AutorunManager = new Lang.Class({
},
});
const AutorunResidentSource = new Lang.Class({
Name: 'AutorunResidentSource',
Extends: MessageTray.Source,
_init: function(manager) {
this.parent(_("Removable Devices"), 'media-removable');
this.resident = true;
this._mounts = [];
this._manager = manager;
this._notification = new AutorunResidentNotification(this._manager, this);
},
_createPolicy: function() {
return new MessageTray.NotificationPolicy({ showInLockScreen: false });
},
buildRightClickMenu: function() {
return null;
},
addMount: function(mount, apps) {
if (!shouldAutorunMount(mount, false))
return;
let filtered = this._mounts.filter(function (element) {
return (element.mount == mount);
});
if (filtered.length != 0)
return;
let element = { mount: mount, apps: apps };
this._mounts.push(element);
this._redisplay();
},
removeMount: function(mount) {
this._mounts =
this._mounts.filter(function (element) {
return (element.mount != mount);
});
this._redisplay();
},
_redisplay: function() {
if (this._mounts.length == 0) {
this._notification.destroy();
this.destroy();
return;
}
this._notification.updateForMounts(this._mounts);
// add ourselves as a source, and push the notification
if (!Main.messageTray.contains(this)) {
Main.messageTray.add(this);
this.pushNotification(this._notification);
}
}
});
const AutorunResidentNotification = new Lang.Class({
Name: 'AutorunResidentNotification',
Extends: MessageTray.Notification,
_init: function(manager, source) {
this.parent(source, source.title, null, { customContent: true });
// set the notification as resident
this.setResident(true);
this._layout = new St.BoxLayout ({ style_class: 'hotplug-resident-box',
vertical: true });
this._manager = manager;
this.addActor(this._layout,
{ x_expand: true,
x_fill: true });
},
updateForMounts: function(mounts) {
// remove all the layout content
this._layout.destroy_all_children();
for (let idx = 0; idx < mounts.length; idx++) {
let element = mounts[idx];
let actor = this._itemForMount(element.mount, element.apps);
this._layout.add(actor, { x_fill: true,
expand: true });
}
},
_itemForMount: function(mount, apps) {
let item = new St.BoxLayout();
// prepare the mount button content
let mountLayout = new St.BoxLayout();
let mountIcon = new St.Icon({ gicon: mount.get_icon(),
style_class: 'hotplug-resident-mount-icon' });
mountLayout.add_actor(mountIcon);
let labelBin = new St.Bin({ y_align: St.Align.MIDDLE });
let mountLabel =
new St.Label({ text: mount.get_name(),
style_class: 'hotplug-resident-mount-label',
track_hover: true,
reactive: true });
labelBin.add_actor(mountLabel);
mountLayout.add_actor(labelBin);
let mountButton = new St.Button({ child: mountLayout,
x_align: St.Align.START,
x_fill: true,
style_class: 'hotplug-resident-mount',
button_mask: St.ButtonMask.ONE });
item.add(mountButton, { x_align: St.Align.START,
expand: true });
let ejectIcon =
new St.Icon({ icon_name: 'media-eject-symbolic',
style_class: 'hotplug-resident-eject-icon' });
let ejectButton =
new St.Button({ style_class: 'hotplug-resident-eject-button',
button_mask: St.ButtonMask.ONE,
child: ejectIcon });
item.add(ejectButton, { x_align: St.Align.END });
// now connect signals
mountButton.connect('clicked', Lang.bind(this, function(actor, event) {
startAppForMount(apps[0], mount);
}));
ejectButton.connect('clicked', Lang.bind(this, function() {
this._manager.ejectMount(mount);
}));
return item;
},
});
const AutorunTransientDispatcher = new Lang.Class({
Name: 'AutorunTransientDispatcher',
@ -394,12 +559,12 @@ const AutorunTransientNotification = new Lang.Class({
Extends: MessageTray.Notification,
_init: function(manager, source) {
this.parent(source, source.title);
this.parent(source, source.title, null, { customContent: true });
this._manager = manager;
this._box = new St.BoxLayout({ style_class: 'hotplug-transient-box',
vertical: true });
this._bodyBin.child = this._box;
this.addActor(this._box);
this._mount = source.mount;

View File

@ -510,12 +510,10 @@ const VPNRequestHandler = new Lang.Class({
_showNewStyleDialog: function() {
let keyfile = new GLib.KeyFile();
let data;
let contentOverride;
try {
data = this._dataStdout.peek_buffer();
let data = this._dataStdout.peek_buffer();
keyfile.load_from_data(data.toString(), data.length,
GLib.KeyFileFlags.NONE);
@ -548,16 +546,13 @@ const VPNRequestHandler = new Lang.Class({
}
}
} catch(e) {
// No output is a valid case it means "both secrets are stored"
if (data.length > 0) {
logError(e, 'error while reading VPN plugin output keyfile');
logError(e, 'error while reading VPN plugin output keyfile');
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
return;
}
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
return;
}
if (contentOverride && contentOverride.secrets.length) {
if (contentOverride.secrets.length) {
// Only show the dialog if we actually have something to ask
this._shellDialog = new NetworkSecretDialog(this._agent, this._requestId, this._connection, 'vpn', [], contentOverride);
this._shellDialog.open(global.get_current_time());

View File

@ -102,6 +102,15 @@ const TelepathyClient = new Lang.Class({
this._tpClient.set_handle_channels_func(
Lang.bind(this, this._handleChannels));
// Watch subscription requests and connection errors
this._subscriptionSource = null;
this._accountSource = null;
// Workaround for gjs not supporting GPtrArray in signals.
// See BGO bug #653941 for context.
this._tpClient.set_contact_list_changed_func(
Lang.bind(this, this._contactListChanged));
// Allow other clients (such as Empathy) to pre-empt our channels if
// needed
this._tpClient.set_delegated_channels_callback(
@ -115,12 +124,17 @@ const TelepathyClient = new Lang.Class({
throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
}
this._accountManagerValidityChangedId = this._accountManager.connect('account-validity-changed',
Lang.bind(this, this._accountValidityChanged));
if (!this._accountManager.is_prepared(Tp.AccountManager.get_feature_quark_core()))
this._accountManager.prepare_async(null, Lang.bind(this, this._accountManagerPrepared));
},
disable: function() {
this._tpClient.unregister();
this._accountManager.disconnect(this._accountManagerValidityChangedId);
this._accountManagerValidityChangedId = 0;
},
_observeChannels: function(observer, account, conn, channels,
@ -205,6 +219,33 @@ const TelepathyClient = new Lang.Class({
}
},
_displayRoomInvitation: function(conn, channel, dispatchOp, context) {
// We can only approve the rooms if we have been invited to it
let selfContact = channel.group_get_self_contact();
if (selfContact == null) {
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
message: 'Not invited to the room' }));
return;
}
let [invited, inviter, reason, msg] = channel.group_get_local_pending_contact_info(selfContact);
if (!invited) {
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
message: 'Not invited to the room' }));
return;
}
// FIXME: We don't have a 'chat room' icon (bgo #653737) use
// system-users for now as Empathy does.
let source = new ApproverSource(dispatchOp, _("Invitation"),
Gio.icon_new_for_string('system-users'));
Main.messageTray.add(source);
let notif = new RoomInviteNotification(source, dispatchOp, channel, inviter);
source.notify(notif);
context.accept();
},
_approveChannels: function(approver, account, conn, channels,
dispatchOp, context) {
let channel = channels[0];
@ -218,6 +259,10 @@ const TelepathyClient = new Lang.Class({
if (chanType == Tp.IFACE_CHANNEL_TYPE_TEXT)
this._approveTextChannel(account, conn, channel, dispatchOp, context);
else if (chanType == Tp.IFACE_CHANNEL_TYPE_CALL)
this._approveCall(account, conn, channel, dispatchOp, context);
else if (chanType == Tp.IFACE_CHANNEL_TYPE_FILE_TRANSFER)
this._approveFileTransfer(account, conn, channel, dispatchOp, context);
else
context.fail(new Tp.Error({ code: Tp.Error.INVALID_ARGUMENT,
message: 'Unsupported channel type' }));
@ -238,9 +283,45 @@ const TelepathyClient = new Lang.Class({
}}));
context.accept();
} else {
this._displayRoomInvitation(conn, channel, dispatchOp, context);
}
},
_approveCall: function(account, conn, channel, dispatchOp, context) {
let isVideo = false;
let props = channel.borrow_immutable_properties();
if (props[Tp.PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO])
isVideo = true;
// We got the TpContact
let source = new ApproverSource(dispatchOp, _("Call"), isVideo ?
Gio.icon_new_for_string('camera-web') :
Gio.icon_new_for_string('audio-input-microphone'));
Main.messageTray.add(source);
let notif = new AudioVideoNotification(source, dispatchOp, channel,
channel.get_target_contact(), isVideo);
source.notify(notif);
context.accept();
},
_approveFileTransfer: function(account, conn, channel, dispatchOp, context) {
// Use the icon of the file being transferred
let gicon = Gio.content_type_get_icon(channel.get_mime_type());
// We got the TpContact
let source = new ApproverSource(dispatchOp, _("File Transfer"), gicon);
Main.messageTray.add(source);
let notif = new FileTransferNotification(source, dispatchOp, channel,
channel.get_target_contact());
source.notify(notif);
context.accept();
},
_delegatedChannelsCb: function(client, channels) {
// Nothing to do as we don't make a distinction between observed and
// handled channels.
@ -248,7 +329,105 @@ const TelepathyClient = new Lang.Class({
_accountManagerPrepared: function(am, result) {
am.prepare_finish(result);
let accounts = am.get_valid_accounts();
for (let i = 0; i < accounts.length; i++) {
this._accountValidityChanged(am, accounts[i], true);
}
},
_accountValidityChanged: function(am, account, valid) {
if (!valid)
return;
// It would be better to connect to "status-changed" but we cannot.
// See discussion in https://bugzilla.gnome.org/show_bug.cgi?id=654159
account.connect("notify::connection-status",
Lang.bind(this, this._accountConnectionStatusNotifyCb));
account.connect('notify::connection',
Lang.bind(this, this._connectionChanged));
this._connectionChanged(account);
},
_connectionChanged: function(account) {
let conn = account.get_connection();
if (conn == null)
return;
this._tpClient.grab_contact_list_changed(conn);
if (conn.get_contact_list_state() == Tp.ContactListState.SUCCESS) {
this._contactListChanged(conn, conn.dup_contact_list(), []);
}
},
_contactListChanged: function(conn, added, removed) {
for (let i = 0; i < added.length; i++) {
let contact = added[i];
contact.connect('subscription-states-changed',
Lang.bind(this, this._subscriptionStateChanged));
this._subscriptionStateChanged(contact);
}
},
_subscriptionStateChanged: function(contact) {
if (contact.get_publish_state() != Tp.SubscriptionState.ASK)
return;
/* Implicitly accept publish requests if contact is already subscribed */
if (contact.get_subscribe_state() == Tp.SubscriptionState.YES ||
contact.get_subscribe_state() == Tp.SubscriptionState.ASK) {
contact.authorize_publication_async(function(src, result) {
src.authorize_publication_finish(result)});
return;
}
/* Display notification to ask user to accept/reject request */
let source = this._ensureAppSource();
let notif = new SubscriptionRequestNotification(source, contact);
source.notify(notif);
},
_accountConnectionStatusNotifyCb: function(account) {
let connectionError = account.connection_error;
if (account.connection_status != Tp.ConnectionStatus.DISCONNECTED ||
connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED)) {
return;
}
let notif = this._accountNotifications[account.get_object_path()];
if (notif)
return;
/* Display notification that account failed to connect */
let source = this._ensureAppSource();
notif = new AccountNotification(source, account, connectionError);
this._accountNotifications[account.get_object_path()] = notif;
notif.connect('destroy', Lang.bind(this, function() {
delete this._accountNotifications[account.get_object_path()];
}));
source.notify(notif);
},
_ensureAppSource: function() {
if (this._appSource == null) {
this._appSource = new MessageTray.Source(_("Chat"), 'empathy');
this._appSource.policy = new MessageTray.NotificationApplicationPolicy('empathy');
Main.messageTray.add(this._appSource);
this._appSource.connect('destroy', Lang.bind(this, function () {
this._appSource = null;
}));
}
return this._appSource;
}
});
const ChatSource = new Lang.Class({
@ -366,7 +545,7 @@ const ChatSource = new Lang.Class({
_updateAvatarIcon: function() {
this.iconUpdated();
this._notification.update(this._notification.title);
this._notification.update(this._notification.title, null, { customContent: true });
},
open: function() {
@ -502,7 +681,6 @@ const ChatSource = new Lang.Class({
Mainloop.source_remove(this._notifyTimeoutId);
this._notifyTimeoutId = Mainloop.timeout_add(500,
Lang.bind(this, this._notifyTimeout));
GLib.Source.set_name_by_id(this._notifyTimeoutId, '[gnome-shell] this._notifyTimeout');
},
_notifyTimeout: function() {
@ -558,7 +736,7 @@ const ChatSource = new Lang.Class({
title = GLib.markup_escape_text(this.title, -1);
this._notification.update(this._notification.title, null, { secondaryGIcon: this.getSecondaryIcon() });
this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() });
if (message)
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
@ -585,7 +763,8 @@ const ChatNotification = new Lang.Class({
Extends: MessageTray.Notification,
_init: function(source) {
this.parent(source, source.title, null, { secondaryGIcon: source.getSecondaryIcon() });
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
this.setResident(true);
this._responseEntry = new St.Entry({ style_class: 'chat-response',
can_focus: true });
@ -601,17 +780,16 @@ const ChatNotification = new Lang.Class({
this.emit('unfocused');
}));
this._createScrollArea();
this._lastGroup = null;
this._bodyBox = new St.BoxLayout({ style_class: 'chat-notification-body-box' });
this._bodyBin.child = this._bodyBox;
this._lastGroupActor = null;
// Keep track of the bottom position for the current adjustment and
// force a scroll to the bottom if things change while we were at the
// bottom
this._oldMaxScrollValue = this._bodyScrollArea.vscroll.adjustment.value;
this._bodyScrollArea.add_style_class_name('chat-notification-scrollview');
this._bodyScrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value;
this._scrollArea.add_style_class_name('chat-notification-scrollview');
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
if (adjustment.value == this._oldMaxScrollValue)
this.scrollTo(St.Side.BOTTOM);
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
@ -648,7 +826,8 @@ const ChatNotification = new Lang.Class({
}
if (message.direction == NotificationDirection.RECEIVED) {
this.update(this.source.title, messageBody, { bannerMarkup: true });
this.update(this.source.title, messageBody, { customContent: true,
bannerMarkup: true });
}
let group = (message.direction == NotificationDirection.RECEIVED ?
@ -685,7 +864,7 @@ const ChatNotification = new Lang.Class({
expired[i].actor.destroy();
}
let groups = this._bodyBox.get_children();
let groups = this._contentArea.get_children();
for (let i = 0; i < groups.length; i++) {
let group = groups[i];
if (group.get_n_children() == 0)
@ -717,9 +896,9 @@ const ChatNotification = new Lang.Class({
if (this._timestampTimeoutId)
Mainloop.source_remove(this._timestampTimeoutId);
let highlighter = new MessageTray.URLHighlighter();
highlighter.actor.clutter_text.line_wrap = true;
highlighter.setMarkup(props.body, true);
let highlighter = new MessageTray.URLHighlighter(props.body,
true, // line wrap?
true); // allow markup?
let body = highlighter.actor;
@ -731,32 +910,28 @@ const ChatNotification = new Lang.Class({
if (group != this._lastGroup) {
this._lastGroup = group;
let emptyLine = new St.Label({ style_class: 'chat-empty-line' });
this._bodyBox.add_child(emptyLine);
this.addActor(emptyLine);
}
this._lastMessageBox = new St.BoxLayout({ vertical: false });
this._lastMessageBox.add(body, props.childProps);
this.addActor(this._lastMessageBox);
let revealer = new MessageTray.Revealer(body);
this._lastMessageBox.add(revealer, props.childProps);
revealer.show(true);
this._bodyBox.add_child(this._lastMessageBox);
this.updated();
let timestamp = props.timestamp;
this._history.unshift({ actor: body, time: timestamp,
realMessage: group != 'meta' });
if (!props.noTimestamp) {
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) {
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME)
this.appendTimestamp();
} else {
else
// Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME
// from the timestamp of the message.
this._timestampTimeoutId = Mainloop.timeout_add_seconds(
SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp),
Lang.bind(this, this.appendTimestamp));
GLib.Source.set_name_by_id(this._timestampTimeoutId, '[gnome-shell] this.appendTimestamp');
}
}
this._filterMessages();
@ -771,74 +946,78 @@ const ChatNotification = new Lang.Class({
let desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
let clockFormat = desktopSettings.get_string(CLOCK_FORMAT_KEY);
let hasAmPm = date.toLocaleFormat('%p') != '';
if (clockFormat == '24h' || !hasAmPm) {
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%H\u2236%M");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 24h format. i.e. "Yesterday, 14:30" */
// xgettext:no-c-format
format = _("Yesterday, %H\u2236%M");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 24h format. i.e. "Monday, 14:30" */
// xgettext:no-c-format
format = _("%A, %H\u2236%M");
switch (clockFormat) {
case '24h':
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%H\u2236%M");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 24h format. i.e. "Yesterday, 14:30" */
// xgettext:no-c-format
format = _("Yesterday, %H\u2236%M");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 24h format. i.e. "Monday, 14:30" */
// xgettext:no-c-format
format = _("%A, %H\u2236%M");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 24h format.
i.e. "May 25, 14:30" */
// xgettext:no-c-format
format = _("%B %d, %H\u2236%M");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 24h format.
i.e. "May 25 2012, 14:30" */
// xgettext:no-c-format
format = _("%B %d %Y, %H\u2236%M");
}
} else {
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%l\u2236%M %p");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
// xgettext:no-c-format
format = _("Yesterday, %l\u2236%M %p");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 12h format. i.e. "Monday, 2:30 pm" */
// xgettext:no-c-format
format = _("%A, %l\u2236%M %p");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 24h format.
i.e. "May 25, 14:30" */
// xgettext:no-c-format
format = _("%B %d, %H\u2236%M");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 24h format.
i.e. "May 25 2012, 14:30" */
// xgettext:no-c-format
format = _("%B %d %Y, %H\u2236%M");
}
break;
default:
/* explicit fall-through */
case '12h':
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%l\u2236%M %p");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
// xgettext:no-c-format
format = _("Yesterday, %l\u2236%M %p");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 12h format. i.e. "Monday, 2:30 pm" */
// xgettext:no-c-format
format = _("%A, %l\u2236%M %p");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 12h format.
i.e. "May 25, 2:30 pm" */
// xgettext:no-c-format
format = _("%B %d, %l\u2236%M %p");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 12h format.
i.e. "May 25 2012, 2:30 pm"*/
// xgettext:no-c-format
format = _("%B %d %Y, %l\u2236%M %p");
}
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 12h format.
i.e. "May 25, 2:30 pm" */
// xgettext:no-c-format
format = _("%B %d, %l\u2236%M %p");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 12h format.
i.e. "May 25 2012, 2:30 pm"*/
// xgettext:no-c-format
format = _("%B %d %Y, %l\u2236%M %p");
}
break;
}
return date.toLocaleFormat(format);
},
@ -875,7 +1054,7 @@ const ChatNotification = new Lang.Class({
group: 'meta',
styles: ['chat-meta-message'] });
this.update(newAlias);
this.update(newAlias, null, { customContent: true });
this._filterMessages();
},
@ -921,11 +1100,365 @@ const ChatNotification = new Lang.Class({
this._composingTimeoutId = Mainloop.timeout_add_seconds(
COMPOSING_STOP_TIMEOUT,
Lang.bind(this, this._composingStopTimeout));
GLib.Source.set_name_by_id(this._composingTimeoutId, '[gnome-shell] this._composingStopTimeout');
} else {
this.source.setChatState(Tp.ChannelChatState.ACTIVE);
}
}
});
const ApproverSource = new Lang.Class({
Name: 'ApproverSource',
Extends: MessageTray.Source,
_init: function(dispatchOp, text, gicon) {
this._gicon = gicon;
this.parent(text);
this._dispatchOp = dispatchOp;
// Destroy the source if the channel dispatch operation is invalidated
// as we can't approve any more.
this._invalidId = dispatchOp.connect('invalidated',
Lang.bind(this, function(domain, code, msg) {
this.destroy();
}));
},
_createPolicy: function() {
return new MessageTray.NotificationApplicationPolicy('empathy');
},
destroy: function() {
if (this._invalidId != 0) {
this._dispatchOp.disconnect(this._invalidId);
this._invalidId = 0;
}
this.parent();
},
getIcon: function() {
return this._gicon;
}
});
const RoomInviteNotification = new Lang.Class({
Name: 'RoomInviteNotification',
Extends: MessageTray.Notification,
_init: function(source, dispatchOp, channel, inviter) {
this.parent(source,
/* translators: argument is a room name like
* room@jabber.org for example. */
_("Invitation to %s").format(channel.get_identifier()),
null,
{ customContent: true });
this.setResident(true);
/* 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
* for example. */
this.addBody(_("%s is inviting you to join %s").format(inviter.get_alias(), channel.get_identifier()));
this.addAction(_("Decline"), Lang.bind(this, function() {
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
src.leave_channels_finish(result);
});
this.destroy();
}));
this.addAction(_("Accept"), Lang.bind(this, function() {
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
src.handle_with_time_finish(result);
});
this.destroy();
}));
}
});
// Audio Video
const AudioVideoNotification = new Lang.Class({
Name: 'AudioVideoNotification',
Extends: MessageTray.Notification,
_init: function(source, dispatchOp, channel, contact, isVideo) {
let title = '';
if (isVideo)
/* translators: argument is a contact name like Alice for example. */
title = _("Video call from %s").format(contact.get_alias());
else
/* translators: argument is a contact name like Alice for example. */
title = _("Call from %s").format(contact.get_alias());
this.parent(source, title, null, { customContent: true });
this.setResident(true);
this.setUrgency(MessageTray.Urgency.CRITICAL);
this.addAction(_("Decline"), Lang.bind(this, function() {
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 */
this.addAction(_("Answer"), Lang.bind(this, function() {
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
src.handle_with_time_finish(result);
});
this.destroy();
}));
}
});
// File Transfer
const FileTransferNotification = new Lang.Class({
Name: 'FileTransferNotification',
Extends: MessageTray.Notification,
_init: function(source, dispatchOp, channel, contact) {
this.parent(source,
/* To translators: The first parameter is
* the contact's alias and the second one is the
* file name. The string will be something
* like: "Alice is sending you test.ogg"
*/
_("%s is sending you %s").format(contact.get_alias(),
channel.get_filename()),
null,
{ customContent: true });
this.setResident(true);
this.addAction(_("Decline"), Lang.bind(this, function() {
dispatchOp.leave_channels_async(Tp.ChannelGroupChangeReason.NONE, '', function(src, result) {
src.leave_channels_finish(result);
});
this.destroy();
}));
this.addAction(_("Accept"), Lang.bind(this, function() {
dispatchOp.handle_with_time_async('', global.get_current_time(), function(src, result) {
src.handle_with_time_finish(result);
});
this.destroy();
}));
}
});
// Subscription request
const SubscriptionRequestNotification = new Lang.Class({
Name: 'SubscriptionRequestNotification',
Extends: MessageTray.Notification,
_init: function(source, contact) {
this.parent(source,
/* To translators: The parameter is the contact's alias */
_("%s would like permission to see when you are online").format(contact.get_alias()),
null, { customContent: true });
this._contact = contact;
this._connection = contact.get_connection();
let layout = new St.BoxLayout({ vertical: false });
// Display avatar
let iconBox = new St.Bin({ style_class: 'avatar-box' });
iconBox._size = 48;
let textureCache = St.TextureCache.get_default();
let file = contact.get_avatar_file();
if (file) {
let uri = file.get_uri();
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
iconBox.child = textureCache.load_uri_async(uri, iconBox._size, iconBox._size, scaleFactor);
}
else {
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
icon_size: iconBox._size });
}
layout.add(iconBox);
// subscription request message
let label = new St.Label({ style_class: 'subscription-message',
text: contact.get_publish_request() });
layout.add(label);
this.addActor(layout);
this.addAction(_("Decline"), Lang.bind(this, function() {
contact.remove_async(function(src, result) {
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) {
src.request_subscription_finish(result);
});
}));
this._changedId = contact.connect('subscription-states-changed',
Lang.bind(this, this._subscriptionStatesChangedCb));
this._invalidatedId = this._connection.connect('invalidated',
Lang.bind(this, this.destroy));
},
destroy: function() {
if (this._changedId != 0) {
this._contact.disconnect(this._changedId);
this._changedId = 0;
}
if (this._invalidatedId != 0) {
this._connection.disconnect(this._invalidatedId);
this._invalidatedId = 0;
}
this.parent();
},
_subscriptionStatesChangedCb: function(contact, subscribe, publish, msg) {
// Destroy the notification if the subscription request has been
// answered
if (publish != Tp.SubscriptionState.ASK)
this.destroy();
}
});
// Messages from empathy/libempathy/empathy-utils.c
// create_errors_to_message_hash()
/* Translator note: these should be the same messages that are
* used in Empathy, so just copy and paste from there. */
let _connectionErrorMessages = {};
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.NETWORK_ERROR)]
= _("Network error");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.AUTHENTICATION_FAILED)]
= _("Authentication failed");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ENCRYPTION_ERROR)]
= _("Encryption error");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_NOT_PROVIDED)]
= _("Certificate not provided");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_UNTRUSTED)]
= _("Certificate untrusted");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_EXPIRED)]
= _("Certificate expired");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_NOT_ACTIVATED)]
= _("Certificate not activated");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_HOSTNAME_MISMATCH)]
= _("Certificate hostname mismatch");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_FINGERPRINT_MISMATCH)]
= _("Certificate fingerprint mismatch");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_SELF_SIGNED)]
= _("Certificate self-signed");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CANCELLED)]
= _("Status is set to offline");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ENCRYPTION_NOT_AVAILABLE)]
= _("Encryption is not available");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INVALID)]
= _("Certificate is invalid");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_REFUSED)]
= _("Connection has been refused");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_FAILED)]
= _("Connection can't be established");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_LOST)]
= _("Connection has been lost");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.ALREADY_CONNECTED)]
= _("This account is already connected to the server");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CONNECTION_REPLACED)]
= _("Connection has been replaced by a new connection using the same resource");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.REGISTRATION_EXISTS)]
= _("The account already exists on the server");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.SERVICE_BUSY)]
= _("Server is currently too busy to handle the connection");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_REVOKED)]
= _("Certificate has been revoked");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_INSECURE)]
= _("Certificate uses an insecure cipher algorithm or is cryptographically weak");
_connectionErrorMessages[Tp.error_get_dbus_name(Tp.Error.CERT_LIMIT_EXCEEDED)]
= _("The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library");
_connectionErrorMessages['org.freedesktop.DBus.Error.NoReply']
= _("Internal error");
const AccountNotification = new Lang.Class({
Name: 'AccountNotification',
Extends: MessageTray.Notification,
_init: function(source, account, connectionError) {
this.parent(source,
/* translators: argument is the account name, like
* name@jabber.org for example. */
_("Unable to connect to %s").format(account.get_display_name()),
this._getMessage(connectionError));
this._account = account;
this.addAction(_("View account"), Lang.bind(this, function() {
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(0, -1));
}));
this._enabledId = account.connect('notify::enabled',
Lang.bind(this, function() {
if (!account.is_enabled())
this.destroy();
}));
this._invalidatedId = account.connect('invalidated',
Lang.bind(this, this.destroy));
this._connectionStatusId = account.connect('notify::connection-status',
Lang.bind(this, function() {
let status = account.connection_status;
if (status == Tp.ConnectionStatus.CONNECTED) {
this.destroy();
} else if (status == Tp.ConnectionStatus.DISCONNECTED) {
let connectionError = account.connection_error;
if (connectionError == Tp.error_get_dbus_name(Tp.Error.CANCELLED))
this.destroy();
else
this.update(this.title, this._getMessage(connectionError));
}
}));
},
_getMessage: function(connectionError) {
let message;
if (connectionError in _connectionErrorMessages) {
message = _connectionErrorMessages[connectionError];
} else {
message = _("Unknown reason");
}
return message;
},
destroy: function() {
if (this._enabledId != 0) {
this._account.disconnect(this._enabledId);
this._enabledId = 0;
}
if (this._invalidatedId != 0) {
this._account.disconnect(this._invalidatedId);
this._invalidatedId = 0;
}
if (this._connectionStatusId != 0) {
this._account.disconnect(this._connectionStatusId);
this._connectionStatusId = 0;
}
this.parent();
}
});
const Component = TelepathyClient;

View File

@ -87,7 +87,7 @@ const CtrlAltTabManager = new Lang.Class({
if (Main.sessionMode.hasWindows && !Main.overview.visible) {
let screen = global.screen;
let display = screen.get_display();
let windows = display.get_tab_list(Meta.TabList.DOCKS, screen.get_active_workspace ());
let windows = display.get_tab_list(Meta.TabList.DOCKS, screen, screen.get_active_workspace ());
let windowTracker = Shell.WindowTracker.get_default();
let textureCache = St.TextureCache.get_default();
for (let i = 0; i < windows.length; i++) {
@ -165,10 +165,6 @@ const CtrlAltTabPopup = new Lang.Class({
this._select(this._previous());
else if (keysym == Clutter.Right)
this._select(this._next());
else
return Clutter.EVENT_PROPAGATE;
return Clutter.EVENT_STOP;
},
_finish : function(time) {

View File

@ -582,7 +582,6 @@ const Dash = new Lang.Class({
this._showLabelTimeoutId = 0;
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel');
if (this._resetHoverTimeoutId > 0) {
Mainloop.source_remove(this._resetHoverTimeoutId);
this._resetHoverTimeoutId = 0;
@ -600,7 +599,6 @@ const Dash = new Lang.Class({
this._resetHoverTimeoutId = 0;
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._resetHoverTimeoutId, '[gnome-shell] this._labelShowing');
}
}
},

View File

@ -63,11 +63,8 @@ const DateMenuButton = new Lang.Class({
hbox.add(vbox);
// Date
// Having the ability to go to the current date if the user is already
// on the current date can be confusing. So don't make the button reactive
// until the selected date changes.
this._date = new St.Button({ style_class: 'datemenu-date-label',
reactive: false
can_focus: true,
});
this._date.connect('clicked',
Lang.bind(this, function() {
@ -85,9 +82,6 @@ const DateMenuButton = new Lang.Class({
// and the calender makes those dates unclickable when instantiated with
// a null event source
this._eventList.setDate(date);
// Make the button reactive only if the selected date is not the current date.
this._date.can_focus = this._date.reactive = !this._isToday(date)
}));
vbox.add(this._calendar.actor);
@ -138,13 +132,6 @@ const DateMenuButton = new Lang.Class({
this._sessionUpdated();
},
_isToday: function(date) {
let now = new Date();
return now.getYear() == date.getYear() &&
now.getMonth() == date.getMonth() &&
now.getDay() == date.getDay();
},
_appInstalledChanged: function() {
this._calendarApp = undefined;
this._updateEventsVisibility();

View File

@ -395,7 +395,6 @@ const _Draggable = new Lang.Class({
this._updateHoverId = GLib.idle_add(GLib.PRIORITY_DEFAULT,
Lang.bind(this, this._updateDragHover));
GLib.Source.set_name_by_id(this._updateHoverId, '[gnome-shell] this._updateDragHover');
},
_updateDragPosition : function (event) {

View File

@ -551,7 +551,6 @@ const EndSessionDialog = new Lang.Class({
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._timerId, '[gnome-shell] this._confirm');
},
_stopTimer: function() {

View File

@ -47,11 +47,8 @@ function _patchLayoutClass(layoutClass, styleProps) {
layoutClass.prototype.hookup_style = function(container) {
container.connect('style-changed', Lang.bind(this, function() {
let node = container.get_theme_node();
for (let prop in styleProps) {
let [found, length] = node.lookup_length(styleProps[prop], false);
if (found)
this[prop] = length;
}
for (let prop in styleProps)
this[prop] = node.get_length(styleProps[prop]);
}));
};
layoutClass.prototype.child_set = function(actor, props) {

View File

@ -645,10 +645,6 @@ const PaginatedIconGrid = new Lang.Class({
return this._nPages;
},
getPageHeight: function() {
return this._availableHeightPerPageForItems();
},
getPageY: function(pageNumber) {
if (!this._nPages)
return 0;

View File

@ -266,14 +266,12 @@ const Keyboard = new Lang.Class({
return;
}
if (!this._showIdleId) {
this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE,
Lang.bind(this, function() {
this.Show(time);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._showIdleId, '[gnome-shell] this.Show');
}
if (!this._showIdleId)
this._showIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE,
Lang.bind(this, function() {
this.Show(time);
return GLib.SOURCE_REMOVE;
}));
},
_createLayersForGroup: function (gname) {
@ -502,7 +500,6 @@ const Keyboard = new Lang.Class({
this._show(monitor);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
},
_show: function(monitor) {
@ -529,7 +526,6 @@ const Keyboard = new Lang.Class({
this._hide();
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._keyboardRestingId, '[gnome-shell] this._clearKeyboardRestTimer');
},
_hide: function() {

View File

@ -22,6 +22,11 @@ const KEYBOARD_ANIMATION_TIME = 0.15;
const BACKGROUND_FADE_ANIMATION_TIME = 1.0;
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
// The message tray takes this much pressure
// in the pressure barrier at once to release it.
const MESSAGE_TRAY_PRESSURE_THRESHOLD = 250; // pixels
const MESSAGE_TRAY_PRESSURE_TIMEOUT = 1000; // ms
const HOT_CORNER_PRESSURE_THRESHOLD = 100; // pixels
const HOT_CORNER_PRESSURE_TIMEOUT = 1000; // ms
@ -145,6 +150,7 @@ const LayoutManager = new Lang.Class({
this._keyboardIndex = -1;
this._rightPanelBarrier = null;
this._trayBarrier = null;
this._inOverview = false;
this._updateRegionIdle = 0;
@ -204,6 +210,7 @@ const LayoutManager = new Lang.Class({
this.trayBox = new St.Widget({ name: 'trayBox',
layout_manager: new Clutter.BinLayout() });
this.addChrome(this.trayBox);
this._setupTrayPressure();
this.modalDialogGroup = new St.Widget({ name: 'modalDialogGroup',
layout_manager: new Clutter.BinLayout() });
@ -442,9 +449,50 @@ const LayoutManager = new Lang.Class({
}
},
_setupTrayPressure: function() {
this._trayPressure = new PressureBarrier(MESSAGE_TRAY_PRESSURE_THRESHOLD,
MESSAGE_TRAY_PRESSURE_TIMEOUT,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW);
this._trayPressure.setEventFilter(this._trayBarrierEventFilter);
this._trayPressure.connect('trigger', function(barrier) {
if (Main.layoutManager.bottomMonitor.inFullscreen)
return;
Main.messageTray.openTray();
});
},
_updateTrayBarrier: function() {
let monitor = this.bottomMonitor;
if (this._trayBarrier) {
this._trayPressure.removeBarrier(this._trayBarrier);
this._trayBarrier.destroy();
this._trayBarrier = null;
}
this._trayBarrier = new Meta.Barrier({ display: global.display,
x1: monitor.x, x2: monitor.x + monitor.width,
y1: monitor.y + monitor.height, y2: monitor.y + monitor.height,
directions: Meta.BarrierDirection.NEGATIVE_Y });
this._trayPressure.addBarrier(this._trayBarrier);
},
_trayBarrierEventFilter: function(event) {
// Throw out all events where the pointer was grabbed by another
// client, as the client that grabbed the pointer expects to have
// complete control over it
if (event.grabbed && Main.modalCount == 0)
return true;
return false;
},
_monitorsChanged: function() {
this._updateMonitors();
this._updateBoxes();
this._updateTrayBarrier();
this._updateHotCorners();
this._updateBackgrounds();
this._updateFullscreen();
@ -555,7 +603,7 @@ const LayoutManager = new Lang.Class({
this._updateBackgrounds();
// We need to force an update of the regions now before we scale
// the UI group to get the correct allocation for the struts.
// the UI group to get the coorect allocation for the struts.
this._updateRegions();
this.trayBox.hide();
@ -580,11 +628,10 @@ const LayoutManager = new Lang.Class({
// until the event loop is uncontended and idle.
// This helps to prevent us from running the animation
// when the system is bogged down
let id = GLib.idle_add(GLib.PRIORITY_LOW, Lang.bind(this, function() {
GLib.idle_add(GLib.PRIORITY_LOW, Lang.bind(this, function() {
this._startupAnimation();
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._startupAnimation');
},
_startupAnimation: function() {
@ -1048,10 +1095,10 @@ const HotCorner = new Lang.Class({
this._setupFallbackCornerIfNeeded(layoutManager);
this._pressureBarrier = new TriggerablePressureBarrier(HOT_CORNER_PRESSURE_THRESHOLD,
HOT_CORNER_PRESSURE_TIMEOUT,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW);
this._pressureBarrier = new PressureBarrier(HOT_CORNER_PRESSURE_THRESHOLD,
HOT_CORNER_PRESSURE_TIMEOUT,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW);
this._pressureBarrier.connect('trigger', Lang.bind(this, this._toggleOverview));
// Cache the three ripples instead of dynamically creating and destroying them.
@ -1229,12 +1276,14 @@ const PressureBarrier = new Lang.Class({
Name: 'PressureBarrier',
_init: function(threshold, timeout, keybindingMode) {
this.threshold = threshold;
this.timeout = timeout;
this._threshold = threshold;
this._timeout = timeout;
this._keybindingMode = keybindingMode;
this._barriers = [];
this._eventFilter = null;
this.reset();
this._isTriggered = false;
this._reset();
},
addBarrier: function(barrier) {
@ -1263,10 +1312,10 @@ const PressureBarrier = new Lang.Class({
this._eventFilter = filter;
},
reset: function() {
_reset: function() {
this._barrierEvents = [];
this._currentPressure = 0;
this._lastTime = 0;
this.currentPressure = 0;
},
_isHorizontal: function(barrier) {
@ -1287,21 +1336,12 @@ const PressureBarrier = new Lang.Class({
return Math.abs(event.dy);
},
get currentPressure() {
return this._currentPressure;
},
set currentPressure(value) {
this._currentPressure = value;
this.emit('pressure-changed');
},
_trimBarrierEvents: function() {
// Events are guaranteed to be sorted in time order from
// oldest to newest, so just look for the first old event,
// and then chop events after that off.
let i = 0;
let threshold = this._lastTime - this.timeout;
let threshold = this._lastTime - this._timeout;
while (i < this._barrierEvents.length) {
let [time, distance] = this._barrierEvents[i];
@ -1314,75 +1354,21 @@ const PressureBarrier = new Lang.Class({
for (i = 0; i < firstNewEvent; i++) {
let [time, distance] = this._barrierEvents[i];
this.currentPressure = distance;
this._currentPressure -= distance;
}
this._barrierEvents = this._barrierEvents.slice(firstNewEvent);
},
_onBarrierLeft: function(barrier, event) {
this.reset();
},
_shouldUseEvent: function(barrier, event) {
if (this._eventFilter && this._eventFilter(event))
return false;
// Throw out all events not in the proper keybinding mode
if (!(this._keybindingMode & Main.keybindingMode))
return false;
let slide = this._getDistanceAlongBarrier(barrier, event);
let distance = this._getDistanceAcrossBarrier(barrier, event);
// Throw out events where the cursor is move more
// along the axis of the barrier than moving with
// the barrier.
if (slide > distance)
return false;
return true;
},
_appendEvent: function(barrier, event) {
let distance = this._getDistanceAcrossBarrier(barrier, event);
this._lastTime = event.time;
this._trimBarrierEvents();
distance = Math.min(15, distance);
this._barrierEvents.push([event.time, distance]);
this.currentPressure += distance;
},
_onBarrierHit: function(barrier, event) {
if (!this._shouldUseEvent(barrier, event))
return;
this._appendEvent(barrier, event);
}
});
Signals.addSignalMethods(PressureBarrier.prototype);
const TriggerablePressureBarrier = new Lang.Class({
Name: 'TriggerablePressureBarrier',
Extends: PressureBarrier,
_init: function(threshold, timeout, keybindingMode) {
this.parent(threshold, timeout, keybindingMode);
this._reset();
this._isTriggered = false;
},
_trigger: function() {
this._isTriggered = true;
this.emit('trigger');
this.reset();
},
_onBarrierLeft: function() {
this.parent();
this._isTriggered = false;
this._reset();
},
_onBarrierHit: function(barrier, event) {
@ -1391,17 +1377,37 @@ const TriggerablePressureBarrier = new Lang.Class({
if (this._isTriggered)
return;
if (!this._shouldUseEvent(barrier, event))
if (this._eventFilter && this._eventFilter(event))
return;
if (distance >= this.threshold) {
// Throw out all events not in the proper keybinding mode
if (!(this._keybindingMode & Main.keybindingMode))
return;
let slide = this._getDistanceAlongBarrier(barrier, event);
let distance = this._getDistanceAcrossBarrier(barrier, event);
if (distance >= this._threshold) {
this._trigger();
return;
}
this._appendEvent(barrier, event);
// Throw out events where the cursor is move more
// along the axis of the barrier than moving with
// the barrier.
if (slide > distance)
return;
if (this.currentPressure >= this.threshold)
this._lastTime = event.time;
this._trimBarrierEvents();
distance = Math.min(15, distance);
this._barrierEvents.push([event.time, distance]);
this._currentPressure += distance;
if (this._currentPressure >= this._threshold)
this._trigger();
},
}
});
Signals.addSignalMethods(PressureBarrier.prototype);

View File

@ -843,10 +843,9 @@ const LookingGlass = new Lang.Class({
System.gc();
this._timeoutId = Mainloop.timeout_add(500, Lang.bind(this, function () {
gcIcon.icon_name = 'gnome-fs-trash-full';
this._timeoutId = 0;
Mainloop.source_remove(this._timeoutId);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] gcIcon.icon_name = \'gnome-fs-trash-full\'');
return Clutter.EVENT_PROPAGATE;
}));

View File

@ -43,7 +43,6 @@ const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
let componentManager = null;
let panel = null;
@ -56,7 +55,7 @@ let screenShield = null;
let notificationDaemon = null;
let windowAttentionHandler = null;
let ctrlAltTabManager = null;
let osdWindowManager = null;
let osdWindow = null;
let sessionMode = null;
let shellDBusService = null;
let shellMountOpDBusService = null;
@ -104,6 +103,9 @@ function start() {
global.logError = window.log;
global.log = window.log;
if (!Meta.is_wayland_compositor)
Meta.is_wayland_compositor = function () { return false; };
// Chain up async errors reported from C
global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
@ -156,7 +158,7 @@ function _initializeUI() {
screencastService = new Screencast.ScreencastService();
xdndHandler = new XdndHandler.XdndHandler();
ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager();
osdWindowManager = new OsdWindow.OsdWindowManager();
osdWindow = new OsdWindow.OsdWindow();
overview = new Overview.Overview();
wm = new WindowManager.WindowManager();
magnifier = new Magnifier.Magnifier();
@ -189,6 +191,8 @@ function _initializeUI() {
_startDate = new Date();
log('GNOME Shell started at ' + _startDate);
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
if (perfModuleName) {
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
@ -212,17 +216,6 @@ function _initializeUI() {
if (screenShield) {
screenShield.lockIfWasLocked();
}
if (LoginManager.haveSystemd() &&
sessionMode.currentMode != 'gdm' &&
sessionMode.currentMode != 'initial-setup') {
// Do not import globally to not depend
// on systemd on non-systemd systems.
let GSystem = imports.gi.GSystem;
GSystem.log_structured_print('GNOME Shell started at ' + _startDate,
['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]);
} else {
log('GNOME Shell started at ' + _startDate);
}
});
}
@ -618,6 +611,5 @@ function queueDeferredWork(workId) {
_deferredTimeoutId = 0;
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(_deferredTimeoutId, '[gnome-shell] _runAllDeferredWork');
}
}

File diff suppressed because it is too large Load Diff

View File

@ -91,6 +91,21 @@ const rewriteRules = {
]
};
const STANDARD_TRAY_ICON_IMPLEMENTATIONS = {
'bluetooth-applet': 'bluetooth',
'gnome-volume-control-applet': 'volume', // renamed to gnome-sound-applet
// when moved to control center
'gnome-sound-applet': 'volume',
'nm-applet': 'network',
'gnome-power-manager': 'battery',
'keyboard': 'keyboard',
'a11y-keyboard': 'a11y',
'kbd-scrolllock': 'keyboard',
'kbd-numlock': 'keyboard',
'kbd-capslock': 'keyboard',
'ibus-ui-gtk': 'keyboard'
};
const FdoNotificationDaemon = new Lang.Class({
Name: 'FdoNotificationDaemon',
@ -105,10 +120,16 @@ const FdoNotificationDaemon = new Lang.Class({
this._nextNotificationId = 1;
this._trayManager = new Shell.TrayManager();
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));
Shell.WindowTracker.get_default().connect('notify::focus-app',
Lang.bind(this, this._onFocusAppChanged));
Main.overview.connect('hidden',
Lang.bind(this, this._onFocusAppChanged));
this._trayManager.manage_screen(global.screen, Main.messageTray.actor);
},
_imageForNotificationData: function(hints) {
@ -149,23 +170,28 @@ const FdoNotificationDaemon = new Lang.Class({
return null;
},
_lookupSource: function(title, pid) {
_lookupSource: function(title, pid, trayIcon) {
for (let i = 0; i < this._sources.length; i++) {
let source = this._sources[i];
if (source.pid == pid && source.initialTitle == title)
if (source.pid == pid &&
(source.initialTitle == title || source.trayIcon || trayIcon))
return source;
}
return null;
},
// Returns the source associated with ndata.notification if it is set.
// If the existing or requested source is associated with a tray icon
// and passed in pid matches a pid of an existing source, the title
// match is ignored to enable representing a tray icon and notifications
// from the same application with a single source.
//
// If no existing source is found, a new source is created as long as
// pid is provided.
//
// Either a pid or ndata.notification is needed to retrieve or
// create a source.
_getSource: function(title, pid, ndata, sender) {
_getSource: function(title, pid, ndata, sender, trayIcon) {
if (!pid && !(ndata && ndata.notification))
return null;
@ -176,13 +202,13 @@ const FdoNotificationDaemon = new Lang.Class({
if (ndata && ndata.notification)
return ndata.notification.source;
let source = this._lookupSource(title, pid);
let source = this._lookupSource(title, pid, trayIcon);
if (source) {
source.setTitle(title);
return source;
}
let source = new FdoNotificationDaemonSource(title, pid, sender, ndata ? ndata.hints['desktop-entry'] : null);
let source = new FdoNotificationDaemonSource(title, pid, sender, trayIcon, ndata ? ndata.hints['desktop-entry'] : null);
this._sources.push(source);
source.connect('destroy', Lang.bind(this, function() {
@ -218,12 +244,11 @@ const FdoNotificationDaemon = new Lang.Class({
// Ignore replacesId since we already sent back a
// NotificationClosed for that id.
id = this._nextNotificationId++;
let idle_id = Mainloop.idle_add(Lang.bind(this,
function () {
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(idle_id, '[gnome-shell] this._emitNotificationClosed');
Mainloop.idle_add(Lang.bind(this,
function () {
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
return GLib.SOURCE_REMOVE;
}));
return invocation.return_value(GLib.Variant.new('(u)', [id]));
}
@ -308,14 +333,13 @@ const FdoNotificationDaemon = new Lang.Class({
},
_makeButton: function(id, label, useActionIcons) {
let button = new St.Button({ can_focus: true,
x_expand: true,
style_class: 'notification-button' });
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.child = new St.Icon({ icon_name: iconName, icon_size: 16 });
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;
@ -354,6 +378,8 @@ const FdoNotificationDaemon = new Lang.Class({
let gicon = this._iconForNotificationData(icon, hints);
let gimage = this._imageForNotificationData(hints);
let image = null;
// If an icon is not specified, we use 'image-data' or 'image-path' hint for an icon
// and don't show a large image. There are currently many applications that use
// notify_notification_set_icon_from_pixbuf() from libnotify, which in turn sets
@ -362,7 +388,10 @@ const FdoNotificationDaemon = new Lang.Class({
// So the logic here does the right thing for this case. If both an icon and either
// one of 'image-data' or 'image-path' are specified, we show both an icon and
// a large image.
if (!gicon && gimage)
if (gicon && gimage)
image = new St.Icon({ gicon: gimage,
icon_size: notification.IMAGE_SIZE });
else if (!gicon && gimage)
gicon = gimage;
else if (!gicon)
gicon = this._fallbackIconForNotificationData(hints);
@ -372,6 +401,7 @@ const FdoNotificationDaemon = new Lang.Class({
clear: true,
soundFile: hints['sound-file'],
soundName: hints['sound-name'] });
notification.setImage(image);
let hasDefaultAction = false;
@ -411,6 +441,7 @@ const FdoNotificationDaemon = new Lang.Class({
notification.setUrgency(MessageTray.Urgency.CRITICAL);
break;
}
notification.setResident(hints.resident == true);
// 'transient' is a reserved keyword in JS, so we have to retrieve the value
// of the 'transient' hint with hints['transient'] rather than hints.transient
notification.setTransient(hints['transient'] == true);
@ -438,6 +469,7 @@ const FdoNotificationDaemon = new Lang.Class({
'body-markup',
// 'icon-multi',
'icon-static',
'persistence',
'sound',
];
},
@ -459,7 +491,7 @@ const FdoNotificationDaemon = new Lang.Class({
for (let i = 0; i < this._sources.length; i++) {
let source = this._sources[i];
if (source.app == tracker.focus_app) {
source.destroyNotifications();
source.destroyNonResidentNotifications();
return;
}
}
@ -474,15 +506,30 @@ const FdoNotificationDaemon = new Lang.Class({
this._dbusImpl.emit_signal('ActionInvoked',
GLib.Variant.new('(us)', [id, action]));
},
_onTrayIconAdded: function(o, icon) {
let wmClass = icon.wm_class ? icon.wm_class.toLowerCase() : '';
if (STANDARD_TRAY_ICON_IMPLEMENTATIONS[wmClass] !== undefined)
return;
let source = this._getSource(icon.title || icon.wm_class || C_("program", "Unknown"), icon.pid, null, null, icon);
},
_onTrayIconRemoved: function(o, icon) {
let source = this._lookupSource(null, icon.pid, true);
if (source)
source.destroy();
}
});
const FdoNotificationDaemonSource = new Lang.Class({
Name: 'FdoNotificationDaemonSource',
Extends: MessageTray.Source,
_init: function(title, pid, sender, appId) {
_init: function(title, pid, sender, trayIcon, appId) {
// Need to set the app before chaining up, so
// methods called from the parent constructor can find it
this.trayIcon = trayIcon;
this.pid = pid;
this.app = this._getApp(appId);
@ -502,6 +549,12 @@ const FdoNotificationDaemonSource = new Lang.Class({
Lang.bind(this, this._onNameVanished));
else
this._nameWatcherId = 0;
if (this.trayIcon) {
// Try again finding the app, using the WM_CLASS from the tray icon
this._setSummaryIcon(this.trayIcon);
this.useNotificationIcon = false;
}
},
_createPolicy: function() {
@ -517,23 +570,48 @@ const FdoNotificationDaemonSource = new Lang.Class({
// Destroy the notification source when its sender is removed from DBus.
// Only do so if this.app is set to avoid removing "notify-send" sources, senders
// of which аre removed from DBus immediately.
if (this.app)
// Sender being removed from DBus would normally result in a tray icon being removed,
// so allow the code path that handles the tray icon being removed to handle that case.
if (!this.trayIcon && this.app)
this.destroy();
},
processNotification: function(notification, gicon) {
if (gicon)
this._gicon = gicon;
this.iconUpdated();
if (!this.trayIcon)
this.iconUpdated();
let tracker = Shell.WindowTracker.get_default();
if (this.app && tracker.focus_app == this.app)
if (notification.resident && this.app && tracker.focus_app == this.app)
this.pushNotification(notification);
else
this.notify(notification);
},
handleSummaryClick: function(button) {
if (!this.trayIcon)
return false;
let event = Clutter.get_current_event();
// Left clicks are passed through only where there aren't unacknowledged
// notifications, so it possible to open them in summary mode; right
// clicks are always forwarded, as the right click menu is not useful for
// tray icons
if (button == 1 &&
this.notifications.length > 0)
return false;
let id = global.stage.connect('deactivate', Lang.bind(this, function () {
global.stage.disconnect(id);
this.trayIcon.click(event);
}));
Main.overview.hide();
return true;
},
_getApp: function(appId) {
let app;
@ -541,6 +619,16 @@ const FdoNotificationDaemonSource = new Lang.Class({
if (app != null)
return app;
if (this.trayIcon) {
app = Shell.AppSystem.get_default().lookup_startup_wmclass(this.trayIcon.wm_class);
if (app != null)
return app;
app = Shell.AppSystem.get_default().lookup_desktop_wmclass(this.trayIcon.wm_class);
if (app != null)
return app;
}
if (appId) {
app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
if (app != null)
@ -562,11 +650,12 @@ const FdoNotificationDaemonSource = new Lang.Class({
open: function() {
this.openApp();
this.destroyNotifications();
this.destroyNonResidentNotifications();
},
_lastNotificationRemoved: function() {
this.destroy();
if (!this.trayIcon)
this.destroy();
},
openApp: function() {
@ -587,7 +676,11 @@ const FdoNotificationDaemonSource = new Lang.Class({
},
createIcon: function(size) {
if (this.app) {
if (this.trayIcon) {
return new Clutter.Clone({ width: size,
height: size,
source: this.trayIcon });
} else if (this.app) {
return this.app.create_icon_texture(size);
} else if (this._gicon) {
return new St.Icon({ gicon: this._gicon,

View File

@ -73,17 +73,14 @@ const LevelBar = new Lang.Class({
const OsdWindow = new Lang.Class({
Name: 'OsdWindow',
_init: function(monitorIndex) {
_init: function() {
this._popupSize = 0;
this.actor = new St.Widget({ x_expand: true,
y_expand: true,
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER });
this._monitorIndex = monitorIndex;
let constraint = new Layout.MonitorConstraint({ index: monitorIndex });
this.actor.add_constraint(constraint);
this._currentMonitor = undefined;
this.setMonitor (-1);
this._box = new St.BoxLayout({ style_class: 'osd-window',
vertical: true });
this.actor.add_actor(this._box);
@ -112,6 +109,7 @@ const OsdWindow = new Lang.Class({
Main.layoutManager.connect('monitors-changed',
Lang.bind(this, this._monitorsChanged));
this._monitorsChanged();
Main.uiGroup.add_child(this.actor);
},
@ -127,7 +125,7 @@ const OsdWindow = new Lang.Class({
setLevel: function(level) {
this._level.actor.visible = (level != undefined);
if (level != undefined) {
if (level) {
if (this.actor.visible)
Tweener.addTween(this._level,
{ level: level,
@ -158,7 +156,6 @@ const OsdWindow = new Lang.Class({
Mainloop.source_remove(this._hideTimeoutId);
this._hideTimeoutId = Mainloop.timeout_add(HIDE_TIMEOUT,
Lang.bind(this, this._hide));
GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide');
},
cancel: function() {
@ -191,9 +188,12 @@ const OsdWindow = new Lang.Class({
_monitorsChanged: function() {
/* assume 110x110 on a 640x480 display and scale from there */
let monitor = Main.layoutManager.monitors[this._monitorIndex];
if (!monitor)
return; // we are about to be removed
let monitor;
if (this._currentMonitor >= 0)
monitor = Main.layoutManager.monitors[this._currentMonitor];
else
monitor = Main.layoutManager.primaryMonitor;
let scalew = monitor.width / 640.0;
let scaleh = monitor.height / 480.0;
@ -222,56 +222,23 @@ const OsdWindow = new Lang.Class({
// but the theme takes measures in unscaled dimensions
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this._box.style = 'min-height: %dpx;'.format(Math.max(minWidth, minHeight) / scaleFactor);
}
});
const OsdWindowManager = new Lang.Class({
Name: 'OsdWindowManager',
_init: function() {
this._osdWindows = [];
Main.layoutManager.connect('monitors-changed',
Lang.bind(this, this._monitorsChanged));
this._monitorsChanged();
},
_monitorsChanged: function() {
for (let i = 0; i < Main.layoutManager.monitors.length; i++) {
if (this._osdWindows[i] == undefined)
this._osdWindows[i] = new OsdWindow(i);
}
for (let i = Main.layoutManager.monitors.length; i < this._osdWindows.length; i++) {
this._osdWindows[i].actor.destroy();
this._osdWindows[i] = null;
}
this._osdWindows.length = Main.layoutManager.monitors.length;
},
_showOsdWindow: function(monitorIndex, icon, label, level) {
this._osdWindows[monitorIndex].setIcon(icon);
this._osdWindows[monitorIndex].setLabel(label);
this._osdWindows[monitorIndex].setLevel(level);
this._osdWindows[monitorIndex].show();
},
show: function(monitorIndex, icon, label, level) {
if (monitorIndex != -1) {
for (let i = 0; i < this._osdWindows.length; i++) {
if (i == monitorIndex)
this._showOsdWindow(i, icon, label, level);
else
this._osdWindows[i].cancel();
}
} else {
for (let i = 0; i < this._osdWindows.length; i++)
this._showOsdWindow(i, icon, label, level);
}
},
hideAll: function() {
for (let i = 0; i < this._osdWindows.length; i++)
this._osdWindows[i].cancel();
},
setMonitor: function(index) {
let constraint;
if (index < 0)
index = -1;
if (this._currentMonitor == index)
return;
if (index < 0)
constraint = new Layout.MonitorConstraint({ primary: true });
else
constraint = new Layout.MonitorConstraint({ index: index });
this.actor.clear_constraints();
this.actor.add_constraint(constraint);
this._currentMonitor = index;
}
});

View File

@ -263,6 +263,8 @@ const Overview = new Lang.Class({
this._overview.add(this._controls.actor, { y_fill: true, expand: true });
this._controls.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
this._stack.add_actor(this._controls.indicatorActor);
// TODO - recalculate everything when desktop size changes
this.dashIconSize = this._dash.iconSize;
this._dash.connect('icon-size-changed',
@ -363,7 +365,6 @@ const Overview = new Lang.Class({
this._lastHoveredWindow = null;
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._windowSwitchTimeoutId, '[gnome-shell] Main.activateWindow');
}
return DND.DragMotionResult.CONTINUE;

View File

@ -259,18 +259,13 @@ const ThumbnailsSlider = new Lang.Class({
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._updateSlide));
this.actor.connect('notify::hover', Lang.bind(this, this._updateSlide));
global.window_manager.connect('switch-workspace', Lang.bind(this, this._updateSlide));
this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
},
_getAlwaysZoomOut: function() {
// Always show the pager when hover, during a drag, or if workspaces are
// actually used, e.g. there are windows on any non-active workspace
let alwaysZoomOut = this.actor.hover ||
this._inDrag ||
!Meta.prefs_get_dynamic_workspaces() ||
global.screen.n_workspaces > 2 ||
global.screen.get_active_workspace_index() != 0;
// 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;
if (!alwaysZoomOut) {
let monitors = Main.layoutManager.monitors;
@ -396,6 +391,111 @@ const DashSpacer = new Lang.Class({
}
});
const MessagesIndicator = new Lang.Class({
Name: 'MessagesIndicator',
_init: function(viewSelector) {
this._count = 0;
this._sources = [];
this._viewSelector = viewSelector;
this._container = new St.BoxLayout({ style_class: 'messages-indicator-contents',
reactive: true,
track_hover: true,
x_expand: true,
y_expand: true,
x_align: Clutter.ActorAlign.CENTER });
this._icon = new St.Icon({ icon_name: 'user-idle-symbolic',
icon_size: 16 });
this._container.add_actor(this._icon);
this._label = new St.Label();
this._container.add_actor(this._label);
this._highlight = new St.Widget({ style_class: 'messages-indicator-highlight',
x_expand: true,
y_expand: true,
y_align: Clutter.ActorAlign.END,
visible: false });
this._container.connect('notify::hover', Lang.bind(this,
function() {
this._highlight.visible = this._container.hover;
}));
let clickAction = new Clutter.ClickAction();
this._container.add_action(clickAction);
clickAction.connect('clicked', Lang.bind(this,
function() {
Main.messageTray.openTray();
}));
Main.messageTray.connect('showing', Lang.bind(this,
function() {
this._highlight.visible = false;
this._container.hover = false;
}));
let layout = new Clutter.BinLayout();
this.actor = new St.Widget({ layout_manager: layout,
style_class: 'messages-indicator',
y_expand: true,
y_align: Clutter.ActorAlign.END,
visible: false });
this.actor.add_actor(this._container);
this.actor.add_actor(this._highlight);
Main.messageTray.connect('source-added', Lang.bind(this, this._onSourceAdded));
Main.messageTray.connect('source-removed', Lang.bind(this, this._onSourceRemoved));
let sources = Main.messageTray.getSources();
sources.forEach(Lang.bind(this, function(source) { this._onSourceAdded(null, source); }));
this._viewSelector.connect('page-changed', Lang.bind(this, this._updateVisibility));
Main.overview.connect('showing', Lang.bind(this, this._updateVisibility));
},
_onSourceAdded: function(tray, source) {
if (source.trayIcon)
return;
source.connect('count-updated', Lang.bind(this, this._updateCount));
this._sources.push(source);
this._updateCount();
},
_onSourceRemoved: function(tray, source) {
this._sources.splice(this._sources.indexOf(source), 1);
this._updateCount();
},
_updateCount: function() {
let count = 0;
let hasChats = false;
this._sources.forEach(Lang.bind(this,
function(source) {
count += source.indicatorCount;
hasChats |= source.isChat;
}));
this._count = count;
this._label.text = ngettext("%d new message",
"%d new messages",
count).format(count);
this._icon.visible = hasChats;
this._updateVisibility();
},
_updateVisibility: function() {
let activePage = this._viewSelector.getActivePage();
let visible = ((this._count > 0) && (activePage == ViewSelector.ViewPage.WINDOWS));
this.actor.visible = visible;
}
});
const ControlsLayout = new Lang.Class({
Name: 'ControlsLayout',
Extends: Clutter.BinLayout,
@ -424,6 +524,9 @@ const ControlsManager = new Lang.Class({
this.viewSelector.connect('page-changed', Lang.bind(this, this._setVisibility));
this.viewSelector.connect('page-empty', Lang.bind(this, this._onPageEmpty));
this._indicator = new MessagesIndicator(this.viewSelector);
this.indicatorActor = this._indicator.actor;
let layout = new ControlsLayout();
this.actor = new St.Widget({ layout_manager: layout,
reactive: true,

View File

@ -595,7 +595,6 @@ const ActivitiesButton = new Lang.Class({
Mainloop.source_remove(this._xdndTimeOut);
this._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT,
Lang.bind(this, this._xdndToggleOverview, actor));
GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview');
return DND.DragMotionResult.CONTINUE;
},

View File

@ -107,7 +107,6 @@ const PointerWatcher = new Lang.Class({
this._timeoutId = Mainloop.timeout_add(minInterval,
Lang.bind(this, this._onTimeout));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
},
_onTimeout: function() {

View File

@ -251,16 +251,8 @@ const PopupSeparatorMenuItem = new Lang.Class({
this.actor.add(this.label);
this.actor.label_actor = this.label;
this.label.connect('notify::text',
Lang.bind(this, this._syncVisibility));
this._syncVisibility();
this._separator = new Separator.HorizontalSeparator({ style_class: 'popup-separator-menu-item' });
this.actor.add(this._separator.actor, { expand: true });
},
_syncVisibility: function() {
this.label.visible = this.label.text != '';
}
});

View File

@ -850,7 +850,6 @@ const ScreenShield = new Lang.Class({
this.lock(false);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._lockTimeoutId, '[gnome-shell] this.lock');
}
this._activateFade(this._longLightbox, STANDARD_FADE_TIME);
@ -1042,7 +1041,6 @@ const ScreenShield = new Lang.Class({
if (!this._arrowAnimationId) {
this._arrowAnimationId = Mainloop.timeout_add(6000, Lang.bind(this, this._animateArrows));
GLib.Source.set_name_by_id(this._arrowAnimationId, '[gnome-shell] this._animateArrows');
this._animateArrows();
}
@ -1110,11 +1108,10 @@ const ScreenShield = new Lang.Class({
if (params.fadeToBlack && params.animateFade) {
// Take a beat
let id = Mainloop.timeout_add(1000 * MANUAL_FADE_TIME, Lang.bind(this, function() {
Mainloop.timeout_add(1000 * MANUAL_FADE_TIME, Lang.bind(this, function() {
this._activateFade(this._shortLightbox, MANUAL_FADE_TIME);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._activateFade');
} else {
if (params.fadeToBlack)
this._activateFade(this._shortLightbox, 0);

View File

@ -11,7 +11,6 @@ const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const GrabHelper = imports.ui.grabHelper;
const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
@ -140,7 +139,6 @@ const SelectArea = new Lang.Class({
this._startY = -1;
this._lastX = 0;
this._lastY = 0;
this._result = null;
this._initRubberbandColors();
@ -150,12 +148,12 @@ const SelectArea = new Lang.Class({
y: 0 });
Main.uiGroup.add_actor(this._group);
this._grabHelper = new GrabHelper.GrabHelper(this._group);
this._group.connect('button-press-event',
Lang.bind(this, this._onButtonPress));
this._group.connect('button-release-event',
Lang.bind(this, this._onButtonRelease));
this._group.connect('key-press-event',
Lang.bind(this, this._onKeyPress));
this._group.connect('motion-event',
Lang.bind(this, this._onMotionEvent));
@ -171,12 +169,10 @@ const SelectArea = new Lang.Class({
},
show: function() {
if (!this._grabHelper.grab({ actor: this._group,
onUngrab: Lang.bind(this, this._onUngrab) }))
if (!Main.pushModal(this._group) || this._group.visible)
return;
global.screen.set_cursor(Meta.Cursor.CROSSHAIR);
Main.uiGroup.set_child_above_sibling(this._group, null);
this._group.visible = true;
},
@ -206,6 +202,13 @@ const SelectArea = new Lang.Class({
height: Math.abs(this._startY - this._lastY) };
},
_onKeyPress: function(actor, event) {
if (event.get_key_symbol() == Clutter.Escape)
this._destroy(null, false);
return Clutter.EVENT_PROPAGATE;
},
_onMotionEvent: function(actor, event) {
if (this._startX == -1 || this._startY == -1)
return Clutter.EVENT_PROPAGATE;
@ -227,28 +230,24 @@ const SelectArea = new Lang.Class({
},
_onButtonRelease: function(actor, event) {
this._result = this._getGeometry();
Tweener.addTween(this._group,
{ opacity: 0,
time: 0.2,
transition: 'easeOutQuad',
onComplete: Lang.bind(this,
function() {
this._grabHelper.ungrab();
})
});
this._destroy(this._getGeometry(), true);
return Clutter.EVENT_PROPAGATE;
},
_onUngrab: function() {
global.screen.set_cursor(Meta.Cursor.DEFAULT);
this.emit('finished', this._result);
_destroy: function(geometry, fade) {
Tweener.addTween(this._group,
{ opacity: 0,
time: fade ? 0.2 : 0,
transition: 'easeOutQuad',
onComplete: Lang.bind(this,
function() {
Main.popModal(this._group);
this._group.destroy();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this,
function() {
this._group.destroy();
return GLib.SOURCE_REMOVE;
}));
this.emit('finished', geometry);
})
});
}
});
Signals.addSignalMethods(SelectArea.prototype);

View File

@ -39,12 +39,11 @@ const Main = imports.ui.main;
function sleep(milliseconds) {
let cb;
let id = Mainloop.timeout_add(milliseconds, function() {
Mainloop.timeout_add(milliseconds, function() {
if (cb)
cb();
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(id, '[gnome-shell] sleep');
return function(callback) {
cb = callback;

View File

@ -68,9 +68,6 @@ const SearchSystem = new Lang.Class({
_unregisterProvider: function (provider) {
let index = this._providers.indexOf(provider);
this._providers.splice(index, 1);
if (provider.display)
provider.display.destroy();
},
getProviders: function() {

View File

@ -140,14 +140,13 @@ function _loadModes() {
function listModes() {
_loadModes();
let id = Mainloop.idle_add(function() {
Mainloop.idle_add(function() {
let names = Object.getOwnPropertyNames(_modes);
for (let i = 0; i < names.length; i++)
if (_modes[names[i]].isPrimary)
print(names[i]);
Mainloop.quit('listModes');
});
GLib.Source.set_name_by_id(id, '[gnome-shell] listModes');
Mainloop.run('listModes');
}

View File

@ -141,7 +141,12 @@ const GnomeShell = new Lang.Class({
if (params['icon'])
icon = Gio.Icon.new_for_string(params['icon']);
Main.osdWindowManager.show(monitorIndex, icon, params['label'], params['level']);
Main.osdWindow.setIcon(icon);
Main.osdWindow.setMonitor (monitorIndex);
Main.osdWindow.setLabel(params['label']);
Main.osdWindow.setLevel(params['level']);
Main.osdWindow.show();
},
FocusApp: function(id) {

View File

@ -103,7 +103,6 @@ const ATIndicator = new Lang.Class({
return;
this._syncMenuVisbilityIdle = Mainloop.idle_add(Lang.bind(this, this._syncMenuVisibility));
GLib.Source.set_name_by_id(this._syncMenuVisbilityIdle, '[gnome-shell] this._syncMenuVisibility');
},
_buildItemExtended: function(string, initial_value, writable, on_set) {

View File

@ -292,10 +292,6 @@ const InputSourcePopup = new Lang.Class({
this._select(this._previous());
else if (keysym == Clutter.Right)
this._select(this._next());
else
return Clutter.EVENT_PROPAGATE;
return Clutter.EVENT_STOP;
},
_finish : function() {

View File

@ -423,18 +423,18 @@ const NMConnectionDevice = new Lang.Class({
case NetworkManager.DeviceState.UNMANAGED:
/* 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) */
return _("Unmanaged");
return _("unmanaged");
case NetworkManager.DeviceState.DEACTIVATING:
return _("Disconnecting");
return _("disconnecting...");
case NetworkManager.DeviceState.PREPARE:
case NetworkManager.DeviceState.CONFIG:
case NetworkManager.DeviceState.IP_CONFIG:
case NetworkManager.DeviceState.IP_CHECK:
case NetworkManager.DeviceState.SECONDARIES:
return _("Connecting");
return _("connecting...");
case NetworkManager.DeviceState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */
return _("Authentication required");
return _("authentication required");
case NetworkManager.DeviceState.UNAVAILABLE:
// This state is actually a compound of various states (generically unavailable,
// firmware missing), that are exposed by different properties (whose state may
@ -442,13 +442,13 @@ const NMConnectionDevice = new Lang.Class({
if (this._device.firmware_missing) {
/* Translators: this is for devices that require some kind of firmware or kernel
module, which is missing */
return _("Firmware missing");
return _("firmware missing");
}
/* Translators: this is for a network device that cannot be activated (for example it
is disabled by rfkill, or it has no coverage */
return _("Unavailable");
return _("unavailable");
case NetworkManager.DeviceState.FAILED:
return _("Connection failed");
return _("connection failed");
default:
log('Device state invalid, is %d'.format(this._device.state));
return 'invalid';

View File

@ -4,7 +4,6 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Signals = imports.signals;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
@ -84,18 +83,10 @@ const Indicator = new Lang.Class({
this._item.icon.icon_name = 'airplane-mode-symbolic';
this._item.status.text = _("On");
this._offItem = this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
this._manager.airplaneMode = false;
this._proxy.AirplaneMode = false;
}));
this._item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
this.menu.addMenuItem(this._item);
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
},
_sessionUpdated: function() {
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
},
_sync: function() {

View File

@ -56,10 +56,7 @@ const AltSwitcher = new Lang.Class({
}
if (this.actor.get_child() != childToShow) {
let hasFocus = this.actor.contains(global.stage.get_key_focus());
this.actor.set_child(childToShow);
if (hasFocus)
childToShow.grab_key_focus();
// The actors might respond to hover, so
// sync the pointer to make sure they update.

View File

@ -161,12 +161,11 @@ const SwitcherPopup = new Lang.Class({
// disturbed by the popup briefly flashing.
this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT,
Lang.bind(this, function () {
Main.osdWindowManager.hideAll();
Main.osdWindow.cancel();
this.actor.opacity = 255;
this._initialDelayTimeoutId = 0;
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel');
return true;
},
@ -190,11 +189,10 @@ const SwitcherPopup = new Lang.Class({
this._disableHover();
if (this._keyPressHandler(keysym, backwards, action) != Clutter.EVENT_PROPAGATE)
return Clutter.EVENT_STOP;
if (keysym == Clutter.Escape)
this.destroy();
else
this._keyPressHandler(keysym, backwards, action);
return Clutter.EVENT_STOP;
},
@ -252,7 +250,6 @@ const SwitcherPopup = new Lang.Class({
Mainloop.source_remove(this._motionTimeoutId);
this._motionTimeoutId = Mainloop.timeout_add(DISABLE_HOVER_TIMEOUT, Lang.bind(this, this._mouseTimedOut));
GLib.Source.set_name_by_id(this._motionTimeoutId, '[gnome-shell] this._mouseTimedOut');
},
_mouseTimedOut: function() {

View File

@ -282,7 +282,7 @@ const ViewSelector = new Lang.Class({
return Clutter.EVENT_STOP;
} else if (this._shouldTriggerSearch(symbol)) {
this.startSearch(event);
} else if (!this._searchActive && !global.stage.key_focus) {
} else if (!this._searchActive) {
if (symbol == Clutter.Tab || symbol == Clutter.Down) {
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
return true;
@ -383,11 +383,9 @@ const ViewSelector = new Lang.Class({
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
Lang.bind(this, this.reset));
if (this._searchTimeoutId == 0) {
if (this._searchTimeoutId == 0)
this._searchTimeoutId = Mainloop.timeout_add(150,
Lang.bind(this, this._doSearch));
GLib.Source.set_name_by_id(this._searchTimeoutId, '[gnome-shell] this._doSearch');
}
} else {
if (this._iconClickedId > 0) {
this._entry.disconnect(this._iconClickedId);

View File

@ -15,7 +15,6 @@ const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
const Tweener = imports.ui.tweener;
const WindowMenu = imports.ui.windowMenu;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
const WINDOW_ANIMATION_TIME = 0.25;
@ -83,7 +82,6 @@ const DisplayChangeDialog = new Lang.Class({
{ expand: false, x_fill: false, x_align: St.Align.END });
this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick');
},
close: function(timestamp) {
@ -273,20 +271,18 @@ const WorkspaceTracker = new Lang.Class({
this._queueCheckWorkspaces();
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(workspace._keepAliveId, '[gnome-shell] this._queueCheckWorkspaces');
},
_windowRemoved: function(workspace, window) {
workspace._lastRemovedWindow = window;
this._queueCheckWorkspaces();
let id = Mainloop.timeout_add(LAST_WINDOW_GRACE_TIME, Lang.bind(this, function() {
Mainloop.timeout_add(LAST_WINDOW_GRACE_TIME, Lang.bind(this, function() {
if (workspace._lastRemovedWindow == window) {
workspace._lastRemovedWindow = null;
this._queueCheckWorkspaces();
}
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._queueCheckWorkspaces');
},
_windowLeftMonitor: function(metaScreen, monitorIndex, metaWin) {
@ -464,6 +460,8 @@ const WindowManager = new Lang.Class({
this._dimmedWindows = [];
this._animationBlockCount = 0;
this._allowedKeybindings = {};
this._switchData = null;
@ -479,7 +477,6 @@ const WindowManager = new Lang.Class({
this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace));
this._shellwm.connect('show-tile-preview', Lang.bind(this, this._showTilePreview));
this._shellwm.connect('hide-tile-preview', Lang.bind(this, this._hideTilePreview));
this._shellwm.connect('show-window-menu', Lang.bind(this, this._showWindowMenu));
this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow));
this._shellwm.connect('maximize', Lang.bind(this, this._maximizeWindow));
this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow));
@ -507,10 +504,6 @@ const WindowManager = new Lang.Class({
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-last',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-left',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
@ -611,9 +604,6 @@ const WindowManager = new Lang.Class({
this.setCustomKeybindingHandler('move-to-workspace-12',
Shell.KeyBindingMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-last',
Shell.KeyBindingMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-applications',
Shell.KeyBindingMode.NORMAL,
Lang.bind(this, this._startAppSwitcher));
@ -669,8 +659,6 @@ const WindowManager = new Lang.Class({
this._dimWindow(this._dimmedWindows[i]);
}));
this._windowMenuManager = new WindowMenu.WindowMenuManager();
if (Main.sessionMode.hasWorkspaces)
this._workspaceTracker = new WorkspaceTracker(this);
@ -706,8 +694,16 @@ const WindowManager = new Lang.Class({
this._allowedKeybindings[name] = modes;
},
blockAnimations: function() {
this._animationBlockCount++;
},
unblockAnimations: function() {
this._animationBlockCount = Math.max(0, this._animationBlockCount - 1);
},
_shouldAnimate: function() {
return !Main.overview.visible;
return !(Main.overview.visible || this._animationBlockCount > 0);
},
_shouldAnimateActor: function(actor) {
@ -1153,10 +1149,6 @@ const WindowManager = new Lang.Class({
this._tilePreview.hide();
},
_showWindowMenu: function(shellwm, window, menu, rect) {
this._windowMenuManager.showWindowMenuForWindow(window, menu, rect);
},
_startAppSwitcher : function(display, screen, window, binding) {
/* prevent a corner case where both popups show up at once */
if (this._workspaceSwitcherPopup != null)
@ -1213,10 +1205,7 @@ const WindowManager = new Lang.Class({
let newWs;
let direction;
if (target == 'last') {
direction = Meta.MotionDirection.DOWN;
newWs = screen.get_workspace_by_index(screen.n_workspaces - 1);
} else if (isNaN(target)) {
if (isNaN(target)) {
direction = Meta.MotionDirection[target.toUpperCase()];
newWs = screen.get_active_workspace().get_neighbor(direction);
} else if (target > 0) {

View File

@ -1,185 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const RemoteMenu = imports.ui.remoteMenu;
const WindowMenu = new Lang.Class({
Name: 'WindowMenu',
Extends: PopupMenu.PopupMenu,
_init: function(window, sourceActor) {
this.parent(sourceActor, 0, St.Side.TOP);
this.actor.add_style_class_name('window-menu');
Main.layoutManager.uiGroup.add_actor(this.actor);
this.actor.hide();
this._buildMenu(window);
},
_buildMenu: function(window) {
let type = window.get_window_type();
let item;
item = this.addAction(_("Minimize"), Lang.bind(this, function(event) {
window.minimize();
}));
if (!window.can_minimize())
item.setSensitive(false);
if (window.get_maximized()) {
item = this.addAction(_("Unmaximize"), Lang.bind(this, function() {
window.unmaximize(Meta.MaximizeFlags.BOTH);
}));
} else {
item = this.addAction(_("Maximize"), Lang.bind(this, function() {
window.maximize(Meta.MaximizeFlags.BOTH);
}));
}
if (!window.can_maximize())
item.setSensitive(false);
item = this.addAction(_("Move"), Lang.bind(this, function(event) {
window.begin_grab_op(Meta.GrabOp.KEYBOARD_MOVING, true, event.get_time());
}));
if (!window.allows_move())
item.setSensitive(false);
item = this.addAction(_("Resize"), Lang.bind(this, function(event) {
window.begin_grab_op(Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN, true, event.get_time());
}));
if (!window.allows_resize())
item.setSensitive(false);
if (!window.titlebar_is_onscreen() && type != Meta.WindowType.DOCK && type != Meta.WindowType.DESKTOP) {
this.addAction(_("Move Titlebar Onscreen"), Lang.bind(this, function(event) {
window.shove_titlebar_onscreen();
}));
}
item = this.addAction(_("Always on Top"), Lang.bind(this, function() {
if (window.is_above())
window.unmake_above();
else
window.make_above();
}));
if (window.is_above())
item.setOrnament(PopupMenu.Ornament.DOT);
if (window.get_maximized() ||
type == Meta.WindowType.DOCK ||
type == Meta.WindowType.DESKTOP ||
type == Meta.WindowType.SPLASHSCREEN)
item.setSensitive(false);
if (Main.sessionMode.hasWorkspaces &&
(!Meta.prefs_get_workspaces_only_on_primary() ||
window.is_on_primary_monitor())) {
let isSticky = window.is_on_all_workspaces();
item = this.addAction(_("Always on Visible Workspace"), Lang.bind(this, function() {
if (isSticky)
window.unstick();
else
window.stick();
}));
if (isSticky)
item.setOrnament(PopupMenu.Ornament.DOT);
if (window.is_always_on_all_workspaces())
item.setSensitive(false);
let nWorkspaces = global.screen.n_workspaces;
if (!isSticky) {
let workspace = window.get_workspace();
let idx = workspace.index();
if (idx > 0) {
this.addAction(_("Move to Workspace Up"), Lang.bind(this, function(event) {
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.UP));
}));
}
if (idx < nWorkspaces) {
this.addAction(_("Move to Workspace Down"), Lang.bind(this, function(event) {
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN));
}));
}
}
}
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
item = this.addAction(_("Close"), Lang.bind(this, function(event) {
window.delete(event.get_time());
}));
if (!window.can_close())
item.setSensitive(false);
}
});
const AppMenu = new Lang.Class({
Name: 'AppMenu',
Extends: RemoteMenu.RemoteMenu,
_init: function(window, sourceActor) {
let app = Shell.WindowTracker.get_default().get_window_app(window);
this.parent(sourceActor, app.menu, app.action_group);
this.actor.add_style_class_name('fallback-app-menu');
let variant = window.get_gtk_theme_variant();
if (variant)
this.actor.add_style_class_name(variant);
Main.layoutManager.uiGroup.add_actor(this.actor);
this.actor.hide();
}
});
const WindowMenuManager = new Lang.Class({
Name: 'WindowMenuManager',
_init: function() {
this._manager = new PopupMenu.PopupMenuManager({ actor: Main.layoutManager.dummyCursor });
this._sourceActor = new St.Widget({ reactive: true, visible: false });
this._sourceActor.connect('button-press-event', Lang.bind(this,
function() {
this._manager.activeMenu.toggle();
}));
Main.uiGroup.add_actor(this._sourceActor);
},
showWindowMenuForWindow: function(window, type, rect) {
let menuType = (type == Meta.WindowMenuType.WM) ? WindowMenu : AppMenu;
let menu = new menuType(window, this._sourceActor);
this._manager.addMenu(menu);
menu.connect('activate', function() {
window.check_alive(global.get_current_time());
});
this._sourceActor.set_size(rect.width, rect.height);
this._sourceActor.set_position(rect.x, rect.y);
this._sourceActor.show();
menu.open(BoxPointer.PopupAnimation.NONE);
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
menu.connect('open-state-changed', Lang.bind(this, function(menu_, isOpen) {
if (isOpen)
return;
this._sourceActor.hide();
menu.destroy();
}));
}
});

View File

@ -200,10 +200,6 @@ const WindowClone = new Lang.Class({
this.emit('size-changed');
},
hasAttachedDialogs: function() {
return this.actor.get_n_children() > 1;
},
_doAddAttachedDialog: function(metaWin, realWin) {
let clone = new Clutter.Clone({ source: realWin });
clone._updateId = metaWin.connect('size-changed', Lang.bind(this, function() {
@ -586,8 +582,7 @@ const WindowOverlay = new Lang.Class({
},
_windowCanClose: function() {
return this._windowClone.metaWindow.can_close() &&
!this._windowClone.hasAttachedDialogs();
return this._windowClone.metaWindow.can_close();
},
_onWindowAdded: function(workspace, win) {
@ -599,12 +594,11 @@ const WindowOverlay = new Lang.Class({
// use an idle handler to avoid mapping problems -
// see comment in Workspace._windowAdded
let id = Mainloop.idle_add(Lang.bind(this,
function() {
this._windowClone.emit('selected');
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._windowClone.emit');
Mainloop.idle_add(Lang.bind(this,
function() {
this._windowClone.emit('selected');
return GLib.SOURCE_REMOVE;
}));
}
},
@ -675,10 +669,8 @@ const WindowOverlay = new Lang.Class({
},
_onLeave: function() {
if (this._idleToggleCloseId == 0) {
if (this._idleToggleCloseId == 0)
this._idleToggleCloseId = Mainloop.timeout_add(750, Lang.bind(this, this._idleToggleCloseButton));
GLib.Source.set_name_by_id(this._idleToggleCloseId, '[gnome-shell] this._idleToggleCloseButton');
}
return Clutter.EVENT_PROPAGATE;
},
@ -1426,7 +1418,6 @@ const Workspace = new Lang.Class({
this._currentLayout = null;
this._repositionWindowsId = Mainloop.timeout_add(750,
Lang.bind(this, this._delayedWindowRepositioning));
GLib.Source.set_name_by_id(this._repositionWindowsId, '[gnome-shell] this._delayedWindowRepositioning');
},
_doAddWindow : function(metaWin) {
@ -1438,15 +1429,14 @@ const Workspace = new Lang.Class({
if (!win) {
// Newly-created windows are added to a workspace before
// the compositor finds out about them...
let id = Mainloop.idle_add(Lang.bind(this,
function () {
if (this.actor &&
metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace)
this._doAddWindow(metaWin);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow');
Mainloop.idle_add(Lang.bind(this,
function () {
if (this.actor &&
metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace)
this._doAddWindow(metaWin);
return GLib.SOURCE_REMOVE;
}));
return;
}

View File

@ -52,7 +52,6 @@ const WorkspaceSwitcherPopup = new Lang.Class({
this._globalSignals.push(global.screen.connect('workspace-removed', Lang.bind(this, this._redisplay)));
this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
},
_getPreferredHeight : function (actor, forWidth, alloc) {
@ -146,7 +145,6 @@ const WorkspaceSwitcherPopup = new Lang.Class({
if (this._timeoutId != 0)
Mainloop.source_remove(this._timeoutId);
this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
this._show();
},

View File

@ -386,15 +386,14 @@ const WorkspaceThumbnail = new Lang.Class({
if (!win) {
// Newly-created windows are added to a workspace before
// the compositor finds out about them...
let id = Mainloop.idle_add(Lang.bind(this,
function () {
Mainloop.idle_add(Lang.bind(this,
function () {
if (!this._removed &&
metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace)
this._doAddWindow(metaWin);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._doAddWindow');
return;
}
@ -826,14 +825,10 @@ const ThumbnailsBox = new Lang.Class({
window.change_workspace_by_index(window.get_workspace().index() + 1, true);
});
if (isWindow) {
if (isWindow)
// ... and bam, a workspace, good as new.
// Move the window to our monitor first if necessary.
let thumbMonitor = this._thumbnails[newWorkspaceIndex].monitorIndex;
if (source.metaWindow.get_monitor() != thumbMonitor)
source.metaWindow.move_to_monitor(thumbMonitor);
source.metaWindow.change_workspace_by_index(newWorkspaceIndex, true);
} else if (source.shellWorkspaceLaunch) {
else if (source.shellWorkspaceLaunch) {
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
timestamp: time });
// This new workspace will be automatically removed if the application fails
@ -907,10 +902,7 @@ const ThumbnailsBox = new Lang.Class({
},
_workspacesChanged: function() {
let validThumbnails = this._thumbnails.filter(function(t) {
return t.state <= ThumbnailState.NORMAL;
});
let oldNumWorkspaces = validThumbnails.length;
let oldNumWorkspaces = this._thumbnails.length;
let newNumWorkspaces = global.screen.n_workspaces;
let active = global.screen.get_active_workspace_index();

View File

@ -55,7 +55,6 @@ js/ui/unlockDialog.js
js/ui/viewSelector.js
js/ui/windowAttentionHandler.js
js/ui/windowManager.js
js/ui/windowMenu.js
src/calendar-server/evolution-calendar.desktop.in.in
# Please do not remove this file from POTFILES.in. Run "git submodule init && git submodule update" to get it.
src/gvc/gvc-mixer-control.c

316
po/be.po
View File

@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-04-30 19:59+0000\n"
"POT-Creation-Date: 2014-02-22 08:29+0000\n"
"PO-Revision-Date: 2012-10-16 12:05+0300\n"
"Last-Translator: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
@ -107,8 +107,8 @@ msgid ""
msgstr ""
"Абалонка GNOME запусціць толькі тыя пашырэнні, аўтары якіх сцвярджаюць, што "
"яны працуюць з бягучай версіяй абалонкі. Уключэнне гэтай настройкі выключыць "
"гэту праверку, і для ўсіх пашырэнняў будзе ажыццёўлена спроба загрузкі "
"незалежна ад сцвярджэнняў іх аўтараў."
"гэту праверку, і для ўсіх пашырэнняў будзе ажыццёўлена спроба загрузкі незалежна ад "
"сцвярджэнняў іх аўтараў."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of desktop file IDs for favorite applications"
@ -228,17 +228,10 @@ msgid ""
"Configures the maximum level of location accuracy applications are allowed "
"to see. Valid options are 'off' (disable location tracking), 'country', "
"'city', 'neighborhood', 'street', and 'exact' (typically requires GPS "
"receiver). Please keep in mind that this only controls what GeoClue will "
"receiver). Please keep in mind that this only controls what Geoclue will "
"allow applications to see and they can find user's location on their own "
"using network resources (albeit with street-level accuracy at best)."
msgstr ""
"Настройка максімальнай дакладнасці вызначэння месцапалажэння, даступнай праграмам. "
"Магчымыя значэнні: \"off\" (выключыць вызначэнне месцапалажэння), \"country\" (краіна), "
"\"city\" (горад), \"neighborhood\" (раён), \"street\" (вуліца) і \"exact\" (дэталёва, "
"звычайна патрабуе GPS-прыёмнік). Увага: гэта настройка вызначае толькі тое, што "
"даступна праграмам з дапамогай службы GeoClue, але яны могуць самастойна вызначаць "
"месцапалажэнне з дапамогай спецыяльных сеціўных рэсурсаў (праўда, максімальная дакладнасць "
"такіх рэсурсаў - назва вуліцы)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "The application icon mode."
@ -295,8 +288,7 @@ msgstr ""
#: ../js/extensionPrefs/main.js:127
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr ""
"Падчас спробы загрузкі дыялогавага акенца настроек для %s адбылася памылка:"
msgstr "Падчас спробы загрузкі дыялогавага акенца настроек для %s адбылася памылка:"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
@ -311,7 +303,7 @@ msgstr ""
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:878
#: ../js/ui/status/network.js:883
msgid "Cancel"
msgstr "Скасаваць"
@ -329,25 +321,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Увайсці"
#: ../js/gdm/loginDialog.js:271
#: ../js/gdm/loginDialog.js:270
msgid "Choose Session"
msgstr "Выбар сеанса"
#: ../js/gdm/loginDialog.js:431
#: ../js/gdm/loginDialog.js:430
msgid "Not listed?"
msgstr "Няма ў спісе?"
#: ../js/gdm/loginDialog.js:614
#: ../js/gdm/loginDialog.js:598
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(напр., карыстальнік ці %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:603 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Імя карыстальніка: "
#: ../js/gdm/loginDialog.js:920
#: ../js/gdm/loginDialog.js:868
msgid "Login Window"
msgstr "Акно ўваходу"
@ -372,27 +364,27 @@ msgstr "Не ўдалося разабраць загад:"
msgid "Execution of “%s” failed:"
msgstr "Не ўдалося выканаць \"%s\":"
#: ../js/ui/appDisplay.js:636
#: ../js/ui/appDisplay.js:629
msgid "Frequently used applications will appear here"
msgstr "Тут размешчаныя часта ўжываныя праграмы"
#: ../js/ui/appDisplay.js:747
#: ../js/ui/appDisplay.js:740
msgid "Frequent"
msgstr "Часта"
#: ../js/ui/appDisplay.js:754
#: ../js/ui/appDisplay.js:747
msgid "All"
msgstr "Усе"
#: ../js/ui/appDisplay.js:1566
#: ../js/ui/appDisplay.js:1552
msgid "New Window"
msgstr "Новае акно"
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1574 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Выдаліць са спіса ўпадабанага"
#: ../js/ui/appDisplay.js:1594
#: ../js/ui/appDisplay.js:1580
msgid "Add to Favorites"
msgstr "Дадаць у спіс упадабанага"
@ -535,44 +527,44 @@ msgstr "Сб"
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
#: ../js/ui/calendar.js:446
msgid "Previous month"
msgstr "Папярэдні месяц"
#: ../js/ui/calendar.js:460
#: ../js/ui/calendar.js:456
msgid "Next month"
msgstr "Наступны месяц"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:772
#: ../js/ui/calendar.js:762
msgid "Nothing Scheduled"
msgstr "Нічога не прымеркавана"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:790
#: ../js/ui/calendar.js:780
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:793
#: ../js/ui/calendar.js:783
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d %B, %Y"
#: ../js/ui/calendar.js:804
#: ../js/ui/calendar.js:794
msgid "Today"
msgstr "Сёння"
#: ../js/ui/calendar.js:808
#: ../js/ui/calendar.js:798
msgid "Tomorrow"
msgstr "Заўтра"
#: ../js/ui/calendar.js:819
#: ../js/ui/calendar.js:809
msgid "This week"
msgstr "На гэтым тыдні"
#: ../js/ui/calendar.js:827
#: ../js/ui/calendar.js:817
msgid "Next week"
msgstr "На наступным тыдні"
@ -605,8 +597,8 @@ msgstr "Пароль:"
msgid "Type again:"
msgstr "Паўтарыце пароль:"
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:240
#: ../js/ui/status/network.js:322 ../js/ui/status/network.js:881
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:250
#: ../js/ui/status/network.js:327 ../js/ui/status/network.js:886
msgid "Connect"
msgstr "Злучыць"
@ -813,13 +805,13 @@ msgstr "Удзельнік %s запрашае вас далучыцца да %s
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1291
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "Адмовіцца"
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1296
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
msgstr "Прыняць"
@ -856,97 +848,97 @@ msgstr "%s пасылае вам %s"
msgid "%s would like permission to see when you are online"
msgstr "%s просіць дазволу на прагляд вашага сеткавага стану"
#: ../js/ui/components/telepathyClient.js:1342
#: ../js/ui/components/telepathyClient.js:1341
msgid "Network error"
msgstr "Сеткавая памылка"
#: ../js/ui/components/telepathyClient.js:1344
#: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed"
msgstr "Няўдалая ідэнтыфікацыя"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error"
msgstr "Памылка шыфравання"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided"
msgstr "Сертыфікат не пададзены"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted"
msgstr "Сертыфікат не заслугоўвае даверу"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired"
msgstr "Сертыфікат састарэў"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated"
msgstr "Сертыфікат не актывізаваны"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch"
msgstr "Назва камп'ютара ў сертыфікаце не адпавядае патрэбнай"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch"
msgstr "Адбітак сертыфіката не адпавядае патрэбнаму"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed"
msgstr "Сертыфікат уласнаручна падпісаны"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline"
msgstr "Уключаны рэжым па-за сеткай"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available"
msgstr "Шыфраванне недаступнае"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid"
msgstr "Хібны сертыфікат"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused"
msgstr "Адмоўлена ў злучэнні"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established"
msgstr "Не ўдалося ўсталяваць злучэнне"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost"
msgstr "Злучэнне страчана"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server"
msgstr "Гэты конт ужо злучаны з серверам"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1375
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Злучэнне заменена новым для таго ж самага рэсурсу"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server"
msgstr "Такі конт ужо існуе на серверы"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1379
msgid "Server is currently too busy to handle the connection"
msgstr "Сервер надта заняты і не можа абслужыць гэта злучэнне"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked"
msgstr "Сертыфікат быў адкліканы"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1383
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "Для сертыфіката выкарыстаны слабы або небяспечны алгарытм шыфравання"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1385
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -954,22 +946,22 @@ msgstr ""
"Даўжыня сертыфіката сервера або глыбіня яго ланцуга перавышае абмежаванне, "
"выстаўленае крыптаграфічнай бібліятэкай"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error"
msgstr "Унутраная памылка"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1398
#: ../js/ui/components/telepathyClient.js:1397
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Не ўдалося злучыцца з %s"
#: ../js/ui/components/telepathyClient.js:1403
#: ../js/ui/components/telepathyClient.js:1402
msgid "View account"
msgstr "Праглядзець конт"
#: ../js/ui/components/telepathyClient.js:1440
#: ../js/ui/components/telepathyClient.js:1434
msgid "Unknown reason"
msgstr "Невядомая прычына"
@ -985,22 +977,22 @@ msgstr "Паказаць праграмы"
msgid "Dash"
msgstr "Прыборная дошка"
#: ../js/ui/dateMenu.js:91
#: ../js/ui/dateMenu.js:86
msgid "Open Calendar"
msgstr "Адкрыць каляндар"
#: ../js/ui/dateMenu.js:95
#: ../js/ui/dateMenu.js:90
msgid "Open Clocks"
msgstr "Адкрыць гадзіннікі"
#: ../js/ui/dateMenu.js:102
#: ../js/ui/dateMenu.js:97
msgid "Date & Time Settings"
msgstr "Настройкі даты і часу"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:192
#: ../js/ui/dateMenu.js:187
msgid "%A %B %e, %Y"
msgstr "%A, %e %B, %Y"
@ -1116,9 +1108,7 @@ msgstr "Выключыць камп'ютар пасля ўсталявання
#: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Камп'ютар сілкуецца ад акумулятара: падлучыце да знешняй крыніцы энергіі "
"перад усталяваннем абновак."
msgstr "Камп'ютар сілкуецца ад акумулятара: падлучыце да знешняй крыніцы энергіі перад усталяваннем абновак."
#: ../js/ui/endSessionDialog.js:332
msgid "Some applications are busy or have unsaved work."
@ -1153,26 +1143,25 @@ msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?
msgid "Keyboard"
msgstr "Клавіятура"
#: ../js/ui/lookingGlass.js:643
#: ../js/ui/lookingGlass.js:641
msgid "No extensions installed"
msgstr "Няма ўсталяваных пашырэнняў"
#. Translators: argument is an extension UUID. */
#: ../js/ui/lookingGlass.js:697
#: ../js/ui/lookingGlass.js:695
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "%s не зрабіў ніякіх памылак."
#: ../js/ui/lookingGlass.js:703
#: ../js/ui/lookingGlass.js:701
msgid "Hide Errors"
msgstr "Хаваць памылкі"
#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767
#: ../js/ui/lookingGlass.js:705 ../js/ui/lookingGlass.js:765
msgid "Show Errors"
msgstr "Паказваць памылкі"
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
#: ../js/ui/status/location.js:167
#: ../js/ui/lookingGlass.js:714
msgid "Enabled"
msgstr "Уключана"
@ -1180,64 +1169,64 @@ msgstr "Уключана"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
#: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
#: ../js/ui/lookingGlass.js:717 ../js/ui/status/network.js:560
#: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "Выключана"
#: ../js/ui/lookingGlass.js:721
#: ../js/ui/lookingGlass.js:719
msgid "Error"
msgstr "Памылка"
#: ../js/ui/lookingGlass.js:723
#: ../js/ui/lookingGlass.js:721
msgid "Out of date"
msgstr "Састарэла"
#: ../js/ui/lookingGlass.js:725
#: ../js/ui/lookingGlass.js:723
msgid "Downloading"
msgstr "Сцягванне"
#: ../js/ui/lookingGlass.js:749
#: ../js/ui/lookingGlass.js:747
msgid "View Source"
msgstr "Паглядзець выточны код"
#: ../js/ui/lookingGlass.js:758
#: ../js/ui/lookingGlass.js:756
msgid "Web Page"
msgstr "Сеціўная старонка"
#: ../js/ui/messageTray.js:1326
#: ../js/ui/messageTray.js:1324
msgid "Open"
msgstr "Адкрыць"
#: ../js/ui/messageTray.js:1333
#: ../js/ui/messageTray.js:1331
msgid "Remove"
msgstr "Выдаліць"
#: ../js/ui/messageTray.js:1630
#: ../js/ui/messageTray.js:1628
msgid "Notifications"
msgstr "Апавяшчэнні"
#: ../js/ui/messageTray.js:1637
#: ../js/ui/messageTray.js:1635
msgid "Clear Messages"
msgstr "Ачысціць спіс апавяшчэнняў"
#: ../js/ui/messageTray.js:1656
#: ../js/ui/messageTray.js:1654
msgid "Notification Settings"
msgstr "Настройкі апавяшчэння"
#: ../js/ui/messageTray.js:1709
#: ../js/ui/messageTray.js:1707
msgid "Tray Menu"
msgstr "Меню трэя"
#: ../js/ui/messageTray.js:1926
#: ../js/ui/messageTray.js:1924
msgid "No Messages"
msgstr "Апавяшчэнні адсутнічаюць"
#: ../js/ui/messageTray.js:1964
#: ../js/ui/messageTray.js:1962
msgid "Message Tray"
msgstr "Абшар апавяшчэнняў"
#: ../js/ui/messageTray.js:2962
#: ../js/ui/messageTray.js:2946
msgid "System Information"
msgstr "Сістэмная інфармацыя"
@ -1254,11 +1243,11 @@ msgstr[0] "%d новае паведамленне"
msgstr[1] "%d новыя паведамленні"
msgstr[2] "%d новых паведамленняў"
#: ../js/ui/overview.js:84
#: ../js/ui/overview.js:83
msgid "Undo"
msgstr "Адрабіць"
#: ../js/ui/overview.js:124
#: ../js/ui/overview.js:123
msgid "Overview"
msgstr "Агляд"
@ -1266,7 +1255,7 @@ msgstr "Агляд"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters. */
#: ../js/ui/overview.js:250
#: ../js/ui/overview.js:257
msgid "Type to search…"
msgstr "Увядзіце тэкст для пошуку..."
@ -1310,27 +1299,27 @@ msgstr[0] "%d новае апавяшчэнне"
msgstr[1] "%d новыя апавяшчэнні"
msgstr[2] "%d новых апавяшчэнняў"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:342
msgid "Lock"
msgstr "Заблакіраваць"
#: ../js/ui/screenShield.js:708
#: ../js/ui/screenShield.js:707
msgid "GNOME needs to lock the screen"
msgstr "GNOME патрабуе блакіравання экрана"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1301
msgid "Unable to lock"
msgstr "Не ўдалося заблакіраваць"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1302
msgid "Lock was blocked by an application"
msgstr "Блакіраванне стрымана праграмай"
#: ../js/ui/search.js:603
#: ../js/ui/search.js:589
msgid "Searching…"
msgstr "Пошук..."
#: ../js/ui/search.js:649
#: ../js/ui/search.js:632
msgid "No results."
msgstr "Нічога не знойдзена."
@ -1402,22 +1391,23 @@ msgstr "Высокая кантраснасць"
msgid "Large Text"
msgstr "Буйны тэкст"
#: ../js/ui/status/bluetooth.js:49
#: ../js/ui/status/bluetooth.js:48
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:62
#: ../js/ui/status/location.js:162 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:328 ../js/ui/status/network.js:1235
#: ../js/ui/status/network.js:1346 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
msgid "Turn Off"
msgstr "Выключыць"
#: ../js/ui/status/bluetooth.js:54
#: ../js/ui/status/bluetooth.js:53
msgid "Bluetooth Settings"
msgstr "Настройкі Bluetooth"
#: ../js/ui/status/bluetooth.js:104
#: ../js/ui/status/bluetooth.js:100
#, javascript-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
@ -1425,7 +1415,7 @@ msgstr[0] "%d злучанае прыстасаванне"
msgstr[1] "%d злучаныя прыстасаванні"
msgstr[2] "%d злучаных прыстасаванняў"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262
#: ../js/ui/status/bluetooth.js:102 ../js/ui/status/network.js:1263
msgid "Not Connected"
msgstr "Няма злучэння"
@ -1437,167 +1427,156 @@ msgstr "Яркасць"
msgid "Show Keyboard Layout"
msgstr "Паказаць клавіятурную раскладку"
#: ../js/ui/status/location.js:53
#: ../js/ui/status/location.js:52
msgid "Location"
msgstr "Месцапалажэнне"
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
msgid "Disable"
msgstr "Выключыць"
#: ../js/ui/status/location.js:61 ../js/ui/status/location.js:161
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Укл."
#: ../js/ui/status/location.js:165
msgid "Enable"
#: ../js/ui/status/location.js:158 ../js/ui/status/network.js:246
#: ../js/ui/status/network.js:425 ../js/ui/status/network.js:1261
msgid "Off"
msgstr "Выключана"
#: ../js/ui/status/location.js:159 ../js/ui/status/network.js:1235
msgid "Turn On"
msgstr "Уключыць"
#: ../js/ui/status/location.js:167
msgid "In Use"
msgstr "Ужыта"
#: ../js/ui/status/network.js:74
msgid "<unknown>"
msgstr "<невядома>"
#: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260
#: ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Выключана"
#: ../js/ui/status/network.js:422
msgid "Connected"
msgstr "Злучана"
#. 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) */
#: ../js/ui/status/network.js:426
#: ../js/ui/status/network.js:431
msgid "unmanaged"
msgstr "непадкантрольна"
#: ../js/ui/status/network.js:428
#: ../js/ui/status/network.js:433
msgid "disconnecting..."
msgstr "адлучэнне..."
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
#: ../js/ui/status/network.js:439 ../js/ui/status/network.js:1363
msgid "connecting..."
msgstr "усталяванне злучэння..."
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
#: ../js/ui/status/network.js:442 ../js/ui/status/network.js:1366
msgid "authentication required"
msgstr "патрэбная ідэнтыфікацыя"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:445
#: ../js/ui/status/network.js:450
msgid "firmware missing"
msgstr "няма апаратнага апраграмавання"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449
#: ../js/ui/status/network.js:454
msgid "unavailable"
msgstr "недаступна"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
#: ../js/ui/status/network.js:456 ../js/ui/status/network.js:1368
msgid "connection failed"
msgstr "не ўдалося злучыцца"
#: ../js/ui/status/network.js:467
#: ../js/ui/status/network.js:472
msgid "Wired Settings"
msgstr "Настройкі праваднога злучэння"
#: ../js/ui/status/network.js:509 ../js/ui/status/network.js:587
#: ../js/ui/status/network.js:514 ../js/ui/status/network.js:592
msgid "Mobile Broadband Settings"
msgstr "Настройкі мабільнага злучэння"
#: ../js/ui/status/network.js:551 ../js/ui/status/network.js:1258
#: ../js/ui/status/network.js:556 ../js/ui/status/network.js:1259
msgid "Hardware Disabled"
msgstr "Прыстасаванне выключана"
#: ../js/ui/status/network.js:595
#: ../js/ui/status/network.js:600
msgid "Use as Internet connection"
msgstr "Ужыць для злучэння з Інтэрнэтам"
#: ../js/ui/status/network.js:776
#: ../js/ui/status/network.js:781
msgid "Airplane Mode is On"
msgstr "Рэжым самалёта ўключаны"
#: ../js/ui/status/network.js:777
#: ../js/ui/status/network.js:782
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "У рэжыме самалёта выключаецца Wi-Fi."
#: ../js/ui/status/network.js:778
#: ../js/ui/status/network.js:783
msgid "Turn Off Airplane Mode"
msgstr "Выключыць рэжым самалёта"
#: ../js/ui/status/network.js:787
#: ../js/ui/status/network.js:792
msgid "Wi-Fi is Off"
msgstr "Wi-Fi выключаны"
#: ../js/ui/status/network.js:788
#: ../js/ui/status/network.js:793
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Каб злучыцца з сеткай, спачатку трэба ўключыць Wi-Fi."
#: ../js/ui/status/network.js:789
#: ../js/ui/status/network.js:794
msgid "Turn On Wi-Fi"
msgstr "Уключыць Wi-Fi"
#: ../js/ui/status/network.js:814
#: ../js/ui/status/network.js:819
msgid "Wi-Fi Networks"
msgstr "Сеткі Wi-Fi"
#: ../js/ui/status/network.js:816
#: ../js/ui/status/network.js:821
msgid "Select a network"
msgstr "Выберыце сетку"
#: ../js/ui/status/network.js:845
#: ../js/ui/status/network.js:850
msgid "No Networks"
msgstr "Няма сетак"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:871 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off"
msgstr "Задзейнічаць апаратны выключальнік"
#: ../js/ui/status/network.js:1136
#: ../js/ui/status/network.js:1141
msgid "Select Network"
msgstr "Выбраць сетку"
#: ../js/ui/status/network.js:1142
#: ../js/ui/status/network.js:1147
msgid "Wi-Fi Settings"
msgstr "Настройкі Wi-Fi"
#: ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Уключыць"
#: ../js/ui/status/network.js:1251
#: ../js/ui/status/network.js:1252
msgid "Hotspot Active"
msgstr "Хотспот уключаны"
#: ../js/ui/status/network.js:1254
#: ../js/ui/status/network.js:1255
msgid "Connecting"
msgstr "Злучэнне"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1434 ../js/ui/status/rfkill.js:88
msgid "Network Settings"
msgstr "Сеткавыя настройкі"
#: ../js/ui/status/network.js:1435
#: ../js/ui/status/network.js:1436
msgid "VPN Settings"
msgstr "Настройкі VPN"
#: ../js/ui/status/network.js:1454
#: ../js/ui/status/network.js:1455
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1607
#: ../js/ui/status/network.js:1598
msgid "Network Manager"
msgstr "Сеткавы кіраўнік"
#: ../js/ui/status/network.js:1646
#: ../js/ui/status/network.js:1637
msgid "Connection failed"
msgstr "Не ўдалося злучыцца"
#: ../js/ui/status/network.js:1647
#: ../js/ui/status/network.js:1638
msgid "Activation of network connection failed"
msgstr "Не ўдалося ўключыць сеткавае злучэнне"
@ -1631,14 +1610,10 @@ msgstr "UPS"
msgid "Battery"
msgstr "Батарэя"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode"
msgstr "Рэжым самалёта"
#: ../js/ui/status/rfkill.js:85
msgid "On"
msgstr "Укл."
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "Перамяніць карыстальніка"
@ -1775,3 +1750,4 @@ msgstr "Пароль не можа быць пустым"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Карыстальнік праігнараваў дыялогавае акенца ідэнтыфікацыі"

File diff suppressed because it is too large Load Diff

361
po/cs.po
View File

@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-18 07:27+0000\n"
"PO-Revision-Date: 2014-05-18 15:23+0200\n"
"POT-Creation-Date: 2014-03-27 20:52+0000\n"
"PO-Revision-Date: 2014-03-27 22:15+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
@ -336,25 +336,25 @@ msgstr "Vybrat sezení"
msgid "Not listed?"
msgstr "Nejste na seznamu?"
#: ../js/gdm/loginDialog.js:616
#: ../js/gdm/loginDialog.js:611
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(např. uživatel nebo %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Uživatelské jméno: "
#: ../js/gdm/loginDialog.js:924
#: ../js/gdm/loginDialog.js:917
msgid "Login Window"
msgstr "Přihlašovací okno"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:322
msgid "Authentication error"
msgstr "Chyba ověření"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:452
msgid "(or swipe finger)"
msgstr "(nebo otiskněte prst)"
@ -371,34 +371,30 @@ msgstr "Nelze analyzovat příkaz:"
msgid "Execution of “%s” failed:"
msgstr "Vykonání „%s“ selhalo:"
#: ../js/ui/appDisplay.js:640
#: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here"
msgstr "Zde se objeví často používané aplikace"
#: ../js/ui/appDisplay.js:751
#: ../js/ui/appDisplay.js:747
msgid "Frequent"
msgstr "Časté"
#: ../js/ui/appDisplay.js:758
#: ../js/ui/appDisplay.js:754
msgid "All"
msgstr "Všechny"
#: ../js/ui/appDisplay.js:1571
#: ../js/ui/appDisplay.js:1566
msgid "New Window"
msgstr "Nové okno"
#: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Odstranit z oblíbených"
#: ../js/ui/appDisplay.js:1599
#: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites"
msgstr "Přidat mezi oblíbené"
#: ../js/ui/appDisplay.js:1608
msgid "Show Details"
msgstr "Zobrazit podrobnosti"
#: ../js/ui/appFavorites.js:87
#, javascript-format
msgid "%s has been added to your favorites."
@ -409,8 +405,8 @@ msgstr "%s byl přidán mezi oblíbené."
msgid "%s has been removed from your favorites."
msgstr "%s byl odstraněn z oblíbených."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810
#: ../js/ui/status/system.js:337
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:334
msgid "Settings"
msgstr "Nastavení"
@ -421,14 +417,14 @@ msgstr "Změnit pozadí…"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:67
#: ../js/ui/calendar.js:64
msgctxt "event list time"
msgid "All Day"
msgstr "Celý den"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73
#: ../js/ui/calendar.js:70
msgctxt "event list time"
msgid "%H%M"
msgstr "%k%M"
@ -436,7 +432,7 @@ msgstr "%k%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:82
#: ../js/ui/calendar.js:79
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
@ -446,43 +442,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:110
msgctxt "grid sunday"
msgid "S"
msgstr "Ne"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:112
msgctxt "grid monday"
msgid "M"
msgstr "Po"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:114
msgctxt "grid tuesday"
msgid "T"
msgstr "Út"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:116
msgctxt "grid wednesday"
msgid "W"
msgstr "St"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:118
msgctxt "grid thursday"
msgid "T"
msgstr "Čt"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:120
msgctxt "grid friday"
msgid "F"
msgstr "Pá"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:122
msgctxt "grid saturday"
msgid "S"
msgstr "So"
@ -493,93 +489,97 @@ msgstr "So"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#: ../js/ui/calendar.js:138
#: ../js/ui/calendar.js:135
msgctxt "list sunday"
msgid "Su"
msgstr "Ne"
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140
#: ../js/ui/calendar.js:137
msgctxt "list monday"
msgid "M"
msgstr "Po"
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:139
msgctxt "list tuesday"
msgid "T"
msgstr "Út"
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:141
msgctxt "list wednesday"
msgid "W"
msgstr "St"
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:143
msgctxt "list thursday"
msgid "Th"
msgstr "Čt"
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:145
msgctxt "list friday"
msgid "F"
msgstr "Pá"
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:147
msgctxt "list saturday"
msgid "S"
msgstr "So"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
msgid "Previous month"
msgstr "Předchozí měsíc"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:460
msgid "Next month"
msgstr "Následující měsíc"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:775
#: ../js/ui/calendar.js:772
msgid "Nothing Scheduled"
msgstr "Nic nenaplánováno"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:793
#: ../js/ui/calendar.js:790
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %e. %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:796
#: ../js/ui/calendar.js:793
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %e. %B %Y"
#: ../js/ui/calendar.js:807
#: ../js/ui/calendar.js:804
msgid "Today"
msgstr "Dnes"
#: ../js/ui/calendar.js:811
#: ../js/ui/calendar.js:808
msgid "Tomorrow"
msgstr "Zítra"
#: ../js/ui/calendar.js:822
#: ../js/ui/calendar.js:819
msgid "This week"
msgstr "Tento týden"
#: ../js/ui/calendar.js:830
#: ../js/ui/calendar.js:827
msgid "Next week"
msgstr "Následující týden"
#: ../js/ui/components/automountManager.js:91
#: ../js/ui/components/automountManager.js:90
msgid "External drive connected"
msgstr "Externí svazek připojen"
#: ../js/ui/components/automountManager.js:102
#: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected"
msgstr "Externí svazek odpojen"
@ -724,77 +724,77 @@ msgid "Mute"
msgstr "Ztlumit"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%k%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "včera, %k%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A, %k%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%e. %B %k%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%e. %B %Y, %k%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994
#: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p"
msgstr "%l%M%p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001
#: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p"
msgstr "včera, %l%M%p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008
#: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p"
msgstr "%A, %l%M%p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015
#: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p"
msgstr "%e. %B, %l%M%p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021
#: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p"
msgstr "%e. %B %Y, %l%M%p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1054
#: ../js/ui/components/telepathyClient.js:1051
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s je teď znám jako %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158
#: ../js/ui/components/telepathyClient.js:1154
#, javascript-format
msgid "Invitation to %s"
msgstr "Pozvánka na připojení k %s"
@ -802,38 +802,38 @@ msgstr "Pozvánka na připojení k %s"
#. 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
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1166
#: ../js/ui/components/telepathyClient.js:1162
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s vás zve do %s"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "Odmítnout"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
msgstr "Přijmout"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Video call from %s"
msgstr "Videohovor od %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1192
#, javascript-format
msgid "Call from %s"
msgstr "Hovor od %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210
#: ../js/ui/components/telepathyClient.js:1206
msgid "Answer"
msgstr "Zvednout"
@ -842,110 +842,110 @@ msgstr "Zvednout"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1231
#: ../js/ui/components/telepathyClient.js:1227
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s vám posílá %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260
#: ../js/ui/components/telepathyClient.js:1256
#, javascript-format
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í"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1341
msgid "Network error"
msgstr "Chyba sítě"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed"
msgstr "Ověření selhalo"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error"
msgstr "Chyba šifrování"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided"
msgstr "Certifikát neposkytnut"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted"
msgstr "Nedůvěryhodný certifikát"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired"
msgstr "Platnost certifikátu vypršela"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated"
msgstr "Certifikát není aktivován"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch"
msgstr "Název počítače certifikátu nesouhlasí"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch"
msgstr "Otisk prstu certifikátu nesouhlasí"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed"
msgstr "Certifikát je podepsán sám sebou"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline"
msgstr "Stav nastaven na „Odhlášen“"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available"
msgstr "Šifrování není dostupné"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid"
msgstr "Certifikát je neplatný"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused"
msgstr "Spojení bylo odmítnuto"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established"
msgstr "Spojení nemohlo bát navázáno"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost"
msgstr "Spojení bylo ztraceno"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server"
msgstr "Tento účet je již připojen k serveru"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1375
msgid ""
"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"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server"
msgstr "Takový účet již na serveru existuje"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1379
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í"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked"
msgstr "Certifikát byl odvolán"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1383
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Certifikát používá nepříliš bezpečný šifrovací algoritmus nebo je z "
"kryptografického hlediska slabý"
#: ../js/ui/components/telepathyClient.js:1390
#: ../js/ui/components/telepathyClient.js:1385
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -953,22 +953,22 @@ msgstr ""
"Délka certifikátu serveru nebo délka zřetězených certifikátů serveru "
"přesáhla omezení dané kryptografickou knihovnou"
#: ../js/ui/components/telepathyClient.js:1392
#: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error"
msgstr "Vnitřní chyba"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1397
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Nelze se připojit k „%s“"
#: ../js/ui/components/telepathyClient.js:1407
#: ../js/ui/components/telepathyClient.js:1402
msgid "View account"
msgstr "Zobrazit účet"
#: ../js/ui/components/telepathyClient.js:1444
#: ../js/ui/components/telepathyClient.js:1439
msgid "Unknown reason"
msgstr "Neznámý důvod"
@ -984,15 +984,15 @@ msgstr "Zobrazit aplikace"
msgid "Dash"
msgstr "Oblíbené"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:91
msgid "Open Calendar"
msgstr "Otevřít kalendář"
#: ../js/ui/dateMenu.js:101
#: ../js/ui/dateMenu.js:95
msgid "Open Clocks"
msgstr "Otevřít Hodiny"
#: ../js/ui/dateMenu.js:108
#: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings"
msgstr "Nastavení data a času"
@ -1000,7 +1000,7 @@ msgstr "Nastavení data a času"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:205
#: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y"
msgstr "%A, %e. %B, %Y"
@ -1131,13 +1131,13 @@ msgid "Other users are logged in."
msgstr "Jsou přihlášeni jiní uživatelé."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:618
#, javascript-format
msgid "%s (remote)"
msgstr "%s (vzdálený)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:621
#, javascript-format
msgid "%s (console)"
msgstr "%s (konzola)"
@ -1151,7 +1151,7 @@ msgstr "Instalovat"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard"
msgstr "Klávesnice"
@ -1239,16 +1239,16 @@ msgstr "Žádné zprávy"
msgid "Message Tray"
msgstr "Lišta zpráv"
#: ../js/ui/messageTray.js:2967
#: ../js/ui/messageTray.js:2962
msgid "System Information"
msgstr "Informace o systému"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425
#: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Neznámé"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151
#: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
@ -1282,7 +1282,7 @@ msgstr "Ukončit"
msgid "Activities"
msgstr "Činnosti"
#: ../js/ui/panel.js:915
#: ../js/ui/panel.js:914
msgid "Top Bar"
msgstr "Horní lišta"
@ -1294,7 +1294,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "Zadejte příkaz:"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
#: ../js/ui/runDialog.js:114
msgid "Close"
msgstr "Zavřít"
@ -1312,7 +1312,7 @@ msgstr[0] "%d nové upozornění"
msgstr[1] "%d nová upozornění"
msgstr[2] "%d nových upozornění"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock"
msgstr "Uzamknout"
@ -1320,19 +1320,19 @@ msgstr "Uzamknout"
msgid "GNOME needs to lock the screen"
msgstr "GNOME potřebuje uzamknout obrazovku"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock"
msgstr "Nelze uzamknout obrazovku"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application"
msgstr "Zamknutí bylo zablokováno některou z aplikací"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:603
msgid "Searching…"
msgstr "Hledá se…"
#: ../js/ui/search.js:652
#: ../js/ui/search.js:649
msgid "No results."
msgstr "Žádné výsledky."
@ -1396,11 +1396,11 @@ msgstr "Vícenásobné stisky kláves"
msgid "Mouse Keys"
msgstr "Myš klávesnicí"
#: ../js/ui/status/accessibility.js:144
#: ../js/ui/status/accessibility.js:143
msgid "High Contrast"
msgstr "Vysoký kontrast"
#: ../js/ui/status/accessibility.js:193
#: ../js/ui/status/accessibility.js:192
msgid "Large Text"
msgstr "Styl velkého textu"
@ -1410,8 +1410,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
msgid "Turn Off"
msgstr "Vypnout"
@ -1471,37 +1471,37 @@ msgstr "Připojeno"
#. 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) */
#: ../js/ui/status/network.js:426
msgid "Unmanaged"
msgstr "Nespravováno"
msgid "unmanaged"
msgstr "nespravováno"
#: ../js/ui/status/network.js:428
msgid "Disconnecting"
msgstr "Odpojuje se…"
msgid "disconnecting..."
msgstr "odpojování…"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Připojuje se…"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "připojování…"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437
msgid "Authentication required"
msgstr "Je vyžadováno ověření"
#: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "je vyžadováno ověření"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:445
msgid "Firmware missing"
msgstr "Schází firmware"
msgid "firmware missing"
msgstr "nedostupný firmware"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449
msgid "Unavailable"
msgstr "Nedostupné"
msgid "unavailable"
msgstr "nedostupné"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Připojení selhalo"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "připojení selhalo"
#: ../js/ui/status/network.js:467
msgid "Wired Settings"
@ -1555,7 +1555,7 @@ msgstr "Vyberte síť"
msgid "No Networks"
msgstr "Žádné sítě"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off"
msgstr "K vypnutí použijte fyzický vypínač"
@ -1575,20 +1575,11 @@ msgstr "Zapnout"
msgid "Hotspot Active"
msgstr "Hotspot aktivní"
#: ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "připojování…"
#: ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Připojuje se…"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "je vyžadováno ověření"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "připojení selhalo"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings"
msgstr "Nastavení sítě"
@ -1604,6 +1595,10 @@ msgstr "VPN"
msgid "Network Manager"
msgstr "Network Manager"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Připojení selhalo"
#: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed"
msgstr "Aktivace síťového připojení selhala"
@ -1638,31 +1633,31 @@ msgstr "Záložní zdroj"
msgid "Battery"
msgstr "Baterie"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode"
msgstr "Režim „letadlo“"
#: ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Zapnuto"
#: ../js/ui/status/system.js:317
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "Přepnout uživatele"
#: ../js/ui/status/system.js:322
#: ../js/ui/status/system.js:319
msgid "Log Out"
msgstr "Odhlásit se"
#: ../js/ui/status/system.js:341
#: ../js/ui/status/system.js:338
msgid "Orientation Lock"
msgstr "Zámek otočení"
#: ../js/ui/status/system.js:349
#: ../js/ui/status/system.js:346
msgid "Suspend"
msgstr "Uspat do paměti"
#: ../js/ui/status/system.js:352
#: ../js/ui/status/system.js:349
msgid "Power Off"
msgstr "Vypnout"
@ -1699,22 +1694,22 @@ msgstr "Hledat"
msgid "“%s” is ready"
msgstr "Připraveno „%s“"
#: ../js/ui/windowManager.js:57
#: ../js/ui/windowManager.js:56
msgid "Do you want to keep these display settings?"
msgstr "Chcete zachovat nastavení displeje?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#. */
#: ../js/ui/windowManager.js:76
#: ../js/ui/windowManager.js:75
msgid "Revert Settings"
msgstr "Obnovit původní"
#: ../js/ui/windowManager.js:80
#: ../js/ui/windowManager.js:79
msgid "Keep Changes"
msgstr "Zachovat"
#: ../js/ui/windowManager.js:99
#: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1722,46 +1717,6 @@ msgstr[0] "Nastavení se obnoví na původní za %d sekundu"
msgstr[1] "Nastavení se obnoví na původní za %d sekundy"
msgstr[2] "Nastavení se obnoví na původní za %d sekund"
#: ../js/ui/windowMenu.js:33
msgid "Minimize"
msgstr "Minimalizovat"
#: ../js/ui/windowMenu.js:40
msgid "Unmaximize"
msgstr "Zrušit maximalizaci"
#: ../js/ui/windowMenu.js:44
msgid "Maximize"
msgstr "Maximalizovat"
#: ../js/ui/windowMenu.js:51
msgid "Move"
msgstr "Přesunout"
#: ../js/ui/windowMenu.js:57
msgid "Resize"
msgstr "Změnit velikost"
#: ../js/ui/windowMenu.js:64
msgid "Move Titlebar Onscreen"
msgstr ""
#: ../js/ui/windowMenu.js:69
msgid "Always on Top"
msgstr "Vždy nahoře"
#: ../js/ui/windowMenu.js:86
msgid "Always on Visible Workspace"
msgstr "Vždy na viditelné ploše"
#: ../js/ui/windowMenu.js:103
msgid "Move to Workspace Up"
msgstr "Přesunout o plochu výš"
#: ../js/ui/windowMenu.js:108
msgid "Move to Workspace Down"
msgstr "Přesunout o plochu níž"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar"
msgstr "Kalendář Evolution"
@ -1819,6 +1774,6 @@ msgstr "Hesla si neodpovídají."
msgid "Password cannot be blank"
msgstr "Heslo nemůže být prázdné."
#: ../src/shell-polkit-authentication-agent.c:346
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Dialogové okno ověření bylo uživatelem zrušeno"

470
po/da.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

422
po/es.po

File diff suppressed because it is too large Load Diff

290
po/gl.po
View File

@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-04-30 15:34+0200\n"
"PO-Revision-Date: 2014-04-30 15:34+0200\n"
"POT-Creation-Date: 2014-03-31 23:35+0200\n"
"PO-Revision-Date: 2014-03-31 23:35+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: gnome-l10n-gl@gnome.org\n"
"Language: gl\n"
@ -340,25 +340,25 @@ msgstr "Escolla unha sesión"
msgid "Not listed?"
msgstr "Non está na lista?"
#: ../js/gdm/loginDialog.js:616
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(p.ex., usuario ou %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Nome de usuario: "
#: ../js/gdm/loginDialog.js:924
#: ../js/gdm/loginDialog.js:920
msgid "Login Window"
msgstr "Xanela de inicio de sesión"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:322
msgid "Authentication error"
msgstr "Erro de autenticación"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:452
msgid "(or swipe finger)"
msgstr "(ou pase o dedo)"
@ -375,27 +375,27 @@ msgstr "Non foi posíbel analizar a orde:"
msgid "Execution of “%s” failed:"
msgstr "Produciuse un fallo na execución de «%s»:"
#: ../js/ui/appDisplay.js:640
#: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here"
msgstr "Os aplicativos usados recentemente aparecerán aquí"
#: ../js/ui/appDisplay.js:751
#: ../js/ui/appDisplay.js:747
msgid "Frequent"
msgstr "Frecuentes"
#: ../js/ui/appDisplay.js:758
#: ../js/ui/appDisplay.js:754
msgid "All"
msgstr "Todos"
#: ../js/ui/appDisplay.js:1571
#: ../js/ui/appDisplay.js:1566
msgid "New Window"
msgstr "Xanela nova"
#: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Retirar dos marcadores"
#: ../js/ui/appDisplay.js:1599
#: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites"
msgstr "Engadir aos favoritos"
@ -409,7 +409,7 @@ msgstr "%s foi engadido aos seus favoritos."
msgid "%s has been removed from your favorites."
msgstr "%s retirouse dos seus marcadores."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:334
msgid "Settings"
msgstr "Preferencias"
@ -421,14 +421,14 @@ msgstr "Cambiar fondo de escritorio…"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:67
#: ../js/ui/calendar.js:64
msgctxt "event list time"
msgid "All Day"
msgstr "Todo o día"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73
#: ../js/ui/calendar.js:70
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
@ -436,7 +436,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:82
#: ../js/ui/calendar.js:79
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
@ -446,43 +446,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:110
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:112
msgctxt "grid monday"
msgid "M"
msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:114
msgctxt "grid tuesday"
msgid "T"
msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:116
msgctxt "grid wednesday"
msgid "W"
msgstr "W"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:118
msgctxt "grid thursday"
msgid "T"
msgstr "X"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:120
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:122
msgctxt "grid saturday"
msgid "S"
msgstr "S"
@ -493,93 +493,97 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#: ../js/ui/calendar.js:138
#: ../js/ui/calendar.js:135
msgctxt "list sunday"
msgid "Su"
msgstr "Do"
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140
#: ../js/ui/calendar.js:137
msgctxt "list monday"
msgid "M"
msgstr "L"
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:139
msgctxt "list tuesday"
msgid "T"
msgstr "M"
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:141
msgctxt "list wednesday"
msgid "W"
msgstr "W"
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:143
msgctxt "list thursday"
msgid "Th"
msgstr "X"
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:145
msgctxt "list friday"
msgid "F"
msgstr "V"
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:147
msgctxt "list saturday"
msgid "S"
msgstr "S"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
msgid "Previous month"
msgstr "Anterior mes"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:460
msgid "Next month"
msgstr "Seguinte mes"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:775
#: ../js/ui/calendar.js:772
msgid "Nothing Scheduled"
msgstr "Nada programado"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:793
#: ../js/ui/calendar.js:790
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:796
#: ../js/ui/calendar.js:793
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y"
#: ../js/ui/calendar.js:807
#: ../js/ui/calendar.js:804
msgid "Today"
msgstr "Hoxe"
#: ../js/ui/calendar.js:811
#: ../js/ui/calendar.js:808
msgid "Tomorrow"
msgstr "Mañá"
#: ../js/ui/calendar.js:822
#: ../js/ui/calendar.js:819
msgid "This week"
msgstr "Esta semana"
#: ../js/ui/calendar.js:830
#: ../js/ui/calendar.js:827
msgid "Next week"
msgstr "A vindeira semana"
#: ../js/ui/components/automountManager.js:91
#: ../js/ui/components/automountManager.js:90
msgid "External drive connected"
msgstr "Unidade externa conectada"
#: ../js/ui/components/automountManager.js:102
#: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected"
msgstr "Unidade externa desconectada"
@ -724,77 +728,77 @@ msgid "Mute"
msgstr "Silenciar"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "Onte, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A ás %H:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%d de %B ás %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%d de %B de %Y ás %H:%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994
#: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p"
msgstr "%l:%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001
#: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p"
msgstr "Onte, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008
#: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015
#: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p"
msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021
#: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1054
#: ../js/ui/components/telepathyClient.js:1051
#, javascript-format
msgid "%s is now known as %s"
msgstr "Agora %s chámase %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158
#: ../js/ui/components/telepathyClient.js:1154
#, javascript-format
msgid "Invitation to %s"
msgstr "Convite a %s"
@ -802,38 +806,38 @@ msgstr "Convite a %s"
#. 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
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1166
#: ../js/ui/components/telepathyClient.js:1162
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s estalle convidando a unirse a %s"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1291
msgid "Decline"
msgstr "Rexeitar"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1296
msgid "Accept"
msgstr "Aceptar"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Video call from %s"
msgstr "Videochamada de %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1192
#, javascript-format
msgid "Call from %s"
msgstr "Chamada de %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210
#: ../js/ui/components/telepathyClient.js:1206
msgid "Answer"
msgstr "Responder"
@ -842,112 +846,112 @@ msgstr "Responder"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1231
#: ../js/ui/components/telepathyClient.js:1227
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s esta enviándolle %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260
#: ../js/ui/components/telepathyClient.js:1256
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s solicítalle permiso para ver cando está en liña"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1342
msgid "Network error"
msgstr "Erro da rede"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed"
msgstr "Fallou a autenticación"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error"
msgstr "Erro de cifrado"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided"
msgstr "Certificado non fornecido"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted"
msgstr "Non se confía no certificado"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired"
msgstr "Certificado caducado"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated"
msgstr "Certificado non activado"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch"
msgstr "O nome do servidor do certificado non coincide"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch"
msgstr "A pegada do certificado non coincide"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed"
msgstr "Certificado autoasinado"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline"
msgstr "O estado está definido a «desconectado»"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available"
msgstr "O cifrado non está dispoñíbel"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid"
msgstr "O certificado non é válido"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused"
msgstr "Rexeitouse a conexión"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established"
msgstr "Non é posíbel estabelecer a conexión"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost"
msgstr "Perdeuse a conexión"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server"
msgstr "Esta cuenta xa está conectada ao servidor"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1376
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Substituíuse a conexión por unha nova conexión empregando o mesmo recurso"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server"
msgstr "Esta conta xa existe no servidor"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection"
msgstr ""
"Nestes intres o servidor está moi ocupado tentando xestionar a conexión"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked"
msgstr "Revogouse o certificado"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1384
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"O certificado usa un algoritmo de cifrado inseguro ou é criptográficamente "
"débil"
#: ../js/ui/components/telepathyClient.js:1390
#: ../js/ui/components/telepathyClient.js:1386
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -956,22 +960,22 @@ msgstr ""
"certificado do servidor excede os límites impostos pola biblioteca de "
"criptografía."
#: ../js/ui/components/telepathyClient.js:1392
#: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error"
msgstr "Erro interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1398
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Non foi posíbel conectarse a %s"
#: ../js/ui/components/telepathyClient.js:1407
#: ../js/ui/components/telepathyClient.js:1403
msgid "View account"
msgstr "Ver conta"
#: ../js/ui/components/telepathyClient.js:1444
#: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason"
msgstr "Razón descoñecida"
@ -987,22 +991,22 @@ msgstr "Mostrar aplicativos"
msgid "Dash"
msgstr "Taboleiro"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:91
msgid "Open Calendar"
msgstr "Abrir Calendario"
#: ../js/ui/dateMenu.js:101
#: ../js/ui/dateMenu.js:95
msgid "Open Clocks"
msgstr "Abrir Reloxos"
#: ../js/ui/dateMenu.js:108
#: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings"
msgstr "Preferencias de data e hora"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:205
#: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y"
msgstr "%a, %e de %B, %Y"
@ -1125,13 +1129,13 @@ msgid "Other users are logged in."
msgstr "Hai outros usuarios conectados."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:618
#, javascript-format
msgid "%s (remote)"
msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:621
#, javascript-format
msgid "%s (console)"
msgstr "%s (consola)"
@ -1145,7 +1149,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard"
msgstr "Teclado"
@ -1233,11 +1237,11 @@ msgstr "Non hai mensaxes"
msgid "Message Tray"
msgstr "Bandexa de mensaxes"
#: ../js/ui/messageTray.js:2967
#: ../js/ui/messageTray.js:2962
msgid "System Information"
msgstr "Información do sistema"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425
#: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Descoñecido"
@ -1275,7 +1279,7 @@ msgstr "Saír"
msgid "Activities"
msgstr "Actividades"
#: ../js/ui/panel.js:915
#: ../js/ui/panel.js:914
msgid "Top Bar"
msgstr "Barra superior"
@ -1312,19 +1316,19 @@ msgstr "Bloquear"
msgid "GNOME needs to lock the screen"
msgstr "GNOME precisa bloquear a pantalla"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock"
msgstr "Non foi posíbel bloquear"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application"
msgstr "Un aplicativo impediu o bloqueo"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:603
msgid "Searching…"
msgstr "Buscando…"
#: ../js/ui/search.js:652
#: ../js/ui/search.js:649
msgid "No results."
msgstr "Sen resultados."
@ -1388,11 +1392,11 @@ msgstr "Rexeite de teclas"
msgid "Mouse Keys"
msgstr "Teclas do rato"
#: ../js/ui/status/accessibility.js:144
#: ../js/ui/status/accessibility.js:143
msgid "High Contrast"
msgstr "Contraste alto"
#: ../js/ui/status/accessibility.js:193
#: ../js/ui/status/accessibility.js:192
msgid "Large Text"
msgstr "Texto grande"
@ -1462,37 +1466,37 @@ msgstr "Conectado"
#. 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) */
#: ../js/ui/status/network.js:426
msgid "Unmanaged"
msgstr "Sen xestionar"
msgid "unmanaged"
msgstr "non xestionada"
#: ../js/ui/status/network.js:428
msgid "Disconnecting"
msgstr "Desconectando…"
msgid "disconnecting..."
msgstr "desconectando…"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Conectando"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "conectando"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437
msgid "Authentication required"
msgstr "Requírese autenticación"
#: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "requírese autenticación"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:445
msgid "Firmware missing"
msgstr "Falta o «firmware»"
msgid "firmware missing"
msgstr "falta o «firmware»"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449
msgid "Unavailable"
msgstr "Non dispoñíbel"
msgid "unavailable"
msgstr "non dispoñíbel"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Produciuse un fallo na conexión"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "conexión fallada"
#: ../js/ui/status/network.js:467
msgid "Wired Settings"
@ -1566,18 +1570,9 @@ msgstr "Activar"
msgid "Hotspot Active"
msgstr "Punto wifi activo"
#: ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "conectando"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "requírese autenticación"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "conexión fallada"
#: ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Conectando"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings"
@ -1595,6 +1590,10 @@ msgstr "VPN"
msgid "Network Manager"
msgstr "Xestor da rede"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Produciuse un fallo na conexión"
#: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed"
msgstr "Produciuse un fallo na activación da conexión de rede"
@ -1705,7 +1704,7 @@ msgstr "Reverter preferencias"
msgid "Keep Changes"
msgstr "Manter cambios"
#: ../js/ui/windowManager.js:98
#: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1769,16 +1768,10 @@ msgstr "Os contrasinais non coinciden."
msgid "Password cannot be blank"
msgstr "O contrasinal non pode estar baleiro"
#: ../src/shell-polkit-authentication-agent.c:346
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "O usuario rexeitou o diálogo de autenticación"
#~ msgid "calendar:MY"
#~ msgstr "calendar:MY"
#~ msgid "unavailable"
#~ msgstr "non dispoñíbel"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H\\u2236%M"
@ -2226,6 +2219,9 @@ msgstr "O usuario rexeitou o diálogo de autenticación"
#~ msgid "VPN Connections"
#~ msgstr "Conexións VPN"
#~ msgid "Unavailable"
#~ msgstr "Non dispoñíbel"
#~ msgid "System Settings"
#~ msgstr "Preferencias do sistema"

393
po/he.po
View File

@ -1,17 +1,16 @@
# Hebrew translation for gnome-shell.
# Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
# liel <lielft@gmail.com>, 2009.
# Yaron Shahrabani <sh.yaron@gmail.com>, 2010.
#
# Yosef Or Boczko <yoseforb@gnome.org>, 2013, 2014.
# Hebrew translation for gnome-shell.
# Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
# liel <lielft@gmail.com>, 2009.
# Yaron Shahrabani <sh.yaron@gmail.com>, 2010.
# Yosef Or Boczko <yoseforb@gnome.org>, 2013, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-05-22 23:44+0300\n"
"POT-Creation-Date: 2014-03-27 20:22+0200\n"
"PO-Revision-Date: 2014-03-27 20:24+0200\n"
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: עברית <>\n"
"Language: he\n"
@ -332,25 +331,25 @@ msgstr "בחירת הפעלה"
msgid "Not listed?"
msgstr "לא רשום?"
#: ../js/gdm/loginDialog.js:611
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(משתמש או %s לדוגמה)"
#: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "שם משתמש:"
#: ../js/gdm/loginDialog.js:917
msgid "Login Window"
msgstr "חלון כניסה"
#: ../js/gdm/util.js:322
msgid "Authentication error"
msgstr "שגיאת אימות"
#: ../js/gdm/util.js:452
msgid "(or swipe finger)"
msgstr "(או להעביר אצבע)"
@ -367,34 +366,30 @@ msgstr "לא ניתן לפענח את הפקודה:"
msgid "Execution of “%s” failed:"
msgstr "ההרצה של „%s” נכשלה:"
#: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here"
msgstr "יישומים בשימוש תדיר יופיעו כאן"
#: ../js/ui/appDisplay.js:747
msgid "Frequent"
msgstr "תדיר"
#: ../js/ui/appDisplay.js:754
msgid "All"
msgstr "הכול"
#: ../js/ui/appDisplay.js:1566
msgid "New Window"
msgstr "חלון חדש"
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "הסרה מהמועדפים"
#: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites"
msgstr "הוספה למועדפים"
#: ../js/ui/appDisplay.js:1608
msgid "Show Details"
msgstr "הצגת פרטים"
#: ../js/ui/appFavorites.js:87
#, javascript-format
msgid "%s has been added to your favorites."
@ -405,8 +400,8 @@ msgstr "%s נוסף למועדפים שלך."
msgid "%s has been removed from your favorites."
msgstr "%s הוסר מהמועדפים שלך."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:334
msgid "Settings"
msgstr "הגדרות"
@ -417,22 +412,22 @@ msgstr "החלפת הרקע…"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#. */
#: ../js/ui/calendar.js:64
msgctxt "event list time"
msgid "All Day"
msgstr "יום שלם"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:70
msgctxt "event list time"
msgid "%H%M"
msgid "%H%M"
msgstr "%H\\u2236%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#. a thin space */
#: ../js/ui/calendar.js:79
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l\\u2236%M%p"
@ -442,43 +437,43 @@ msgstr "%l\\u2236%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#. */
#: ../js/ui/calendar.js:110
msgctxt "grid sunday"
msgid "S"
msgstr "א"
#. Translators: Calendar grid abbreviation for Monday */
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:112
msgctxt "grid monday"
msgid "M"
msgstr "ב"
#. Translators: Calendar grid abbreviation for Tuesday */
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:114
msgctxt "grid tuesday"
msgid "T"
msgstr "ג"
#. Translators: Calendar grid abbreviation for Wednesday */
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:116
msgctxt "grid wednesday"
msgid "W"
msgstr "ד"
#. Translators: Calendar grid abbreviation for Thursday */
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:118
msgctxt "grid thursday"
msgid "T"
msgstr "ה"
#. Translators: Calendar grid abbreviation for Friday */
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:120
msgctxt "grid friday"
msgid "F"
msgstr "ו"
#. Translators: Calendar grid abbreviation for Saturday */
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:122
msgctxt "grid saturday"
msgid "S"
msgstr "ש"
@ -489,93 +484,97 @@ msgstr "ש"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#. */
#: ../js/ui/calendar.js:135
msgctxt "list sunday"
msgid "Su"
msgstr "א׳"
#. Translators: Event list abbreviation for Monday */
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:137
msgctxt "list monday"
msgid "M"
msgstr "ב׳"
#. Translators: Event list abbreviation for Tuesday */
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:139
msgctxt "list tuesday"
msgid "T"
msgstr "ג׳"
#. Translators: Event list abbreviation for Wednesday */
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:141
msgctxt "list wednesday"
msgid "W"
msgstr "ד׳"
#. Translators: Event list abbreviation for Thursday */
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:143
msgctxt "list thursday"
msgid "Th"
msgstr "ה"
#. Translators: Event list abbreviation for Friday */
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:145
msgctxt "list friday"
msgid "F"
msgstr "ו׳"
#. Translators: Event list abbreviation for Saturday */
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:147
msgctxt "list saturday"
msgid "S"
msgstr "ש׳"
#: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:YM"
#: ../js/ui/calendar.js:450
msgid "Previous month"
msgstr "חודש קודם"
#: ../js/ui/calendar.js:460
msgid "Next month"
msgstr "חודש הבא"
#. Translators: Text to show if there are no events */
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:772
msgid "Nothing Scheduled"
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:790
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, ה־%e ב%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:793
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, ה־%e ב%B, %Y"
#: ../js/ui/calendar.js:804
msgid "Today"
msgstr "היום"
#: ../js/ui/calendar.js:808
msgid "Tomorrow"
msgstr "מחר"
#: ../js/ui/calendar.js:819
msgid "This week"
msgstr "השבוע"
#: ../js/ui/calendar.js:827
msgid "Next week"
msgstr "בשבוע הבא"
#: ../js/ui/components/automountManager.js:90
msgid "External drive connected"
msgstr "חובר כונן חיצוני"
#: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected"
msgstr "נותק כונן חיצוני"
@ -718,77 +717,77 @@ msgid "Mute"
msgstr "השתקה"
#. Translators: Time in 24h format */
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H:%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "אתמול, %H\\u2236%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A, %H:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%d ב%B, %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%d ב%B, %H:%M"
#. Translators: Time in 24h format */
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p"
msgstr "%l:%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p"
msgstr "אתמול, %l\\u2236%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p"
msgstr "%l:%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p"
msgstr "%d ב%B, %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p"
msgstr "%d ב%B %Y, %l\\u2236%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1051
#, javascript-format
msgid "%s is now known as %s"
msgstr "השם של %s הוחלף ל־%s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1154
#, javascript-format
msgid "Invitation to %s"
msgstr "הזמנה ל־%s"
@ -796,38 +795,38 @@ msgstr "הזמנה ל־%s"
#. 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
#. * for example. */
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1162
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "הוזמנת על ידי %s להצטרף אל %s"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "דחייה"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
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:1189
#, javascript-format
msgid "Video call from %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:1192
#, javascript-format
msgid "Call from %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:1206
msgid "Answer"
msgstr "מענה"
@ -836,108 +835,108 @@ msgstr "מענה"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#. */
#: ../js/ui/components/telepathyClient.js:1227
#, javascript-format
msgid "%s is sending you %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:1256
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
#: ../js/ui/components/telepathyClient.js:1341
msgid "Network error"
msgstr "שגיאת רשת"
#: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed"
msgstr "האימות נכשל"
#: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error"
msgstr "שגיאת הצפנה"
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided"
msgstr "לא סופק אישור"
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted"
msgstr "האישור אינו מהימן"
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired"
msgstr "האישור פג"
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated"
msgstr "האישור לא מופעל"
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch"
msgstr "שם המארח באישור אינו תואם"
#: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch"
msgstr "חוסר התאמה בטביעת האצבע של האישור"
#: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed"
msgstr "אישור בחתימה עצמית"
#: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline"
msgstr "המצב הוגדר ל'מנותק'"
#: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available"
msgstr "ההצפנה אינה זמינה"
#: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid"
msgstr "האישור אינו תקף"
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused"
msgstr "ההתחברות נשללה"
#: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established"
msgstr "לא ניתן להפעיל את החיבור"
#: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost"
msgstr "החיבור אבד"
#: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server"
msgstr "חשבון זה כבר מחובר לשרת"
#: ../js/ui/components/telepathyClient.js:1375
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב"
#: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server"
msgstr "החשבון כבר קיים בשרת"
#: ../js/ui/components/telepathyClient.js:1379
msgid "Server is currently too busy to handle the connection"
msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור"
#: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked"
msgstr "האישור נשלל"
#: ../js/ui/components/telepathyClient.js:1383
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה"
#: ../js/ui/components/telepathyClient.js:1385
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -945,22 +944,22 @@ msgstr ""
"אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי "
"ספריית ההצפנה"
#: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error"
msgstr "שגיאה פנימית"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1397
#, javascript-format
msgid "Unable to connect to %s"
msgstr "לא ניתן להתחבר אל %s"
#: ../js/ui/components/telepathyClient.js:1402
msgid "View account"
msgstr "צפייה בחשבון"
#: ../js/ui/components/telepathyClient.js:1439
msgid "Unknown reason"
msgstr "סיבה לא ידועה"
@ -976,22 +975,22 @@ msgstr "הצגת יישומים"
msgid "Dash"
msgstr "חלונית"
#: ../js/ui/dateMenu.js:91
msgid "Open Calendar"
msgstr "פתיחת היומן"
#: ../js/ui/dateMenu.js:95
msgid "Open Clocks"
msgstr "פתיחת השעונים"
#: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings"
msgstr "הגדרות תאריך ושעה"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#. */
#: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y"
msgstr "%A ה־%e ב%B, %Y"
@ -1110,13 +1109,13 @@ msgid "Other users are logged in."
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:618
#, javascript-format
msgid "%s (remote)"
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:621
#, javascript-format
msgid "%s (console)"
msgstr "%s (מסוף)"
@ -1130,7 +1129,7 @@ msgstr "התקנה"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "הורדה והתקנה של „%s” מ־extensions.gnome.org?"
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard"
msgstr "מקלדת"
@ -1218,17 +1217,17 @@ msgstr "אין הודעות"
msgid "Message Tray"
msgstr "אזור דיווח ההודעות"
#: ../js/ui/messageTray.js:2962
msgid "System Information"
msgstr "פרטי המערכת"
#: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "לא ידוע"
# javascript-format
# javascript-format
#: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
@ -1261,7 +1260,7 @@ msgstr "יציאה"
msgid "Activities"
msgstr "פעילויות"
#: ../js/ui/panel.js:914
msgid "Top Bar"
msgstr "הסרגל העליון"
@ -1273,7 +1272,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "נא להזין פקודה"
#: ../js/ui/runDialog.js:114
msgid "Close"
msgstr "סגירה"
@ -1283,7 +1282,7 @@ msgstr "סגירה"
msgid "%A, %B %d"
msgstr "%A, ה־%d ב%B"
# javascript-format
#: ../js/ui/screenShield.js:153
#, c-format
msgid "%d new notification"
@ -1291,7 +1290,7 @@ msgid_plural "%d new notifications"
msgstr[0] "התרעה חדשה אחת"
msgstr[1] "%d התרעות חדשות"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock"
msgstr "נעילה"
@ -1299,19 +1298,19 @@ msgstr "נעילה"
msgid "GNOME needs to lock the screen"
msgstr "על GNOME לנעול את המסך"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock"
msgstr "לא ניתן לנעול"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application"
msgstr "הנעילה נחסמה ע״י היישום"
#: ../js/ui/search.js:603
msgid "Searching…"
msgstr "בחיפוש…"
#: ../js/ui/search.js:649
msgid "No results."
msgstr "אין תוצאות."
@ -1375,11 +1374,11 @@ msgstr "מקשים קופצים"
msgid "Mouse Keys"
msgstr "מקשי עכבר"
#: ../js/ui/status/accessibility.js:143
msgid "High Contrast"
msgstr "ניגודיות גבוהה"
#: ../js/ui/status/accessibility.js:192
msgid "Large Text"
msgstr "טקסט גדול"
@ -1389,8 +1388,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
msgid "Turn Off"
msgstr "כיבוי"
@ -1398,7 +1397,7 @@ msgstr "כיבוי"
msgid "Bluetooth Settings"
msgstr "הגדרות Bluetooth"
# javascript-format
#: ../js/ui/status/bluetooth.js:104
#, c-format
msgid "%d Connected Device"
@ -1450,37 +1449,37 @@ msgstr "מחובר"
#. 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) */
#: ../js/ui/status/network.js:426
#: ../js/ui/status/network.js:426
msgid "unmanaged"
msgstr "לא מנוהל"
#: ../js/ui/status/network.js:428
#: ../js/ui/status/network.js:428
msgid "Disconnecting"
msgid "disconnecting..."
msgstr "בהליכי ניתוק..."
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254
msgid "Connecting"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "connecting..."
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:437
#: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "נדרש אימות"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:445
#: ../js/ui/status/network.js:445
msgid "firmware missing"
msgstr "הקושחה חסרה"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449
#: ../js/ui/status/network.js:449
msgid "unavailable"
msgstr "לא זמין"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646
msgid "Connection failed"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "החיבור נכשל"
#: ../js/ui/status/network.js:467
msgid "Wired Settings"
@ -1534,7 +1533,7 @@ msgstr "בחירת רשת"
msgid "No Networks"
msgstr "אין רשתות"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off"
msgstr "שימוש במתג של החומרה לכיבוי"
@ -1554,20 +1553,11 @@ msgstr "הפעלה"
msgid "Hotspot Active"
msgstr "נקודה חמה פעילה"
#: ../js/ui/status/network.js:1362
msgid "connecting..."
#: ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "מתחבר"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "נדרש אימות"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "ההתחברות נכשלה"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings"
msgstr "הגדרות הרשת"
@ -1583,6 +1573,10 @@ msgstr "VPN"
msgid "Network Manager"
msgstr "מנהל הרשתות"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "ההתחברות נכשל"
#: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed"
msgstr "הפעלת חיבור הרשת נכשלה"
@ -1600,14 +1594,14 @@ msgid "Estimating…"
msgstr "מתבצע שערוך…"
#: ../js/ui/status/power.js:86
#: ../js/ui/status/power.js:86
#, c-format
msgid "%d%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)"
msgstr "%d\\u2236%02d נותרו (%d%%)"
#: ../js/ui/status/power.js:91
#: ../js/ui/status/power.js:91
#, c-format
msgid "%d%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)"
msgstr "%d\\u2236%02d עד לטעינה מלאה (%d%%)"
#: ../js/ui/status/power.js:119
msgid "UPS"
@ -1617,31 +1611,31 @@ msgstr "אל־פסק"
msgid "Battery"
msgstr "סוללה"
#: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode"
msgstr "מצב טיסה"
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "פועל"
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "החלפת משתמש"
#: ../js/ui/status/system.js:319
msgid "Log Out"
msgstr "יציאה"
#: ../js/ui/status/system.js:338
msgid "Orientation Lock"
msgstr "נעילת כיוון"
#: ../js/ui/status/system.js:346
msgid "Suspend"
msgstr "השהיה"
#: ../js/ui/status/system.js:349
msgid "Power Off"
msgstr "כיבוי"
@ -1678,69 +1672,29 @@ msgstr "חיפוש"
msgid "“%s” is ready"
msgstr "‏„%s” מוכן"
#: ../js/ui/windowManager.js:56
msgid "Do you want to keep these display settings?"
msgstr "האם ברצונך לשמור הגדרות תצוגה אלה?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#. */
#. */
#: ../js/ui/windowManager.js:75
msgid "Revert Settings"
msgstr "שחזור הגדרות"
#: ../js/ui/windowManager.js:79
msgid "Keep Changes"
msgstr "שמירת שינויים"
# javascript-format
# javascript-format
#: ../js/ui/windowManager.js:97
#, c-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "שינויי הגדרות ישוחזרו בעוד שנייה"
msgstr[1] "שינויי הגדרות ישוחזרו בעוד %d שניות"
#: ../js/ui/windowMenu.js:33
msgid "Minimize"
msgstr "מזעור"
#: ../js/ui/windowMenu.js:40
msgid "Unmaximize"
msgstr "ביטול הגדלה"
#: ../js/ui/windowMenu.js:44
msgid "Maximize"
msgstr "הגדלה"
#: ../js/ui/windowMenu.js:51
msgid "Move"
msgstr "הזזה"
#: ../js/ui/windowMenu.js:57
msgid "Resize"
msgstr "שינוי גודל"
#: ../js/ui/windowMenu.js:64
msgid "Move Titlebar Onscreen"
msgstr "הזזת שורת הכותרת על המסך"
#: ../js/ui/windowMenu.js:69
msgid "Always on Top"
msgstr "תמיד עליון"
#: ../js/ui/windowMenu.js:86
msgid "Always on Visible Workspace"
msgstr "הצגה בכל מרחבי העבודה"
#: ../js/ui/windowMenu.js:103
msgid "Move to Workspace Up"
msgstr "הזזה למרחב העבודה שמלמעלה"
#: ../js/ui/windowMenu.js:108
msgid "Move to Workspace Down"
msgstr "הזזה למרחב העבודה שמלמטה"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar"
msgstr "יומן אבולושן"
@ -1796,16 +1750,10 @@ msgstr "הססמאות אינן תואמות."
msgid "Password cannot be blank"
msgstr "הססמה לא יכולה להישאר ריקה"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "calendar:MY"
#~ msgstr "calendar:YM"
#~ msgid "unavailable"
#~ msgstr "לא זמין"
#~ msgctxt "event list time"
#~ msgid "%H\\u2236%M"
#~ msgstr "%H\\u2236%M"
@ -2259,6 +2207,9 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "VPN Connections"
#~ msgstr "חיבורי VPN"
#~ msgid "Unavailable"
#~ msgstr "לא זמין"
#~ msgid "System Settings"
#~ msgstr "הגדרות המערכת"

367
po/id.po
View File

@ -10,9 +10,9 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-22 07:28+0000\n"
"PO-Revision-Date: 2014-05-22 16:21+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"POT-Creation-Date: 2014-04-05 19:59+0000\n"
"PO-Revision-Date: 2014-04-09 05:35+0700\n"
"Last-Translator: Dirgita <dirgitadevina@yahoo.co.id>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 1.5.7\n"
"X-Generator: Lokalize 1.5\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -341,25 +341,25 @@ msgstr "Pilih Sesi"
msgid "Not listed?"
msgstr "Tak masuk daftar?"
#: ../js/gdm/loginDialog.js:616
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(cth., pengguna dari %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Nama pengguna: "
#: ../js/gdm/loginDialog.js:924
#: ../js/gdm/loginDialog.js:920
msgid "Login Window"
msgstr "Jendela Log Masuk"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:322
msgid "Authentication error"
msgstr "Galat otentikasi"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:452
msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)"
@ -376,34 +376,30 @@ msgstr "Tak dapat mengurai perintah:"
msgid "Execution of “%s” failed:"
msgstr "Eksekusi \"%s\" gagal:"
#: ../js/ui/appDisplay.js:640
#: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here"
msgstr "Aplikasi yang sering dipakai akan muncul di sini"
#: ../js/ui/appDisplay.js:751
#: ../js/ui/appDisplay.js:747
msgid "Frequent"
msgstr "Sering"
#: ../js/ui/appDisplay.js:758
#: ../js/ui/appDisplay.js:754
msgid "All"
msgstr "Semua"
#: ../js/ui/appDisplay.js:1571
#: ../js/ui/appDisplay.js:1566
msgid "New Window"
msgstr "Jendela Baru"
#: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Hapus dari Favorit"
#: ../js/ui/appDisplay.js:1599
#: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites"
msgstr "Tambah ke Favorit"
#: ../js/ui/appDisplay.js:1608
msgid "Show Details"
msgstr "Tampilkan Rincian"
#: ../js/ui/appFavorites.js:87
#, javascript-format
msgid "%s has been added to your favorites."
@ -414,8 +410,8 @@ msgstr "%s telah ditambahkan ke favorit Anda."
msgid "%s has been removed from your favorites."
msgstr "%s telah dihapus dari favorit Anda."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810
#: ../js/ui/status/system.js:337
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:334
msgid "Settings"
msgstr "Pengaturan"
@ -426,14 +422,14 @@ msgstr "Ubah Latar…"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:67
#: ../js/ui/calendar.js:64
msgctxt "event list time"
msgid "All Day"
msgstr "Sepanjang Hari"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73
#: ../js/ui/calendar.js:70
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
@ -441,7 +437,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:82
#: ../js/ui/calendar.js:79
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
@ -451,43 +447,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:110
msgctxt "grid sunday"
msgid "S"
msgstr "M"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:112
msgctxt "grid monday"
msgid "M"
msgstr "S"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:114
msgctxt "grid tuesday"
msgid "T"
msgstr "S"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:116
msgctxt "grid wednesday"
msgid "W"
msgstr "R"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:118
msgctxt "grid thursday"
msgid "T"
msgstr "K"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:120
msgctxt "grid friday"
msgid "F"
msgstr "J"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:122
msgctxt "grid saturday"
msgid "S"
msgstr "S"
@ -498,93 +494,97 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#: ../js/ui/calendar.js:138
#: ../js/ui/calendar.js:135
msgctxt "list sunday"
msgid "Su"
msgstr "Min"
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140
#: ../js/ui/calendar.js:137
msgctxt "list monday"
msgid "M"
msgstr "Sen"
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:139
msgctxt "list tuesday"
msgid "T"
msgstr "Sel"
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:141
msgctxt "list wednesday"
msgid "W"
msgstr "Rab"
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:143
msgctxt "list thursday"
msgid "Th"
msgstr "Kam"
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:145
msgctxt "list friday"
msgid "F"
msgstr "Jum"
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:147
msgctxt "list saturday"
msgid "S"
msgstr "Sab"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
msgid "Previous month"
msgstr "Bulan sebelumnya"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:460
msgid "Next month"
msgstr "Bulan selanjutnya"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:775
#: ../js/ui/calendar.js:772
msgid "Nothing Scheduled"
msgstr "Tak Ada Jadwal"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:793
#: ../js/ui/calendar.js:790
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:796
#: ../js/ui/calendar.js:793
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y"
#: ../js/ui/calendar.js:807
#: ../js/ui/calendar.js:804
msgid "Today"
msgstr "Hari ini"
#: ../js/ui/calendar.js:811
#: ../js/ui/calendar.js:808
msgid "Tomorrow"
msgstr "Besok"
#: ../js/ui/calendar.js:822
#: ../js/ui/calendar.js:819
msgid "This week"
msgstr "Minggu ini"
#: ../js/ui/calendar.js:830
#: ../js/ui/calendar.js:827
msgid "Next week"
msgstr "Minggu depan"
#: ../js/ui/components/automountManager.js:91
#: ../js/ui/components/automountManager.js:90
msgid "External drive connected"
msgstr "Drive eksternal tersambung"
#: ../js/ui/components/automountManager.js:102
#: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected"
msgstr "Drive eksternal terputus"
@ -729,77 +729,77 @@ msgid "Mute"
msgstr "Bisu"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "Kemarin, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994
#: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001
#: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p"
msgstr "Kemarin, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008
#: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015
#: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021
#: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1054
#: ../js/ui/components/telepathyClient.js:1051
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s sekarang dikenal sebagai %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158
#: ../js/ui/components/telepathyClient.js:1154
#, javascript-format
msgid "Invitation to %s"
msgstr "Undangan ke %s"
@ -807,38 +807,38 @@ msgstr "Undangan ke %s"
#. 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
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1166
#: ../js/ui/components/telepathyClient.js:1162
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s mengundang Anda untuk bergabung dengan %s"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1291
msgid "Decline"
msgstr "Tolak"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1296
msgid "Accept"
msgstr "Terima"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Video call from %s"
msgstr "Panggilan video dari %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1192
#, javascript-format
msgid "Call from %s"
msgstr "Panggilan dari %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210
#: ../js/ui/components/telepathyClient.js:1206
msgid "Answer"
msgstr "Jawab"
@ -847,111 +847,111 @@ msgstr "Jawab"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1231
#: ../js/ui/components/telepathyClient.js:1227
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s sedang mengirimi Anda %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260
#: ../js/ui/components/telepathyClient.js:1256
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s ingin minta izin melihat Anda ketika Anda daring"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1342
msgid "Network error"
msgstr "Galat jaringan"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed"
msgstr "Otentikasi gagal"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error"
msgstr "Galat enkripsi"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided"
msgstr "Sertifikat tidak disediakan"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted"
msgstr "Sertifikat tidak dipercaya"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired"
msgstr "Sertifikat kadaluarsa"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated"
msgstr "Sertifikat tidak diaktifkan"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch"
msgstr "Nama host sertifikat tidak cocok"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch"
msgstr "Sidik jari sertifikat tidak cocok"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed"
msgstr "Sertifikat ditandatangani sendiri"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline"
msgstr "Status diatur ke luring"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available"
msgstr "Enkripsi tidak tersedia"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid"
msgstr "Sertifikat tidak valid"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused"
msgstr "Koneksi telah ditolak"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established"
msgstr "Koneksi tak dapat dijalin"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost"
msgstr "Koneksi telah terputus"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server"
msgstr "Akun ini telah tersambung pada server"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1376
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Koneksi telah digantikan oleh koneksi baru memakai sumberdaya yang sama"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server"
msgstr "Akun ini sudah ada di server"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection"
msgstr "Server kini terlalu sibuk untuk menangani koneksi"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked"
msgstr "Sertifikat telah dicabut"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1384
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Sertifikat memakai algorima cipher yang tak aman atau lemah secara "
"kriptografi"
#: ../js/ui/components/telepathyClient.js:1390
#: ../js/ui/components/telepathyClient.js:1386
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -959,22 +959,22 @@ msgstr ""
"Panjang sertifikat server, atau kedalaman rantai sertifikat server, "
"melampaui batas yang diberlakukan oleh pustaka kriptografi"
#: ../js/ui/components/telepathyClient.js:1392
#: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error"
msgstr "Galat internal"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1398
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Tak bisa menyambung ke %s"
#: ../js/ui/components/telepathyClient.js:1407
#: ../js/ui/components/telepathyClient.js:1403
msgid "View account"
msgstr "Tilik akun"
#: ../js/ui/components/telepathyClient.js:1444
#: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason"
msgstr "Alasan yang tidak diketahui"
@ -990,22 +990,22 @@ msgstr "Tampilkan Aplikasi"
msgid "Dash"
msgstr "Dash"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:91
msgid "Open Calendar"
msgstr "Buka Kalender"
#: ../js/ui/dateMenu.js:101
#: ../js/ui/dateMenu.js:95
msgid "Open Clocks"
msgstr "Buka Jam"
#: ../js/ui/dateMenu.js:108
#: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings"
msgstr "Pengaturan Waktu & Tanggal"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:205
#: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y"
msgstr "%A, %e %B %Y"
@ -1122,13 +1122,13 @@ msgid "Other users are logged in."
msgstr "Pengguna lain sedang log masuk."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:618
#, javascript-format
msgid "%s (remote)"
msgstr "%s (jarak jauh)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:621
#, javascript-format
msgid "%s (console)"
msgstr "%s (konsol)"
@ -1142,7 +1142,7 @@ msgstr "Pasang"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard"
msgstr "Papan Ketik"
@ -1230,16 +1230,16 @@ msgstr "Tiada Pesan"
msgid "Message Tray"
msgstr "Baki Pesan"
#: ../js/ui/messageTray.js:2967
#: ../js/ui/messageTray.js:2962
msgid "System Information"
msgstr "Informasi Sistem"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425
#: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Tak dikenal"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151
#: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
@ -1271,7 +1271,7 @@ msgstr "Keluar"
msgid "Activities"
msgstr "Aktivitas"
#: ../js/ui/panel.js:915
#: ../js/ui/panel.js:914
msgid "Top Bar"
msgstr "Bar Atas"
@ -1284,7 +1284,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "Ketikkan Perintah"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:117
#: ../js/ui/runDialog.js:114
msgid "Close"
msgstr "Tutup"
@ -1300,7 +1300,7 @@ msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d pemberitahuan baru"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock"
msgstr "Kunci"
@ -1308,19 +1308,19 @@ msgstr "Kunci"
msgid "GNOME needs to lock the screen"
msgstr "GNOME perlu mengunci layar"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock"
msgstr "Tak bisa mengunci"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:603
msgid "Searching…"
msgstr "Mencari…"
#: ../js/ui/search.js:652
#: ../js/ui/search.js:649
msgid "No results."
msgstr "Tak ada yang cocok."
@ -1384,11 +1384,11 @@ msgstr "Tombol Pantul"
msgid "Mouse Keys"
msgstr "Tombol Tetikus"
#: ../js/ui/status/accessibility.js:144
#: ../js/ui/status/accessibility.js:143
msgid "High Contrast"
msgstr "Kontras Tinggi"
#: ../js/ui/status/accessibility.js:193
#: ../js/ui/status/accessibility.js:192
msgid "Large Text"
msgstr "Teks Besar"
@ -1398,8 +1398,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
msgid "Turn Off"
msgstr "Matikan"
@ -1457,37 +1457,37 @@ msgstr "Tersambung"
#. 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) */
#: ../js/ui/status/network.js:426
msgid "Unmanaged"
msgstr "Tak Dikelola"
msgid "unmanaged"
msgstr "tak dikelola"
#: ../js/ui/status/network.js:428
msgid "Disconnecting"
msgstr "Memutus"
msgid "disconnecting..."
msgstr "memutus..."
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Menyambung"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "menghubungi..."
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437
msgid "Authentication required"
msgstr "Diperlukan otentikasi"
#: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "diperlukan otentikasi"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:445
msgid "Firmware missing"
msgstr "Firmware hilang"
msgid "firmware missing"
msgstr "firmware hilang"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449
msgid "Unavailable"
msgstr "Tak tersedia"
msgid "unavailable"
msgstr "tidak tersedia"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Koneksi gagal"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "koneksi gagal"
#: ../js/ui/status/network.js:467
msgid "Wired Settings"
@ -1541,7 +1541,7 @@ msgstr "Pilih jaringan"
msgid "No Networks"
msgstr "Tiada Jaringan"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off"
msgstr "Pakai saklar perangkat keras untuk mematikan"
@ -1561,20 +1561,11 @@ msgstr "Nyalakan"
msgid "Hotspot Active"
msgstr "Hotspot Aktif"
#: ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "menghubungi..."
#: ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Menyambung"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "diperlukan otentikasi"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "koneksi gagal"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings"
msgstr "Pengaturan Jaringan"
@ -1590,6 +1581,10 @@ msgstr "VPN"
msgid "Network Manager"
msgstr "Manajer Jaringan"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Koneksi gagal"
#: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal"
@ -1624,31 +1619,31 @@ msgstr "UPS"
msgid "Battery"
msgstr "Baterai"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode"
msgstr "Mode Pesawat Terbang"
#: ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Nyala"
#: ../js/ui/status/system.js:317
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "Ganti Pengguna"
#: ../js/ui/status/system.js:322
#: ../js/ui/status/system.js:319
msgid "Log Out"
msgstr "Keluar"
#: ../js/ui/status/system.js:341
#: ../js/ui/status/system.js:338
msgid "Orientation Lock"
msgstr "Kunci Orientasi"
#: ../js/ui/status/system.js:349
#: ../js/ui/status/system.js:346
msgid "Suspend"
msgstr "Suspensi"
#: ../js/ui/status/system.js:352
#: ../js/ui/status/system.js:349
msgid "Power Off"
msgstr "Matikan"
@ -1685,67 +1680,27 @@ msgstr "Cari"
msgid "“%s” is ready"
msgstr "'%s' siap"
#: ../js/ui/windowManager.js:57
#: ../js/ui/windowManager.js:56
msgid "Do you want to keep these display settings?"
msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#. */
#: ../js/ui/windowManager.js:76
#: ../js/ui/windowManager.js:75
msgid "Revert Settings"
msgstr "Balikkan Tatanan"
#: ../js/ui/windowManager.js:80
#: ../js/ui/windowManager.js:79
msgid "Keep Changes"
msgstr "Simpan Perubahan"
#: ../js/ui/windowManager.js:99
#: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik"
#: ../js/ui/windowMenu.js:33
msgid "Minimize"
msgstr "Minimalkan"
#: ../js/ui/windowMenu.js:40
msgid "Unmaximize"
msgstr "Tak Maksimalkan"
#: ../js/ui/windowMenu.js:44
msgid "Maximize"
msgstr "Maksimalkan"
#: ../js/ui/windowMenu.js:51
msgid "Move"
msgstr "Pindah"
#: ../js/ui/windowMenu.js:57
msgid "Resize"
msgstr "Ubah Ukuran"
#: ../js/ui/windowMenu.js:64
msgid "Move Titlebar Onscreen"
msgstr "Pindahkan Bilah Judul Pada Layar"
#: ../js/ui/windowMenu.js:69
msgid "Always on Top"
msgstr "Selalu di Puncak"
#: ../js/ui/windowMenu.js:86
msgid "Always on Visible Workspace"
msgstr "Selalu pada Ruang Kerja yang Tampak"
#: ../js/ui/windowMenu.js:103
msgid "Move to Workspace Up"
msgstr "Pindah ke Ruang Kerja Atas"
#: ../js/ui/windowMenu.js:108
msgid "Move to Workspace Down"
msgstr "Pindah ke Ruang Kerja Bawah"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar"
msgstr "Evolution Kalender"
@ -1799,6 +1754,8 @@ msgstr "Sandi tidak cocok."
msgid "Password cannot be blank"
msgstr "Sandi tidak boleh kosong"
#: ../src/shell-polkit-authentication-agent.c:346
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Dialog otentikasi ditolak oleh pengguna"

View File

@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-05-27 19:20+0000\n"
"PO-Revision-Date: 2014-05-31 14:54+0100\n"
"POT-Creation-Date: 2014-04-06 07:54+0000\n"
"PO-Revision-Date: 2014-04-06 14:15+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italiano <tp@lists.linux.it>\n"
"Language: it\n"
@ -421,7 +421,7 @@ msgid "%s has been removed from your favorites."
msgstr "%s è stato rimosso dai preferiti."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:337
#: ../js/ui/status/system.js:334
msgid "Settings"
msgstr "Impostazioni"
@ -1076,7 +1076,7 @@ msgstr[1] "Il sistema verrà spento automaticamente tra %d secondi."
#: ../js/ui/endSessionDialog.js:93
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Installare gli aggiornamenti software in sospeso"
msgstr "Installa gli aggiornamenti software in sospeso"
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
msgctxt "button"
@ -1130,7 +1130,7 @@ msgstr "Installa e spegni"
#: ../js/ui/endSessionDialog.js:131
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Spegnere dopo aver installato gli aggiornamenti"
msgstr "Spegne dopo aver installato gli aggiornamenti"
#: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates."
@ -1167,7 +1167,7 @@ msgstr "Installa"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:339
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard"
msgstr "Tastiera"
@ -1328,7 +1328,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d nuova notifica"
msgstr[1] "%d nuove notifiche"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock"
msgstr "Blocca"
@ -1344,11 +1344,11 @@ msgstr "Impossibile bloccare"
msgid "Lock was blocked by an application"
msgstr "Il blocco è stato impedito da un'applicazione."
#: ../js/ui/search.js:606
#: ../js/ui/search.js:603
msgid "Searching…"
msgstr "Ricerca…"
#: ../js/ui/search.js:652
#: ../js/ui/search.js:649
msgid "No results."
msgstr "Nessun risultato."
@ -1427,8 +1427,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
msgid "Turn Off"
msgstr "Spegni"
@ -1451,7 +1451,7 @@ msgstr "Non collegato"
msgid "Brightness"
msgstr "Luminosità"
#: ../js/ui/status/keyboard.js:407
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Mostra disposizione tastiera"
@ -1461,13 +1461,15 @@ msgstr "Posizione"
# (ndt) o disabilitata?
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#| msgid "Disabled"
msgid "Disable"
msgstr "Disabilitato"
# (ndt) o abilitata?
#: ../js/ui/status/location.js:165
#| msgid "Enabled"
msgid "Enable"
msgstr "Abilita"
msgstr "Abilitato"
#: ../js/ui/status/location.js:167
msgid "In Use"
@ -1541,15 +1543,15 @@ msgstr "Usa come connessione a Internet"
#: ../js/ui/status/network.js:776
msgid "Airplane Mode is On"
msgstr "La modalità aereo è attiva"
msgstr "La modalità aero è attiva"
#: ../js/ui/status/network.js:777
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Il Wi-Fi è disabilitato quando la modalità aereo è attiva"
msgstr "Il Wi-Fi è disabilitato quando la modalità aero è attiva"
#: ../js/ui/status/network.js:778
msgid "Turn Off Airplane Mode"
msgstr "Disattiva modalità aereo"
msgstr "Disattiva modalità aero"
#: ../js/ui/status/network.js:787
msgid "Wi-Fi is Off"
@ -1575,7 +1577,7 @@ msgstr "Seleziona una rete"
msgid "No Networks"
msgstr "Nessuna rete"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off"
msgstr "Usare l'interruttore hardware per disattivare"
@ -1599,7 +1601,7 @@ msgstr "Hotspot attivo"
msgid "Connecting"
msgstr "Connessione"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings"
msgstr "Impostazioni rete"
@ -1654,31 +1656,31 @@ msgstr "UPS"
msgid "Battery"
msgstr "Batteria"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode"
msgstr "Modalità aereo"
msgstr "Modalità aero"
#: ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "On"
#: ../js/ui/status/system.js:317
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "Cambia utente"
#: ../js/ui/status/system.js:322
#: ../js/ui/status/system.js:319
msgid "Log Out"
msgstr "Termina sessione"
#: ../js/ui/status/system.js:341
#: ../js/ui/status/system.js:338
msgid "Orientation Lock"
msgstr "Blocco orientazione"
#: ../js/ui/status/system.js:349
#: ../js/ui/status/system.js:346
msgid "Suspend"
msgstr "Sospendi"
#: ../js/ui/status/system.js:352
#: ../js/ui/status/system.js:349
msgid "Power Off"
msgstr "Spegni"

3499
po/km.po

File diff suppressed because it is too large Load Diff

398
po/lt.po

File diff suppressed because it is too large Load Diff

915
po/nl.po

File diff suppressed because it is too large Load Diff

View File

@ -10,27 +10,26 @@
# Gabriel F. Vilar <cogumm@gmail.com>, 2011.
# Adorilson Bezerra <adorilson@gmail.com>, 2011, 2014.
# Djavan Fagundes <djavan@comum.org>, 2012.
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
# Juan Diego Martins da Costa Cruz <juan.martins@ifrn.edu.br>, 2013.
# Fábio Nogueira <fnogueira@gnome.org>, 2014.
# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013, 2014.
# Georges Basile Stavracas Neto <georges.stavracas@gmail.com>, 2014.
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-06-03 07:28+0000\n"
"PO-Revision-Date: 2014-06-03 10:26-0300\n"
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
"POT-Creation-Date: 2014-03-27 18:23+0000\n"
"PO-Revision-Date: 2014-03-27 15:29-0300\n"
"Last-Translator: Antonio Fernandes C. Neto <fernandesn@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.6.5\n"
"X-Generator: Poedit 1.6.4\n"
"X-Project-Style: gnome\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
@ -67,12 +66,13 @@ msgid "Window management and application launching"
msgstr "Gerenciamento de janelas e lançador de aplicativos"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extension Preferences"
msgstr "Preferências de extensões do Shell do GNOME"
msgstr "Preferências de extensões do GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
msgstr "Configurar extensões do Shell do GNOME"
msgstr "Configurar extensões do GNOME Shell"
# Traduções do Xfce e da Microsoft usam compositor --Enrico
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
@ -285,31 +285,47 @@ msgstr ""
"GNOME."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Arrangement of buttons on the titlebar"
msgstr "Organização dos botões na barra de título"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao "
"executar o Shell do GNOME."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Workspaces are managed dynamically"
msgstr "Espaços de trabalho são gerenciados dinamicamente"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid "Workspaces only on primary monitor"
msgstr "Espaços de trabalho apenas no monitor primário"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover"
#: ../js/extensionPrefs/main.js:125
#: ../js/extensionPrefs/main.js:127
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:"
#: ../js/extensionPrefs/main.js:157
#| msgid "Configure GNOME Shell Extensions"
msgid "GNOME Shell Extensions"
msgstr "Extensões do Shell do GNOME"
#: ../js/extensionPrefs/main.js:167
msgid "Extension"
msgstr "Extensão"
#: ../js/extensionPrefs/main.js:191
msgid "Select an extension to configure using the combobox above."
msgstr ""
"Selecione uma extensão para configurar usando a caixa de seleção abaixo."
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
@ -332,33 +348,33 @@ msgctxt "button"
msgid "Sign In"
msgstr "Entrar"
#: ../js/gdm/loginDialog.js:269
#: ../js/gdm/loginDialog.js:271
msgid "Choose Session"
msgstr "Escolher sessão"
#: ../js/gdm/loginDialog.js:429
#: ../js/gdm/loginDialog.js:431
msgid "Not listed?"
msgstr "Não está listado?"
#: ../js/gdm/loginDialog.js:614
#: ../js/gdm/loginDialog.js:611
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(ex.: usuário ou %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:616 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Nome de usuário: "
#: ../js/gdm/loginDialog.js:922
#: ../js/gdm/loginDialog.js:917
msgid "Login Window"
msgstr "Janela de sessão"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:322
msgid "Authentication error"
msgstr "Erro de autenticação"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:452
msgid "(or swipe finger)"
msgstr "(ou deslize o dedo)"
@ -375,34 +391,30 @@ msgstr "Não foi possível analisar comando:"
msgid "Execution of “%s” failed:"
msgstr "A execução de \"%s\" falhou:"
#: ../js/ui/appDisplay.js:640
#: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here"
msgstr "Aplicativos usados frequentemente vão aparecer aqui"
#: ../js/ui/appDisplay.js:751
#: ../js/ui/appDisplay.js:747
msgid "Frequent"
msgstr "Frequente"
#: ../js/ui/appDisplay.js:758
#: ../js/ui/appDisplay.js:754
msgid "All"
msgstr "Todos"
#: ../js/ui/appDisplay.js:1571
#: ../js/ui/appDisplay.js:1566
msgid "New Window"
msgstr "Nova janela"
#: ../js/ui/appDisplay.js:1593 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Remover dos favoritos"
#: ../js/ui/appDisplay.js:1599
#: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites"
msgstr "Adicionar aos favoritos"
#: ../js/ui/appDisplay.js:1608
msgid "Show Details"
msgstr "Mostrar detalhes"
#: ../js/ui/appFavorites.js:87
#, javascript-format
msgid "%s has been added to your favorites."
@ -413,8 +425,8 @@ msgstr "%s foi adicionado aos seus favoritos."
msgid "%s has been removed from your favorites."
msgstr "%s foi removido dos seus favoritos."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810
#: ../js/ui/status/system.js:337
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:334
msgid "Settings"
msgstr "Configurações"
@ -425,14 +437,14 @@ msgstr "Alterar plano de fundo…"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:67
#: ../js/ui/calendar.js:64
msgctxt "event list time"
msgid "All Day"
msgstr "Dia todo"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73
#: ../js/ui/calendar.js:70
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
@ -440,7 +452,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:82
#: ../js/ui/calendar.js:79
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
@ -450,43 +462,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:110
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:112
msgctxt "grid monday"
msgid "M"
msgstr "S"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:114
msgctxt "grid tuesday"
msgid "T"
msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:116
msgctxt "grid wednesday"
msgid "W"
msgstr "Q"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:118
msgctxt "grid thursday"
msgid "T"
msgstr "Q"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:120
msgctxt "grid friday"
msgid "F"
msgstr "S"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:122
msgctxt "grid saturday"
msgid "S"
msgstr "S"
@ -497,93 +509,97 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#: ../js/ui/calendar.js:138
#: ../js/ui/calendar.js:135
msgctxt "list sunday"
msgid "Su"
msgstr "Dom"
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140
#: ../js/ui/calendar.js:137
msgctxt "list monday"
msgid "M"
msgstr "Seg"
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:139
msgctxt "list tuesday"
msgid "T"
msgstr "Ter"
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:141
msgctxt "list wednesday"
msgid "W"
msgstr "Qua"
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:143
msgctxt "list thursday"
msgid "Th"
msgstr "Qui"
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:145
msgctxt "list friday"
msgid "F"
msgstr "Sex"
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:147
msgctxt "list saturday"
msgid "S"
msgstr "Sab"
#: ../js/ui/calendar.js:454
#: ../js/ui/calendar.js:390
msgid "calendar:MY"
msgstr "calendar:MY"
#: ../js/ui/calendar.js:450
msgid "Previous month"
msgstr "Mês anterior"
#: ../js/ui/calendar.js:464
#: ../js/ui/calendar.js:460
msgid "Next month"
msgstr "Próximo mês"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:775
#: ../js/ui/calendar.js:772
msgid "Nothing Scheduled"
msgstr "Nada agendado"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:793
#: ../js/ui/calendar.js:790
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:796
#: ../js/ui/calendar.js:793
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y"
#: ../js/ui/calendar.js:807
#: ../js/ui/calendar.js:804
msgid "Today"
msgstr "Hoje"
#: ../js/ui/calendar.js:811
#: ../js/ui/calendar.js:808
msgid "Tomorrow"
msgstr "Amanhã"
#: ../js/ui/calendar.js:822
#: ../js/ui/calendar.js:819
msgid "This week"
msgstr "Esta semana"
#: ../js/ui/calendar.js:830
#: ../js/ui/calendar.js:827
msgid "Next week"
msgstr "Próxima semana"
#: ../js/ui/components/automountManager.js:91
#: ../js/ui/components/automountManager.js:90
msgid "External drive connected"
msgstr "Unidade externa conectada"
#: ../js/ui/components/automountManager.js:102
#: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected"
msgstr "Unidade externa desconectada"
@ -728,77 +744,77 @@ msgid "Mute"
msgstr "Sem áudio"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:957
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:964
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "Ontem, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:971
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:978
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%d de %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:984
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%d de %B de %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:990
#: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:997
#: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p"
msgstr "Ontem, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1004
#: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1011
#: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p"
msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1017
#: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1049
#: ../js/ui/components/telepathyClient.js:1051
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s agora é conhecido como %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1153
#: ../js/ui/components/telepathyClient.js:1154
#, javascript-format
msgid "Invitation to %s"
msgstr "Convite para %s"
@ -806,38 +822,38 @@ msgstr "Convite para %s"
#. 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
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1162
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s está convidando você para participar de %s"
#: ../js/ui/components/telepathyClient.js:1163
#: ../js/ui/components/telepathyClient.js:1198
#: ../js/ui/components/telepathyClient.js:1232
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "Recusar"
#: ../js/ui/components/telepathyClient.js:1169
#: ../js/ui/components/telepathyClient.js:1238
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
msgstr "Aceitar"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1188
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Video call from %s"
msgstr "Chamada de vídeo para %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1191
#: ../js/ui/components/telepathyClient.js:1192
#, javascript-format
msgid "Call from %s"
msgstr "Chamada de %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1205
#: ../js/ui/components/telepathyClient.js:1206
msgid "Answer"
msgstr "Atender"
@ -846,13 +862,13 @@ msgstr "Atender"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1226
#: ../js/ui/components/telepathyClient.js:1227
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s está enviando %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1255
#: ../js/ui/components/telepathyClient.js:1256
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s quer permissão para vê-lo quando conectado"
@ -988,23 +1004,23 @@ msgstr "Mostrar aplicativos"
msgid "Dash"
msgstr "Dash"
#: ../js/ui/dateMenu.js:97
#: ../js/ui/dateMenu.js:91
msgid "Open Calendar"
msgstr "Abrir agenda"
#: ../js/ui/dateMenu.js:101
#: ../js/ui/dateMenu.js:95
msgid "Open Clocks"
msgstr "Abrir relógios"
# O "&" foi inserido como "e" para versão 3.8.0 no gnome-control-center
#: ../js/ui/dateMenu.js:108
#: ../js/ui/dateMenu.js:102
msgid "Date & Time Settings"
msgstr "Configurações de data & hora"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:205
#: ../js/ui/dateMenu.js:192
msgid "%A %B %e, %Y"
msgstr "%A, %e de %B de %Y"
@ -1129,13 +1145,13 @@ msgid "Other users are logged in."
msgstr "Outros usuários estão com sessão aberta."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:618
#, javascript-format
msgid "%s (remote)"
msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:621
#, javascript-format
msgid "%s (console)"
msgstr "%s (console)"
@ -1149,7 +1165,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:339
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard"
msgstr "Teclado"
@ -1237,16 +1253,16 @@ msgstr "Sem mensagens"
msgid "Message Tray"
msgstr "Área de notificação"
#: ../js/ui/messageTray.js:2967
#: ../js/ui/messageTray.js:2962
msgid "System Information"
msgstr "Informações do sistema"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425
#: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Desconhecido"
#: ../js/ui/overviewControls.js:488 ../js/ui/screenShield.js:151
#: ../js/ui/overviewControls.js:483 ../js/ui/screenShield.js:151
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
@ -1279,11 +1295,11 @@ msgstr "Sair"
msgid "Activities"
msgstr "Atividades"
#: ../js/ui/panel.js:915
#: ../js/ui/panel.js:914
msgid "Top Bar"
msgstr "Barra superior"
#: ../js/ui/popupMenu.js:279
#: ../js/ui/popupMenu.js:271
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1291,7 +1307,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command"
msgstr "Digite um comando"
#: ../js/ui/runDialog.js:114 ../js/ui/windowMenu.js:120
#: ../js/ui/runDialog.js:114
msgid "Close"
msgstr "Fechar"
@ -1308,7 +1324,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d nova notificação"
msgstr[1] "%d novas notificações"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:342
msgid "Lock"
msgstr "Bloquear"
@ -1316,19 +1332,19 @@ msgstr "Bloquear"
msgid "GNOME needs to lock the screen"
msgstr "GNOME precisa bloquear a tela"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock"
msgstr "Não foi possível bloquear"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application"
msgstr "O bloqueio foi impedido por um aplicativo"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:603
msgid "Searching…"
msgstr "Pesquisando…"
#: ../js/ui/search.js:652
#: ../js/ui/search.js:649
msgid "No results."
msgstr "Nenhum resultado."
@ -1392,11 +1408,11 @@ msgstr "Teclas de repercussão"
msgid "Mouse Keys"
msgstr "Teclas do mouse"
#: ../js/ui/status/accessibility.js:144
#: ../js/ui/status/accessibility.js:143
msgid "High Contrast"
msgstr "Alto contraste"
#: ../js/ui/status/accessibility.js:193
#: ../js/ui/status/accessibility.js:192
msgid "Large Text"
msgstr "Texto grande"
@ -1406,8 +1422,8 @@ msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
msgid "Turn Off"
msgstr "Desligar"
@ -1430,7 +1446,7 @@ msgstr "Não conectado"
msgid "Brightness"
msgstr "Brilho"
#: ../js/ui/status/keyboard.js:407
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Exibir disposição de teclado"
@ -1463,41 +1479,40 @@ msgstr "Off"
msgid "Connected"
msgstr "Conectado"
# Não gerenciável para transmitir a idéia que o Networkmanager não consegue gerenciar o dispositivo --Enrico
#. 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) */
#: ../js/ui/status/network.js:426
msgid "Unmanaged"
msgstr "Não gerenciável"
msgid "unmanaged"
msgstr "não gerenciado"
#: ../js/ui/status/network.js:428
msgid "Disconnecting"
msgstr "Desconectando"
msgid "disconnecting..."
msgstr "desconectando..."
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Conectando"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "conectando..."
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437
msgid "Authentication required"
msgstr "Autenticação necessária"
#: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "autenticação necessária"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:445
msgid "Firmware missing"
msgstr "Firmware em falta"
msgid "firmware missing"
msgstr "firmware faltando"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449
msgid "Unavailable"
msgstr "Indisponível"
msgid "unavailable"
msgstr "indisponível"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Falha de conexão"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "conexão falhou"
#: ../js/ui/status/network.js:467
msgid "Wired Settings"
@ -1551,7 +1566,7 @@ msgstr "Selecione uma rede"
msgid "No Networks"
msgstr "Nenhuma rede"
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:866 ../js/ui/status/rfkill.js:103
msgid "Use hardware switch to turn off"
msgstr "Usar alternador de hardware para desligar"
@ -1571,20 +1586,11 @@ msgstr "Ligar"
msgid "Hotspot Active"
msgstr "Ponto de acesso ativo"
#: ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "conectando..."
#: ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Conectando"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "autenticação necessária"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "conexão falhou"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings"
msgstr "Configurações de rede"
@ -1600,6 +1606,10 @@ msgstr "VPN"
msgid "Network Manager"
msgstr "Gerenciador de rede"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Falha de conexão"
#: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed"
msgstr "Falha ao ativar a conexão da rede"
@ -1636,31 +1646,31 @@ msgstr "No-break"
msgid "Battery"
msgstr "Bateria"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:82
msgid "Airplane Mode"
msgstr "Modo avião"
#: ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "On"
#: ../js/ui/status/system.js:317
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "Alternar usuário"
#: ../js/ui/status/system.js:322
#: ../js/ui/status/system.js:319
msgid "Log Out"
msgstr "Encerrar sessão"
#: ../js/ui/status/system.js:341
#: ../js/ui/status/system.js:338
msgid "Orientation Lock"
msgstr "Bloqueio da orientação"
#: ../js/ui/status/system.js:349
#: ../js/ui/status/system.js:346
msgid "Suspend"
msgstr "Suspender"
#: ../js/ui/status/system.js:352
#: ../js/ui/status/system.js:349
msgid "Power Off"
msgstr "Desligar"
@ -1697,68 +1707,28 @@ msgstr "Pesquisar"
msgid "“%s” is ready"
msgstr "\"%s\" está pronto"
#: ../js/ui/windowManager.js:57
#: ../js/ui/windowManager.js:56
msgid "Do you want to keep these display settings?"
msgstr "Você deseja manter essas configurações de exibição?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#. */
#: ../js/ui/windowManager.js:76
#: ../js/ui/windowManager.js:75
msgid "Revert Settings"
msgstr "Reverter configurações"
#: ../js/ui/windowManager.js:80
#: ../js/ui/windowManager.js:79
msgid "Keep Changes"
msgstr "Manter alterações"
#: ../js/ui/windowManager.js:99
#: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Alterações nas configurações serão revertidas em %d segundo"
msgstr[1] "Alterações nas configurações serão revertidas em %d segundos"
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
msgstr "Minimizar"
#: ../js/ui/windowMenu.js:41
msgid "Unmaximize"
msgstr "Restaurar"
#: ../js/ui/windowMenu.js:45
msgid "Maximize"
msgstr "Maximizar"
#: ../js/ui/windowMenu.js:52
msgid "Move"
msgstr "Mover"
#: ../js/ui/windowMenu.js:58
msgid "Resize"
msgstr "Redimensionar"
#: ../js/ui/windowMenu.js:65
msgid "Move Titlebar Onscreen"
msgstr "Mover barra de título na tela"
#: ../js/ui/windowMenu.js:70
msgid "Always on Top"
msgstr "Sempre no topo"
#: ../js/ui/windowMenu.js:89
msgid "Always on Visible Workspace"
msgstr "Sempre na área de trabalho visível"
#: ../js/ui/windowMenu.js:106
msgid "Move to Workspace Up"
msgstr "Mover para a área de trabalho acima"
#: ../js/ui/windowMenu.js:111
msgid "Move to Workspace Down"
msgstr "Mover para a área de trabalho abaixo"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar"
msgstr "Agenda do Evolution"
@ -1814,30 +1784,10 @@ msgstr "As senhas não coincidem."
msgid "Password cannot be blank"
msgstr "A senha não pode estar em branco"
#: ../src/shell-polkit-authentication-agent.c:346
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "O diálogo de autenticação foi descartado pelo usuário"
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Organização dos botões na barra de título"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao "
#~ "executar o Shell do GNOME."
#~ msgid "Extension"
#~ msgstr "Extensão"
#~ msgid "Select an extension to configure using the combobox above."
#~ msgstr ""
#~ "Selecione uma extensão para configurar usando a caixa de seleção abaixo."
#~ msgid "calendar:MY"
#~ msgstr "calendar:MY"
#~ msgid "<b>%A</b>, <b>%H:%M</b>"
#~ msgstr "<b>%A</b>, <b>%H:%M</b>"

1348
po/ro.po

File diff suppressed because it is too large Load Diff

192
po/sr.po
View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-03-22 20:38+0000\n"
"PO-Revision-Date: 2014-03-23 11:08+0200\n"
"POT-Creation-Date: 2014-04-14 15:36+0000\n"
"PO-Revision-Date: 2014-04-14 19:31+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
@ -80,16 +80,10 @@ msgstr ""
"коришћењем „Alt-F2“ прозорчета."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
#| msgid "Uuids of extensions to enable"
msgid "UUIDs of extensions to enable"
msgstr "ЈУИБ-ови проширења за укључивање"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
#| msgid ""
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
#| "which should be loaded. Any extension that wants to be loaded needs to be "
#| "in this list. You can also manipulate this list with the EnableExtension "
#| "and DisableExtension DBus methods on org.gnome.Shell."
msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
@ -98,8 +92,8 @@ msgid ""
msgstr ""
"Проширења Гномове шкољке имају ЈУИБ вредност; овај кључ исписује проширења "
"која треба учитавати. Свако проширење које жели бити учитано мора бити на "
"списку. Такође можете да управљате овим списком користећи начине "
"Д-магистрале „Укључи проширење“ и „Искључи проширење“ на „org.gnome.Shell“."
"списку. Такође можете да управљате овим списком користећи начине Д-"
"магистрале „Укључи проширење“ и „Искључи проширење“ на „org.gnome.Shell“."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Disables the validation of extension version compatibility"
@ -136,14 +130,10 @@ msgid "History for the looking glass dialog"
msgstr "Историјат прозорчета огледала"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
#| msgid "Always show the 'Log out' menuitem in the user menu."
msgid "Always show the 'Log out' menu item in the user menu."
msgstr "Увек приказује ставку изборника „Одјави ме“ у изборнику корисника."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
#| msgid ""
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
#| "single-user, single-session situations."
msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations."
@ -241,12 +231,12 @@ msgid ""
"using network resources (albeit with street-level accuracy at best)."
msgstr ""
"Подешава највећи ниво тачности места коју програми могу да користе. Исправне "
"могућности су „off“ (искључује праћење места), „country“ (држава), „city“ "
"(град), „neighborhood“ (комшилук), „street“ (улица), и „exact“ (тачно "
"обично захтева ГПС пријемник). Имајте на уму да ће ово одлучити шта ће „Гео "
"индиција“ дозволити програмима само да виде и да могу пронаћи корисниково "
"место на своју руку користећи изворишта мреже (мада са тачношћу на нивоу "
"улице у најбољем случају)."
"могућности су „off“ (искључује праћење места), „country“ (држава), "
"„city“ (град), „neighborhood“ (комшилук), „street“ (улица), и „exact“ (тачно "
"обично захтева ГПС пријемник). Имајте на уму да ће ово одлучити шта ће "
"„Гео индиција“ дозволити програмима само да виде и да могу пронаћи "
"корисниково место на своју руку користећи изворишта мреже (мада са тачношћу "
"на нивоу улице у најбољем случају)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "The application icon mode."
@ -335,25 +325,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Пријави ме"
#: ../js/gdm/loginDialog.js:270
#: ../js/gdm/loginDialog.js:271
msgid "Choose Session"
msgstr "Изабери сесију"
#: ../js/gdm/loginDialog.js:430
#: ../js/gdm/loginDialog.js:431
msgid "Not listed?"
msgstr "Није на списку?"
#: ../js/gdm/loginDialog.js:608
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(нпр., корисник или %s)"
#: ../js/gdm/loginDialog.js:613 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Корисничко име: "
#: ../js/gdm/loginDialog.js:884
#: ../js/gdm/loginDialog.js:920
msgid "Login Window"
msgstr "Прозор за пријављивање"
@ -375,31 +365,30 @@ msgstr "Не могу да обрадим наредбу:"
#: ../js/misc/util.js:156
#, javascript-format
#| msgid "Execution of '%s' failed:"
msgid "Execution of “%s” failed:"
msgstr "Није успело извршавање „%s“:"
#: ../js/ui/appDisplay.js:629
#: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here"
msgstr "Често коришћени програми ће се појавити овде"
#: ../js/ui/appDisplay.js:740
#: ../js/ui/appDisplay.js:747
msgid "Frequent"
msgstr "Често"
#: ../js/ui/appDisplay.js:747
#: ../js/ui/appDisplay.js:754
msgid "All"
msgstr "Све"
#: ../js/ui/appDisplay.js:1555
#: ../js/ui/appDisplay.js:1566
msgid "New Window"
msgstr "Нови прозор"
#: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Уклони из омиљених"
#: ../js/ui/appDisplay.js:1583
#: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites"
msgstr "Додај у омиљене"
@ -647,9 +636,6 @@ msgstr "Бежична мрежа захтева потврђивање иден
#: ../js/ui/components/networkAgent.js:312
#, javascript-format
#| msgid ""
#| "Passwords or encryption keys are required to access the wireless network "
#| "'%s'."
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
@ -686,7 +672,6 @@ msgstr "Лозинка мобилне широкопојасне мреже"
#: ../js/ui/components/networkAgent.js:339
#, javascript-format
#| msgid "A password is required to connect to '%s'."
msgid "A password is required to connect to “%s”."
msgstr "Потребна је лозинка за повезивање на „%s“."
@ -736,23 +721,18 @@ msgstr "Утишај"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:955
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:962
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgid "Yesterday, %H%M"
msgstr "Јуче, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:969
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%A, %H%M"
msgstr "%A, %H%M"
@ -760,8 +740,6 @@ msgstr "%A, %H%M"
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:976
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%B %d, %H%M"
msgstr "%d. %B, %H%M"
@ -774,8 +752,6 @@ msgstr "%d. %B %Y., %H:%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:991
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%l%M %p"
msgstr "%l%M%p"
@ -788,8 +764,6 @@ msgstr "Јуче, %l:%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1005
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
@ -797,8 +771,6 @@ msgstr "%A, %l%M %p"
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1012
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%B %d, %l%M %p"
msgstr "%d. %B, %l%M %p"
@ -834,13 +806,13 @@ msgstr "%s вас позива да се придружите „%s“"
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1290
#: ../js/ui/components/telepathyClient.js:1291
msgid "Decline"
msgstr "Одбиј"
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1296
msgid "Accept"
msgstr "Прихвати"
@ -877,98 +849,98 @@ msgstr "%s вам шаље „%s“"
msgid "%s would like permission to see when you are online"
msgstr "%s тражи одобрење да види када сте на вези"
#: ../js/ui/components/telepathyClient.js:1341
#: ../js/ui/components/telepathyClient.js:1342
msgid "Network error"
msgstr "Грешка мреже"
#: ../js/ui/components/telepathyClient.js:1343
#: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed"
msgstr "Потврђивање идентитета није успело"
#: ../js/ui/components/telepathyClient.js:1345
#: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error"
msgstr "Грешка шифровања"
#: ../js/ui/components/telepathyClient.js:1347
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided"
msgstr "Уверење није прослеђено"
#: ../js/ui/components/telepathyClient.js:1349
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted"
msgstr "Уверење није поверљиво"
#: ../js/ui/components/telepathyClient.js:1351
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired"
msgstr "Уверење је истекло"
#: ../js/ui/components/telepathyClient.js:1353
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated"
msgstr "Уверење није активирано"
#: ../js/ui/components/telepathyClient.js:1355
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch"
msgstr "Назив домаћина уверења се не поклапа"
#: ../js/ui/components/telepathyClient.js:1357
#: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch"
msgstr "Отисак уверења се не поклапа"
#: ../js/ui/components/telepathyClient.js:1359
#: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed"
msgstr "Уверење је самопотписано"
#: ../js/ui/components/telepathyClient.js:1361
#: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline"
msgstr "Стање је постављено на „неповезан“"
#: ../js/ui/components/telepathyClient.js:1363
#: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available"
msgstr "Шифровање није доступно"
#: ../js/ui/components/telepathyClient.js:1365
#: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid"
msgstr "Уверење није исправно"
#: ../js/ui/components/telepathyClient.js:1367
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused"
msgstr "Веза је одбијена"
#: ../js/ui/components/telepathyClient.js:1369
#: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established"
msgstr "Веза не може бити успостављена"
#: ../js/ui/components/telepathyClient.js:1371
#: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost"
msgstr "Веза је изгубљена"
#: ../js/ui/components/telepathyClient.js:1373
#: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server"
msgstr "Овај налог је већ повезан са сервером"
#: ../js/ui/components/telepathyClient.js:1375
#: ../js/ui/components/telepathyClient.js:1376
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Веза је замењена новом везом користећи исти ресурс"
#: ../js/ui/components/telepathyClient.js:1377
#: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server"
msgstr "Овај налог већ постоји на серверу"
#: ../js/ui/components/telepathyClient.js:1379
#: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection"
msgstr "Сервер је тренутно превише заузет да би руковао везом"
#: ../js/ui/components/telepathyClient.js:1381
#: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked"
msgstr "Уверење је опозвано"
#: ../js/ui/components/telepathyClient.js:1383
#: ../js/ui/components/telepathyClient.js:1384
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Уверење користи несигуран алгоритам шифровања или је криптографски слабо"
#: ../js/ui/components/telepathyClient.js:1385
#: ../js/ui/components/telepathyClient.js:1386
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -976,22 +948,22 @@ msgstr ""
"Дужина уверења сервера, или дубина ланца уверења сервера, премашује границе "
"које је задала библиотека шифровања"
#: ../js/ui/components/telepathyClient.js:1387
#: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error"
msgstr "Унутрашња грешка"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1397
#: ../js/ui/components/telepathyClient.js:1398
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Не могу да се повежем са „%s“"
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1403
msgid "View account"
msgstr "Види налог"
#: ../js/ui/components/telepathyClient.js:1439
#: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason"
msgstr "Непознат разлог"
@ -1128,8 +1100,6 @@ msgstr[3] ""
"Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду."
#: ../js/ui/endSessionDialog.js:129
#| msgctxt "button"
#| msgid "Restart & Install"
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Поново покрени и инсталирај"
@ -1147,8 +1117,7 @@ msgstr "Искључи након инсталирања освежења"
#: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Напајате се са батерије: прикључите мрежно напајање пре инсталирања "
"освежења."
"Напајате се са батерије: прикључите мрежно напајање пре инсталирања освежења."
#: ../js/ui/endSessionDialog.js:332
msgid "Some applications are busy or have unsaved work."
@ -1176,7 +1145,6 @@ msgstr "Инсталирај"
#: ../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 "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?"
@ -1202,7 +1170,8 @@ msgstr "Сакриј грешке"
msgid "Show Errors"
msgstr "Прикажите грешке"
#: ../js/ui/lookingGlass.js:716
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
#: ../js/ui/status/location.js:167
msgid "Enabled"
msgstr "Укључено"
@ -1210,8 +1179,8 @@ msgstr "Укључено"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555
#: ../src/gvc/gvc-mixer-control.c:1830
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
#: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "Искључено"
@ -1362,7 +1331,7 @@ msgstr "Неки програм је блокирао закључавање"
msgid "Searching…"
msgstr "Тражим…"
#: ../js/ui/search.js:646
#: ../js/ui/search.js:649
msgid "No results."
msgstr "Нема одговарајућих резултата."
@ -1438,8 +1407,7 @@ msgstr "Велики текст"
msgid "Bluetooth"
msgstr "Блутут"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/location.js:60
#: ../js/ui/status/location.js:167 ../js/ui/status/network.js:151
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
@ -1472,30 +1440,33 @@ msgid "Show Keyboard Layout"
msgstr "Покажи распоред тастатуре"
#: ../js/ui/status/location.js:53
#| msgid "Notifications"
msgid "Location"
msgstr "Место"
#: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Укљ."
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#| msgid "Disabled"
msgid "Disable"
msgstr "Искључи"
#: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420
#: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Искљ."
#: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234
msgid "Turn On"
#: ../js/ui/status/location.js:165
#| msgid "Enabled"
msgid "Enable"
msgstr "Укључи"
#: ../js/ui/status/location.js:167
msgid "In Use"
msgstr "У употреби"
#: ../js/ui/status/network.js:74
msgid "<unknown>"
msgstr "<непознато>"
#: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260
#: ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Искљ."
#: ../js/ui/status/network.js:422
#| msgid "Connect"
msgid "Connected"
msgstr "Повезан"
@ -1535,7 +1506,6 @@ msgid "connection failed"
msgstr "повезивање није успело"
#: ../js/ui/status/network.js:467
#| msgid "Wi-Fi Settings"
msgid "Wired Settings"
msgstr "Подешавања жичане везе"
@ -1552,7 +1522,6 @@ msgid "Use as Internet connection"
msgstr "Користи као Интернет везу"
#: ../js/ui/status/network.js:776
#| msgid "Airplane Mode"
msgid "Airplane Mode is On"
msgstr "Режим у авиону је укључен"
@ -1561,12 +1530,10 @@ msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Бежична веза је искључена када је укључен режим у авиону."
#: ../js/ui/status/network.js:778
#| msgid "Airplane Mode"
msgid "Turn Off Airplane Mode"
msgstr "Искључи режим у авиону"
#: ../js/ui/status/network.js:787
#| msgid "Wi-Fi Settings"
msgid "Wi-Fi is Off"
msgstr "Бежична веза је искључена"
@ -1575,7 +1542,6 @@ msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Бежична веза треба бити укључена да бисте се повезали на мрежу."
#: ../js/ui/status/network.js:789
#| msgid "Turn On"
msgid "Turn On Wi-Fi"
msgstr "Укључи бежичну везу"
@ -1603,12 +1569,15 @@ msgstr "Изабери мрежу"
msgid "Wi-Fi Settings"
msgstr "Подешавања бежичне везе"
#: ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Укључи"
#: ../js/ui/status/network.js:1251
msgid "Hotspot Active"
msgstr "Врућа тачка је радна"
#: ../js/ui/status/network.js:1254
#| msgid "Connect"
msgid "Connecting"
msgstr "Повезујем се"
@ -1617,7 +1586,6 @@ msgid "Network Settings"
msgstr "Подешавања мреже"
#: ../js/ui/status/network.js:1435
#| msgid "Settings"
msgid "VPN Settings"
msgstr "ВПН подешавања"
@ -1671,6 +1639,10 @@ msgstr "Батерија"
msgid "Airplane Mode"
msgstr "Режим у авиону"
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Укљ."
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "Промени корисника"
@ -1721,7 +1693,6 @@ msgstr "Тражи"
#: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
#| msgid "'%s' is ready"
msgid "“%s” is ready"
msgstr "„%s“ је спреман"
@ -1797,7 +1768,6 @@ msgstr "Исписује могуће режиме"
#: ../src/shell-app.c:666
#, c-format
#| msgid "Failed to launch '%s'"
msgid "Failed to launch “%s”"
msgstr "Нисам успео да покренем „%s“"

View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-03-22 20:38+0000\n"
"PO-Revision-Date: 2014-03-23 11:08+0200\n"
"POT-Creation-Date: 2014-04-14 15:36+0000\n"
"PO-Revision-Date: 2014-04-14 19:31+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
@ -80,16 +80,10 @@ msgstr ""
"korišćenjem „Alt-F2“ prozorčeta."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
#| msgid "Uuids of extensions to enable"
msgid "UUIDs of extensions to enable"
msgstr "JUIB-ovi proširenja za uključivanje"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
#| msgid ""
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
#| "which should be loaded. Any extension that wants to be loaded needs to be "
#| "in this list. You can also manipulate this list with the EnableExtension "
#| "and DisableExtension DBus methods on org.gnome.Shell."
msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
@ -98,8 +92,8 @@ msgid ""
msgstr ""
"Proširenja Gnomove školjke imaju JUIB vrednost; ovaj ključ ispisuje proširenja "
"koja treba učitavati. Svako proširenje koje želi biti učitano mora biti na "
"spisku. Takođe možete da upravljate ovim spiskom koristeći načine "
"D-magistrale „Uključi proširenje“ i „Isključi proširenje“ na „org.gnome.Shell“."
"spisku. Takođe možete da upravljate ovim spiskom koristeći načine D-"
"magistrale „Uključi proširenje“ i „Isključi proširenje“ na „org.gnome.Shell“."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Disables the validation of extension version compatibility"
@ -136,14 +130,10 @@ msgid "History for the looking glass dialog"
msgstr "Istorijat prozorčeta ogledala"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
#| msgid "Always show the 'Log out' menuitem in the user menu."
msgid "Always show the 'Log out' menu item in the user menu."
msgstr "Uvek prikazuje stavku izbornika „Odjavi me“ u izborniku korisnika."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
#| msgid ""
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
#| "single-user, single-session situations."
msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations."
@ -241,12 +231,12 @@ msgid ""
"using network resources (albeit with street-level accuracy at best)."
msgstr ""
"Podešava najveći nivo tačnosti mesta koju programi mogu da koriste. Ispravne "
"mogućnosti su „off“ (isključuje praćenje mesta), „country“ (država), „city“ "
"(grad), „neighborhood“ (komšiluk), „street“ (ulica), i „exact“ (tačno "
"obično zahteva GPS prijemnik). Imajte na umu da će ovo odlučiti šta će „Geo "
"indicija“ dozvoliti programima samo da vide i da mogu pronaći korisnikovo "
"mesto na svoju ruku koristeći izvorišta mreže (mada sa tačnošću na nivou "
"ulice u najboljem slučaju)."
"mogućnosti su „off“ (isključuje praćenje mesta), „country“ (država), "
"„city“ (grad), „neighborhood“ (komšiluk), „street“ (ulica), i „exact“ (tačno "
"obično zahteva GPS prijemnik). Imajte na umu da će ovo odlučiti šta će "
"„Geo indicija“ dozvoliti programima samo da vide i da mogu pronaći "
"korisnikovo mesto na svoju ruku koristeći izvorišta mreže (mada sa tačnošću "
"na nivou ulice u najboljem slučaju)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "The application icon mode."
@ -335,25 +325,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Prijavi me"
#: ../js/gdm/loginDialog.js:270
#: ../js/gdm/loginDialog.js:271
msgid "Choose Session"
msgstr "Izaberi sesiju"
#: ../js/gdm/loginDialog.js:430
#: ../js/gdm/loginDialog.js:431
msgid "Not listed?"
msgstr "Nije na spisku?"
#: ../js/gdm/loginDialog.js:608
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(npr., korisnik ili %s)"
#: ../js/gdm/loginDialog.js:613 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Korisničko ime: "
#: ../js/gdm/loginDialog.js:884
#: ../js/gdm/loginDialog.js:920
msgid "Login Window"
msgstr "Prozor za prijavljivanje"
@ -375,31 +365,30 @@ msgstr "Ne mogu da obradim naredbu:"
#: ../js/misc/util.js:156
#, javascript-format
#| msgid "Execution of '%s' failed:"
msgid "Execution of “%s” failed:"
msgstr "Nije uspelo izvršavanje „%s“:"
#: ../js/ui/appDisplay.js:629
#: ../js/ui/appDisplay.js:636
msgid "Frequently used applications will appear here"
msgstr "Često korišćeni programi će se pojaviti ovde"
#: ../js/ui/appDisplay.js:740
#: ../js/ui/appDisplay.js:747
msgid "Frequent"
msgstr "Često"
#: ../js/ui/appDisplay.js:747
#: ../js/ui/appDisplay.js:754
msgid "All"
msgstr "Sve"
#: ../js/ui/appDisplay.js:1555
#: ../js/ui/appDisplay.js:1566
msgid "New Window"
msgstr "Novi prozor"
#: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih"
#: ../js/ui/appDisplay.js:1583
#: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites"
msgstr "Dodaj u omiljene"
@ -647,9 +636,6 @@ msgstr "Bežična mreža zahteva potvrđivanje identiteta"
#: ../js/ui/components/networkAgent.js:312
#, javascript-format
#| msgid ""
#| "Passwords or encryption keys are required to access the wireless network "
#| "'%s'."
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
@ -686,7 +672,6 @@ msgstr "Lozinka mobilne širokopojasne mreže"
#: ../js/ui/components/networkAgent.js:339
#, javascript-format
#| msgid "A password is required to connect to '%s'."
msgid "A password is required to connect to “%s”."
msgstr "Potrebna je lozinka za povezivanje na „%s“."
@ -736,23 +721,18 @@ msgstr "Utišaj"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:955
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:962
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgid "Yesterday, %H%M"
msgstr "Juče, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:969
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%A, %H%M"
msgstr "%A, %H%M"
@ -760,8 +740,6 @@ msgstr "%A, %H%M"
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:976
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%B %d, %H%M"
msgstr "%d. %B, %H%M"
@ -774,8 +752,6 @@ msgstr "%d. %B %Y., %H:%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:991
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%l%M %p"
msgstr "%l%M%p"
@ -788,8 +764,6 @@ msgstr "Juče, %l:%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1005
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
@ -797,8 +771,6 @@ msgstr "%A, %l%M %p"
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1012
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%B %d, %l%M %p"
msgstr "%d. %B, %l%M %p"
@ -834,13 +806,13 @@ msgstr "%s vas poziva da se pridružite „%s“"
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1290
#: ../js/ui/components/telepathyClient.js:1291
msgid "Decline"
msgstr "Odbij"
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1296
msgid "Accept"
msgstr "Prihvati"
@ -877,98 +849,98 @@ msgstr "%s vam šalje „%s“"
msgid "%s would like permission to see when you are online"
msgstr "%s traži odobrenje da vidi kada ste na vezi"
#: ../js/ui/components/telepathyClient.js:1341
#: ../js/ui/components/telepathyClient.js:1342
msgid "Network error"
msgstr "Greška mreže"
#: ../js/ui/components/telepathyClient.js:1343
#: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed"
msgstr "Potvrđivanje identiteta nije uspelo"
#: ../js/ui/components/telepathyClient.js:1345
#: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error"
msgstr "Greška šifrovanja"
#: ../js/ui/components/telepathyClient.js:1347
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided"
msgstr "Uverenje nije prosleđeno"
#: ../js/ui/components/telepathyClient.js:1349
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted"
msgstr "Uverenje nije poverljivo"
#: ../js/ui/components/telepathyClient.js:1351
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired"
msgstr "Uverenje je isteklo"
#: ../js/ui/components/telepathyClient.js:1353
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated"
msgstr "Uverenje nije aktivirano"
#: ../js/ui/components/telepathyClient.js:1355
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch"
msgstr "Naziv domaćina uverenja se ne poklapa"
#: ../js/ui/components/telepathyClient.js:1357
#: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch"
msgstr "Otisak uverenja se ne poklapa"
#: ../js/ui/components/telepathyClient.js:1359
#: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed"
msgstr "Uverenje je samopotpisano"
#: ../js/ui/components/telepathyClient.js:1361
#: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline"
msgstr "Stanje je postavljeno na „nepovezan“"
#: ../js/ui/components/telepathyClient.js:1363
#: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available"
msgstr "Šifrovanje nije dostupno"
#: ../js/ui/components/telepathyClient.js:1365
#: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid"
msgstr "Uverenje nije ispravno"
#: ../js/ui/components/telepathyClient.js:1367
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused"
msgstr "Veza je odbijena"
#: ../js/ui/components/telepathyClient.js:1369
#: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established"
msgstr "Veza ne može biti uspostavljena"
#: ../js/ui/components/telepathyClient.js:1371
#: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost"
msgstr "Veza je izgubljena"
#: ../js/ui/components/telepathyClient.js:1373
#: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server"
msgstr "Ovaj nalog je već povezan sa serverom"
#: ../js/ui/components/telepathyClient.js:1375
#: ../js/ui/components/telepathyClient.js:1376
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Veza je zamenjena novom vezom koristeći isti resurs"
#: ../js/ui/components/telepathyClient.js:1377
#: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server"
msgstr "Ovaj nalog već postoji na serveru"
#: ../js/ui/components/telepathyClient.js:1379
#: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection"
msgstr "Server je trenutno previše zauzet da bi rukovao vezom"
#: ../js/ui/components/telepathyClient.js:1381
#: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked"
msgstr "Uverenje je opozvano"
#: ../js/ui/components/telepathyClient.js:1383
#: ../js/ui/components/telepathyClient.js:1384
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Uverenje koristi nesiguran algoritam šifrovanja ili je kriptografski slabo"
#: ../js/ui/components/telepathyClient.js:1385
#: ../js/ui/components/telepathyClient.js:1386
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -976,22 +948,22 @@ msgstr ""
"Dužina uverenja servera, ili dubina lanca uverenja servera, premašuje granice "
"koje je zadala biblioteka šifrovanja"
#: ../js/ui/components/telepathyClient.js:1387
#: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error"
msgstr "Unutrašnja greška"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1397
#: ../js/ui/components/telepathyClient.js:1398
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Ne mogu da se povežem sa „%s“"
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1403
msgid "View account"
msgstr "Vidi nalog"
#: ../js/ui/components/telepathyClient.js:1439
#: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason"
msgstr "Nepoznat razlog"
@ -1128,8 +1100,6 @@ msgstr[3] ""
"Sistem će se sam ponovo pokrenuti i instalirati ažuriranja za %d sekundu."
#: ../js/ui/endSessionDialog.js:129
#| msgctxt "button"
#| msgid "Restart & Install"
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Ponovo pokreni i instaliraj"
@ -1147,8 +1117,7 @@ msgstr "Isključi nakon instaliranja osveženja"
#: ../js/ui/endSessionDialog.js:315
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"Napajate se sa baterije: priključite mrežno napajanje pre instaliranja "
"osveženja."
"Napajate se sa baterije: priključite mrežno napajanje pre instaliranja osveženja."
#: ../js/ui/endSessionDialog.js:332
msgid "Some applications are busy or have unsaved work."
@ -1176,7 +1145,6 @@ msgstr "Instaliraj"
#: ../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 "Da preuzmem i da instaliram „%s“ sa „extensions.gnome.org“-a?"
@ -1202,7 +1170,8 @@ msgstr "Sakrij greške"
msgid "Show Errors"
msgstr "Prikažite greške"
#: ../js/ui/lookingGlass.js:716
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
#: ../js/ui/status/location.js:167
msgid "Enabled"
msgstr "Uključeno"
@ -1210,8 +1179,8 @@ msgstr "Uključeno"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555
#: ../src/gvc/gvc-mixer-control.c:1830
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
#: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "Isključeno"
@ -1362,7 +1331,7 @@ msgstr "Neki program je blokirao zaključavanje"
msgid "Searching…"
msgstr "Tražim…"
#: ../js/ui/search.js:646
#: ../js/ui/search.js:649
msgid "No results."
msgstr "Nema odgovarajućih rezultata."
@ -1438,8 +1407,7 @@ msgstr "Veliki tekst"
msgid "Bluetooth"
msgstr "Blutut"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/location.js:60
#: ../js/ui/status/location.js:167 ../js/ui/status/network.js:151
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
@ -1472,30 +1440,33 @@ msgid "Show Keyboard Layout"
msgstr "Pokaži raspored tastature"
#: ../js/ui/status/location.js:53
#| msgid "Notifications"
msgid "Location"
msgstr "Mesto"
#: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Uklj."
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#| msgid "Disabled"
msgid "Disable"
msgstr "Isključi"
#: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420
#: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Isklj."
#: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234
msgid "Turn On"
#: ../js/ui/status/location.js:165
#| msgid "Enabled"
msgid "Enable"
msgstr "Uključi"
#: ../js/ui/status/location.js:167
msgid "In Use"
msgstr "U upotrebi"
#: ../js/ui/status/network.js:74
msgid "<unknown>"
msgstr "<nepoznato>"
#: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260
#: ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Isklj."
#: ../js/ui/status/network.js:422
#| msgid "Connect"
msgid "Connected"
msgstr "Povezan"
@ -1535,7 +1506,6 @@ msgid "connection failed"
msgstr "povezivanje nije uspelo"
#: ../js/ui/status/network.js:467
#| msgid "Wi-Fi Settings"
msgid "Wired Settings"
msgstr "Podešavanja žičane veze"
@ -1552,7 +1522,6 @@ msgid "Use as Internet connection"
msgstr "Koristi kao Internet vezu"
#: ../js/ui/status/network.js:776
#| msgid "Airplane Mode"
msgid "Airplane Mode is On"
msgstr "Režim u avionu je uključen"
@ -1561,12 +1530,10 @@ msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Bežična veza je isključena kada je uključen režim u avionu."
#: ../js/ui/status/network.js:778
#| msgid "Airplane Mode"
msgid "Turn Off Airplane Mode"
msgstr "Isključi režim u avionu"
#: ../js/ui/status/network.js:787
#| msgid "Wi-Fi Settings"
msgid "Wi-Fi is Off"
msgstr "Bežična veza je isključena"
@ -1575,7 +1542,6 @@ msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Bežična veza treba biti uključena da biste se povezali na mrežu."
#: ../js/ui/status/network.js:789
#| msgid "Turn On"
msgid "Turn On Wi-Fi"
msgstr "Uključi bežičnu vezu"
@ -1603,12 +1569,15 @@ msgstr "Izaberi mrežu"
msgid "Wi-Fi Settings"
msgstr "Podešavanja bežične veze"
#: ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Uključi"
#: ../js/ui/status/network.js:1251
msgid "Hotspot Active"
msgstr "Vruća tačka je radna"
#: ../js/ui/status/network.js:1254
#| msgid "Connect"
msgid "Connecting"
msgstr "Povezujem se"
@ -1617,7 +1586,6 @@ msgid "Network Settings"
msgstr "Podešavanja mreže"
#: ../js/ui/status/network.js:1435
#| msgid "Settings"
msgid "VPN Settings"
msgstr "VPN podešavanja"
@ -1671,6 +1639,10 @@ msgstr "Baterija"
msgid "Airplane Mode"
msgstr "Režim u avionu"
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Uklj."
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "Promeni korisnika"
@ -1721,7 +1693,6 @@ msgstr "Traži"
#: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
#| msgid "'%s' is ready"
msgid "“%s” is ready"
msgstr "„%s“ je spreman"
@ -1797,7 +1768,6 @@ msgstr "Ispisuje moguće režime"
#: ../src/shell-app.c:666
#, c-format
#| msgid "Failed to launch '%s'"
msgid "Failed to launch “%s”"
msgstr "Nisam uspeo da pokrenem „%s“"

218
po/tg.po
View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: Tajik Gnome\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-04-25 07:23+0000\n"
"PO-Revision-Date: 2014-04-25 16:51+0500\n"
"POT-Creation-Date: 2014-04-08 20:00+0000\n"
"PO-Revision-Date: 2014-04-09 11:36+0500\n"
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"Language-Team: \n"
"Language: tg\n"
@ -344,25 +344,25 @@ msgstr "Интихоби ҷаласа"
msgid "Not listed?"
msgstr "Вуҷуд надора?"
#: ../js/gdm/loginDialog.js:616
#: ../js/gdm/loginDialog.js:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(масалан, корбар ё %s)"
#: ../js/gdm/loginDialog.js:621 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Номи корбар:"
#: ../js/gdm/loginDialog.js:924
#: ../js/gdm/loginDialog.js:920
msgid "Login Window"
msgstr "Равзанаи воридшавӣ"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:322
msgid "Authentication error"
msgstr "Хатои санҷиши ҳаққоният"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:452
msgid "(or swipe finger)"
msgstr "(ё бо ангут ламс кунед)"
@ -391,15 +391,15 @@ msgstr "Роиҷ"
msgid "All"
msgstr "Ҳама"
#: ../js/ui/appDisplay.js:1567
#: ../js/ui/appDisplay.js:1566
msgid "New Window"
msgstr "Равзанаи нав"
#: ../js/ui/appDisplay.js:1589 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Тоза кардан аз Баргузидаҳо"
#: ../js/ui/appDisplay.js:1595
#: ../js/ui/appDisplay.js:1594
msgid "Add to Favorites"
msgstr "Илова кардан ба Баргузидаҳо"
@ -413,7 +413,7 @@ msgstr "%s ба баргузидаҳои шумо илова шудааст."
msgid "%s has been removed from your favorites."
msgstr "%s аз баргузидаҳои шумо тоза шудааст."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:810
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:809
#: ../js/ui/status/system.js:334
msgid "Settings"
msgstr "Танзимот"
@ -583,11 +583,11 @@ msgstr "Ҳафтаи ҷорӣ"
msgid "Next week"
msgstr "Ҳафтаи навбатӣ"
#: ../js/ui/components/automountManager.js:91
#: ../js/ui/components/automountManager.js:90
msgid "External drive connected"
msgstr "Диски берунӣ васл шудааст"
#: ../js/ui/components/automountManager.js:102
#: ../js/ui/components/automountManager.js:101
msgid "External drive disconnected"
msgstr "Диски берунӣ ҷудо шудааст"
@ -732,77 +732,77 @@ msgid "Mute"
msgstr "Бесадо кардан"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:958
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:965
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "Дирӯз, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:972
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:979
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%B %d, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:985
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%B %d %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:994
#: ../js/ui/components/telepathyClient.js:991
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1001
#: ../js/ui/components/telepathyClient.js:998
msgid "Yesterday, %l%M %p"
msgstr "Дирӯз, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1008
#: ../js/ui/components/telepathyClient.js:1005
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1015
#: ../js/ui/components/telepathyClient.js:1012
msgid "%B %d, %l%M %p"
msgstr "%B %d, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1021
#: ../js/ui/components/telepathyClient.js:1018
msgid "%B %d %Y, %l%M %p"
msgstr "%B %d %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1054
#: ../js/ui/components/telepathyClient.js:1051
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s аллакой бо номи %s номида мешавад"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1158
#: ../js/ui/components/telepathyClient.js:1154
#, javascript-format
msgid "Invitation to %s"
msgstr "Даъватнома барои to %s"
@ -810,38 +810,38 @@ msgstr "Даъватнома барои to %s"
#. 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
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1166
#: ../js/ui/components/telepathyClient.js:1162
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s шуморо барои ҳамроҳ шудан ба %s даъват мекунад"
#: ../js/ui/components/telepathyClient.js:1168
#: ../js/ui/components/telepathyClient.js:1203
#: ../js/ui/components/telepathyClient.js:1237
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1291
msgid "Decline"
msgstr "Рад кардан"
#: ../js/ui/components/telepathyClient.js:1174
#: ../js/ui/components/telepathyClient.js:1243
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1296
msgid "Accept"
msgstr "Қабул кардан"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1193
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Video call from %s"
msgstr "Занги видеоӣ аз %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1192
#, javascript-format
msgid "Call from %s"
msgstr "Занг аз %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1210
#: ../js/ui/components/telepathyClient.js:1206
msgid "Answer"
msgstr "Ҷавоб"
@ -850,110 +850,110 @@ msgstr "Ҷавоб"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1231
#: ../js/ui/components/telepathyClient.js:1227
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s ба шумо %s-ро мефиристад"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1260
#: ../js/ui/components/telepathyClient.js:1256
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s аз шумо иҷозат мепурсад, ки тавонад шуморо дар онлайн бинад"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1342
msgid "Network error"
msgstr "Хатои шабака"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1344
msgid "Authentication failed"
msgstr "Санҷиши ҳаққоният қатъ шудааст."
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1346
msgid "Encryption error"
msgstr "Хатои рамзгузорӣ"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate not provided"
msgstr "Гувоҳинома таъмин нашудааст"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate untrusted"
msgstr "Гувоҳиномаи беэътибор"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate expired"
msgstr "Гувоҳинома аз мӯҳлаташ гузашт"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate not activated"
msgstr "Гувоҳинома фаъол нашудааст"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate hostname mismatch"
msgstr "Номувофиқати гувоҳиномаи номи мизоҷон"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1358
msgid "Certificate fingerprint mismatch"
msgstr "Номувофиқати гувоҳиномаи нақши ангуштон"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1360
msgid "Certificate self-signed"
msgstr "Гувоҳиномаи худимзошуда"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1362
msgid "Status is set to offline"
msgstr "Вазъият ба \"офлайн\" гузаштааст"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1364
msgid "Encryption is not available"
msgstr "Рамзгузорӣ дастрас нест"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1366
msgid "Certificate is invalid"
msgstr "Гувоҳинома нодуруст аст"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been refused"
msgstr "Пайваст рад карда шудааст"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1370
msgid "Connection can't be established"
msgstr "Пайвастшавӣ имконнопазир аст"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1372
msgid "Connection has been lost"
msgstr "Пайваст гум шудааст"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1374
msgid "This account is already connected to the server"
msgstr "Ин ҳисоб аллакай ба сервер пайваст шудааст"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1376
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Пайваст тавассути сарчашмаи якхела бо пайвасти нав ҷойиваз карда шуд"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1378
msgid "The account already exists on the server"
msgstr "Ҳисоб дар сервер аллакай мавҷуд аст"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1380
msgid "Server is currently too busy to handle the connection"
msgstr "Барои коркарди ин пайваст сервер дар айни ҳол хеле машғул мебошад"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1382
msgid "Certificate has been revoked"
msgstr "Гувоҳинома лағв карда шуд"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1384
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Гувоҳинома алгоритми хатарноки рамзро истифода мебарад, ё ки рамзгузории "
"суст дорад"
#: ../js/ui/components/telepathyClient.js:1390
#: ../js/ui/components/telepathyClient.js:1386
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -961,22 +961,22 @@ msgstr ""
"Дарозии гувоҳиномаи сервер, ё ки чуқурии занҷири гувоҳиномаи сервер, аз "
"маҳдудиятҳое, ки бо китобхонаи рамзгузорӣ таъин шудаанд, дарозтар мебошад"
#: ../js/ui/components/telepathyClient.js:1392
#: ../js/ui/components/telepathyClient.js:1388
msgid "Internal error"
msgstr "Хатогии дохилӣ"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1398
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Пайвастшавӣ ба %s имконнопазир аст"
#: ../js/ui/components/telepathyClient.js:1407
#: ../js/ui/components/telepathyClient.js:1403
msgid "View account"
msgstr "Намоиш додани ҳисоб"
#: ../js/ui/components/telepathyClient.js:1444
#: ../js/ui/components/telepathyClient.js:1440
msgid "Unknown reason"
msgstr "Сабаби номаълум"
@ -1132,13 +1132,13 @@ msgid "Other users are logged in."
msgstr "Корбарони дигар ворид шудаанд."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:618
#, javascript-format
msgid "%s (remote)"
msgstr "%s (дурдаст)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:621
#, javascript-format
msgid "%s (console)"
msgstr "%s (консол)"
@ -1152,7 +1152,7 @@ msgstr "Насб кардан"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "“%s”-ро аз extensions.gnome.org боргирӣ ва насб мекунед?"
#: ../js/ui/keyboard.js:645 ../js/ui/status/keyboard.js:335
#: ../js/ui/keyboard.js:641 ../js/ui/status/keyboard.js:335
msgid "Keyboard"
msgstr "Клавиатура"
@ -1240,11 +1240,11 @@ msgstr "Ягон паём нест"
msgid "Message Tray"
msgstr "Қуттии паёмҳо"
#: ../js/ui/messageTray.js:2967
#: ../js/ui/messageTray.js:2962
msgid "System Information"
msgstr "Маълумоти система"
#: ../js/ui/notificationDaemon.js:516 ../src/shell-app.c:425
#: ../js/ui/notificationDaemon.js:515 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Номаълум"
@ -1282,7 +1282,7 @@ msgstr "Баромад"
msgid "Activities"
msgstr "Фаъолиятҳо"
#: ../js/ui/panel.js:915
#: ../js/ui/panel.js:914
msgid "Top Bar"
msgstr "Панели боло"
@ -1319,19 +1319,19 @@ msgstr "Қулф кардан"
msgid "GNOME needs to lock the screen"
msgstr "GNOME бояд экранро қулф кунад"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1312
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1309
msgid "Unable to lock"
msgstr "Қулф карда намешавад"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1313
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application"
msgstr "Қулф аз тарави барнома баста шудааст"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:603
msgid "Searching…"
msgstr "Ҷустуҷӯ рафта истодааст..."
#: ../js/ui/search.js:652
#: ../js/ui/search.js:649
msgid "No results."
msgstr "Ягон натиҷа нест."
@ -1395,11 +1395,11 @@ msgstr "Тугмаҳои ҷастухез"
msgid "Mouse Keys"
msgstr "Тугмаҳои муш"
#: ../js/ui/status/accessibility.js:144
#: ../js/ui/status/accessibility.js:143
msgid "High Contrast"
msgstr "Контрасти баланд"
#: ../js/ui/status/accessibility.js:193
#: ../js/ui/status/accessibility.js:192
msgid "Large Text"
msgstr "Матни бузург"
@ -1442,10 +1442,12 @@ msgid "Location"
msgstr "Ҷойгиршавӣ"
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#| msgid "Disabled"
msgid "Disable"
msgstr "Ғайрифаъол кардан"
#: ../js/ui/status/location.js:165
#| msgid "Enabled"
msgid "Enable"
msgstr "Фаъол кардан"
@ -1469,42 +1471,37 @@ msgstr "Пайваст шудааст"
#. 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) */
#: ../js/ui/status/network.js:426
#| msgid "unmanaged"
msgid "Unmanaged"
msgstr "Идоранашуда"
msgid "unmanaged"
msgstr "идоранашуда"
#: ../js/ui/status/network.js:428
#| msgid "disconnecting..."
msgid "Disconnecting"
msgstr "Пайваст қатъ шуда истодааст"
msgid "disconnecting..."
msgstr "қатъ кардани пайваст..."
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Пайвастшавӣ"
#: ../js/ui/status/network.js:434 ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "пайвастшавӣ..."
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:437
#| msgid "authentication required"
msgid "Authentication required"
msgstr "Санҷиши ҳаққоният лозим аст"
#: ../js/ui/status/network.js:437 ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "санҷиши ҳаққоният лозим аст"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:445
#| msgid "firmware missing"
msgid "Firmware missing"
msgstr "Нармафзори дарунсохт вуҷуд надорад"
msgid "firmware missing"
msgstr "нармафзори дарунсохт вуҷуд надорад"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#: ../js/ui/status/network.js:449
#| msgid "unavailable"
msgid "Unavailable"
msgstr "Дастнорас"
msgid "unavailable"
msgstr "дастнорас"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Пайваст қатъ шудааст"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "пайваст қатъ шудааст"
#: ../js/ui/status/network.js:467
msgid "Wired Settings"
@ -1578,18 +1575,9 @@ msgstr "Фаъол кардан"
msgid "Hotspot Active"
msgstr "Hotspot фаъол аст"
#: ../js/ui/status/network.js:1362
msgid "connecting..."
msgstr "пайвастшавӣ..."
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1365
msgid "authentication required"
msgstr "санҷиши ҳаққоният лозим аст"
#: ../js/ui/status/network.js:1367
msgid "connection failed"
msgstr "пайваст қатъ шудааст"
#: ../js/ui/status/network.js:1254
msgid "Connecting"
msgstr "Пайвастшавӣ"
#: ../js/ui/status/network.js:1433 ../js/ui/status/rfkill.js:88
msgid "Network Settings"
@ -1607,6 +1595,10 @@ msgstr "VPN"
msgid "Network Manager"
msgstr "Мудири шабака"
#: ../js/ui/status/network.js:1646
msgid "Connection failed"
msgstr "Пайваст қатъ шудааст"
#: ../js/ui/status/network.js:1647
msgid "Activation of network connection failed"
msgstr "Фаъолсозии пайвасти шабака қатъ шудааст."
@ -1717,7 +1709,7 @@ msgstr "Барқарор кардани тағйирот"
msgid "Keep Changes"
msgstr "Нигоҳ доштани тағйирот"
#: ../js/ui/windowManager.js:98
#: ../js/ui/windowManager.js:97
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1780,7 +1772,7 @@ msgstr "Паролҳо мувофиқат намекунанд."
msgid "Password cannot be blank"
msgstr "Парол бояд холӣ набошад"
#: ../src/shell-polkit-authentication-agent.c:346
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Равзанаи гуфтугӯи санҷиши ҳакконият бо корбар бекор карда шуд"

926
po/tr.po

File diff suppressed because it is too large Load Diff

146
po/uk.po
View File

@ -6,18 +6,17 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-04-21 17:13+0000\n"
"PO-Revision-Date: 2014-04-22 15:06+0300\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-03-16 13:20+0200\n"
"PO-Revision-Date: 2014-03-16 15:56+0300\n"
"Last-Translator: Daniel Korostil <ted.korostiled@gmail.com>\n"
"Language-Team: linux.org.ua\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
@ -323,25 +322,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Увійти"
#: ../js/gdm/loginDialog.js:271
#: ../js/gdm/loginDialog.js:270
msgid "Choose Session"
msgstr "Виберіть сеанс"
#: ../js/gdm/loginDialog.js:431
#: ../js/gdm/loginDialog.js:430
msgid "Not listed?"
msgstr "Немає в переліку?"
#: ../js/gdm/loginDialog.js:614
#: ../js/gdm/loginDialog.js:608
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(наприклад, користувач або %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:262
#: ../js/gdm/loginDialog.js:613 ../js/ui/components/networkAgent.js:262
#: ../js/ui/components/networkAgent.js:280
msgid "Username: "
msgstr "Користувач:"
#: ../js/gdm/loginDialog.js:920
#: ../js/gdm/loginDialog.js:884
msgid "Login Window"
msgstr "Вікно входу"
@ -366,27 +365,27 @@ msgstr "Неможливо розібрати команду:"
msgid "Execution of “%s” failed:"
msgstr "Не вдалось виконати «%s»:"
#: ../js/ui/appDisplay.js:636
#: ../js/ui/appDisplay.js:629
msgid "Frequently used applications will appear here"
msgstr "Часто використовувані програми будуть з'являтись тут"
#: ../js/ui/appDisplay.js:747
#: ../js/ui/appDisplay.js:740
msgid "Frequent"
msgstr "Частовживане"
#: ../js/ui/appDisplay.js:754
#: ../js/ui/appDisplay.js:747
msgid "All"
msgstr "Усе"
#: ../js/ui/appDisplay.js:1566
#: ../js/ui/appDisplay.js:1555
msgid "New Window"
msgstr "Нове вікно"
#: ../js/ui/appDisplay.js:1588 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1577 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Вилучити з улюбленого"
#: ../js/ui/appDisplay.js:1594
#: ../js/ui/appDisplay.js:1583
msgid "Add to Favorites"
msgstr "Додати до улюбленого"
@ -803,13 +802,13 @@ msgstr "%s запрошує долучитись до %s"
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1199
#: ../js/ui/components/telepathyClient.js:1233
#: ../js/ui/components/telepathyClient.js:1291
#: ../js/ui/components/telepathyClient.js:1290
msgid "Decline"
msgstr "Відмовити"
#: ../js/ui/components/telepathyClient.js:1170
#: ../js/ui/components/telepathyClient.js:1239
#: ../js/ui/components/telepathyClient.js:1296
#: ../js/ui/components/telepathyClient.js:1295
msgid "Accept"
msgstr "Прийняти"
@ -846,99 +845,99 @@ msgstr "%s надсилає %s"
msgid "%s would like permission to see when you are online"
msgstr "%s бажає дозволу бачити, коли ви у мережі"
#: ../js/ui/components/telepathyClient.js:1342
#: ../js/ui/components/telepathyClient.js:1341
msgid "Network error"
msgstr "Помилка мережі"
#: ../js/ui/components/telepathyClient.js:1344
#: ../js/ui/components/telepathyClient.js:1343
msgid "Authentication failed"
msgstr "Помилка автентифікації"
#: ../js/ui/components/telepathyClient.js:1346
#: ../js/ui/components/telepathyClient.js:1345
msgid "Encryption error"
msgstr "Помилка шифрування"
#: ../js/ui/components/telepathyClient.js:1348
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate not provided"
msgstr "Сертифікат не надано"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate untrusted"
msgstr "Сертифікат ненадійний"
#: ../js/ui/components/telepathyClient.js:1352
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate expired"
msgstr "Сертифікат застарів"
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate not activated"
msgstr "Сертифікат не активовано"
#: ../js/ui/components/telepathyClient.js:1356
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate hostname mismatch"
msgstr "Сертифікат не збігається з назвою вузла"
#: ../js/ui/components/telepathyClient.js:1358
#: ../js/ui/components/telepathyClient.js:1357
msgid "Certificate fingerprint mismatch"
msgstr "Сертифікат не збігається з відбитком"
#: ../js/ui/components/telepathyClient.js:1360
#: ../js/ui/components/telepathyClient.js:1359
msgid "Certificate self-signed"
msgstr "Сертифікат самопідписано"
#: ../js/ui/components/telepathyClient.js:1362
#: ../js/ui/components/telepathyClient.js:1361
msgid "Status is set to offline"
msgstr "Стан змінено на «поза мережею»"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1363
msgid "Encryption is not available"
msgstr "Шифрування недоступне"
#: ../js/ui/components/telepathyClient.js:1366
#: ../js/ui/components/telepathyClient.js:1365
msgid "Certificate is invalid"
msgstr "Сертифікат недійсний"
#: ../js/ui/components/telepathyClient.js:1368
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been refused"
msgstr "З'єднання відкинуто"
#: ../js/ui/components/telepathyClient.js:1370
#: ../js/ui/components/telepathyClient.js:1369
msgid "Connection can't be established"
msgstr "З'єднання неможливо встановити"
#: ../js/ui/components/telepathyClient.js:1372
#: ../js/ui/components/telepathyClient.js:1371
msgid "Connection has been lost"
msgstr "З'єднання втрачено"
#: ../js/ui/components/telepathyClient.js:1374
#: ../js/ui/components/telepathyClient.js:1373
msgid "This account is already connected to the server"
msgstr "Цей обліковий запис уже з'єднано із сервером"
#: ../js/ui/components/telepathyClient.js:1376
#: ../js/ui/components/telepathyClient.js:1375
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "З'єднання заміщено новим через той самий ресурс"
#: ../js/ui/components/telepathyClient.js:1378
#: ../js/ui/components/telepathyClient.js:1377
msgid "The account already exists on the server"
msgstr "Обліковий запис уже існує на сервері"
#: ../js/ui/components/telepathyClient.js:1380
#: ../js/ui/components/telepathyClient.js:1379
msgid "Server is currently too busy to handle the connection"
msgstr "Сервер надто зайнятий, щоб обробити з'єднання"
#: ../js/ui/components/telepathyClient.js:1382
#: ../js/ui/components/telepathyClient.js:1381
msgid "Certificate has been revoked"
msgstr "Сертифікат відкликано"
#: ../js/ui/components/telepathyClient.js:1384
#: ../js/ui/components/telepathyClient.js:1383
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Сертифікат використовує небезпечні алгоритми шифрування або криптографічно "
"заслабкий"
#: ../js/ui/components/telepathyClient.js:1386
#: ../js/ui/components/telepathyClient.js:1385
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -946,22 +945,22 @@ msgstr ""
"Тривалість сертифіката сервера, або глибина його ланцюга, перевищує "
"обмеження, які накладає бібліотека криптографії"
#: ../js/ui/components/telepathyClient.js:1388
#: ../js/ui/components/telepathyClient.js:1387
msgid "Internal error"
msgstr "Внутрішня помилка"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1398
#: ../js/ui/components/telepathyClient.js:1397
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Неможливо під'єднатись до %s"
#: ../js/ui/components/telepathyClient.js:1403
#: ../js/ui/components/telepathyClient.js:1402
msgid "View account"
msgstr "Переглянути обліковий запис"
#: ../js/ui/components/telepathyClient.js:1440
#: ../js/ui/components/telepathyClient.js:1439
msgid "Unknown reason"
msgstr "Невідома причина"
@ -1161,8 +1160,7 @@ msgstr "Сховати помилки"
msgid "Show Errors"
msgstr "Показати помилки"
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:59
#: ../js/ui/status/location.js:167
#: ../js/ui/lookingGlass.js:716
msgid "Enabled"
msgstr "Увімкнено"
@ -1170,8 +1168,8 @@ msgstr "Увімкнено"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:164
#: ../js/ui/status/network.js:555 ../src/gvc/gvc-mixer-control.c:1830
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/network.js:555
#: ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "Вимкнено"
@ -1320,7 +1318,7 @@ msgstr "Блокування заборонено програмою"
msgid "Searching…"
msgstr "Пошуки…"
#: ../js/ui/search.js:649
#: ../js/ui/search.js:646
msgid "No results."
msgstr "Безрезультатно."
@ -1392,22 +1390,23 @@ msgstr "Висока контрастність"
msgid "Large Text"
msgstr "Більший текст"
#: ../js/ui/status/bluetooth.js:49
#: ../js/ui/status/bluetooth.js:48
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:151
#: ../js/ui/status/bluetooth.js:50 ../js/ui/status/location.js:60
#: ../js/ui/status/location.js:167 ../js/ui/status/network.js:151
#: ../js/ui/status/network.js:323 ../js/ui/status/network.js:1234
#: ../js/ui/status/network.js:1345 ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:105
msgid "Turn Off"
msgstr "Вимкнути"
#: ../js/ui/status/bluetooth.js:54
#: ../js/ui/status/bluetooth.js:53
msgid "Bluetooth Settings"
msgstr "Параметри Bluetooth"
#: ../js/ui/status/bluetooth.js:104
#: ../js/ui/status/bluetooth.js:103
#, javascript-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
@ -1415,7 +1414,7 @@ msgstr[0] "Під'єднано %d пристрій"
msgstr[1] "Під'єднано %d пристрої"
msgstr[2] "Під'єднано %d пристроїв"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1262
#: ../js/ui/status/bluetooth.js:105 ../js/ui/status/network.js:1262
msgid "Not Connected"
msgstr "Роз'єднано"
@ -1431,29 +1430,24 @@ msgstr "Показати розкладку клавіатури"
msgid "Location"
msgstr "Місцевість"
#: ../js/ui/status/location.js:60 ../js/ui/status/location.js:168
#| msgid "Disabled"
msgid "Disable"
msgstr "Вимкнути"
#: ../js/ui/status/location.js:59 ../js/ui/status/location.js:166
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Увімкнено"
#: ../js/ui/status/location.js:165
#| msgid "Enabled"
msgid "Enable"
#: ../js/ui/status/location.js:163 ../js/ui/status/network.js:420
#: ../js/ui/status/network.js:1260 ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Вимкнено"
#: ../js/ui/status/location.js:164 ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Увімкнути"
#: ../js/ui/status/location.js:167
msgid "In Use"
msgstr "Використовується"
#: ../js/ui/status/network.js:74
msgid "<unknown>"
msgstr "<невідомо>"
#: ../js/ui/status/network.js:420 ../js/ui/status/network.js:1260
#: ../js/ui/status/network.js:1464
msgid "Off"
msgstr "Вимкнено"
#: ../js/ui/status/network.js:422
msgid "Connected"
msgstr "З'єднано"
@ -1557,10 +1551,6 @@ msgstr "Виберіть мережу"
msgid "Wi-Fi Settings"
msgstr "Параметри Wi-Fi"
#: ../js/ui/status/network.js:1234
msgid "Turn On"
msgstr "Увімкнути"
#: ../js/ui/status/network.js:1251
msgid "Hotspot Active"
msgstr "Доступні точки доступу"
@ -1627,10 +1617,6 @@ msgstr "Батарея"
msgid "Airplane Mode"
msgstr "У літаку"
#: ../js/ui/status/rfkill.js:84
msgid "On"
msgstr "Увімкнено"
#: ../js/ui/status/system.js:314
msgid "Switch User"
msgstr "Змінити користувача"

View File

@ -33,6 +33,10 @@ bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-perf-tool
EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-perf-tool.in
bin_PROGRAMS = gnome-shell gnome-shell-extension-prefs
if HAVE_MUTTER_WAYLAND
bin_PROGRAMS += gnome-shell-wayland
endif HAVE_MUTTER_WAYLAND
generated_script_substitutions = \
-e "s|@bindir[@]|$(bindir)|g" \
-e "s|@datadir[@]|$(datadir)|g" \
@ -72,6 +76,10 @@ privlibdir = $(pkglibdir)
privlib_LTLIBRARIES = libgnome-shell-js.la libgnome-shell-menu.la libgnome-shell.la
noinst_LTLIBRARIES += libgnome-shell-base.la
if HAVE_MUTTER_WAYLAND
privlib_LTLIBRARIES += libgnome-shell-wayland.la
endif HAVE_MUTTER_WAYLAND
shell_built_sources = \
shell-enum-types.h \
shell-enum-types.c
@ -189,6 +197,21 @@ gnome_shell_CPPFLAGS = \
gnome_shell_LDADD = libgnome-shell.la libgnome-shell-js.la $(GNOME_SHELL_LIBS) $(MUTTER_LIBS)
gnome_shell_DEPENDENCIES = libgnome-shell.la
if HAVE_MUTTER_WAYLAND
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_CPPFLAGS = \
-DHAVE_WAYLAND \
-DMUTTER_TYPELIB_DIR=\"$(MUTTER_WAYLAND_TYPELIB_DIR)\" \
$(MUTTER_WAYLAND_CFLAGS) \
$(gnome_shell_cflags)
gnome_shell_wayland_LDADD = libgnome-shell-wayland.la libgnome-shell-js.la $(GNOME_SHELL_LIBS) $(MUTTER_WAYLAND_LIBS)
gnome_shell_wayland_DEPENDENCIES = libgnome-shell-wayland.la
endif HAVE_MUTTER_WAYLAND
gnome_shell_extension_prefs_SOURCES = \
gnome-shell-extension-prefs.c \
$(NULL)
@ -300,6 +323,12 @@ libgnome_shell_la_LDFLAGS = $(libgnome_shell_ldflags)
libgnome_shell_la_LIBADD = $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) libgnome-shell-base.la
libgnome_shell_la_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags)
if HAVE_MUTTER_WAYLAND
libgnome_shell_wayland_la_LDFLAGS = $(libgnome_shell_ldflags)
libgnome_shell_wayland_la_LIBADD = $(MUTTER_WAYLAND_LIBS) libgnome-shell-base.la
libgnome_shell_wayland_la_CPPFLAGS = $(MUTTER_WAYLAND_CFLAGS) -DHAVE_WAYLAND $(gnome_shell_cflags)
endif HAVE_MUTTER_WAYLAND
ShellMenu-0.1.gir: libgnome-shell-menu.la
ShellMenu_0_1_gir_INCLUDES = Gio-2.0
ShellMenu_0_1_gir_CFLAGS = $(libgnome_shell_menu_la_CPPFLAGS) -I $(srcdir)
@ -320,12 +349,16 @@ INTROSPECTION_GIRS += ShellMenu-0.1.gir
CLEANFILES += ShellMenu-0.1.gir
Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir
Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4
Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0
if HAVE_NETWORKMANAGER
Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
endif
Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
Shell_0_1_gir_LIBS = libgnome-shell.la
# Hack! we use PROGRAM instead of LIBS so that the soname is not included
# in the typelib. This way the symbols will be resolved with the libgnome-shell
# linked against the executable (which will be libgnome-shell-wayland for
# gnome-shell-wayland)
Shell_0_1_gir_PROGRAM = $(builddir)/gnome-shell
Shell_0_1_gir_FILES = $(libgnome_shell_la_gir_sources)
Shell_0_1_gir_SCANNERFLAGS = \
--include-uninstalled=$(builddir)/St-1.0.gir \

View File

@ -369,7 +369,6 @@ backend_died_cb (EClient *client, CalendarSourceData *source_data)
source_data->timeout_id = g_timeout_add_seconds (2, backend_restart,
source_data);
g_source_set_name_by_id (source_data->timeout_id, "[gnome-shell] backend_restart");
}
static void

View File

@ -537,7 +537,6 @@ app_schedule_changed (App *app)
app->changed_timeout_id = g_timeout_add (2000,
on_app_schedule_changed_cb,
app);
g_source_set_name_by_id (app->changed_timeout_id, "[gnome-shell] on_app_schedule_changed_cb");
}
}

View File

@ -6,8 +6,6 @@
#include <gjs/gjs.h>
#include <glib/gi18n.h>
#include "shell-js.h"
int
main (int argc, char *argv[])
{
@ -36,6 +34,7 @@ main (int argc, char *argv[])
return 1;
}
if (!gjs_context_eval (context,
"const Main = imports.extensionPrefs.main; Main.main(ARGV);",
-1,

View File

@ -73,15 +73,7 @@ static void gnome_shell_plugin_show_tile_preview (MetaPlugin *plugin,
MetaRectangle *tile_rect,
int tile_monitor);
static void gnome_shell_plugin_hide_tile_preview (MetaPlugin *plugin);
static void gnome_shell_plugin_show_window_menu (MetaPlugin *plugin,
MetaWindow *window,
MetaWindowMenuType menu,
int x,
int y);
static void gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin *plugin,
MetaWindow *window,
MetaWindowMenuType menu,
MetaRectangle *rect);
static gboolean gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
XEvent *event);
@ -148,8 +140,6 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
plugin_class->show_tile_preview = gnome_shell_plugin_show_tile_preview;
plugin_class->hide_tile_preview = gnome_shell_plugin_hide_tile_preview;
plugin_class->show_window_menu = gnome_shell_plugin_show_window_menu;
plugin_class->show_window_menu_for_rect = gnome_shell_plugin_show_window_menu_for_rect;
plugin_class->xevent_filter = gnome_shell_plugin_xevent_filter;
plugin_class->keybinding_filter = gnome_shell_plugin_keybinding_filter;
@ -313,25 +303,6 @@ gnome_shell_plugin_hide_tile_preview (MetaPlugin *plugin)
_shell_wm_hide_tile_preview (get_shell_wm ());
}
static void
gnome_shell_plugin_show_window_menu (MetaPlugin *plugin,
MetaWindow *window,
MetaWindowMenuType menu,
int x,
int y)
{
_shell_wm_show_window_menu (get_shell_wm (), window, menu, x, y);
}
static void
gnome_shell_plugin_show_window_menu_for_rect (MetaPlugin *plugin,
MetaWindow *window,
MetaWindowMenuType menu,
MetaRectangle *rect)
{
_shell_wm_show_window_menu_for_rect (get_shell_wm (), window, menu, rect);
}
static gboolean
gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
XEvent *xev)
@ -355,8 +326,10 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
}
#endif
#ifdef HAVE_WAYLAND
if (meta_is_wayland_compositor ())
return FALSE;
#endif
/*
* Pass the event to shell-global for XDND

View File

@ -778,7 +778,7 @@ emit_changed_accels (GtkActionMuxer *muxer,
/**
* gtk_action_muxer_set_parent:
* @muxer: a #GtkActionMuxer
* @parent: (nullable): the new parent #GtkActionMuxer
* @parent: (allow-none): the new parent #GtkActionMuxer
*
* Sets the parent of @muxer to @parent.
*/

View File

@ -76,7 +76,6 @@ ensure_autoquit_on (void)
autoquit_id =
g_timeout_add_seconds (AUTOQUIT_TIMEOUT,
autoquit_timeout_cb, NULL);
g_source_set_name_by_id (autoquit_id, "[gnome-shell] autoquit_timeout_cb");
}
typedef struct {

View File

@ -590,7 +590,6 @@ shell_mime_sniffer_sniff_async (ShellMimeSniffer *self,
self->priv->watchdog_id =
g_timeout_add (WATCHDOG_TIMEOUT,
watchdog_timeout_reached_cb, self);
g_source_set_name_by_id (self->priv->watchdog_id, "[gnome-shell] watchdog_timeout_reached_cb");
start_loading_file (self);
}

View File

@ -252,7 +252,7 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
/**
* shell_app_system_lookup_desktop_wmclass:
* @system: a #ShellAppSystem
* @wmclass: (nullable): A WM_CLASS value
* @wmclass: (allow-none): A WM_CLASS value
*
* Find a valid application whose .desktop file, without the extension
* and properly canonicalized, matches @wmclass.
@ -303,7 +303,7 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
/**
* shell_app_system_lookup_startup_wmclass:
* @system: a #ShellAppSystem
* @wmclass: (nullable): A WM_CLASS value
* @wmclass: (allow-none): A WM_CLASS value
*
* Find a valid application whose .desktop file contains a
* StartupWMClass entry matching @wmclass.

View File

@ -567,7 +567,6 @@ ensure_queued_save (ShellAppUsage *self)
if (self->save_id != 0)
return;
self->save_id = g_timeout_add_seconds (SAVE_APPS_TIMEOUT_SECONDS, idle_save_application_usage, self);
g_source_set_name_by_id (self->save_id, "[gnome-shell] idle_save_application_usage");
}
/* Clean up apps we see rarely.

View File

@ -516,7 +516,7 @@ find_most_recent_transient_on_same_workspace (MetaDisplay *display,
/**
* shell_app_activate_window:
* @app: a #ShellApp
* @window: (nullable): Window to be focused
* @window: (allow-none): Window to be focused
* @timestamp: Event timestamp
*
* Bring all windows for the given app to the foreground,

View File

@ -34,6 +34,7 @@
#endif
#ifdef __OpenBSD__
#include <sys/param.h>
#include <sys/sysctl.h>
#endif
@ -285,33 +286,7 @@ shell_global_init (ShellGlobal *global)
if (shell_js)
{
int i, j;
search_path = g_strsplit (shell_js, ":", -1);
/* The naive g_strsplit above will split 'resource:///foo/bar' into 'resource',
* '///foo/bar'. Combine these back together by looking for a literal 'resource'
* in the array. */
for (i = 0, j = 0; search_path[i];)
{
char *out;
if (strcmp (search_path[i], "resource") == 0 && search_path[i + 1] != NULL)
{
out = g_strconcat (search_path[i], ":", search_path[i + 1], NULL);
g_free (search_path[i]);
g_free (search_path[i + 1]);
i += 2;
}
else
{
out = search_path[i];
i += 1;
}
search_path[j++] = out;
}
search_path[j] = NULL; /* NULL-terminate the now possibly shorter array */
}
else
{
@ -910,6 +885,7 @@ _shell_global_set_plugin (ShellGlobal *global,
global->stage = CLUTTER_STAGE (meta_get_stage_for_screen (global->meta_screen));
#ifdef HAVE_WAYLAND
if (meta_is_wayland_compositor ())
{
/* When Mutter is acting as its own display server then the
@ -931,6 +907,7 @@ _shell_global_set_plugin (ShellGlobal *global,
global->stage_xwindow = None;
}
else
#endif
{
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
global->ibus_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
@ -1155,19 +1132,28 @@ shell_global_reexec_self (ShellGlobal *global)
{
GPtrArray *arr;
gsize len;
#if defined __linux__
char *buf;
char *buf_p;
char *buf_end;
GError *error = NULL;
#if defined __linux__
if (!g_file_get_contents ("/proc/self/cmdline", &buf, &len, &error))
{
g_warning ("failed to get /proc/self/cmdline: %s", error->message);
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;
arr = g_ptr_array_new ();
/* The cmdline file is NUL-separated */
@ -1175,30 +1161,6 @@ shell_global_reexec_self (ShellGlobal *global)
g_ptr_array_add (arr, buf_p);
g_ptr_array_add (arr, NULL);
#elif defined __OpenBSD__
gchar **args, **args_p;
gint mib[] = { CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV };
if (sysctl (mib, G_N_ELEMENTS (mib), NULL, &len, NULL, 0) == -1)
return;
args = g_malloc0 (len);
if (sysctl (mib, G_N_ELEMENTS (mib), args, &len, NULL, 0) == -1) {
g_warning ("failed to get command line args: %d", errno);
g_free (args);
return;
}
arr = g_ptr_array_new ();
for (args_p = args; *args_p != NULL; args_p++) {
g_ptr_array_add (arr, *args_p);
}
g_ptr_array_add (arr, NULL);
#else
return;
#endif
/* Close all file descriptors other than stdin/stdout/stderr, otherwise
* they will leak and stay open after the exec. In particular, this is
@ -1214,11 +1176,6 @@ shell_global_reexec_self (ShellGlobal *global)
execvp (arr->pdata[0], (char**)arr->pdata);
g_warning ("failed to reexec: %s", g_strerror (errno));
g_ptr_array_free (arr, TRUE);
#if defined __linux__
g_free (buf);
#elif defined __OpenBSD__
g_free (args);
#endif
}
/**
@ -1479,12 +1436,9 @@ schedule_leisure_functions (ShellGlobal *global)
* in another thread.
*/
if (!global->leisure_function_id)
{
global->leisure_function_id = g_idle_add_full (G_PRIORITY_LOW,
run_leisure_functions,
global, NULL);
g_source_set_name_by_id (global->leisure_function_id, "[gnome-shell] run_leisure_functions");
}
global->leisure_function_id = g_idle_add_full (G_PRIORITY_LOW,
run_leisure_functions,
global, NULL);
}
/**
@ -1602,7 +1556,7 @@ build_ca_proplist_for_event (ca_proplist *props,
* @global: the #ShellGlobal
* @id: an id, used to cancel later (0 if not needed)
* @name: the sound name
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
*
* Plays a simple sound picked according to Freedesktop sound theme.
* Really just a workaround for libcanberra not being introspected.
@ -1630,7 +1584,7 @@ shell_global_play_theme_sound (ShellGlobal *global,
* @id: an id, used to cancel later (0 if not needed)
* @name: the sound name
* @description: the localized description of the event that triggered this alert
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
* @application_id: application on behalf of which the sound is played
* @application_name:
*
@ -1664,7 +1618,7 @@ shell_global_play_theme_sound_full (ShellGlobal *global,
* @id: an id, used to cancel later (0 if not needed)
* @file_name: the file name to play
* @description: the localized description of the event that triggered this alert
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
* @application_id: application on behalf of which the sound is played
* @application_name:
*
@ -1698,7 +1652,7 @@ shell_global_play_sound_file_full (ShellGlobal *global,
* @id: an id, used to cancel later (0 if not needed)
* @file_name: the file name to play
* @description: the localized description of the event that triggered this alert
* @for_event: (nullable): a #ClutterEvent in response to which the sound is played
* @for_event: (allow-none): a #ClutterEvent in response to which the sound is played
*
* Like shell_global_play_theme_sound(), but with an explicit path
* instead of a themed sound.
@ -1859,7 +1813,7 @@ load_variant (GFile *dir,
* shell_global_set_runtime_state:
* @global: a #ShellGlobal
* @property_name: Name of the property
* @variant: (nullable): A #GVariant, or %NULL to unset
* @variant: (allow-none): A #GVariant, or %NULL to unset
*
* Change the value of serialized runtime state.
*/
@ -1894,7 +1848,7 @@ shell_global_get_runtime_state (ShellGlobal *global,
* shell_global_set_persistent_state:
* @global: a #ShellGlobal
* @property_name: Name of the property
* @variant: (nullable): A #GVariant, or %NULL to unset
* @variant: (allow-none): A #GVariant, or %NULL to unset
*
* Change the value of serialized persistent state.
*/

View File

@ -516,7 +516,7 @@ shell_keyring_prompt_new (void)
*
* Get the prompt password text actor
*
* Returns: (transfer none) (nullable): the password actor
* Returns: (transfer none) (allow-none): the password actor
*/
ClutterText *
shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self)
@ -531,7 +531,7 @@ shell_keyring_prompt_get_password_actor (ShellKeyringPrompt *self)
*
* Get the prompt password text actor
*
* Returns: (transfer none) (nullable): the password actor
* Returns: (transfer none) (allow-none): the password actor
*/
ClutterText *
shell_keyring_prompt_get_confirm_actor (ShellKeyringPrompt *self)
@ -616,7 +616,7 @@ on_password_changed (ClutterText *text,
/**
* shell_keyring_prompt_set_password_actor:
* @self: the internal prompt
* @password_actor: (nullable): the password actor
* @password_actor: (allow-none): the password actor
*
* Set the prompt password text actor
*/
@ -651,7 +651,7 @@ shell_keyring_prompt_set_password_actor (ShellKeyringPrompt *self,
/**
* shell_keyring_prompt_set_confirm_actor:
* @self: the internal prompt
* @confirm_actor: (nullable): the confirm password actor
* @confirm_actor: (allow-none): the confirm password actor
*
* Set the prompt password confirmation text actor
*/

View File

@ -64,7 +64,7 @@ shell_menu_tracker_remove_func (gint position,
* shell_menu_tracker_new:
* @observable:
* @model:
* @action_namespace: (nullable):
* @action_namespace: (allow-none):
* @insert_func:
* @insert_user_data:
* @insert_notify:

View File

@ -75,13 +75,12 @@ on_timeout (gpointer data)
}
static void
establish_timeout (void)
establish_timeout ()
{
if (timeout_id != 0)
g_source_remove (timeout_id);
timeout_id = g_timeout_add (opt_idle_timeout * 1000, on_timeout, NULL);
g_source_set_name_by_id (timeout_id, "[gnome-shell] on_timeout");
}
static void

View File

@ -223,7 +223,6 @@ shell_perf_log_set_enabled (ShellPerfLog *perf_log,
perf_log->statistics_timeout_id = g_timeout_add (STATISTIC_COLLECTION_INTERVAL_MS,
statistics_timeout,
perf_log);
g_source_set_name_by_id (perf_log->statistics_timeout_id, "[gnome-shell] statistics_timeout");
}
else
{

View File

@ -300,14 +300,11 @@ on_request_cancelled (GCancellable *cancellable,
gpointer user_data)
{
AuthRequest *request = user_data;
guint id;
/* post-pone to idle to handle GCancellable deadlock in
*
* https://bugzilla.gnome.org/show_bug.cgi?id=642968
*/
id = g_idle_add (handle_cancelled_in_idle, request);
g_source_set_name_by_id (id, "[gnome-shell] handle_cancelled_in_idle");
g_idle_add (handle_cancelled_in_idle, request);
}
static void

View File

@ -78,10 +78,7 @@ shell_recorder_src_update_memory_used (ShellRecorderSrc *src,
g_mutex_lock (src->mutex);
src->memory_used += delta;
if (src->memory_used_update_idle == 0)
{
src->memory_used_update_idle = g_idle_add (shell_recorder_src_memory_used_update_idle, src);
g_source_set_name_by_id (src->memory_used_update_idle, "[gnome-shell] shell_recorder_src_memory_used_update_idle");
}
src->memory_used_update_idle = g_idle_add (shell_recorder_src_memory_used_update_idle, src);
g_mutex_unlock (src->mutex);
}

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