Compare commits

..

1 Commits

Author SHA1 Message Date
Philip Chimento
a1e41b6519 WIP - Remove ShellJS gir
You can define a new importer object by importing a subdirectory in GJS.
This is undocumented, but it is likely to at least hold until the whole
thing moves to ES6 modules.
2016-10-04 22:27:18 -07:00
137 changed files with 7776 additions and 15014 deletions

126
NEWS
View File

@@ -1,129 +1,3 @@
3.23.91
=======
* Use the original timestamps for restored notifications [Florian; #766410]
* Add weather information to date+time drop-down [Florian; #754031]
* Refine message list layout in date+time drop-down [Florian; #775763]
* Make next/prev media controls insensitive when unavailable [Florian; #773884]
* Misc. bug fixes [Piotr, Bastien, Florian; #772210, #769546, #775799]
Contributors:
Piotr Drąg, Carlos Garnacho, Florian Müllner, Bastien Nocera
Translations:
Baurzhan Muftakhidinov [kk], Jordi Mas [ca], Ask Hjorth Larsen [da],
Inaki Larranaga Murgoitio [eu], Daniel Mustieles [es], Dušan Kazik [sk],
Aurimas Černius [lt], Jiri Grönroos [fi], Kjartan Maraas [nb],
Piotr Drąg [pl], Daniel Korostil [uk], Kukuh Syafaat [id],
Milo Casagrande [it], Fabio Tomat [fur], Rafael Fontenelle [pt_BR],
Fran Dieguez [gl], Мирослав Николић [sr, sr@latin], Balázs Meskó [hu],
Chao-Hsiung Liao [zh_TW]
3.23.90
=======
* Handle Ctrl+Q and Ctrl+W in portal window [Bastien; #764133]
* Allow to scroll through ibus candidates with mouse [Peng; #776032]
* Reload apps on .desktop file content changes [Adrian; #773636]
* Use private data/cache directories in portal helper [Bastien; #775639]
* Fix subsurfaces not showing up in previews [Rui; #756715]
* Fix theme node transitions [Florian; #778145]
* Update pad (o)leds on mode switches [Carlos; #776543]
* Add security indicators to defend against malicious portals [Bastien; #749197]
* Don't allow type ahead at the login screen [Ray; #766139]
* Don't fail to load because of TLS errors [Bastien; #778253]
* Ensure the network lists remains sorted on rename [Benjamin; #778686]
* Toggle power-off/suspend button on long-press [Florian; #721173]
* Add "kill-switch" for user extensions [Florian; #778664]
* Add night light indicator to status area [Florian; #741224]
* Misc. bug fixes [Michael, Bastien, Carlos, Rui, Florian, Alan, Philip, Jonas;
#759793, #735233, #762444, #777784, #777934, #778158, #776199, #778425,
#771098, #778552, #777317, #778660, #778661, #745626, #778672]
Contributors:
Jonas Ådahl, Benjamin Berg, Michael Catanzaro, Philip Chimento,
Alan Coopersmith, Piotr Drąg, Carlos Garnacho, Yuri Konotopov,
Lionel Landwerlin, Rui Matos, Florian Müllner, Bastien Nocera,
Adrian Perez de Castro, Robert Roth, Ray Strode, Peng Wu
Translations:
Jiri Grönroos [fi], Balázs Meskó [hu], Gábor Kelemen [hu],
Daniel Mustieles [es], Dušan Kazik [sk],
Piotr Drąg [ar, eu, fa, hr, pa, pt, sr, sr@latin], Rafael Fontenelle [pt_BR],
Jordi Mas [ca], Piotr Drąg [pl], Alexandre Franke [fr],
Baurzhan Muftakhidinov [kk], Yuras Shumovich [be], Mandy Wang [zh_CN],
Marek Černocký [cs], Kukuh Syafaat [id], Kjartan Maraas [nb],
Daniel Korostil [uk]
3.23.3
======
* Fix replacing of GNotifications [Florian; #775149]
* Prepare for mozjs31 GJS [Philip; #775374]
* Misc. bug fixes [Niels, Jonas; #775507, #776130]
Contributors:
Jonas Ådahl, Michael Catanzaro, Philip Chimento, Niels De Graef,
Carlos Garnacho, Florian Müllner
Translations:
Muhammet Kara [tr], Christian Kirbach [de], Baurzhan Muftakhidinov [kk],
Cheng-Chia Tseng [zh_TW], A S Alam [pa], Gianvito Cavasoli [it]
3.23.2
======
* Implement Pad configuration OSD [Carlos; #771067]
* Show overview on three-finger touchpad pinch [Carlos; #765937]
* Summarize network sections with too many devices [Florian; #773892]
* Always show primary network icon when connected [Florian; #773890]
* Fix fullscreen transitions on wayland [Rui; #770345]
* Work around portal failures by using a URL without HTPPS redirect [Debarshi; #769940]
* Fix app view hiding when no usage data is available [Florian, Xiaoguang; #774381]
* Misc. bug fixes [Florian, Ray; #773875, #740043, #773893, #774643, #774805]
Contributors:
Carlos Garnacho, Rui Matos, Florian Müllner, Debarshi Ray, Ray Strode,
Xiaoguang Wang
Translations:
Balázs Meskó [hu], Fabio Tomat [fur], Marek Cernocky [cs], Stas Solovey [ru],
Daniel Mustieles [es], Marek Černocký [cs], Piotr Drąg [pl],
Rafael Fontenelle [pt_BR], Baurzhan Muftakhidinov [kk], Jiri Grönroos [fi],
Kjartan Maraas [nb]
3.23.1
======
* Request periodic scans while WiFi list is open [Dan; #767918]
* Include extension UUID in structured log metadata [Jonh; #770717]
* Line-wrap PAM messages on login screen [Tao; #764445]
* Add a way to launch an app on the discrete GPU [Bastien; #773117]
* Only allow graphs to lift screen shield when locked [Florian; #773328]
* Add reload option to gnome-shell-extension-tool [Jonh; #772593]
* Update background animations when resuming from suspend [Florian; #773265]
* Misc. bug fixes [Cosimo, Bastien, Florian, Philip, Carlos; #772723, #772287,
#756432, #772386, #772386, #773085, #773634]
Contributors:
Cosimo Cecchi, Philip Chimento, Carlos Garcia Campos, Florian Müllner,
Bastien Nocera, Jonh Wendell, Dan Williams, Tao Yang
Translations:
Fabio Tomat [fur], Philip Chimento [zh_CN], YunQiang Su [zh_CN],
Jordi Mas [ca], Piotr Drąg [pl], Muhammet Kara [tr], Marek Černocký [cs],
Daniel Korostil [uk], Dušan Kazik [sk]
3.22.1
======
* Fix hidden network indicator on startup [Florian; #772249]
* Fix order of windows with modal dialogs in window switcher [Florian; #747153]
* Fix feedback loop between StClipboard and X11 bridge [Carlos; #760745]
* Reliably match windows from Flatpak apps [Florian; #772615]
* Misc. bug fixes [Philip; #742249]
Contributors:
Philip Chimento, Carlos Garnacho, Florian Müllner
Translations:
Inaki Larranaga Murgoitio [eu], Khaled Hosny [ar], BM [uz@cyrillic],
Milo Casagrande [it], Cheng-Chia Tseng [zh_TW], gogo [hr]
3.22.0
======
* Misc. bug fixes [Florian, Rui; #771391, #771536] #771656]

View File

@@ -4,10 +4,8 @@
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
pushd $srcdir
(test -f configure.ac \
&& test -d src) || {
(test -f $srcdir/configure.ac \
&& test -d $srcdir/src) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level gnome-shell directory"
exit 1
@@ -21,13 +19,9 @@ then
fi
git submodule update
aclocal --install || exit 1
gtkdocize --copy || exit 1
intltoolize --force --copy --automake || exit 1
autoreconf --verbose --force --install || exit 1
popd
if [ "$NOCONFIGURE" = "" ]; then
$srcdir/configure "$@" || exit 1
fi
which gnome-autogen.sh || {
echo "You need to install gnome-common from GNOME Git (or from"
echo "your OS vendor's package manager)."
exit 1
}
. gnome-autogen.sh

View File

@@ -1029,7 +1029,6 @@ NPP_GetValue(NPP instance,
if (!instance->pdata)
return NPERR_INVALID_INSTANCE_ERROR;
funcs.retainobject (instance->pdata);
*(NPObject**)value = instance->pdata;
break;

View File

@@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.23.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.22.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AX_IS_RELEASE([git-directory])
AC_CONFIG_HEADERS([config.h])
@@ -17,6 +17,7 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
# Checks for programs.
AC_PROG_CC
AC_PROG_CXX
# Initialize libtool
LT_PREREQ([2.2.6])
@@ -41,15 +42,6 @@ GLIB_GSETTINGS
AM_PATH_PYTHON([3])
AC_SUBST(PYTHON)
# We depend on a specific version of the libmutter API. The mutter variants of
# the Cogl and Clutter libraries also use this API version.
LIBMUTTER_API_VERSION=0
LIBMUTTER=libmutter-$LIBMUTTER_API_VERSION
LIBMUTTER_COGL=mutter-cogl-$LIBMUTTER_API_VERSION
LIBMUTTER_COGL_PANGO=mutter-cogl-pango-$LIBMUTTER_API_VERSION
LIBMUTTER_CLUTTER=mutter-clutter-$LIBMUTTER_API_VERSION
# We need at least this, since gst_plugin_register_static() was added
# in 0.10.16, but nothing older than 0.10.21 has been tested.
GSTREAMER_MIN_VERSION=0.11.92
@@ -61,7 +53,7 @@ if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
AC_MSG_RESULT(yes)
build_recorder=true
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0"
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules $LIBMUTTER_CLUTTER)
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules mutter-clutter-1.0)
else
AC_MSG_RESULT(no)
fi
@@ -83,9 +75,10 @@ AS_IF([test x$enable_systemd != xno], [
AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.21.5
GOBJECT_INTROSPECTION_MIN_VERSION=1.49.1
GJS_MIN_VERSION=1.47.0
MUTTER_MIN_VERSION=3.23.91
GJS_MIN_VERSION=1.39.0
MUTTER_MIN_VERSION=3.22.0
GTK_MIN_VERSION=3.15.0
GIO_MIN_VERSION=2.45.3
LIBECAL_MIN_VERSION=3.5.3
@@ -103,11 +96,11 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
libxml-2.0
gtk+-3.0 >= $GTK_MIN_VERSION
atk-bridge-2.0
gjs-1.0 >= $GJS_MIN_VERSION
gjs-internals-1.0 >= $GJS_MIN_VERSION
$recorder_modules
gdk-x11-3.0 libsoup-2.4
$LIBMUTTER_CLUTTER >= $MUTTER_MIN_VERSION
$LIBMUTTER_COGL_PANGO
mutter-clutter-1.0 >= $CLUTTER_MIN_VERSION
mutter-cogl-pango-1.0
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
libcanberra libcanberra-gtk3
@@ -119,18 +112,16 @@ if test x$have_systemd = xyes; then
fi
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
PKG_CHECK_MODULES(MUTTER, $LIBMUTTER >= $MUTTER_MIN_VERSION)
PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION)
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-1.0 >= $GJS_MIN_VERSION)
PKG_CHECK_MODULES(ST, $LIBMUTTER_CLUTTER gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
PKG_CHECK_MODULES(ST, mutter-clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
PKG_CHECK_MODULES(TRAY, $LIBMUTTER_CLUTTER gtk+-3.0)
PKG_CHECK_MODULES(TRAY, mutter-clutter-1.0 gtk+-3.0)
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.21.3)
AC_SUBST(LIBMUTTER_API_VERSION)
AC_ARG_ENABLE(browser-plugin,
[AS_HELP_STRING([--enable-browser-plugin],
[Enable browser plugin [default=yes]])],,
@@ -155,10 +146,10 @@ AC_SUBST([GNOME_KEYBINDINGS_KEYSDIR])
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir $LIBMUTTER`
MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir libmutter`
AC_SUBST(MUTTER_GIR_DIR)
MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir $LIBMUTTER`
MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter`
AC_SUBST(MUTTER_TYPELIB_DIR)
GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0`

View File

@@ -38,7 +38,6 @@ endif
introspectiondir = $(datadir)/dbus-1/interfaces
introspection_DATA = \
org.gnome.Shell.PadOsd.xml \
org.gnome.Shell.Screencast.xml \
org.gnome.Shell.Screenshot.xml \
org.gnome.ShellSearchProvider.xml \
@@ -64,7 +63,6 @@ dist_theme_files = \
theme/gnome-shell-sass/NEWS \
theme/gnome-shell-sass/README \
theme/gnome-shell-sass/gnome-shell-sass.doap \
theme/pad-osd.css \
theme/parse-sass.sh \
$(NULL)

View File

@@ -1,6 +1,6 @@
[Desktop Entry]
Type=Application
Name=Shell Extensions
Name=GNOME Shell Extension Preferences
Comment=Configure GNOME Shell Extensions
Exec=@bindir@/gnome-shell-extension-prefs %u
X-GNOME-Bugzilla-Bugzilla=GNOME

View File

@@ -22,7 +22,6 @@
<file>no-events.svg</file>
<file>no-notifications.svg</file>
<file>noise-texture.png</file>
<file>pad-osd.css</file>
<file>page-indicator-active.svg</file>
<file>page-indicator-inactive.svg</file>
<file>page-indicator-checked.svg</file>

View File

@@ -1,28 +0,0 @@
<!DOCTYPE node PUBLIC
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
<node>
<!--
org.gnome.Shell.PadOSD:
@short_description: Pad OSD interface
The interface used to show button map OSD on pad devices.
-->
<interface name='org.gnome.Shell.Wacom.PadOsd'>
<!--
Show:
@device_node: device node file, usually in /dev/input/...
@edition_mode: whether toggling edition mode on when showing
Shows the pad button map OSD for the requested device, the OSD
will be shown according the current device settings (output
mapping, left handed mode, ...)
-->
<method name='Show'>
<arg name='device_node' direction='in' type='o'/>
<arg name='edition_mode' direction='in' type='b'/>
</method>
</interface>
</node>

View File

@@ -21,14 +21,6 @@
EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell.
</description>
</key>
<key name="disable-user-extensions" type="b">
<default>false</default>
<summary>Disable user extensions</summary>
<description>
Disable all extensions the user has enabled without affecting
the “enabled-extension” setting.
</description>
</key>
<key name="disable-extension-version-validation" type="b">
<default>true</default>
<summary>Disables the validation of extension version compatibility</summary>
@@ -64,9 +56,9 @@
</key>
<key name="always-show-log-out" type="b">
<default>false</default>
<summary>Always show the Log out menu item in the user menu.</summary>
<summary>Always show the 'Log out' menu item in the user menu.</summary>
<description>
This key overrides the automatic hiding of the Log out
This key overrides the automatic hiding of the 'Log out'
menu item in single-user, single-session situations.
</description>
</key>
@@ -76,7 +68,7 @@
<description>
The shell will request a password when an encrypted device or a
remote filesystem is mounted. If the password can be saved for
future use a Remember Password checkbox will be present.
future use a 'Remember Password' checkbox will be present.
This key sets the default state of the checkbox.
</description>
</key>
@@ -105,9 +97,9 @@
</key>
<key name="toggle-application-view" type="as">
<default>["&lt;Super&gt;a"]</default>
<summary>Keybinding to open the Show Applications view</summary>
<summary>Keybinding to open the "Show Applications" view</summary>
<description>
Keybinding to open the Show Applications view of the Activities
Keybinding to open the "Show Applications" view of the Activities
Overview.
</description>
</key>
@@ -176,8 +168,8 @@
<summary>The application icon mode.</summary>
<description>
Configures how the windows are shown in the switcher. Valid possibilities
are thumbnail-only (shows a thumbnail of the window), app-icon-only
(shows only the application icon) or both.
are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only'
(shows only the application icon) or 'both'.
</description>
</key>
<key type="b" name="current-workspace-only">

View File

@@ -562,14 +562,6 @@ StScrollBar {
background-color: #eeeeec;
border-radius: 0.3em; }
/* Pad OSD */
.pad-osd-window {
padding: 32px;
background-color: rgba(0, 0, 0, 0.8); }
.combo-box-label {
width: 15em; }
/* App Switcher */
.switcher-popup {
padding: 8px;
@@ -736,8 +728,7 @@ StScrollBar {
.datemenu-today-button,
.world-clocks-button,
.weather-button,
.events-section-title {
.message-list-section-title {
border-radius: 4px;
padding: .4em; }
@@ -750,15 +741,12 @@ StScrollBar {
.datemenu-today-button:hover, .datemenu-today-button:focus,
.world-clocks-button:hover,
.world-clocks-button:focus,
.weather-button:hover,
.weather-button:focus,
.events-section-title:hover,
.events-section-title:focus {
.message-list-section-title:hover,
.message-list-section-title:focus {
background-color: #0d0d0d; }
.datemenu-today-button:active,
.world-clocks-button:active,
.weather-button:active,
.events-section-title:active {
.message-list-section-title:active {
color: white;
background-color: #215d9c; }
@@ -766,17 +754,13 @@ StScrollBar {
font-size: 1.5em; }
.world-clocks-header,
.weather-header,
.events-section-title {
.message-list-section-title {
color: #999999;
font-weight: bold; }
.world-clocks-grid {
spacing-rows: 0.4em; }
.weather-box {
spacing: 0.4em; }
.calendar-month-label {
color: #f2f2f2;
font-weight: bold;
@@ -861,62 +845,69 @@ StScrollBar {
.message-list {
width: 31.5em; }
.message-list-clear-button.button {
background-color: transparent;
margin: 1.5em 1.5em 0; }
.message-list-clear-button.button:hover, .message-list-clear-button.button:focus {
background-color: #0d0d0d; }
.message-list-sections {
spacing: 1em; }
spacing: 1.5em; }
.message-list-section,
.message-list-section-list {
spacing: 0.7em; }
.message-list-section-title-box {
spacing: 0.4em; }
.message-list-section-close > StIcon {
icon-size: 16px;
border-radius: 8px;
color: #000;
background-color: #666666; }
/* FIXME: how do you do this in sass? */
.message-list-section-close:hover > StIcon,
.message-list-section-close:focus > StIcon {
background-color: #999999; }
.message {
background-color: #0d0d0d;
border-radius: 3px; }
.message:hover, .message:focus {
background-color: #0d0d0d; }
background-color: #262626; }
.message-icon-bin {
padding: 10px 3px 10px 10px; }
padding: 8px 0px 8px 8px; }
.message-icon-bin:rtl {
padding: 10px 10px 10px 3px; }
padding: 8px 8px 8px 0px; }
.message-icon-bin > StIcon {
color: #cccccc;
icon-size: 16px;
-st-icon-style: symbolic; }
icon-size: 32px; }
.message-secondary-bin:ltr {
padding-left: 8px; }
.message-secondary-bin:rtl {
padding-right: 8px; }
.message-secondary-bin {
padding: 0 12px; }
.message-secondary-bin > .event-time {
color: #999999;
font-size: 0.7em; }
color: #999999; }
.message-secondary-bin > StIcon {
icon-size: 16px; }
.message-title {
color: #f2f2f2; }
font-weight: bold;
font-size: 1.1em; }
.message-content {
color: #cccccc;
padding: 10px; }
padding: 8px;
font-size: .9em; }
.message-media-control {
padding: 12px; }
padding: 6px; }
.message-media-control:last-child:ltr {
padding-right: 18px; }
.message-media-control:last-child:rtl {
padding-left: 18px; }
.message-media-control:insensitive {
color: #999999; }
.media-message-cover-icon {
icon-size: 48px !important; }
icon-size: 32px; }
.media-message-cover-icon.fallback {
color: #1a1a1a;
background-color: #000;

View File

@@ -562,14 +562,6 @@ StScrollBar {
background-color: #eeeeec;
border-radius: 0.3em; }
/* Pad OSD */
.pad-osd-window {
padding: 32px;
background-color: rgba(0, 0, 0, 0.8); }
.combo-box-label {
width: 15em; }
/* App Switcher */
.switcher-popup {
padding: 8px;
@@ -736,8 +728,7 @@ StScrollBar {
.datemenu-today-button,
.world-clocks-button,
.weather-button,
.events-section-title {
.message-list-section-title {
border-radius: 4px;
padding: .4em; }
@@ -750,15 +741,12 @@ StScrollBar {
.datemenu-today-button:hover, .datemenu-today-button:focus,
.world-clocks-button:hover,
.world-clocks-button:focus,
.weather-button:hover,
.weather-button:focus,
.events-section-title:hover,
.events-section-title:focus {
.message-list-section-title:hover,
.message-list-section-title:focus {
background-color: #454c4c; }
.datemenu-today-button:active,
.world-clocks-button:active,
.weather-button:active,
.events-section-title:active {
.message-list-section-title:active {
color: white;
background-color: #215d9c; }
@@ -766,17 +754,13 @@ StScrollBar {
font-size: 1.5em; }
.world-clocks-header,
.weather-header,
.events-section-title {
.message-list-section-title {
color: #8e8e80;
font-weight: bold; }
.world-clocks-grid {
spacing-rows: 0.4em; }
.weather-box {
spacing: 0.4em; }
.calendar-month-label {
color: #e2e2df;
font-weight: bold;
@@ -861,62 +845,69 @@ StScrollBar {
.message-list {
width: 31.5em; }
.message-list-clear-button.button {
background-color: transparent;
margin: 1.5em 1.5em 0; }
.message-list-clear-button.button:hover, .message-list-clear-button.button:focus {
background-color: #454c4c; }
.message-list-sections {
spacing: 1em; }
spacing: 1.5em; }
.message-list-section,
.message-list-section-list {
spacing: 0.7em; }
.message-list-section-title-box {
spacing: 0.4em; }
.message-list-section-close > StIcon {
icon-size: 16px;
border-radius: 8px;
color: #393f3f;
background-color: #59594f; }
/* FIXME: how do you do this in sass? */
.message-list-section-close:hover > StIcon,
.message-list-section-close:focus > StIcon {
background-color: #8e8e80; }
.message {
background-color: #454c4c;
border-radius: 3px; }
.message:hover, .message:focus {
background-color: #454c4c; }
background-color: #5d6767; }
.message-icon-bin {
padding: 10px 3px 10px 10px; }
padding: 8px 0px 8px 8px; }
.message-icon-bin:rtl {
padding: 10px 10px 10px 3px; }
padding: 8px 8px 8px 0px; }
.message-icon-bin > StIcon {
color: #bebeb6;
icon-size: 16px;
-st-icon-style: symbolic; }
icon-size: 32px; }
.message-secondary-bin:ltr {
padding-left: 8px; }
.message-secondary-bin:rtl {
padding-right: 8px; }
.message-secondary-bin {
padding: 0 12px; }
.message-secondary-bin > .event-time {
color: #8e8e80;
font-size: 0.7em; }
color: #8e8e80; }
.message-secondary-bin > StIcon {
icon-size: 16px; }
.message-title {
color: #e2e2df; }
font-weight: bold;
font-size: 1.1em; }
.message-content {
color: #bebeb6;
padding: 10px; }
padding: 8px;
font-size: .9em; }
.message-media-control {
padding: 12px; }
padding: 6px; }
.message-media-control:last-child:ltr {
padding-right: 18px; }
.message-media-control:last-child:rtl {
padding-left: 18px; }
.message-media-control:insensitive {
color: #8e8e80; }
.media-message-cover-icon {
icon-size: 48px !important; }
icon-size: 32px; }
.media-message-cover-icon.fallback {
color: #515a5a;
background-color: #393f3f;

View File

@@ -1,30 +0,0 @@
.Leader {
stroke-width: .5 !important;
stroke: #535353;
fill: none !important;
}
.Button {
stroke-width: .25;
stroke: #ededed;
fill: #ededed;
}
.Ring {
stroke-width: .5 !important;
stroke: #535353 !important;
fill: none !important;
}
.Label {
stroke: none !important;
stroke-width: .1 !important;
font-size: .1 !important;
fill: transparent !important;
}
.TouchStrip, .TouchRing {
stroke-width: .1 !important;
stroke: #ededed !important;
fill: #535353 !important;
}

View File

@@ -11,7 +11,6 @@ misc/config.js: misc/config.js.in Makefile
-e "s|[@]datadir@|$(datadir)|g" \
-e "s|[@]libexecdir@|$(libexecdir)|g" \
-e "s|[@]sysconfdir@|$(sysconfdir)|g" \
-e "s|[@]LIBMUTTER_API_VERSION@|$(LIBMUTTER_API_VERSION)|g" \
$< > $@
js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate-dependencies $(srcdir)/js-resources.gresource.xml)

View File

@@ -143,21 +143,17 @@ const Application = new Lang.Class({
this._window = new Gtk.ApplicationWindow({ application: app,
window_position: Gtk.WindowPosition.CENTER });
this._window.set_default_size(800, 500);
this._window.set_size_request(800, 500);
this._titlebar = new Gtk.HeaderBar({ show_close_button: true,
title: _("Shell Extensions") });
title: _("GNOME Shell Extensions") });
this._window.set_titlebar(this._titlebar);
let killSwitch = new Gtk.Switch({ valign: Gtk.Align.CENTER });
this._titlebar.pack_end(killSwitch);
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
this._settings.bind('disable-user-extensions', killSwitch, 'active',
Gio.SettingsBindFlags.BIND_DEFAULT |
Gio.SettingsBindFlags.INVERT_BOOLEAN);
let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER });
let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER,
shadow_type: Gtk.ShadowType.IN,
halign: Gtk.Align.CENTER,
propagate_natural_width: true,
margin: 18 });
this._window.add(scroll);
this._extensionSelector = new Gtk.ListBox({ selection_mode: Gtk.SelectionMode.NONE });
@@ -250,18 +246,6 @@ const Application = new Lang.Class({
}
});
const DescriptionLabel = new Lang.Class({
Name: 'DescriptionLabel',
Extends: Gtk.Label,
vfunc_get_preferred_height_for_width: function(width) {
// Hack: Request the maximum height allowed by the line limit
if (this.lines > 0)
return this.parent(0);
return this.parent(width);
}
});
const ExtensionRow = new Lang.Class({
Name: 'ExtensionRow',
Extends: Gtk.ListBoxRow,
@@ -280,10 +264,6 @@ const ExtensionRow = new Lang.Class({
Lang.bind(this, function() {
this._switch.sensitive = this._canEnable();
}));
this._settings.connect('changed::disable-user-extensions',
Lang.bind(this, function() {
this._switch.sensitive = this._canEnable();
}));
this._buildUI();
},
@@ -292,8 +272,7 @@ const ExtensionRow = new Lang.Class({
let extension = ExtensionUtils.extensions[this.uuid];
let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL,
hexpand: true, margin_end: 24, spacing: 24,
margin: 12 });
hexpand: true, margin: 12, spacing: 6 });
this.add(hbox);
let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL,
@@ -307,9 +286,9 @@ const ExtensionRow = new Lang.Class({
vbox.add(label);
let desc = extension.metadata.description.split('\n')[0];
label = new DescriptionLabel({ label: desc, wrap: true, lines: 2,
ellipsize: Pango.EllipsizeMode.END,
xalign: 0, yalign: 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,
@@ -340,8 +319,7 @@ const ExtensionRow = new Lang.Class({
let extension = ExtensionUtils.extensions[this.uuid];
let checkVersion = !this._settings.get_boolean('disable-extension-version-validation');
return !this._settings.get_boolean('disable-user-extensions') &&
!(checkVersion && ExtensionUtils.isOutOfDate(extension));
return !(checkVersion && ExtensionUtils.isOutOfDate(extension));
},
_isEnabled: function() {

View File

@@ -13,7 +13,6 @@ const Params = imports.misc.params;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener;
const UserWidget = imports.ui.userWidget;
const Pango = imports.gi.Pango;
const DEFAULT_BUTTON_WELL_ICON_SIZE = 16;
const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0;
@@ -114,7 +113,6 @@ const AuthPrompt = new Lang.Class({
this._message = new St.Label({ opacity: 0,
styleClass: 'login-dialog-message' });
this._message.clutter_text.line_wrap = true;
this._message.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this.actor.add(this._message, { x_fill: false, x_align: St.Align.START, y_align: St.Align.START });
this._buttonBox = new St.BoxLayout({ style_class: 'login-dialog-button-box',

View File

@@ -1225,7 +1225,7 @@ const LoginDialog = new Lang.Class({
},
addCharacter: function(unichar) {
// Don't allow type ahead at the login screen
this._authPrompt.addCharacter(unichar);
},
finish: function(onComplete) {

View File

@@ -25,7 +25,6 @@
<file>misc/params.js</file>
<file>misc/smartcardManager.js</file>
<file>misc/util.js</file>
<file>misc/weather.js</file>
<file>perf/core.js</file>
<file>perf/hwtest.js</file>
@@ -73,7 +72,6 @@
<file>ui/osdMonitorLabeler.js</file>
<file>ui/overview.js</file>
<file>ui/overviewControls.js</file>
<file>ui/padOsd.js</file>
<file>ui/panel.js</file>
<file>ui/panelMenu.js</file>
<file>ui/pointerWatcher.js</file>
@@ -118,7 +116,6 @@
<file>ui/status/brightness.js</file>
<file>ui/status/location.js</file>
<file>ui/status/keyboard.js</file>
<file>ui/status/nightLight.js</file>
<file>ui/status/network.js</file>
<file>ui/status/power.js</file>
<file>ui/status/rfkill.js</file>

View File

@@ -15,5 +15,3 @@ const LOCALEDIR = '@datadir@/locale';
/* other standard directories */
const LIBEXECDIR = '@libexecdir@';
const SYSCONFDIR = '@sysconfdir@';
/* g-i package versions */
const LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@'

View File

@@ -19,25 +19,14 @@ const ExtensionType = {
// Maps uuid -> metadata object
const extensions = {};
/**
* getCurrentExtension:
*
* Returns the current extension, or null if not called from an extension.
*/
function getCurrentExtension() {
let stack = (new Error()).stack.split('\n');
let extensionStackLine;
let stack = (new Error()).stack;
// Search for an occurrence of an extension stack frame
// Start at 1 because 0 is the stack frame of this function
for (let i = 1; i < stack.length; i++) {
if (stack[i].indexOf('/gnome-shell/extensions/') > -1) {
extensionStackLine = stack[i];
break;
}
}
// Assuming we're importing this directly from an extension (and we shouldn't
// ever not be), its UUID should be directly in the path here.
let extensionStackLine = stack.split('\n')[1];
if (!extensionStackLine)
return null;
throw new Error('Could not find current extension');
// The stack line is like:
// init([object Object])@/home/user/data/gnome-shell/extensions/u@u.id/prefs.js:8
@@ -47,7 +36,7 @@ function getCurrentExtension() {
// @/home/user/data/gnome-shell/extensions/u@u.id/prefs.js:8
let match = new RegExp('@(.+):\\d+').exec(extensionStackLine);
if (!match)
return null;
throw new Error('Could not find current extension');
let path = match[1];
let file = Gio.File.new_for_path(path);
@@ -61,7 +50,7 @@ function getCurrentExtension() {
file = file.get_parent();
}
return null;
throw new Error('Could not find current extension');
}
/**
@@ -151,10 +140,8 @@ function createExtensionObject(uuid, dir, type) {
function installImporter(extension) {
let oldSearchPath = imports.searchPath.slice(); // make a copy
imports.searchPath = [extension.dir.get_parent().get_path()];
// importing a "subdir" creates a new importer object that doesn't affect
// the global one
extension.imports = imports[extension.uuid];
imports.searchPath = [extension.path];
extension.imports = imports['.']; // "subdir" creates a new importer object
imports.searchPath = oldSearchPath;
}

View File

@@ -6,11 +6,10 @@ const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Signals = imports.signals;
let IBusCandidatePopup;
try {
var IBus = imports.gi.IBus;
_checkIBusVersion(1, 5, 2);
IBusCandidatePopup = imports.ui.ibusCandidatePopup;
const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
} catch (e) {
var IBus = null;
log(e);

View File

@@ -128,8 +128,7 @@ const KeyboardManager = new Lang.Class({
if (!found)
[, , id] = GnomeDesktop.get_input_source_from_locale(DEFAULT_LOCALE);
let _layout, _variant;
[found, , , _layout, _variant] = this._xkbInfo.get_layout_info(id);
let [found, , , _layout, _variant] = this._xkbInfo.get_layout_info(id);
if (found)
return { layout: _layout, variant: _variant };
else

View File

@@ -1,12 +1,9 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Gettext = imports.gettext;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Signals = imports.signals;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@@ -97,7 +94,7 @@ function spawnApp(argv) {
Gio.AppInfoCreateFlags.SUPPORTS_STARTUP_NOTIFICATION);
let context = global.create_app_launch_context(0, -1);
app.launch([], context, false);
app.launch([], context);
} catch(err) {
_handleSpawnError(argv[0], err);
}
@@ -164,41 +161,6 @@ function _handleSpawnError(command, err) {
Main.notifyError(title, err.message);
}
function formatTimeSpan(date) {
let now = GLib.DateTime.new_now_local();
let timespan = now.difference(date);
let minutesAgo = timespan / GLib.TIME_SPAN_MINUTE;
let hoursAgo = timespan / GLib.TIME_SPAN_HOUR;
let daysAgo = timespan / GLib.TIME_SPAN_DAY;
let weeksAgo = daysAgo / 7;
let monthsAgo = daysAgo / 30;
let yearsAgo = weeksAgo / 52;
if (minutesAgo < 5)
return _("Just now");
if (hoursAgo < 1)
return Gettext.ngettext("%d minute ago",
"%d minutes ago", minutesAgo).format(minutesAgo);
if (daysAgo < 1)
return Gettext.ngettext("%d hour ago",
"%d hours ago", hoursAgo).format(hoursAgo);
if (daysAgo < 2)
return _("Yesterday");
if (daysAgo < 15)
return Gettext.ngettext("%d day ago",
"%d days ago", daysAgo).format(daysAgo);
if (weeksAgo < 8)
return Gettext.ngettext("%d week ago",
"%d weeks ago", weeksAgo).format(weeksAgo);
if (yearsAgo < 1)
return Gettext.ngettext("%d month ago",
"%d months ago", monthsAgo).format(monthsAgo);
return Gettext.ngettext("%d year ago",
"%d years ago", yearsAgo).format(yearsAgo);
}
function formatTime(time, params) {
let date;
// HACK: The built-in Date type sucks at timezones, which we need for the
@@ -436,94 +398,3 @@ function ensureActorVisibleInScrollView(scrollView, actor) {
time: SCROLL_TIME,
transition: 'easeOutQuad' });
}
const AppSettingsMonitor = new Lang.Class({
Name: 'AppSettingsMonitor',
_init: function(appId, schemaId) {
this._appId = appId;
this._schemaId = schemaId;
this._app = null;
this._settings = null;
this._handlers = [];
this._schemaSource = Gio.SettingsSchemaSource.get_default();
this._appSystem = Shell.AppSystem.get_default();
this._appSystem.connect('installed-changed',
Lang.bind(this, this._onInstalledChanged));
this._onInstalledChanged();
},
get available() {
return this._app != null && this._settings != null;
},
activateApp: function() {
if (this._app)
this._app.activate();
},
watchSetting: function(key, callback) {
let handler = { id: 0, key: key, callback: callback };
this._handlers.push(handler);
this._connectHandler(handler);
},
_connectHandler: function(handler) {
if (!this._settings || handler.id > 0)
return;
handler.id = this._settings.connect('changed::' + handler.key,
handler.callback);
handler.callback(this._settings, handler.key);
},
_disconnectHandler: function(handler) {
if (this._settings && handler.id > 0)
this._settings.disconnect(handler.id);
handler.id = 0;
},
_onInstalledChanged: function() {
let hadApp = (this._app != null);
this._app = this._appSystem.lookup_app(this._appId);
let haveApp = (this._app != null);
if (hadApp == haveApp)
return;
if (haveApp)
this._checkSettings();
else
this._setSettings(null);
},
_setSettings(settings) {
this._handlers.forEach((handler) => { this._disconnectHandler(handler); });
let hadSettings = (this._settings != null);
this._settings = settings;
let haveSettings = (this._settings != null);
this._handlers.forEach((handler) => { this._connectHandler(handler); });
if (hadSettings != haveSettings)
this.emit('available-changed');
},
_checkSettings: function() {
let schema = this._schemaSource.lookup(this._schemaId, true);
if (schema) {
this._setSettings(new Gio.Settings({ settings_schema: schema }));
} else if (this._app) {
Mainloop.timeout_add_seconds(1, () => {
this._checkSettings();
return GLib.SOURCE_REMOVE;
});
}
}
});
Signals.addSignalMethods(AppSettingsMonitor.prototype);

View File

@@ -1,190 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Geoclue = imports.gi.Geoclue;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GWeather = imports.gi.GWeather;
const Lang = imports.lang;
const Signals = imports.signals;
const Util = imports.misc.util;
// Minimum time between updates to show loading indication
const UPDATE_THRESHOLD = 10 * GLib.TIME_SPAN_MINUTE;
const WeatherClient = new Lang.Class({
Name: 'WeatherClient',
_init: function() {
this._loading = false;
this._lastUpdate = GLib.DateTime.new_from_unix_local(0);
this._useAutoLocation = false;
this._mostRecentLocation = null;
this._gclueService = null;
this._gclueStarted = false;
this._gclueFailed = false;
this._gclueLocationChangedId = 0;
this._world = GWeather.Location.get_world();
let providers = GWeather.Provider.METAR |
GWeather.Provider.YR_NO |
GWeather.Provider.OWM;
this._weatherInfo = new GWeather.Info({ enabled_providers: providers });
this._weatherInfo.connect_after('updated', () => {
this._lastUpdate = GLib.DateTime.new_now_local();
this.emit('changed');
});
this._weatherAppMon = new Util.AppSettingsMonitor('org.gnome.Weather.Application.desktop',
'org.gnome.Weather.Application');
this._weatherAppMon.connect('available-changed', () => { this.emit('changed'); });
this._weatherAppMon.watchSetting('automatic-location',
Lang.bind(this, this._onAutomaticLocationChanged));
this._weatherAppMon.watchSetting('locations',
Lang.bind(this, this._onLocationsChanged));
},
get available() {
return this._weatherAppMon.available;
},
get loading() {
return this._loading;
},
get info() {
return this._weatherInfo;
},
activateApp: function() {
this._weatherAppMon.activateApp();
},
update: function() {
let now = GLib.DateTime.new_now_local();
// Update without loading indication if the current info is recent enough
if (this._weatherInfo.is_valid() &&
now.difference(this._lastUpdate) < UPDATE_THRESHOLD)
this._weatherInfo.update();
else
this._loadInfo();
},
_loadInfo: function() {
let id = this._weatherInfo.connect('updated', () => {
this._weatherInfo.disconnect(id);
this._loading = false;
});
this._loading = true;
this.emit('changed');
this._weatherInfo.update();
},
_locationsEqual: function(loc1, loc2) {
if (loc1 == loc2)
return true;
if (loc1 == null || loc2 == null)
return false;
return loc1.equal(loc2);
},
_setLocation: function(location) {
if (this._locationsEqual(this._weatherInfo.location, location))
return;
this._weatherInfo.abort();
this._weatherInfo.set_location(location);
if (location)
this._loadInfo();
else
this.emit('changed');
},
_updateLocationMonitoring: function() {
if (this._useAutoLocation) {
if (this._gclueLocationChangedId != 0 || this._gclueService == null)
return;
this._gclueLocationChangedId =
this._gclueService.connect('notify::location',
Lang.bind(this, this._onGClueLocationChanged));
this._onGClueLocationChanged();
} else {
if (this._gclueLocationChangedId)
this._gclueService.disconnect(this._gclueLocationChangedId);
this._gclueLocationChangedId = 0;
}
},
_startGClueService: function() {
if (this._gclueStarted)
return;
this._gclueStarted = true;
Geoclue.Simple.new('org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null,
(o, res) => {
try {
this._gclueService = Geoclue.Simple.new_finish(res);
} catch(e) {
log('Failed to connect to Geoclue2 service: ' + e.message);
this._gclueFailed = true;
this._setLocation(this._mostRecentLocation);
return;
}
this._gclueService.get_client().distance_threshold = 100;
this._updateLocationMonitoring();
});
},
_onGClueLocationChanged: function() {
let geoLocation = this._gclueService.location;
let location = GWeather.Location.new_detached(geoLocation.description,
null,
geoLocation.latitude,
geoLocation.longitude);
this._setLocation(location);
},
_onAutomaticLocationChanged: function(settings, key) {
let useAutoLocation = settings.get_boolean(key);
if (this._useAutoLocation == useAutoLocation)
return;
this._useAutoLocation = useAutoLocation;
this._updateLocationMonitoring();
if (this._useAutoLocation) {
if (!this._gclueStarted)
this._startGClueService();
} else {
this._setLocation(this._mostRecentLocation);
}
},
_onLocationsChanged: function(settings, key) {
let serialized = settings.get_value(key).deep_unpack().shift();
let mostRecentLocation = null;
if (serialized)
mostRecentLocation = this._world.deserialize(serialized);
if (this._locationsEqual(this._mostRecentLocation, mostRecentLocation))
return;
this._mostRecentLocation = mostRecentLocation;
if (!this._useAutoLocation || this._gclueFailed)
this._setLocation(this._mostRecentLocation);
}
});
Signals.addSignalMethods(WeatherClient.prototype);

View File

@@ -12,7 +12,6 @@ const WebKit = imports.gi.WebKit2;
const _ = Gettext.gettext;
const Config = imports.misc.config;
const FileUtils = imports.misc.fileUtils;
const PortalHelperResult = {
CANCELLED: 0,
@@ -20,15 +19,7 @@ const PortalHelperResult = {
RECHECK: 2
};
const PortalHelperSecurityLevel = {
NOT_YET_DETERMINED: 0,
SECURE: 1,
INSECURE: 2
};
const INACTIVITY_TIMEOUT = 30000; //ms
const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org';
const CONNECTIVITY_CHECK_URI = 'http://' + CONNECTIVITY_CHECK_HOST;
const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC;
const HelperDBusInterface = '<node> \
@@ -51,71 +42,6 @@ const HelperDBusInterface = '<node> \
</interface> \
</node>';
const PortalHeaderBar = new Lang.Class({
Name: 'PortalHeaderBar',
Extends: Gtk.HeaderBar,
_init: function() {
this.parent({ show_close_button: true });
// See ephy-title-box.c in epiphany for the layout
let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL,
spacing: 0 });
this.set_custom_title(vbox);
/* TRANSLATORS: this is the title of the wifi captive portal login window */
let titleLabel = new Gtk.Label({ label: _("Hotspot Login"),
wrap: false,
single_line_mode: true,
ellipsize: Pango.EllipsizeMode.END });
titleLabel.get_style_context().add_class('title');
vbox.add(titleLabel);
let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL,
spacing: 4,
halign: Gtk.Align.CENTER,
valign: Gtk.Align.BASELINE });
hbox.get_style_context().add_class('subtitle');
vbox.add(hbox);
this._lockImage = new Gtk.Image({ icon_size: Gtk.IconSize.MENU,
valign: Gtk.Align.BASELINE });
hbox.add(this._lockImage);
this.subtitleLabel = new Gtk.Label({ wrap: false,
single_line_mode: true,
ellipsize: Pango.EllipsizeMode.END,
valign: Gtk.Align.BASELINE,
selectable: true});
this.subtitleLabel.get_style_context().add_class('subtitle');
hbox.add(this.subtitleLabel);
vbox.show_all();
},
setSubtitle: function(label) {
this.subtitleLabel.set_text(label);
},
setSecurityIcon: function(securityLevel) {
switch (securityLevel) {
case PortalHelperSecurityLevel.NOT_YET_DETERMINED:
this._lockImage.hide();
break;
case PortalHelperSecurityLevel.SECURE:
this._lockImage.show();
this._lockImage.set_from_icon_name("channel-secure-symbolic", Gtk.IconSize.MENU);
this._lockImage.set_tooltip_text(null);
break;
case PortalHelperSecurityLevel.INSECURE:
this._lockImage.show();
this._lockImage.set_from_icon_name("channel-insecure-symbolic", Gtk.IconSize.MENU);
this._lockImage.set_tooltip_text(_('Your connection to this hotspot login is not secure. Passwords or other information you enter on this page can be viewed by people nearby.'));
break;
}
},
});
const PortalWindow = new Lang.Class({
Name: 'PortalWindow',
Extends: Gtk.ApplicationWindow,
@@ -123,14 +49,8 @@ const PortalWindow = new Lang.Class({
_init: function(application, url, timestamp, doneCallback) {
this.parent({ application: application });
this.connect('delete-event', Lang.bind(this, this.destroyWindow));
this._headerBar = new PortalHeaderBar();
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.NOT_YET_DETERMINED);
this.set_titlebar(this._headerBar);
this._headerBar.show();
if (!url) {
url = CONNECTIVITY_CHECK_URI;
url = 'http://www.gnome.org';
this._originalUrlWasGnome = true;
} else {
this._originalUrlWasGnome = false;
@@ -141,43 +61,29 @@ const PortalWindow = new Lang.Class({
this._doneCallback = doneCallback;
this._lastRecheck = 0;
this._recheckAtExit = false;
let cacheDir = GLib.Dir.make_tmp("gnome-shell-portal-helper-XXXXXXXX");
this._cacheDir = Gio.File.new_for_path(cacheDir);
let dataManager = new WebKit.WebsiteDataManager({ base_data_directory: cacheDir,
base_cache_directory: cacheDir });
this._webContext = new WebKit.WebContext({ website_data_manager: dataManager });
this._webContext.set_cache_model(WebKit.CacheModel.DOCUMENT_VIEWER);
this._webView = WebKit.WebView.new_with_context(this._webContext);
this._webView = new WebKit.WebView();
this._webView.connect('decide-policy', Lang.bind(this, this._onDecidePolicy));
this._webView.connect('load-changed', Lang.bind(this, this._onLoadChanged));
this._webView.connect('insecure-content-detected', Lang.bind(this, this._onInsecureContentDetected));
this._webView.connect('load-failed-with-tls-errors', Lang.bind(this, this._onLoadFailedWithTlsErrors));
this._webView.load_uri(url);
this._webView.connect('notify::uri', Lang.bind(this, this._syncUri));
this._syncUri();
this._webView.connect('notify::title', Lang.bind(this, this._syncTitle));
this._syncTitle();
this.add(this._webView);
this._webView.show();
this.set_size_request(600, 450);
this.maximize();
this.present_with_time(timestamp);
this.application.set_accels_for_action('app.quit', ['<Primary>q', '<Primary>w']);
},
destroyWindow: function() {
this.destroy();
FileUtils.recursivelyDeleteDir(this._cacheDir, true);
},
_syncTitle: function() {
let title = this._webView.title;
_syncUri: function() {
let uri = this._webView.uri;
if (uri)
this._headerBar.setSubtitle(GLib.uri_unescape_string(uri, null));
else
this._headerBar.setSubtitle('');
if (title) {
this.title = title;
} else {
/* TRANSLATORS: this is the title of the wifi captive portal login
* window, until we know the title of the actual login page */
this.title = _("Web Authentication Redirect");
}
},
refresh: function() {
@@ -193,32 +99,6 @@ const PortalWindow = new Lang.Class({
return false;
},
_onLoadChanged: function(view, loadEvent) {
if (loadEvent == WebKit.LOAD_STARTED) {
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.NOT_YET_DETERMINED);
} else if (loadEvent == WebKit.LOAD_COMMITTED) {
let tlsInfo = this._webView.get_tls_info();
let ret = tlsInfo[0];
let flags = tlsInfo[2];
if (ret && flags == 0)
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.SECURE);
else
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.INSECURE);
}
},
_onInsecureContentDetected: function () {
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.INSECURE);
},
_onLoadFailedWithTlsErrors: function (view, failingURI, certificate, errors) {
this._headerBar.setSecurityIcon(PortalHelperSecurityLevel.INSECURE);
let uri = new Soup.URI(failingURI);
this._webContext.allow_tls_certificate_for_host(certificate, uri.get_host());
this._webView.load_uri(failingURI);
return true;
},
_onDecidePolicy: function(view, decision, type) {
if (type == WebKit.PolicyDecisionType.NEW_WINDOW_ACTION) {
decision.ignore();
@@ -232,12 +112,12 @@ const PortalWindow = new Lang.Class({
let uri = new Soup.URI(request.get_uri());
if (!uri.host_equal(this._uri) && this._originalUrlWasGnome) {
if (uri.get_host() == CONNECTIVITY_CHECK_HOST && this._everSeenRedirect) {
if (uri.get_host() == 'www.gnome.org' && this._everSeenRedirect) {
// Yay, we got to gnome!
decision.ignore();
this._doneCallback(PortalHelperResult.COMPLETED);
return true;
} else if (uri.get_host() != CONNECTIVITY_CHECK_HOST) {
} else if (uri.get_host() != 'www.gnome.org') {
this._everSeenRedirect = true;
}
}
@@ -286,10 +166,6 @@ const WebPortalHelper = new Lang.Class({
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(HelperDBusInterface, this);
this._queue = [];
let action = new Gio.SimpleAction({ name: 'quit' });
action.connect('activate', () => { this.active_window.destroyWindow(); });
this.add_action(action);
},
vfunc_dbus_register: function(connection, path) {
@@ -321,7 +197,7 @@ const WebPortalHelper = new Lang.Class({
if (obj.connection == connection) {
if (obj.window)
obj.window.destroyWindow();
obj.window.destroy();
this._queue.splice(i, 1);
break;
}

View File

@@ -33,9 +33,10 @@ const AppIconMode = {
};
function _createWindowClone(window, size) {
let [width, height] = window.get_size();
let windowTexture = window.get_texture();
let [width, height] = windowTexture.get_size();
let scale = Math.min(1.0, size / width, size / height);
return new Clutter.Clone({ source: window,
return new Clutter.Clone({ source: windowTexture,
width: width * scale,
height: height * scale,
x_align: Clutter.ActorAlign.CENTER,
@@ -45,19 +46,6 @@ function _createWindowClone(window, size) {
y_expand: true });
};
function getWindows(workspace) {
// We ignore skip-taskbar windows in switchers, but if they are attached
// to their parent, their position in the MRU list may be more appropriate
// than the parent; so start with the complete list ...
let windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL,
workspace);
// ... map windows to their parent where appropriate ...
return windows.map(w => {
return w.is_attached_dialog() ? w.get_transient_for() : w;
// ... and filter out skip-taskbar windows and duplicates
}).filter((w, i, a) => !w.skip_taskbar && a.indexOf(w) == i);
}
const AppSwitcherPopup = new Lang.Class({
Name: 'AppSwitcherPopup',
Extends: SwitcherPopup.SwitcherPopup,
@@ -529,7 +517,7 @@ const WindowSwitcherPopup = new Lang.Class({
_getWindowList: function() {
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
return getWindows(workspace);
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
},
_keyPressHandler: function(keysym, action) {
@@ -567,7 +555,7 @@ const WindowCyclerPopup = new Lang.Class({
_getWindows: function() {
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
return getWindows(workspace);
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
},
_keyPressHandler: function(keysym, action) {

View File

@@ -67,7 +67,7 @@ const Animation = new Lang.Class({
},
_animationsLoaded: function() {
this._isLoaded = this._animations.get_n_children() > 0;
this._isLoaded = true;
if (this._isPlaying)
this.play();

View File

@@ -60,18 +60,6 @@ const PAGE_SWITCH_TIME = 0.3;
const VIEWS_SWITCH_TIME = 0.4;
const VIEWS_SWITCH_ANIMATION_DELAY = 0.1;
const SWITCHEROO_BUS_NAME = 'net.hadess.SwitcherooControl';
const SWITCHEROO_OBJECT_PATH = '/net/hadess/SwitcherooControl';
const SwitcherooProxyInterface = '<node> \
<interface name="net.hadess.SwitcherooControl"> \
<property name="HasDualGpu" type="b" access="read"/> \
</interface> \
</node>';
const SwitcherooProxy = Gio.DBusProxy.makeProxyWrapper(SwitcherooProxyInterface);
let discreteGpuAvailable = false;
function _getCategories(info) {
let categoriesStr = info.get_categories();
if (!categoriesStr)
@@ -210,14 +198,6 @@ const BaseAppView = new Lang.Class({
},
animate: function(animationDirection, onComplete) {
if (onComplete) {
let animationDoneId = this._grid.connect('animation-done', Lang.bind(this,
function () {
this._grid.disconnect(animationDoneId);
onComplete();
}));
}
if (animationDirection == IconGrid.AnimationDirection.IN) {
let toAnimate = this._grid.actor.connect('notify::allocation', Lang.bind(this,
function() {
@@ -233,6 +213,14 @@ const BaseAppView = new Lang.Class({
} else {
this._doSpringAnimation(animationDirection);
}
if (onComplete) {
let animationDoneId = this._grid.connect('animation-done', Lang.bind(this,
function () {
this._grid.disconnect(animationDoneId);
onComplete();
}));
}
},
animateSwitch: function(animationDirection) {
@@ -899,8 +887,6 @@ const ControlsBoxLayout = Lang.Class({
const ViewStackLayout = new Lang.Class({
Name: 'ViewStackLayout',
Extends: Clutter.BinLayout,
Signals: { 'allocated-size-changed': { param_types: [GObject.TYPE_INT,
GObject.TYPE_INT] } },
vfunc_allocate: function (actor, box, flags) {
let availWidth = box.x2 - box.x1;
@@ -911,6 +897,7 @@ const ViewStackLayout = new Lang.Class({
this.parent(actor, box, flags);
}
});
Signals.addSignalMethods(ViewStackLayout.prototype);
const AppDisplay = new Lang.Class({
Name: 'AppDisplay',
@@ -982,36 +969,10 @@ const AppDisplay = new Lang.Class({
initialView = Views.ALL;
this._showView(initialView);
this._updateFrequentVisibility();
Gio.DBus.system.watch_name(SWITCHEROO_BUS_NAME,
Gio.BusNameWatcherFlags.NONE,
Lang.bind(this, this._switcherooProxyAppeared),
Lang.bind(this, function() {
this._switcherooProxy = null;
this._updateDiscreteGpuAvailable();
}));
},
_updateDiscreteGpuAvailable: function() {
if (!this._switcherooProxy)
discreteGpuAvailable = false;
else
discreteGpuAvailable = this._switcherooProxy.HasDualGpu;
},
_switcherooProxyAppeared: function() {
this._switcherooProxy = new SwitcherooProxy(Gio.DBus.system, SWITCHEROO_BUS_NAME, SWITCHEROO_OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error.message);
return;
}
this._updateDiscreteGpuAvailable();
}));
},
animate: function(animationDirection, onComplete) {
let currentView = this._views.filter(v => v.control.has_style_pseudo_class('checked')).pop().view;
let currentView = this._views[global.settings.get_uint('app-picker-view')].view;
// Animate controls opacity using iconGrid animation time, since
// it will be the time the AllView or FrequentView takes to show
@@ -1900,19 +1861,6 @@ const AppIconMenu = new Lang.Class({
this._appendSeparator();
}
if (discreteGpuAvailable &&
this._source.app.state == Shell.AppState.STOPPED &&
actions.indexOf('activate-discrete-gpu') == -1) {
this._onDiscreteGpuMenuItem = this._appendMenuItem(_("Launch using Dedicated Graphics Card"));
this._onDiscreteGpuMenuItem.connect('activate', Lang.bind(this, function() {
if (this._source.app.state == Shell.AppState.STOPPED)
this._source.animateLaunch();
this._source.app.launch(0, -1, true);
this.emit('activate-window', null);
}));
}
for (let i = 0; i < actions.length; i++) {
let action = actions[i];
let item = this._appendMenuItem(appInfo.get_action_name(action));

View File

@@ -10,10 +10,8 @@ const RENAMED_DESKTOP_IDS = {
'baobab.desktop': 'org.gnome.baobab.desktop',
'cheese.desktop': 'org.gnome.Cheese.desktop',
'dconf-editor.desktop': 'ca.desrt.dconf-editor.desktop',
'epiphany.desktop': 'org.gnome.Epiphany.desktop',
'file-roller.desktop': 'org.gnome.FileRoller.desktop',
'gcalctool.desktop': 'org.gnome.Calculator.desktop',
'geary.desktop': 'org.gnome.Geary.desktop',
'gcalctool.desktop': 'gnome-calculator.desktop',
'gedit.desktop': 'org.gnome.gedit.desktop',
'glchess.desktop': 'gnome-chess.desktop',
'glines.desktop': 'five-or-more.desktop',
@@ -21,7 +19,6 @@ const RENAMED_DESKTOP_IDS = {
'gnibbles.desktop': 'org.gnome.Nibbles.desktop',
'gnobots2.desktop': 'gnome-robots.desktop',
'gnome-boxes.desktop': 'org.gnome.Boxes.desktop',
'gnome-calculator.desktop': 'org.gnome.Calculator.desktop',
'gnome-clocks.desktop': 'org.gnome.clocks.desktop',
'gnome-contacts.desktop': 'org.gnome.Contacts.desktop',
'gnome-documents.desktop': 'org.gnome.Documents.desktop',
@@ -59,14 +56,12 @@ const AppFavorites = new Lang.Class({
reload: function() {
let ids = global.settings.get_strv(this.FAVORITE_APPS_KEY);
let appSys = Shell.AppSystem.get_default();
// Map old desktop file names to the current ones
let updated = false;
ids = ids.map(function (id) {
let newId = RENAMED_DESKTOP_IDS[id];
if (newId !== undefined &&
appSys.lookup_app(newId) != null) {
if (newId !== undefined) {
updated = true;
return newId;
}
@@ -76,6 +71,7 @@ const AppFavorites = new Lang.Class({
if (updated)
global.settings.set_strv(this.FAVORITE_APPS_KEY, ids);
let appSys = Shell.AppSystem.get_default();
let apps = ids.map(function (id) {
return appSys.lookup_app(id);
}).filter(function (app) {

View File

@@ -102,7 +102,6 @@ const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Signals = imports.signals;
const LoginManager = imports.misc.loginManager;
const Main = imports.ui.main;
const Params = imports.misc.params;
const Tweener = imports.ui.tweener;
@@ -142,6 +141,7 @@ const BackgroundCache = new Lang.Class({
Name: 'BackgroundCache',
_init: function() {
this._pendingFileLoads = [];
this._fileMonitors = {};
this._backgroundSources = {};
this._animations = {};
@@ -254,14 +254,6 @@ const Background = new Lang.Class({
this._loadAnimation(this._animation.file);
}));
let loginManager = LoginManager.getLoginManager();
this._prepareForSleepId = loginManager.connect('prepare-for-sleep',
(lm, aboutToSuspend) => {
if (aboutToSuspend)
return;
this._refreshAnimation();
});
this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
this.emit('changed');
}));
@@ -284,26 +276,16 @@ const Background = new Lang.Class({
this._clock.disconnect(this._timezoneChangedId);
this._timezoneChangedId = 0;
if (this._prepareForSleepId != 0)
LoginManager.getLoginManager().disconnect(this._prepareForSleepId);
this._prepareForSleepId = 0;
if (this._settingsChangedSignalId != 0)
this._settings.disconnect(this._settingsChangedSignalId);
this._settingsChangedSignalId = 0;
},
updateResolution: function() {
if (this._animation)
this._refreshAnimation();
},
_refreshAnimation: function() {
if (!this._animation)
return;
this._removeAnimationTimeout();
this._updateAnimation();
if (this._animation) {
this._removeAnimationTimeout();
this._updateAnimation();
}
},
_setLoaded: function() {
@@ -381,9 +363,11 @@ const Background = new Lang.Class({
let cache = Meta.BackgroundImageCache.get_default();
let numPendingImages = files.length;
let images = [];
for (let i = 0; i < files.length; i++) {
this._watchFile(files[i]);
let image = cache.load(files[i]);
images.push(image);
if (image.is_loaded()) {
numPendingImages--;
if (numPendingImages == 0)

View File

@@ -20,7 +20,7 @@ const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
const SHOW_WEEKDATE_KEY = 'show-weekdate';
const ELLIPSIS_CHAR = '\u2026';
const MESSAGE_ICON_SIZE = 16;
const MESSAGE_ICON_SIZE = 32;
// alias to prevent xgettext from picking up strings translated in GTK+
const gtk30_ = Gettext_gtk30.gettext;
@@ -706,14 +706,6 @@ const EventMessage = new Lang.Class({
this._date = date;
this.parent(this._formatEventTime(), event.summary);
this._icon = new St.Icon({ icon_name: 'x-office-calendar-symbolic' });
this.setIcon(this._icon);
this.actor.connect('style-changed', () => {
let iconVisible = this.actor.get_parent().has_style_pseudo_class('first-child');
this._icon.opacity = (iconVisible ? 255 : 0);
});
},
_formatEventTime: function() {
@@ -819,16 +811,7 @@ const EventsSection = new Lang.Class({
this._desktopSettings.connect('changed', Lang.bind(this, this._reloadEvents));
this._eventSource = new EmptyEventSource();
this.parent();
this._title = new St.Button({ style_class: 'events-section-title',
label: '',
x_align: St.Align.START,
can_focus: true });
this.actor.insert_child_below(this._title, null);
this._title.connect('clicked', Lang.bind(this, this._onTitleClicked));
this._title.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn));
this.parent('');
Shell.AppSystem.get_default().connect('installed-changed',
Lang.bind(this, this._appInstalledChanged));
@@ -849,10 +832,10 @@ const EventsSection = new Lang.Class({
},
_updateTitle: function() {
this._title.visible = !isToday(this._date);
if (!this._title.visible)
if (isToday(this._date)) {
this._title.label = _("Events");
return;
}
let dayFormat;
let now = new Date();
@@ -914,13 +897,12 @@ const EventsSection = new Lang.Class({
},
_onTitleClicked: function() {
Main.overview.hide();
Main.panel.closeCalendar();
this.parent();
let app = this._getCalendarApp();
if (app.get_id() == 'evolution.desktop')
app = Gio.DesktopAppInfo.new('evolution-calendar.desktop');
app.launch([], global.create_app_launch_context(0, -1), false);
app.launch([], global.create_app_launch_context(0, -1));
},
setDate: function(date) {
@@ -946,7 +928,7 @@ const NotificationSection = new Lang.Class({
Extends: MessageList.MessageListSection,
_init: function() {
this.parent();
this.parent(_("Notifications"));
this._sources = new Map();
this._nUrgent = 0;
@@ -964,14 +946,10 @@ const NotificationSection = new Lang.Class({
!Main.sessionMode.isGreeter;
},
_createTimeLabel: function(datetime) {
let label = new St.Label({ style_class: 'event-time',
x_align: Clutter.ActorAlign.START,
y_align: Clutter.ActorAlign.END });
label.connect('notify::mapped', () => {
if (label.mapped)
label.text = Util.formatTimeSpan(datetime);
});
_createTimeLabel: function() {
let label = Util.createTimeLabel(new Date());
label.style_class = 'event-time',
label.x_align = Clutter.ActorAlign.END;
return label;
},
@@ -992,13 +970,13 @@ const NotificationSection = new Lang.Class({
_onNotificationAdded: function(source, notification) {
let message = new NotificationMessage(notification);
message.setSecondaryActor(this._createTimeLabel(notification.datetime));
message.setSecondaryActor(this._createTimeLabel());
let isUrgent = notification.urgency == MessageTray.Urgency.CRITICAL;
let updatedId = notification.connect('updated', Lang.bind(this,
function() {
message.setSecondaryActor(this._createTimeLabel(notification.datetime));
message.setSecondaryActor(this._createTimeLabel());
this.moveMessage(message, isUrgent ? 0 : this._nUrgent, this.actor.mapped);
}));
let destroyId = notification.connect('destroy', Lang.bind(this,
@@ -1039,8 +1017,26 @@ const NotificationSection = new Lang.Class({
message.notification.acknowledged = true;
},
_onTitleClicked: function() {
this.parent();
let app = Shell.AppSystem.get_default().lookup_app('gnome-notifications-panel.desktop');
if (!app) {
log('Settings panel for desktop file ' + desktopFile + ' could not be loaded!');
return;
}
app.activate();
},
_shouldShow: function() {
return !this.empty && isToday(this._date);
},
_sync: function() {
this.parent();
this._title.reactive = Main.sessionMode.allowSettings;
}
});
@@ -1102,26 +1098,12 @@ const CalendarMessageList = new Lang.Class({
this._placeholder = new Placeholder();
this.actor.add_actor(this._placeholder.actor);
let box = new St.BoxLayout({ vertical: true,
x_expand: true, y_expand: true });
this.actor.add_actor(box);
this._scrollView = new St.ScrollView({ style_class: 'vfade',
overlay_scrollbars: true,
x_expand: true, y_expand: true,
x_fill: true, y_fill: true });
this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
box.add_actor(this._scrollView);
this._clearButton = new St.Button({ style_class: 'message-list-clear-button button',
label: _("Clear All"),
can_focus: true });
this._clearButton.set_x_align(Clutter.ActorAlign.END);
this._clearButton.connect('clicked', () => {
let sections = [...this._sections.keys()];
sections.forEach((s) => { s.clear(); });
});
box.add_actor(this._clearButton);
this.actor.add_actor(this._scrollView);
this._sectionList = new St.BoxLayout({ style_class: 'message-list-sections',
vertical: true,
@@ -1147,7 +1129,6 @@ const CalendarMessageList = new Lang.Class({
destroyId: 0,
visibleId: 0,
emptyChangedId: 0,
canClearChangedId: 0,
keyFocusId: 0
};
obj.destroyId = section.actor.connect('destroy', Lang.bind(this,
@@ -1158,8 +1139,6 @@ const CalendarMessageList = new Lang.Class({
Lang.bind(this, this._sync));
obj.emptyChangedId = section.connect('empty-changed',
Lang.bind(this, this._sync));
obj.canClearChangedId = section.connect('can-clear-changed',
Lang.bind(this, this._sync));
obj.keyFocusId = section.connect('key-focus-in',
Lang.bind(this, this._onKeyFocusIn));
@@ -1173,7 +1152,6 @@ const CalendarMessageList = new Lang.Class({
section.actor.disconnect(obj.destroyId);
section.actor.disconnect(obj.visibleId);
section.disconnect(obj.emptyChangedId);
section.disconnect(obj.canClearChangedId);
section.disconnect(obj.keyFocusId);
this._sections.delete(section);
@@ -1194,16 +1172,10 @@ const CalendarMessageList = new Lang.Class({
if (!visible)
return;
let empty = sections.every(function(s) {
let showPlaceholder = sections.every(function(s) {
return s.empty || !s.actor.visible;
});
this._placeholder.actor.visible = empty;
this._clearButton.visible = !empty;
let canClear = sections.some(function(s) {
return s.canClear && s.actor.visible;
});
this._clearButton.reactive = canClear;
this._placeholder.actor.visible = showPlaceholder;
},
setEventSource: function(eventSource) {

View File

@@ -64,8 +64,7 @@ function startAppForMount(app, mount) {
try {
retval = app.launch(files,
global.create_app_launch_context(0, -1),
false)
global.create_app_launch_context(0, -1))
} catch (e) {
log('Unable to launch the application ' + app.get_name()
+ ': ' + e.toString());

View File

@@ -615,14 +615,6 @@ const NetworkAgent = new Lang.Class({
this._vpnRequests = { };
this._notifications = { };
this._pluginDir = Gio.file_new_for_path(GLib.build_filenamev([Config.SYSCONFDIR, 'NetworkManager/VPN']));
try {
let monitor = this._pluginDir.monitor(Gio.FileMonitorFlags.NONE, null);
monitor.connect('changed', () => { this._vpnCacheBuilt = false; });
} catch(e) {
log('Failed to create monitor for VPN plugin dir: ' + e.message);
}
this._native.connect('new-request', Lang.bind(this, this._newRequest));
this._native.connect('cancel-request', Lang.bind(this, this._cancelRequest));
@@ -773,8 +765,9 @@ const NetworkAgent = new Lang.Class({
this._vpnCacheBuilt = true;
this._vpnBinaries = { };
let dir = Gio.file_new_for_path(GLib.build_filenamev([Config.SYSCONFDIR, 'NetworkManager/VPN']));
try {
let fileEnum = this._pluginDir.enumerate_children('standard::name', Gio.FileQueryInfoFlags.NONE, null);
let fileEnum = dir.enumerate_children('standard::name', Gio.FileQueryInfoFlags.NONE, null);
let info;
while ((info = fileEnum.next_file(null))) {
@@ -784,7 +777,7 @@ const NetworkAgent = new Lang.Class({
try {
let keyfile = new GLib.KeyFile();
keyfile.load_from_file(this._pluginDir.get_child(name).get_path(), GLib.KeyFileFlags.NONE);
keyfile.load_from_file(dir.get_child(name).get_path(), GLib.KeyFileFlags.NONE);
let service = keyfile.get_string('VPN Connection', 'service');
let binary = keyfile.get_string('GNOME', 'auth-dialog');
let externalUIMode = false;
@@ -817,7 +810,7 @@ const NetworkAgent = new Lang.Class({
}
} catch(e) {
log('Error \'%s\' while processing VPN keyfile \'%s\''.
format(e.message, this._pluginDir.get_child(name).get_path()));
format(e.message, dir.get_child(name).get_path()));
continue;
}
}

View File

@@ -298,7 +298,7 @@ const AuthenticationDialog = new Lang.Class({
* requested authentication was not gained; this can happen
* because of an authentication error (like invalid password),
* for instance. */
this._errorMessageLabel.set_text(_("Sorry, that didnt work. Please try again."));
this._errorMessageLabel.set_text(_("Sorry, that didn\'t work. Please try again."));
this._errorMessageLabel.show();
this._infoMessageLabel.hide();
this._nullMessageLabel.hide();

View File

@@ -670,8 +670,6 @@ const ChatNotification = new Lang.Class({
styles: styles,
timestamp: message.timestamp,
noTimestamp: noTimestamp });
this.update(this.title, this.bannerBodyText,
{ datetime: GLib.DateTime.new_from_unix_local (message.timestamp) });
},
_filterMessages: function() {

View File

@@ -8,7 +8,6 @@ const Gtk = imports.gi.Gtk;
const GWeather = imports.gi.GWeather;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Pango = imports.gi.Pango;
const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter;
const Shell = imports.gi.Shell;
@@ -21,7 +20,6 @@ const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Calendar = imports.ui.calendar;
const Weather = imports.misc.weather;
function _isToday(date) {
let now = new Date();
@@ -38,7 +36,7 @@ const TodayButton = new Lang.Class({
// on the current date can be confusing. So don't make the button reactive
// until the selected date changes.
this.actor = new St.Button({ style_class: 'datemenu-today-button',
x_expand: true, x_align: St.Align.START,
x_align: St.Align.START,
can_focus: true,
reactive: false
});
@@ -79,7 +77,7 @@ const TodayButton = new Lang.Class({
* below the time in the shell; it should combine the weekday and the
* date, e.g. "Tuesday February 17 2015".
*/
dateFormat = Shell.util_translate_time_string (N_("%A %B %e %Y"));
let dateFormat = Shell.util_translate_time_string (N_("%A %B %e %Y"));
this.actor.accessible_name = date.toLocaleFormat(dateFormat);
}
});
@@ -89,7 +87,9 @@ const WorldClocksSection = new Lang.Class({
_init: function() {
this._clock = new GnomeDesktop.WallClock();
this._settings = null;
this._clockNotifyId = 0;
this._changedId = 0;
this._locations = [];
@@ -98,7 +98,8 @@ const WorldClocksSection = new Lang.Class({
can_focus: true });
this.actor.connect('clicked', Lang.bind(this,
function() {
this._clockAppMon.activateApp();
let app = this._getClockApp();
app.activate();
Main.overview.hide();
Main.panel.closeCalendar();
@@ -111,25 +112,40 @@ const WorldClocksSection = new Lang.Class({
this.actor.child = this._grid;
this._clockAppMon = new Util.AppSettingsMonitor('org.gnome.clocks.desktop',
'org.gnome.clocks');
this._clockAppMon.connect('available-changed',
Lang.bind(this, this._sync));
this._clockAppMon.watchSetting('world-clocks',
Lang.bind(this, this._clocksChanged));
Shell.AppSystem.get_default().connect('installed-changed',
Lang.bind(this, this._sync));
this._sync();
},
_sync: function() {
this.actor.visible = this._clockAppMon.available;
_getClockApp: function() {
return Shell.AppSystem.get_default().lookup_app('org.gnome.clocks.desktop');
},
_clocksChanged: function(settings) {
_sync: function() {
this.actor.visible = (this._getClockApp() != null);
if (this.actor.visible) {
if (!this._settings) {
this._settings = new Gio.Settings({ schema_id: 'org.gnome.clocks' });
this._changedId =
this._settings.connect('changed::world-clocks',
Lang.bind(this, this._clocksChanged));
this._clocksChanged();
}
} else {
if (this._settings)
this._settings.disconnect(this._changedId);
this._settings = null;
this._changedId = 0;
}
},
_clocksChanged: function() {
this._grid.destroy_all_children();
this._locations = [];
let world = GWeather.Location.get_world();
let clocks = settings.get_value('world-clocks').deep_unpack();
let clocks = this._settings.get_value('world-clocks').deep_unpack();
for (let i = 0; i < clocks.length; i++) {
let l = world.deserialize(clocks[i].location);
this._locations.push({ location: l });
@@ -194,133 +210,6 @@ const WorldClocksSection = new Lang.Class({
}
});
const WeatherSection = new Lang.Class({
Name: 'WeatherSection',
_init: function() {
this._weatherClient = new Weather.WeatherClient();
this.actor = new St.Button({ style_class: 'weather-button',
x_fill: true,
can_focus: true });
this.actor.connect('clicked', () => {
this._weatherClient.activateApp();
Main.overview.hide();
Main.panel.closeCalendar();
});
this.actor.connect('notify::mapped', () => {
if (this.actor.mapped)
this._weatherClient.update();
});
let box = new St.BoxLayout({ style_class: 'weather-box',
vertical: true });
this.actor.child = box;
box.add_child(new St.Label({ style_class: 'weather-header',
x_align: Clutter.ActorAlign.START,
text: _("Weather") }));
this._conditionsLabel = new St.Label({ style_class: 'weather-conditions',
x_align: Clutter.ActorAlign.START });
this._conditionsLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._conditionsLabel.clutter_text.line_wrap = true;
box.add_child(this._conditionsLabel);
this._weatherClient.connect('changed', Lang.bind(this, this._sync));
this._sync();
},
_getSummary: function(info) {
let summary = info.get_conditions();
if (summary == '-')
return info.get_sky();
return summary;
},
_sameSummary: function(info1, info2) {
let [ok1, phenom1, qualifier1] = info1.get_value_conditions();
let [ok2, phenom2, qualifier2] = info2.get_value_conditions();
if (ok1 || ok2)
return ok1 == ok2 && phenom1 == phenom2 && qualifier1 == qualifier2;
let [, sky1] = info1.get_value_sky();
let [, sky2] = info2.get_value_sky();
return sky1 == sky2;
},
_getSummaryText: function() {
let info = this._weatherClient.info;
let forecasts = info.get_forecast_list();
if (forecasts.length == 0) // No forecasts, just current conditions
return '%s.'.format(this._getSummary(info));
let current = info;
let summaries = [this._getSummary(info)];
for (let i = 0; i < forecasts.length; i++) {
let [ok, timestamp] = forecasts[i].get_value_update();
if (!_isToday(new Date(timestamp * 1000)))
continue; // Ignore forecasts from other days
if (this._sameSummary(current, forecasts[i]))
continue; // Ignore consecutive runs of equal summaries
current = forecasts[i];
if (summaries.push(this._getSummary(current)) == 3)
break; // Use a maximum of three summaries
}
let fmt;
switch(summaries.length) {
/* Translators: %s is a weather condition like "Clear sky"; see
libgweather for the possible condition strings. If at all
possible, the sentence should match the grammatical case etc. of
the inserted conditions. */
case 1: fmt = _("%s all day."); break;
/* Translators: %s is a weather condition like "Clear sky"; see
libgweather for the possible condition strings. If at all
possible, the sentence should match the grammatical case etc. of
the inserted conditions. */
case 2: fmt = _("%s, then %s later."); break;
/* Translators: %s is a weather condition like "Clear sky"; see
libgweather for the possible condition strings. If at all
possible, the sentence should match the grammatical case etc. of
the inserted conditions. */
case 3: fmt = _("%s, then %s, followed by %s later."); break;
}
return String.prototype.format.apply(fmt, summaries);
},
_getLabelText: function() {
if (this._weatherClient.loading)
return _("Loading…");
let info = this._weatherClient.info;
if (info.is_valid())
return this._getSummaryText() + ' ' +
/* Translators: %s is a temperature with unit, e.g. "23℃" */
_("Feels like %s.").format(info.get_apparent());
if (info.network_error())
return _("Go online for weather information");
return _("Weather information is currently unavailable");
},
_sync: function() {
this.actor.visible = this._weatherClient.available;
if (!this.actor.visible)
return;
this._conditionsLabel.text = this._getLabelText();
}
});
const MessagesIndicator = new Lang.Class({
Name: 'MessagesIndicator',
@@ -408,38 +297,14 @@ const FreezableBinLayout = new Lang.Class({
vfunc_get_preferred_width: function(container, forHeight) {
if (!this._frozen || this._savedWidth.some(isNaN))
return this.parent(container, forHeight);
this._savedWidth = this.parent(container, forHeight);
return this._savedWidth;
},
vfunc_get_preferred_height: function(container, forWidth) {
if (!this._frozen || this._savedHeight.some(isNaN))
return this.parent(container, forWidth);
this._savedHeight = this.parent(container, forWidth);
return this._savedHeight;
},
vfunc_allocate: function(container, allocation, flags) {
this.parent(container, allocation, flags);
let [width, height] = allocation.get_size();
this._savedWidth = [width, width];
this._savedHeight = [height, height];
}
});
const CalendarColumnLayout = new Lang.Class({
Name: 'CalendarColumnLayout',
Extends: Clutter.BoxLayout,
_init(actor) {
this.parent({ orientation: Clutter.Orientation.VERTICAL });
this._calActor = actor;
},
vfunc_get_preferred_width: function(container, forHeight) {
if (!this._calActor || this._calActor.get_parent() != container)
return this.parent(container, forHeight);
return this._calActor.get_preferred_width(forHeight);
}
});
@@ -499,16 +364,14 @@ const DateMenuButton = new Lang.Class({
hbox.add(this._messageList.actor, { expand: true, y_fill: false, y_align: St.Align.START });
// Fill up the second column
let boxLayout = new CalendarColumnLayout(this._calendar.actor);
vbox = new St.Widget({ style_class: 'datemenu-calendar-column',
layout_manager: boxLayout });
boxLayout.hookup_style(vbox);
vbox = new St.BoxLayout({ style_class: 'datemenu-calendar-column',
vertical: true });
hbox.add(vbox);
this._date = new TodayButton(this._calendar);
vbox.add_actor(this._date.actor);
vbox.add_actor(this._calendar.actor);
vbox.add(this._calendar.actor);
this._displaysSection = new St.ScrollView({ style_class: 'datemenu-displays-section vfade',
x_expand: true, x_fill: true,
@@ -523,8 +386,6 @@ const DateMenuButton = new Lang.Class({
this._clocksItem = new WorldClocksSection();
displaysBox.add(this._clocksItem.actor, { x_fill: true });
this._weatherItem = new WeatherSection();
displaysBox.add(this._weatherItem.actor, { x_fill: true });
// Done with hbox for calendar and event list

View File

@@ -14,7 +14,6 @@ const DRAG_DISTANCE = 80;
const EdgeDragAction = new Lang.Class({
Name: 'EdgeDragAction',
Extends: Clutter.GestureAction,
Signals: { 'activated': {} },
_init : function(side, allowedModes) {
this.parent();
@@ -82,3 +81,4 @@ const EdgeDragAction = new Lang.Class({
this.emit('activated');
}
});
Signals.addSignalMethods(EdgeDragAction.prototype);

View File

@@ -457,6 +457,7 @@ const EndSessionDialog = new Lang.Class({
_setLabelText(this._descriptionLabel, description);
_setLabelText(this._subjectLabel, subject);
let dialogContent = DialogContent[this._type];
if (dialogContent.iconName) {
this._iconBin.child = new St.Icon({ icon_name: dialogContent.iconName,
icon_size: _DIALOG_ICON_SIZE,

View File

@@ -1,8 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Config = imports.misc.config;
imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
imports.gi.versions.Clutter = '1.0';
imports.gi.versions.Gio = '2.0';
imports.gi.versions.Gdk = '3.0';
imports.gi.versions.GdkPixbuf = '2.0';
@@ -63,19 +61,10 @@ function _patchLayoutClass(layoutClass, styleProps) {
};
}
function _loggingFunc() {
let fields = {'MESSAGE': [].join.call(arguments, ', ')};
let domain = "GNOME Shell";
// If the caller is an extension, add it as metadata
let extension = imports.misc.extensionUtils.getCurrentExtension();
if (extension != null) {
domain = extension.metadata.name;
fields['GNOME_SHELL_EXTENSION_UUID'] = extension.uuid;
fields['GNOME_SHELL_EXTENSION_NAME'] = extension.metadata.name;
}
GLib.log_structured(domain, GLib.LogLevelFlags.LEVEL_MESSAGE, fields);
function _makeLoggingFunc(func) {
return function() {
return func([].join.call(arguments, ', '));
};
}
function init() {
@@ -83,7 +72,7 @@ function init() {
// browser convention of having that namespace be called 'window'.)
window.global = Shell.Global.get();
window.log = _loggingFunc;
window.log = _makeLoggingFunc(window.log);
window._ = Gettext.gettext;
window.C_ = Gettext.pgettext;

View File

@@ -252,7 +252,7 @@ const InstallExtensionDialog = new Lang.Class({
return;
}
invocation.return_value(GLib.Variant.new('(s)', ['successful']));
invocation.return_value(GLib.Variant.new('(s)', 'successful'));
}
_httpSession.queue_message(message, Lang.bind(this, function(session, message) {

View File

@@ -38,7 +38,6 @@ const connect = Lang.bind(_signals, _signals.connect);
const disconnect = Lang.bind(_signals, _signals.disconnect);
const ENABLED_EXTENSIONS_KEY = 'enabled-extensions';
const DISABLE_USER_EXTENSIONS_KEY = 'disable-user-extensions';
const EXTENSION_DISABLE_VERSION_CHECK_KEY = 'disable-extension-version-validation';
var initted = false;
@@ -239,16 +238,11 @@ function initExtension(uuid) {
}
function getEnabledExtensions() {
let extensions;
if (Array.isArray(Main.sessionMode.enabledExtensions))
extensions = Main.sessionMode.enabledExtensions;
else
extensions = [];
if (global.settings.get_boolean(DISABLE_USER_EXTENSIONS_KEY))
let extensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
if (!Array.isArray(Main.sessionMode.enabledExtensions))
return extensions;
return extensions.concat(global.settings.get_strv(ENABLED_EXTENSIONS_KEY));
return Main.sessionMode.enabledExtensions.concat(extensions);
}
function onEnabledExtensionsChanged() {
@@ -294,7 +288,6 @@ function _onVersionValidationChanged() {
function _loadExtensions() {
global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged);
global.settings.connect('changed::' + EXTENSION_DISABLE_VERSION_CHECK_KEY, _onVersionValidationChanged);
enabledExtensions = getEnabledExtensions();

View File

@@ -19,7 +19,6 @@ const CandidateArea = new Lang.Class({
_init: function() {
this.actor = new St.BoxLayout({ vertical: true,
reactive: true,
visible: false });
this._candidateBoxes = [];
for (let i = 0; i < MAX_CANDIDATES_PER_PAGE; ++i) {
@@ -40,19 +39,6 @@ const CandidateArea = new Lang.Class({
}));
}
this.actor.connect('scroll-event', Lang.bind(this, function(actor, event) {
let direction = event.get_scroll_direction();
switch(direction) {
case Clutter.ScrollDirection.UP:
this.emit('cursor-up');
break;
case Clutter.ScrollDirection.DOWN:
this.emit('cursor-down');
break;
};
return Clutter.EVENT_PROPAGATE;
}));
this._buttonBox = new St.BoxLayout({ style_class: 'candidate-page-button-box' });
this._previousButton = new St.Button({ style_class: 'candidate-page-button candidate-page-button-previous button' });
@@ -158,14 +144,6 @@ const CandidatePopup = new Lang.Class({
this._candidateArea.connect('next-page', Lang.bind(this, function() {
this._panelService.page_down();
}));
this._candidateArea.connect('cursor-up', Lang.bind(this, function() {
this._panelService.cursor_up();
}));
this._candidateArea.connect('cursor-down', Lang.bind(this, function() {
this._panelService.cursor_down();
}));
this._candidateArea.connect('candidate-clicked', Lang.bind(this, function(ca, index, button, state) {
this._panelService.candidate_clicked(index, button, state);
}));

View File

@@ -26,7 +26,6 @@ const ModalDialog = imports.ui.modalDialog;
const OsdWindow = imports.ui.osdWindow;
const OsdMonitorLabeler = imports.ui.osdMonitorLabeler;
const Overview = imports.ui.overview;
const PadOsd = imports.ui.padOsd;
const Panel = imports.ui.panel;
const Params = imports.misc.params;
const RunDialog = imports.ui.runDialog;
@@ -62,7 +61,6 @@ let screenShield = null;
let notificationDaemon = null;
let windowAttentionHandler = null;
let ctrlAltTabManager = null;
let padOsdService = null;
let osdWindowManager = null;
let osdMonitorLabeler = null;
let sessionMode = null;
@@ -157,7 +155,6 @@ function _initializeUI() {
// working until it's updated.
uiGroup = layoutManager.uiGroup;
padOsdService = new PadOsd.PadOsdService();
screencastService = new Screencast.ScreencastService();
xdndHandler = new XdndHandler.XdndHandler();
ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager();

View File

@@ -318,7 +318,6 @@ const Message = new Lang.Class({
this._iconBin = new St.Bin({ style_class: 'message-icon-bin',
y_expand: true,
y_align: St.Align.START,
visible: false });
hbox.add_actor(this._iconBin);
@@ -332,18 +331,18 @@ const Message = new Lang.Class({
let titleBox = new St.BoxLayout();
contentBox.add_actor(titleBox);
this.titleLabel = new St.Label({ style_class: 'message-title' });
this.titleLabel = new St.Label({ style_class: 'message-title',
x_expand: true,
x_align: Clutter.ActorAlign.START });
this.setTitle(title);
titleBox.add_actor(this.titleLabel);
this._secondaryBin = new St.Bin({ style_class: 'message-secondary-bin',
x_expand: true, y_expand: true,
x_fill: true, y_fill: true });
this._secondaryBin = new St.Bin({ style_class: 'message-secondary-bin' });
titleBox.add_actor(this._secondaryBin);
let closeIcon = new St.Icon({ icon_name: 'window-close-symbolic',
icon_size: 16 });
this._closeButton = new St.Button({ child: closeIcon, opacity: 0 });
this._closeButton = new St.Button({ child: closeIcon, visible: false });
titleBox.add_actor(this._closeButton);
this._bodyStack = new St.Widget({ x_expand: true });
@@ -494,8 +493,9 @@ const Message = new Lang.Class({
},
_sync: function() {
let visible = this.actor.hover && this.canClose();
this._closeButton.opacity = visible ? 255 : 0;
let hovered = this.actor.hover;
this._closeButton.visible = hovered && this.canClose();
this._secondaryBin.visible = !hovered;
},
_onClicked: function() {
@@ -520,10 +520,32 @@ Signals.addSignalMethods(Message.prototype);
const MessageListSection = new Lang.Class({
Name: 'MessageListSection',
_init: function() {
_init: function(title) {
this.actor = new St.BoxLayout({ style_class: 'message-list-section',
clip_to_allocation: true,
x_expand: true, vertical: true });
let titleBox = new St.BoxLayout({ style_class: 'message-list-section-title-box' });
this.actor.add_actor(titleBox);
this._title = new St.Button({ style_class: 'message-list-section-title',
label: title,
can_focus: true,
x_expand: true,
x_align: St.Align.START });
titleBox.add_actor(this._title);
this._title.connect('clicked', Lang.bind(this, this._onTitleClicked));
this._title.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn));
let closeIcon = new St.Icon({ icon_name: 'window-close-symbolic' });
this._closeButton = new St.Button({ style_class: 'message-list-section-close',
child: closeIcon,
accessible_name: _("Clear section"),
can_focus: true });
this._closeButton.set_x_align(Clutter.ActorAlign.END);
titleBox.add_actor(this._closeButton);
this._closeButton.connect('clicked', Lang.bind(this, this.clear));
this._list = new St.BoxLayout({ style_class: 'message-list-section-list',
vertical: true });
@@ -541,10 +563,14 @@ const MessageListSection = new Lang.Class({
this._messages = new Map();
this._date = new Date();
this.empty = true;
this.canClear = false;
this._sync();
},
_onTitleClicked: function() {
Main.overview.hide();
Main.panel.closeCalendar();
},
_onKeyFocusIn: function(actor) {
this.emit('key-focus-in', actor);
},
@@ -693,13 +719,7 @@ const MessageListSection = new Lang.Class({
if (changed)
this.emit('empty-changed');
let canClear = this._canClear();
changed = this.canClear !== canClear;
this.canClear = canClear;
if (changed)
this.emit('can-clear-changed');
this._closeButton.visible = this._canClear();
this.actor.visible = this.allowed && this._shouldShow();
}
});

View File

@@ -368,7 +368,6 @@ const Notification = new Lang.Class({
secondaryGIcon: null,
bannerMarkup: false,
clear: false,
datetime: null,
soundName: null,
soundFile: null });
@@ -376,11 +375,6 @@ const Notification = new Lang.Class({
this.bannerBodyText = banner;
this.bannerBodyMarkup = params.bannerMarkup;
if (params.datetime)
this.datetime = params.datetime;
else
this.datetime = GLib.DateTime.new_now_local();
if (params.gicon || params.clear)
this.gicon = params.gicon;
@@ -541,8 +535,7 @@ const NotificationBanner = new Lang.Class({
_addSecondaryIcon: function() {
if (this.notification.secondaryGIcon) {
let icon = new St.Icon({ gicon: this.notification.secondaryGIcon,
x_align: Clutter.ActorAlign.END });
let icon = new St.Icon({ gicon: this.notification.secondaryGIcon });
this.setSecondaryActor(icon);
}
},

View File

@@ -36,8 +36,6 @@ const MprisPlayerIface = '<node> \
<method name="PlayPause" /> \
<method name="Next" /> \
<method name="Previous" /> \
<property name="CanGoNext" type="b" access="read" /> \
<property name="CanGoPrevious" type="b" access="read" /> \
<property name="CanPlay" type="b" access="read" /> \
<property name="Metadata" type="a{sv}" access="read" /> \
<property name="PlaybackStatus" type="s" access="read" /> \
@@ -59,7 +57,7 @@ const MediaMessage = new Lang.Class({
this._icon = new St.Icon({ style_class: 'media-message-cover-icon' });
this.setIcon(this._icon);
this._prevButton = this.addMediaControl('media-skip-backward-symbolic',
this.addMediaControl('media-skip-backward-symbolic',
Lang.bind(this, function() {
this._player.previous();
}));
@@ -69,7 +67,7 @@ const MediaMessage = new Lang.Class({
this._player.playPause();
}));
this._nextButton = this.addMediaControl('media-skip-forward-symbolic',
this.addMediaControl('media-skip-forward-symbolic',
Lang.bind(this, function() {
this._player.next();
}));
@@ -84,10 +82,6 @@ const MediaMessage = new Lang.Class({
Main.panel.closeCalendar();
},
_updateNavButton: function(button, sensitive) {
button.reactive = sensitive;
},
_update: function() {
this.setTitle(this._player.trackArtists.join(', '));
this.setBody(this._player.trackTitle);
@@ -105,9 +99,6 @@ const MediaMessage = new Lang.Class({
let iconName = isPlaying ? 'media-playback-pause-symbolic'
: 'media-playback-start-symbolic';
this._playPauseButton.child.icon_name = iconName;
this._updateNavButton(this._prevButton, this._player.canGoPrevious);
this._updateNavButton(this._nextButton, this._player.canGoNext);
}
});
@@ -148,18 +139,10 @@ const MprisPlayer = new Lang.Class({
this._playerProxy.PlayPauseRemote();
},
get canGoNext() {
return this._playerProxy.CanGoNext;
},
next: function() {
this._playerProxy.NextRemote();
},
get canGoPrevious() {
return this._playerProxy.CanGoPrevious;
},
previous: function() {
this._playerProxy.PreviousRemote();
},
@@ -231,7 +214,7 @@ const MediaSection = new Lang.Class({
Extends: MessageList.MessageListSection,
_init: function() {
this.parent();
this.parent(_("Media"));
this._players = new Map();

View File

@@ -186,7 +186,7 @@ const FdoNotificationDaemon = new Lang.Class({
return source;
}
source = new FdoNotificationDaemonSource(title, pid, sender, ndata ? ndata.hints['desktop-entry'] : null);
let source = new FdoNotificationDaemonSource(title, pid, sender, ndata ? ndata.hints['desktop-entry'] : null);
this._sources.push(source);
source.connect('destroy', Lang.bind(this, function() {
@@ -600,8 +600,7 @@ const GtkNotificationDaemonNotification = new Lang.Class({
"priority": priority,
"buttons": buttons,
"default-action": defaultAction,
"default-action-target": defaultActionTarget,
"timestamp": time } = notification;
"default-action-target": defaultActionTarget } = notification;
if (priority) {
let urgency = PRIORITY_URGENCY_MAP[priority.unpack()];
@@ -624,8 +623,7 @@ const GtkNotificationDaemonNotification = new Lang.Class({
this._defaultActionTarget = defaultActionTarget;
this.update(title.unpack(), body ? body.unpack() : null,
{ gicon: gicon ? Gio.icon_deserialize(gicon) : null,
datetime : time ? GLib.DateTime.new_from_unix_local(time.unpack()) : null });
{ gicon: gicon ? Gio.icon_deserialize(gicon) : null });
},
_activateAction: function(namespacedActionId, target) {
@@ -692,7 +690,6 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
throw new InvalidAppError();
this._notifications = {};
this._notificationPending = false;
this.parent(this._app.get_name());
},
@@ -705,35 +702,27 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
return new MessageTray.NotificationApplicationPolicy(this._appId);
},
_createApp: function(callback) {
return new FdoApplicationProxy(Gio.DBus.session, this._appId, this._objectPath, callback);
_createApp: function() {
return new FdoApplicationProxy(Gio.DBus.session, this._appId, this._objectPath);
},
activateAction: function(actionId, target) {
this._createApp(function (app, error) {
if (error == null)
app.ActivateActionRemote(actionId, target ? [target] : [], getPlatformData());
else
logError(error, 'Failed to activate application proxy');
});
let app = this._createApp();
app.ActivateActionRemote(actionId, target ? [target] : [], getPlatformData());
Main.overview.hide();
Main.panel.closeCalendar();
},
open: function() {
this._createApp(function (app, error) {
if (error == null)
app.ActivateRemote(getPlatformData());
else
logError(error, 'Failed to open application proxy');
});
let app = this._createApp();
app.ActivateRemote(getPlatformData());
Main.overview.hide();
Main.panel.closeCalendar();
},
addNotification: function(notificationId, notificationParams, showBanner) {
this._notificationPending = true;
if (this._notifications[notificationId])
this._notifications[notificationId].destroy();
@@ -747,14 +736,6 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
this.notify(notification);
else
this.pushNotification(notification);
this._notificationPending = false;
},
destroy: function(reason) {
if (this._notificationPending)
return;
this.parent(reason);
},
removeNotification: function(notificationId) {
@@ -866,9 +847,6 @@ const GtkNotificationDaemon = new Lang.Class({
return;
}
let timestamp = GLib.DateTime.new_now_local().to_unix();
notification['timestamp'] = new GLib.Variant('x', timestamp);
source.addNotification(notificationId, notification, true);
invocation.return_value(null);

View File

@@ -72,8 +72,8 @@ const OsdWindowConstraint = new Lang.Class({
// Recenter
let [x, y] = actorBox.get_origin();
actorBox.set_origin(Math.ceil(x + width / 2 - size / 2),
Math.ceil(y + height / 2 - size / 2));
actorBox.set_origin(Math.floor(x + width / 2 - size / 2),
Math.floor(y + height / 2 - size / 2));
}
});
@@ -109,11 +109,8 @@ const OsdWindow = new Lang.Class({
this._reset();
Main.layoutManager.connect('monitors-changed',
Lang.bind(this, this._relayout));
let themeContext = St.ThemeContext.get_for_stage(global.stage);
themeContext.connect('notify::scale-factor',
Lang.bind(this, this._relayout));
this._relayout();
Lang.bind(this, this._monitorsChanged));
this._monitorsChanged();
Main.uiGroup.add_child(this.actor);
},
@@ -191,7 +188,7 @@ const OsdWindow = new Lang.Class({
this.setLevel(null);
},
_relayout: function() {
_monitorsChanged: function() {
/* assume 110x110 on a 640x480 display and scale from there */
let monitor = Main.layoutManager.monitors[this._monitorIndex];
if (!monitor)

View File

@@ -107,9 +107,9 @@ const Overview = new Lang.Class({
this._overviewCreated = true;
/* Translators: This is the main view to select
activities. See also note for "Activities" string. */
this._overview = new St.BoxLayout({ name: 'overview',
/* Translators: This is the main view to select
activities. See also note for "Activities" string. */
accessible_name: _("Overview"),
vertical: true });
this._overview.add_constraint(new LayoutManager.MonitorConstraint({ primary: true }));
@@ -378,7 +378,7 @@ const Overview = new Lang.Class({
return null;
let window = windows[0];
let clone = new Clutter.Clone({ source: window,
let clone = new Clutter.Clone({ source: window.get_texture(),
x: window.x, y: window.y });
clone.source.connect('destroy', Lang.bind(this, function() {
clone.destroy();

View File

@@ -1,761 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
const Rsvg = imports.gi.Rsvg;
const GObject = imports.gi.GObject;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
const GDesktopEnums = imports.gi.GDesktopEnums;
const Atk = imports.gi.Atk;
const Cairo = imports.cairo;
const Signals = imports.signals;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const Layout = imports.ui.layout;
const ACTIVE_COLOR = "#729fcf";
const LTR = 0;
const RTL = 1;
const CW = 0;
const CCW = 1;
const UP = 0;
const DOWN = 1;
const KeybindingEntry = new Lang.Class({
Name: 'KeybindingEntry',
_init: function () {
this.actor = new St.Entry({ hint_text: _("New shortcut…"),
style: 'width: 10em' });
this.actor.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
},
_onCapturedEvent: function (actor, event) {
if (event.type() != Clutter.EventType.KEY_PRESS)
return Clutter.EVENT_PROPAGATE;
let str = Gtk.accelerator_name_with_keycode(null,
event.get_key_symbol(),
event.get_key_code(),
event.get_state());
this.actor.set_text(str);
this.emit('keybinding-edited', str);
return Clutter.EVENT_STOP;
}
});
Signals.addSignalMethods(KeybindingEntry.prototype);
const ActionComboBox = new Lang.Class({
Name: 'ActionComboBox',
_init: function () {
this.actor = new St.Button({ style_class: 'button' });
this.actor.connect('clicked', Lang.bind(this, this._onButtonClicked));
this.actor.set_toggle_mode(true);
let boxLayout = new Clutter.BoxLayout({ orientation: Clutter.Orientation.HORIZONTAL,
spacing: 6 });
let box = new St.Widget({ layout_manager: boxLayout });
this.actor.set_child(box);
this._label = new St.Label({ style_class: 'combo-box-label' });
box.add_child(this._label)
let arrow = new St.Icon({ style_class: 'popup-menu-arrow',
icon_name: 'pan-down-symbolic',
accessible_role: Atk.Role.ARROW,
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
box.add_child(arrow);
this._editMenu = new PopupMenu.PopupMenu(this.actor, 0, St.Side.TOP);
this._editMenu.connect('menu-closed', Lang.bind(this, function() { this.actor.set_checked(false); }));
this._editMenu.actor.hide();
Main.uiGroup.add_actor(this._editMenu.actor);
this._actionLabels = new Map();
this._actionLabels.set(GDesktopEnums.PadButtonAction.NONE, _("Application defined"));
this._actionLabels.set(GDesktopEnums.PadButtonAction.HELP, _("Show on-screen help"));
this._actionLabels.set(GDesktopEnums.PadButtonAction.SWITCH_MONITOR, _("Switch monitor"));
this._actionLabels.set(GDesktopEnums.PadButtonAction.KEYBINDING, _("Assign keystroke"));
for (let [action, label] of this._actionLabels.entries()) {
let selectedAction = action;
this._editMenu.addAction(label, Lang.bind(this, function() { this._onActionSelected(selectedAction) }));
}
this.setAction(GDesktopEnums.PadButtonAction.NONE);
},
_onActionSelected: function (action) {
this.setAction(action);
this.popdown();
this.emit('action-selected', action);
},
setAction: function (action) {
this._label.set_text(this._actionLabels.get(action));
},
popup: function () {
this._editMenu.open(true);
},
popdown: function () {
this._editMenu.close(true);
},
_onButtonClicked: function () {
if (this.actor.get_checked())
this.popup();
else
this.popdown();
}
});
Signals.addSignalMethods(ActionComboBox.prototype);
const ActionEditor = new Lang.Class({
Name: 'ActionEditor',
_init: function () {
let boxLayout = new Clutter.BoxLayout({ orientation: Clutter.Orientation.HORIZONTAL,
spacing: 12 });
this.actor = new St.Widget({ layout_manager: boxLayout });
this._actionComboBox = new ActionComboBox();
this._actionComboBox.connect('action-selected', Lang.bind(this, this._onActionSelected));
this.actor.add_actor(this._actionComboBox.actor);
this._keybindingEdit = new KeybindingEntry();
this._keybindingEdit.connect('keybinding-edited', Lang.bind(this, this._onKeybindingEdited));
this.actor.add_actor(this._keybindingEdit.actor);
this._doneButton = new St.Button({ label: _("Done"),
style_class: 'button',
x_expand: false});
this._doneButton.connect('clicked', Lang.bind(this, this._onEditingDone));
this.actor.add_actor(this._doneButton);
},
_updateKeybindingEntryState: function () {
if (this._currentAction == GDesktopEnums.PadButtonAction.KEYBINDING) {
this._keybindingEdit.actor.set_text(this._currentKeybinding);
this._keybindingEdit.actor.show();
this._keybindingEdit.actor.grab_key_focus();
} else {
this._keybindingEdit.actor.hide();
}
},
setSettings: function (settings) {
this._buttonSettings = settings;
this._currentAction = this._buttonSettings.get_enum('action');
this._currentKeybinding = this._buttonSettings.get_string('keybinding');
this._actionComboBox.setAction(this._currentAction);
this._updateKeybindingEntryState();
},
close: function() {
this._actionComboBox.popdown();
this.actor.hide();
},
_onKeybindingEdited: function (entry, keybinding) {
this._currentKeybinding = keybinding;
},
_onActionSelected: function (menu, action) {
this._currentAction = action;
this._updateKeybindingEntryState();
},
_storeSettings: function () {
if (!this._buttonSettings)
return;
let keybinding = null;
if (this._currentAction == GDesktopEnums.PadButtonAction.KEYBINDING)
keybinding = this._currentKeybinding;
this._buttonSettings.set_enum('action', this._currentAction);
if (keybinding)
this._buttonSettings.set_string('keybinding', keybinding);
else
this._buttonSettings.reset('keybinding');
},
_onEditingDone: function () {
this._storeSettings();
this.close();
this.emit('done');
}
});
Signals.addSignalMethods(ActionEditor.prototype);
const PadDiagram = new Lang.Class({
Name: 'PadDiagram',
Extends: St.DrawingArea,
Properties: { 'left-handed': GObject.ParamSpec.boolean('left-handed',
'left-handed', 'Left handed',
GObject.ParamFlags.READWRITE |
GObject.ParamFlags.CONSTRUCT_ONLY,
false),
'image': GObject.ParamSpec.string('image', 'image', 'Image',
GObject.ParamFlags.READWRITE |
GObject.ParamFlags.CONSTRUCT_ONLY,
null),
'editor-actor': GObject.ParamSpec.object('editor-actor',
'editor-actor',
'Editor actor',
GObject.ParamFlags.READWRITE |
GObject.ParamFlags.CONSTRUCT_ONLY,
Clutter.Actor.$gtype) },
_init: function (params) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css');
let [success, css, etag] = file.load_contents(null);
this._css = css;
this._labels = [];
this._activeButtons = [];
this.parent(params);
},
get left_handed() {
return this._leftHanded;
},
set left_handed(leftHanded) {
this._leftHanded = leftHanded;
},
get image() {
return this._imagePath;
},
set image(imagePath) {
let originalHandle = Rsvg.Handle.new_from_file(imagePath);
let dimensions = originalHandle.get_dimensions();
this._imageWidth = dimensions.width;
this._imageHeight = dimensions.height;
this._imagePath = imagePath;
this._handle = this._composeStyledDiagram();
},
get editor_actor() {
return this._editorActor;
},
set editor_actor(actor) {
actor.hide();
this._editorActor = actor;
this.add_actor(actor);
},
_wrappingSvgHeader: function () {
return ('<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" ' +
'xmlns:xi="http://www.w3.org/2001/XInclude" ' +
'width="' + this._imageWidth + '" height="' + this._imageHeight + '"> ' +
'<style type="text/css">');
},
_wrappingSvgFooter: function () {
return ('</style>' +
'<xi:include href="' + this._imagePath + '" />' +
'</svg>');
},
_cssString: function () {
let css = this._css;
for (let i = 0; i < this._activeButtons.length; i++) {
let ch = String.fromCharCode('A'.charCodeAt() + this._activeButtons[i]);
css += ('.' + ch + ' { ' +
' stroke: ' + ACTIVE_COLOR + ' !important; ' +
' fill: ' + ACTIVE_COLOR + ' !important; ' +
'} ');
}
return css;
},
_composeStyledDiagram: function () {
let svgData = '';
if (!GLib.file_test(this._imagePath, GLib.FileTest.EXISTS))
return null;
svgData += this._wrappingSvgHeader();
svgData += this._cssString();
svgData += this._wrappingSvgFooter();
let handle = new Rsvg.Handle();
handle.set_base_uri(GLib.path_get_dirname(this._imagePath));
handle.write(svgData);
handle.close();
return handle;
},
_updateDiagramScale: function () {
if (this._handle == null)
return;
[this._actorWidth, this._actorHeight] = this.get_size();
let dimensions = this._handle.get_dimensions();
let scaleX = this._actorWidth / dimensions.width;
let scaleY = this._actorHeight / dimensions.height;
this._scale = Math.min(scaleX, scaleY);
},
_allocateChild: function (child, x, y, direction) {
let [prefHeight, natHeight] = child.get_preferred_height(-1);
let [prefWidth, natWidth] = child.get_preferred_width(natHeight);
let childBox = new Clutter.ActorBox();
if (direction == LTR) {
childBox.x1 = x;
childBox.x2 = x + natWidth;
} else {
childBox.x1 = x - natWidth;
childBox.x2 = x;
}
childBox.y1 = y - natHeight / 2;
childBox.y2 = y + natHeight / 2;
child.allocate(childBox, 0);
},
vfunc_allocate: function (box, flags) {
this.parent(box, flags);
this._updateDiagramScale();
for (let i = 0; i < this._labels.length; i++) {
let [label, action, idx, dir] = this._labels[i];
let [found, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
this._allocateChild(label, x, y, arrangement);
}
if (this._editorActor && this._curEdited) {
let [label, action, idx, dir] = this._curEdited;
let [found, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
this._allocateChild(this._editorActor, x, y, arrangement);
}
},
vfunc_repaint: function () {
if (this._handle == null)
return;
if (this._scale == null)
this._updateDiagramScale();
let [width, height] = this.get_surface_size();
let dimensions = this._handle.get_dimensions();
let cr = this.get_context();
cr.save();
cr.translate(width/2, height/2);
cr.scale(this._scale, this._scale);
if (this._leftHanded)
cr.rotate(Math.PI);
cr.translate(-dimensions.width/2, -dimensions.height/2);
this._handle.render_cairo(cr);
cr.restore();
cr.$dispose();
},
_transformPoint: function (x, y) {
if (this._handle == null || this._scale == null)
return [x, y];
// I miss Cairo.Matrix
let dimensions = this._handle.get_dimensions();
x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;;
return [Math.round(x), Math.round(y)];
},
_getItemLabelCoords: function (labelName, leaderName) {
if (this._handle == null)
return [false];
let leaderPos, leaderSize, pos;
let found, direction;
[found, pos] = this._handle.get_position_sub('#' + labelName);
if (!found)
return [false];
[found, leaderPos] = this._handle.get_position_sub('#' + leaderName);
[found, leaderSize] = this._handle.get_dimensions_sub('#' + leaderName);
if (!found)
return [false];
if (pos.x > leaderPos.x + leaderSize.width)
direction = LTR;
else
direction = RTL;
if (this._leftHanded) {
direction = 1 - direction;
pos.x = this._imageWidth - pos.x;
pos.y = this._imageHeight - pos.y;
}
let [x, y] = this._transformPoint(pos.x, pos.y)
return [true, x, y, direction];
},
getButtonLabelCoords: function (button) {
let ch = String.fromCharCode('A'.charCodeAt() + button);
let labelName = 'Label' + ch;
let leaderName = 'Leader' + ch;
return this._getItemLabelCoords(labelName, leaderName);
},
getRingLabelCoords: function (number, dir) {
let numStr = number > 0 ? number.toString() : '';
let dirStr = dir == CW ? 'CW' : 'CCW';
let labelName = 'LabelRing' + numStr + dirStr;
let leaderName = 'LeaderRing' + numStr + dirStr;
return this._getItemLabelCoords(labelName, leaderName);
},
getStripLabelCoords: function (number, dir) {
let numStr = number > 0 ? (number + 1).toString() : '';
let dirStr = dir == UP ? 'Up' : 'Down';
let labelName = 'LabelStrip' + numStr + dirStr;
let leaderName = 'LeaderStrip' + numStr + dirStr;
return this._getItemLabelCoords(labelName, leaderName);
},
getLabelCoords: function (action, idx, dir) {
if (action == Meta.PadActionType.BUTTON)
return this.getButtonLabelCoords(idx);
else if (action == Meta.PadActionType.RING)
return this.getRingLabelCoords(idx, dir);
else if (action == Meta.PadActionType.STRIP)
return this.getStripLabelCoords(idx, dir);
return [false];
},
_invalidateSvg: function () {
if (this._handle == null)
return;
this._handle = this._composeStyledDiagram();
this.queue_repaint();
},
activateButton: function (button) {
this._activeButtons.push(button);
this._invalidateSvg();
},
deactivateButton: function (button) {
for (let i = 0; i < this._activeButtons.length; i++) {
if (this._activeButtons[i] == button)
this._activeButtons.splice(i, 1);
}
this._invalidateSvg();
},
addLabel: function (label, type, idx, dir) {
this._labels.push([label, type, idx, dir]);
this.add_actor(label);
},
stopEdition: function (str) {
this._editorActor.hide();
if (this._curEdited) {
let [label, action, idx, dir] = this._curEdited;
if (str != null) {
label.set_text(str);
let [found, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
this._allocateChild(label, x, y, arrangement);
}
label.show();
this._curEdited = null;
}
},
startEdition: function(action, idx, dir) {
let editedLabel;
this.stopEdition();
for (let i = 0; i < this._labels.length; i++) {
let [label, itemAction, itemIdx, itemDir] = this._labels[i];
if (action == itemAction && idx == itemIdx && dir == itemDir) {
this._curEdited = this._labels[i];
editedLabel = label;
break;
}
}
if (this._curEdited == null)
return;
let [found] = this.getLabelCoords(action, idx, dir);
if (!found)
return;
this._editorActor.show();
editedLabel.hide();
}
});
const PadOsd = new Lang.Class({
Name: 'PadOsd',
_init: function (padDevice, settings, imagePath, editionMode, monitorIndex) {
this.padDevice = padDevice;
this._settings = settings;
this._imagePath = imagePath;
this._editionMode = editionMode;
this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
let deviceManager = Clutter.DeviceManager.get_default();
this._deviceRemovedId = deviceManager.connect('device-removed', Lang.bind(this, function (manager, device) {
// If the device is being removed, destroy the padOsd.
if (device == this.padDevice)
this.destroy();
}));
this.actor = new St.BoxLayout({ style_class: 'pad-osd-window',
x_expand: true,
y_expand: true,
vertical: true,
reactive: true });
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
Main.uiGroup.add_actor(this.actor);
this._monitorIndex = monitorIndex;
let constraint = new Layout.MonitorConstraint({ index: monitorIndex });
this.actor.add_constraint(constraint);
this._titleLabel = new St.Label({ style: 'font-side: larger; font-weight: bold;',
x_align: Clutter.ActorAlign.CENTER });
this._titleLabel.clutter_text.set_text(padDevice.get_device_name());
this.actor.add_actor(this._titleLabel);
this._tipLabel = new St.Label({ x_align: Clutter.ActorAlign.CENTER });
this.actor.add_actor(this._tipLabel);
this._actionEditor = new ActionEditor();
this._actionEditor.connect('done', Lang.bind(this, this._endButtonActionEdition));
this._padDiagram = new PadDiagram({ image: this._imagePath,
left_handed: settings.get_boolean('left-handed'),
editor_actor: this._actionEditor.actor,
x_expand: true,
y_expand: true });
this.actor.add_actor(this._padDiagram);
// FIXME: Fix num buttons.
let i = 0;
for (i = 0; i < 50; i++) {
let [found] = this._padDiagram.getButtonLabelCoords(i);
if (!found)
break;
this._createLabel(Meta.PadActionType.BUTTON, i);
}
for (i = 0; i < padDevice.get_n_rings(); i++) {
this._createLabel(Meta.PadActionType.RING, i, CW);
this._createLabel(Meta.PadActionType.RING, i, CCW);
}
for (i = 0; i < padDevice.get_n_strips(); i++) {
this._createLabel(Meta.PadActionType.STRIP, i, UP);
this._createLabel(Meta.PadActionType.STRIP, i, DOWN);
}
let buttonBox = new St.Widget({ layout_manager: new Clutter.BinLayout(),
x_expand: true,
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER });
this.actor.add_actor(buttonBox);
this._editButton = new St.Button({ label: _("Edit…"),
style_class: 'button',
x_align: Clutter.ActorAlign.CENTER,
can_focus: true });
this._editButton.connect('clicked', Lang.bind(this, function () { this.setEditionMode(true) }));
buttonBox.add_actor(this._editButton);
this._syncEditionMode();
Main.pushModal(this.actor);
},
_createLabel: function (type, number, dir) {
let str = global.display.get_pad_action_label(this.padDevice, type, number);
let label = new St.Label({ text: str ? str : _("None") });
this._padDiagram.addLabel(label, type, number, dir);
},
_onCapturedEvent : function (actor, event) {
if (event.type() == Clutter.EventType.PAD_BUTTON_PRESS &&
event.get_source_device() == this.padDevice) {
this._padDiagram.activateButton(event.get_button());
if (this._editionMode)
this._startButtonActionEdition(event.get_button());
return Clutter.EVENT_STOP;
} else if (event.type() == Clutter.EventType.PAD_BUTTON_RELEASE &&
event.get_source_device() == this.padDevice) {
this._padDiagram.deactivateButton(event.get_button());
return Clutter.EVENT_STOP;
} else if (event.type() == Clutter.EventType.KEY_PRESS &&
(!this._editionMode || event.get_key_symbol() == Clutter.Escape)) {
if (this._editingButtonAction != null)
this._endButtonActionEdition();
else
this.destroy();
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
},
_syncEditionMode: function () {
this._editButton.set_reactive(!this._editionMode);
this._editButton.save_easing_state();
this._editButton.set_easing_duration(200);
this._editButton.set_opacity(this._editionMode ? 128 : 255);
this._editButton.restore_easing_state();
let title;
if (this._editionMode) {
title = _("Press a button to configure");
this._tipLabel.set_text(_("Press Esc to exit"));
} else {
title = this.padDevice.get_device_name();
this._tipLabel.set_text(_("Press any key to exit"));
}
this._titleLabel.clutter_text.set_markup('<span size="larger"><b>' + title + '</b></span>');
},
_endButtonActionEdition: function () {
this._actionEditor.close();
if (this._editingButtonAction != null) {
let str = global.display.get_pad_action_label(this.padDevice,
Meta.PadActionType.BUTTON,
this._editingButtonAction);
this._padDiagram.stopEdition(str ? str : _("None"))
this._editingButtonAction = null;
}
this._editedButtonSettings = null;
},
_startButtonActionEdition: function (button) {
if (this._editingButtonAction == button)
return;
this._endButtonActionEdition();
this._editingButtonAction = button;
let ch = String.fromCharCode('A'.charCodeAt() + button);
let settingsPath = this._settings.path + "button" + ch + '/';
this._editedButtonSettings = Gio.Settings.new_with_path('org.gnome.desktop.peripherals.tablet.pad-button',
settingsPath);
this._actionEditor.setSettings(this._editedButtonSettings);
this._padDiagram.startEdition(Meta.PadActionType.BUTTON, button);
},
setEditionMode: function (editionMode) {
if (this._editionMode == editionMode)
return;
this._editionMode = editionMode;
this._syncEditionMode();
},
destroy: function () {
this.actor.destroy();
},
_onDestroy: function () {
Main.popModal(this.actor);
this._actionEditor.close();
if (this._deviceRemovedId != 0) {
let deviceManager = Clutter.DeviceManager.get_default();
deviceManager.disconnect(this._deviceRemovedId);
this._deviceRemovedId = 0;
}
if (this._capturedEventId != 0) {
global.stage.disconnect(this._capturedEventId);
this._capturedEventId = 0;
}
this.actor = null;
this.emit('closed');
}
});
Signals.addSignalMethods(PadOsd.prototype);
const PadOsdIface = '<node> \
<interface name="org.gnome.Shell.Wacom.PadOsd"> \
<method name="Show"> \
<arg name="device_node" direction="in" type="o"/> \
<arg name="edition_mode" direction="in" type="b"/> \
</method> \
</interface> \
</node>';
const PadOsdService = new Lang.Class({
Name: 'PadOsdService',
_init: function() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(PadOsdIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Wacom');
Gio.DBus.session.own_name('org.gnome.Shell.Wacom.PadOsd', Gio.BusNameOwnerFlags.REPLACE, null, null);
},
ShowAsync: function(params, invocation) {
let [deviceNode, editionMode] = params;
let deviceManager = Clutter.DeviceManager.get_default();
let devices = deviceManager.list_devices();
let padDevice = null;
devices.forEach(Lang.bind(this, function(device) {
if (deviceNode == device.get_device_node())
padDevice = device;
}));
if (padDevice == null ||
padDevice.get_device_type() != Clutter.InputDeviceType.PAD_DEVICE) {
invocation.return_error_literal(Gio.IOErrorEnum,
Gio.IOErrorEnum.CANCELLED,
"Invalid params");
return;
}
global.display.request_pad_osd(padDevice, editionMode);
invocation.return_value(null);
}
});
Signals.addSignalMethods(PadOsdService.prototype);

View File

@@ -719,11 +719,9 @@ const AggregateMenu = new Lang.Class({
this._system = new imports.ui.status.system.Indicator();
this._screencast = new imports.ui.status.screencast.Indicator();
this._location = new imports.ui.status.location.Indicator();
this._nightLight = new imports.ui.status.nightLight.Indicator();
this._indicators.add_child(this._screencast.indicators);
this._indicators.add_child(this._location.indicators);
this._indicators.add_child(this._nightLight.indicators);
if (this._network) {
this._indicators.add_child(this._network.indicators);
}
@@ -747,7 +745,6 @@ const AggregateMenu = new Lang.Class({
this.menu.addMenuItem(this._location.menu);
this.menu.addMenuItem(this._rfkill.menu);
this.menu.addMenuItem(this._power.menu);
this.menu.addMenuItem(this._nightLight.menu);
this.menu.addMenuItem(this._system.menu);
menuLayout.addSizeChild(this._location.menu.actor);

View File

@@ -605,24 +605,6 @@ const PopupMenuBase = new Lang.Class({
menuItem.actor.show();
},
moveMenuItem: function(menuItem, position) {
let items = this._getMenuItems();
let i = 0;
while (i < items.length && position > 0) {
if (items[i] != menuItem)
position--;
i++;
}
if (i < items.length) {
if (items[i] != menuItem)
this.box.set_child_below_sibling(menuItem.actor, items[i].actor);
} else {
this.box.set_child_above_sibling(menuItem.actor, null);
}
},
addMenuItem: function(menuItem, position) {
let before_item = null;
if (position == undefined) {
@@ -801,16 +783,6 @@ const PopupMenu = new Lang.Class({
break;
}
let state = event.get_state();
// if user has a modifier down (except capslock)
// then don't handle the key press here
state &= ~Clutter.ModifierType.LOCK_MASK;
state &= Clutter.ModifierType.MODIFIER_MASK;
if (state)
return Clutter.EVENT_PROPAGATE;
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) {
this.toggle();

View File

@@ -297,7 +297,7 @@ const RemoteSearchProvider = new Lang.Class({
// the provider is not compatible with the new version of the interface, launch
// the app itself but warn so we can catch the error in logs
log('Search provider ' + this.appInfo.get_id() + ' does not implement LaunchSearch');
this.appInfo.launch([], global.create_app_launch_context(0, -1), false);
this.appInfo.launch([], global.create_app_launch_context(0, -1));
}
});

View File

@@ -274,7 +274,7 @@ const RunDialog = new Lang.Class({
_restart: function() {
if (Meta.is_wayland_compositor()) {
this._showError(_("Restart is not available on Wayland"));
this._showError('Restart is not available on Wayland');
return;
}
this._shouldFadeOut = false;

View File

@@ -665,10 +665,7 @@ const ScreenShield = new Lang.Class({
let isEnter = (symbol == Clutter.KEY_Return ||
symbol == Clutter.KEY_KP_Enter ||
symbol == Clutter.KEY_ISO_Enter);
let isEscape = (symbol == Clutter.KEY_Escape);
let isLiftChar = (GLib.unichar_isprint(unichar) &&
(this._isLocked || !GLib.unichar_isgraph(unichar)));
if (!isEnter && !isEscape && !isLiftChar)
if (!isEnter && !(GLib.unichar_isprint(unichar) || symbol == Clutter.KEY_Escape))
return Clutter.EVENT_PROPAGATE;
if (this._isLocked &&
@@ -850,7 +847,6 @@ const ScreenShield = new Lang.Class({
},
_activateFade: function(lightbox, time) {
Main.uiGroup.set_child_above_sibling(lightbox.actor, null);
lightbox.show(time);
if (this._becameActiveId == 0)

View File

@@ -380,7 +380,7 @@ const ShellMountPasswordDialog = new Lang.Class({
this.setInitialKeyFocus(this._passwordEntry);
this._errorMessageLabel = new St.Label({ style_class: 'prompt-dialog-error-label',
text: _("Sorry, that didnt work. Please try again.") });
text: _("Sorry, that didn\'t work. Please try again.") });
this._errorMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._errorMessageLabel.clutter_text.line_wrap = true;
this._errorMessageLabel.hide();

View File

@@ -137,7 +137,7 @@ const Indicator = new Lang.Class({
else if (nConnectedDevices == -1)
this._item.label.text = _("Off");
else
this._item.label.text = _("On");
this._item.label.text = _("Not In Use");
this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _("Turn On") : _("Turn Off");
},

View File

@@ -284,7 +284,6 @@ const AppAuthorizer = new Lang.Class({
this.reqAccuracyLevel = reqAccuracyLevel;
this._permStoreProxy = permStoreProxy;
this._maxAccuracyLevel = maxAccuracyLevel;
this._permissions = {};
this._accuracyLevel = GeoclueAccuracyLevel.NONE;
},

View File

@@ -5,7 +5,6 @@ const GObject = imports.gi.GObject;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const NetworkManager = imports.gi.NetworkManager;
const NMClient = imports.gi.NMClient;
const NMGtk = imports.gi.NMGtk;
@@ -40,8 +39,6 @@ const NMAccessPointSecurity = {
WPA2_ENT: 6
};
const MAX_DEVICE_ITEMS = 4;
// small optimization, to avoid using [] all the time
const NM80211Mode = NetworkManager['80211Mode'];
const NM80211ApFlags = NetworkManager['80211ApFlags'];
@@ -299,22 +296,11 @@ const NMConnectionSection = new Lang.Class({
let item = this._connectionItems.get(connection.get_uuid());
if (item)
this._updateForConnection(item, connection);
item.updateForConnection(connection);
else
this._addConnection(connection);
},
_updateForConnection: function(item, connection) {
let pos = this._connections.indexOf(connection);
this._connections.splice(pos, 1);
pos = Util.insertSorted(this._connections, connection, Lang.bind(this, this._connectionSortFunction));
this._labelSection.moveMenuItem(item.labelItem, pos);
this._radioSection.moveMenuItem(item.radioItem, pos);
item.updateForConnection(connection);
},
_addConnection: function(connection) {
let item = this._makeConnectionItem(connection);
if (!item)
@@ -766,9 +752,10 @@ const NMWirelessDialog = new Lang.Class({
this._updateSensitivity();
this._syncView();
this._scanTimeoutId = Mainloop.timeout_add_seconds(15, Lang.bind(this, this._onScanTimeout));
GLib.Source.set_name_by_id(this._scanTimeoutId, '[gnome-shell] this._onScanTimeout');
this._onScanTimeout();
if (accessPoints.length == 0) {
/* If there are no visible access points, request a scan */
this._device.request_scan_simple(null);
}
},
destroy: function() {
@@ -793,19 +780,9 @@ const NMWirelessDialog = new Lang.Class({
this._airplaneModeChangedId = 0;
}
if (this._scanTimeoutId) {
Mainloop.source_remove(this._scanTimeoutId);
this._scanTimeoutId = 0;
}
this.parent();
},
_onScanTimeout: function() {
this._device.request_scan_simple(null);
return GLib.SOURCE_CONTINUE;
},
_activeApChanged: function() {
if (this._activeNetwork)
this._activeNetwork.item.setActive(false);
@@ -1431,7 +1408,7 @@ const NMVPNConnectionItem = new Lang.Class({
case NetworkManager.VPNConnectionState.PREPARE:
case NetworkManager.VPNConnectionState.CONNECT:
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
return _("connecting");
return _("connecting...");
case NetworkManager.VPNConnectionState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */
return _("authentication required");
@@ -1514,7 +1491,7 @@ const NMVPNSection = new Lang.Class({
if (nItems > 1) {
let appSys = Shell.AppSystem.get_default();
let app = appSys.lookup_app('gnome-network-panel.desktop');
app.launch(0, -1, false);
app.launch(0, -1);
} else {
let connection = this._connections[0];
Util.spawnApp(['gnome-control-center', 'network', 'show-device',
@@ -1554,10 +1531,8 @@ const NMVPNSection = new Lang.Class({
item.setActiveConnection(null);
}
vpnConnections.forEach(Lang.bind(this, function(a) {
if (a._connection) {
let item = this._connectionItems.get(a._connection.get_uuid());
item.setActiveConnection(a);
}
let item = this._connectionItems.get(a._connection.get_uuid());
item.setActiveConnection(a);
}));
},
@@ -1577,73 +1552,6 @@ const NMVPNSection = new Lang.Class({
});
Signals.addSignalMethods(NMVPNSection.prototype);
const DeviceCategory = new Lang.Class({
Name: 'DeviceCategory',
Extends: PopupMenu.PopupMenuSection,
_init: function(category) {
this.parent();
this._category = category;
this.devices = [];
this.section = new PopupMenu.PopupMenuSection();
this.section.box.connect('actor-added', Lang.bind(this, this._sync));
this.section.box.connect('actor-removed', Lang.bind(this, this._sync));
this.addMenuItem(this.section);
this._summaryItem = new PopupMenu.PopupSubMenuMenuItem('', true);
this._summaryItem.icon.icon_name = this._getSummaryIcon();
this.addMenuItem(this._summaryItem);
this._summaryItem.menu.addSettingsAction(_('Network Settings'),
'gnome-network-panel.desktop');
this._summaryItem.actor.hide();
},
_sync: function() {
let nDevices = this.section.box.get_children().reduce(
function(prev, child) {
return prev + (child.visible ? 1 : 0);
}, 0);
this._summaryItem.label.text = this._getSummaryLabel(nDevices);
let shouldSummarize = nDevices > MAX_DEVICE_ITEMS;
this._summaryItem.actor.visible = shouldSummarize;
this.section.actor.visible = !shouldSummarize;
},
_getSummaryIcon: function() {
switch(this._category) {
case NMConnectionCategory.WIRED:
return 'network-wired-symbolic';
case NMConnectionCategory.WIRELESS:
case NMConnectionCategory.WWAN:
return 'network-wireless-symbolic';
}
return '';
},
_getSummaryLabel: function(nDevices) {
switch(this._category) {
case NMConnectionCategory.WIRED:
return ngettext("%s Wired Connection",
"%s Wired Connections",
nDevices).format(nDevices);
case NMConnectionCategory.WIRELESS:
return ngettext("%s Wi-Fi Connection",
"%s Wi-Fi Connections",
nDevices).format(nDevices);
case NMConnectionCategory.WWAN:
return ngettext("%s Modem Connection",
"%s Modem Connections",
nDevices).format(nDevices);
}
return '';
}
});
const NMApplet = new Lang.Class({
Name: 'NMApplet',
Extends: PanelMenu.SystemIndicator,
@@ -1687,6 +1595,15 @@ const NMApplet = new Lang.Class({
this._tryLateInit();
},
_createDeviceCategory: function() {
let category = {
section: new PopupMenu.PopupMenuSection(),
devices: [ ],
};
this.menu.addMenuItem(category.section);
return category;
},
_tryLateInit: function() {
if (!this._client || !this._settings)
return;
@@ -1703,13 +1620,9 @@ const NMApplet = new Lang.Class({
this._nmDevices = [];
this._devices = { };
let categories = [NMConnectionCategory.WIRED,
NMConnectionCategory.WIRELESS,
NMConnectionCategory.WWAN];
for (let category of categories) {
this._devices[category] = new DeviceCategory(category);
this.menu.addMenuItem(this._devices[category]);
}
this._devices.wired = this._createDeviceCategory();
this._devices.wireless = this._createDeviceCategory();
this._devices.wwan = this._createDeviceCategory();
this._vpnSection = new NMVPNSection(this._client);
this._vpnSection.connect('activation-failed', Lang.bind(this, this._onActivationFailed));
@@ -2066,7 +1979,7 @@ const NMApplet = new Lang.Class({
// (but in general we should only prompt a portal if we know there is a portal)
if (GLib.getenv('GNOME_SHELL_CONNECTIVITY_TEST') != null)
isPortal = isPortal || this._client.connectivity < NetworkManager.ConnectivityState.FULL;
if (!isPortal || Main.sessionMode.isGreeter)
if (!isPortal)
return;
let path = this._mainConnection.get_path();
@@ -2097,24 +2010,13 @@ const NMApplet = new Lang.Class({
},
_updateIcon: function() {
if (!this._client.networking_enabled) {
if (!this._client.networking_enabled || !this._mainConnection) {
this._primaryIndicator.visible = false;
} else {
let dev = null;
if (this._mainConnection)
dev = this._mainConnection._primaryDevice;
let state = this._client.get_state();
let connected = state == NetworkManager.State.CONNECTED_GLOBAL;
this._primaryIndicator.visible = (dev != null) || connected;
if (dev) {
let dev = this._mainConnection._primaryDevice;
this._primaryIndicator.visible = (dev != null);
if (dev)
this._primaryIndicator.icon_name = dev.getIndicatorIcon();
} else if (connected) {
if (this._client.connectivity == NetworkManager.ConnectivityState.FULL)
this._primaryIndicator.icon_name = 'network-wired-symbolic';
else
this._primaryIndicator.icon_name = 'network-wired-no-route-symbolic';
}
}
this._vpnIndicator.icon_name = this._vpnSection.getIndicatorIcon();

View File

@@ -1,74 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const BUS_NAME = 'org.gnome.SettingsDaemon.Color';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color';
const ColorInterface = '<node> \
<interface name="org.gnome.SettingsDaemon.Color"> \
<property name="DisabledUntilTomorrow" type="b" access="readwrite"/> \
<property name="NightLightActive" type="b" access="read"/> \
</interface> \
</node>';
const ColorProxy = Gio.DBusProxy.makeProxyWrapper(ColorInterface);
const Indicator = new Lang.Class({
Name: 'NightLightIndicator',
Extends: PanelMenu.SystemIndicator,
_init: function() {
this.parent();
this._indicator = this._addIndicator();
this._indicator.icon_name = 'night-light-symbolic';
this._proxy = new ColorProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
(proxy, error) => {
if (error) {
log(error.message);
return;
}
this._proxy.connect('g-properties-changed',
Lang.bind(this, this._sync));
this._sync();
});
this._item = new PopupMenu.PopupSubMenuMenuItem("", true);
this._item.icon.icon_name = 'night-light-symbolic';
this._disableItem = this._item.menu.addAction('', () => {
this._proxy.DisabledUntilTomorrow = !this._proxy.DisabledUntilTomorrow;
});
this._item.menu.addAction(_("Turn Off"), () => {
let settings = new Gio.Settings({ schema_id: 'org.gnome.settings-daemon.plugins.color' });
settings.set_boolean('night-light-enabled', false);
});
this._item.menu.addSettingsAction(_("Display Settings"), 'gnome-display-panel.desktop');
this.menu.addMenuItem(this._item);
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
this._sync();
},
_sessionUpdated: function() {
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
},
_sync: function() {
let visible = this._proxy.NightLightActive;
let disabled = this._proxy.DisabledUntilTomorrow;
this._item.label.text = disabled ? _("Night Light Disabled")
: _("Night Light On");
this._disableItem.label.text = disabled ? _("Resume")
: _("Disable Until Tomorrow");
this._item.actor.visible = this._indicator.visible = visible;
}
});

View File

@@ -48,14 +48,8 @@ const AltSwitcher = new Lang.Class({
this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
this._flipped = false;
this._clickAction = new Clutter.ClickAction();
this._clickAction.connect('long-press', Lang.bind(this, this._onLongPress));
this.actor = new St.Bin();
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this.actor.connect('notify::mapped', () => { this._flipped = false; });
},
_sync: function() {
@@ -64,25 +58,14 @@ const AltSwitcher = new Lang.Class({
if (this._standard.visible && this._alternate.visible) {
let [x, y, mods] = global.get_pointer();
let altPressed = (mods & Clutter.ModifierType.MOD1_MASK) != 0;
if (this._flipped)
childToShow = altPressed ? this._standard : this._alternate;
else
childToShow = altPressed ? this._alternate : this._standard;
childToShow = altPressed ? this._alternate : this._standard;
} else if (this._standard.visible) {
childToShow = this._standard;
} else if (this._alternate.visible) {
childToShow = this._alternate;
}
let childShown = this.actor.get_child();
if (childShown != childToShow) {
if (childShown) {
if (childShown.fake_release)
childShown.fake_release();
childShown.remove_action(this._clickAction);
}
childToShow.add_action(this._clickAction);
if (this.actor.get_child() != childToShow) {
let hasFocus = this.actor.contains(global.stage.get_key_focus());
this.actor.set_child(childToShow);
if (hasFocus)
@@ -113,16 +96,6 @@ const AltSwitcher = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
},
_onLongPress: function(action, actor, state) {
if (state == Clutter.LongPressState.QUERY ||
state == Clutter.LongPressState.CANCEL)
return true;
this._flipped = !this._flipped;
this._sync();
return true;
}
});
const Indicator = new Lang.Class({

View File

@@ -23,7 +23,6 @@ const EdgeDragAction = imports.ui.edgeDragAction;
const IconGrid = imports.ui.iconGrid;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
const PINCH_GESTURE_THRESHOLD = 0.7;
const ViewPage = {
WINDOWS: 1,
@@ -52,32 +51,9 @@ function getTermsForSearchString(searchString) {
return terms;
}
const TouchpadShowOverviewAction = new Lang.Class({
Name: 'TouchpadShowOverviewAction',
_init: function(actor) {
actor.connect('captured-event', Lang.bind(this, this._handleEvent));
},
_handleEvent: function(actor, event) {
if (event.type() != Clutter.EventType.TOUCHPAD_PINCH)
return Clutter.EVENT_PROPAGATE;
if (event.get_touchpad_gesture_finger_count() != 3)
return Clutter.EVENT_PROPAGATE;
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END)
this.emit('activated', event.get_gesture_pinch_scale ());
return Clutter.EVENT_STOP;
}
});
Signals.addSignalMethods(TouchpadShowOverviewAction.prototype);
const ShowOverviewAction = new Lang.Class({
Name: 'ShowOverviewAction',
Extends: Clutter.GestureAction,
Signals: { 'activated': {} },
_init : function() {
this.parent();
@@ -136,6 +112,7 @@ const ShowOverviewAction = new Lang.Class({
this.emit('activated', areaDiff);
}
});
Signals.addSignalMethods(ShowOverviewAction.prototype);
const ViewSelector = new Lang.Class({
Name: 'ViewSelector',
@@ -253,16 +230,11 @@ const ViewSelector = new Lang.Class({
global.stage.add_action(gesture);
gesture = new ShowOverviewAction();
gesture.connect('activated', Lang.bind(this, this._pinchGestureActivated));
gesture.connect('activated', Lang.bind(this, function(action, areaDiff) {
if (areaDiff < 0.7)
Main.overview.show();
}));
global.stage.add_action(gesture);
gesture = new TouchpadShowOverviewAction(global.stage);
gesture.connect('activated', Lang.bind(this, this._pinchGestureActivated));
},
_pinchGestureActivated: function(action, scale) {
if (scale < PINCH_GESTURE_THRESHOLD)
Main.overview.show();
},
_toggleAppsPage: function() {

View File

@@ -17,7 +17,6 @@ const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
const Tweener = imports.ui.tweener;
const WindowMenu = imports.ui.windowMenu;
const PadOsd = imports.ui.padOsd;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
const MINIMIZE_WINDOW_ANIMATION_TIME = 0.2;
@@ -33,25 +32,6 @@ const UNDIM_TIME = 0.250;
const DISPLAY_REVERT_TIMEOUT = 20; // in seconds - keep in sync with mutter
const ONE_SECOND = 1000; // in ms
const GSD_WACOM_BUS_NAME = 'org.gnome.SettingsDaemon.Wacom';
const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
const GsdWacomIface = '<node name="/org/gnome/SettingsDaemon/Wacom"> \
<interface name="org.gnome.SettingsDaemon.Wacom"> \
<method name="SetGroupModeLED"> \
<arg name="device_path" direction="in" type="s"/> \
<arg name="group" direction="in" type="u"/> \
<arg name="mode" direction="in" type="u"/> \
</method> \
<method name="SetOLEDLabels"> \
<arg name="device_path" direction="in" type="s"/> \
<arg name="labels" direction="in" type="as"/> \
</method> \
</interface> \
</node>';
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
const DisplayChangeDialog = new Lang.Class({
Name: 'DisplayChangeDialog',
Extends: ModalDialog.ModalDialog,
@@ -530,7 +510,7 @@ const TouchpadWorkspaceSwitchAction = new Lang.Class({
if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE)
return Clutter.EVENT_PROPAGATE;
if (event.get_touchpad_gesture_finger_count() != 4)
if (event.get_gesture_swipe_finger_count() != 4)
return Clutter.EVENT_PROPAGATE;
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
@@ -554,7 +534,6 @@ Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype);
const WorkspaceSwitchAction = new Lang.Class({
Name: 'WorkspaceSwitchAction',
Extends: Clutter.SwipeAction,
Signals: { 'activated': { param_types: [Meta.MotionDirection.$gtype] } },
_init : function() {
const MOTION_THRESHOLD = 50;
@@ -592,11 +571,11 @@ const WorkspaceSwitchAction = new Lang.Class({
this.emit('activated', dir);
}
});
Signals.addSignalMethods(WorkspaceSwitchAction.prototype);
const AppSwitchAction = new Lang.Class({
Name: 'AppSwitchAction',
Extends: Clutter.GestureAction,
Signals: { 'activated': {} },
_init : function() {
this.parent();
@@ -658,6 +637,7 @@ const AppSwitchAction = new Lang.Class({
return true;
}
});
Signals.addSignalMethods(AppSwitchAction.prototype);
const ResizePopup = new Lang.Class({
Name: 'ResizePopup',
@@ -675,7 +655,7 @@ const ResizePopup = new Lang.Class({
set: function(rect, displayW, displayH) {
/* Translators: This represents the size of a window. The first number is
* the width of the window and the second is the height. */
let text = _("%d × %d").format(displayW, displayH);
let text = _("%d x %d").format(displayW, displayH);
this._label.set_text(text);
this._widget.set_position(rect.x, rect.y);
@@ -725,7 +705,6 @@ const WindowManager = new Lang.Class({
this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow));
this._shellwm.connect('unminimize', Lang.bind(this, this._unminimizeWindow));
this._shellwm.connect('size-change', Lang.bind(this, this._sizeChangeWindow));
this._shellwm.connect('size-changed', Lang.bind(this, this._sizeChangedWindow));
this._shellwm.connect('map', Lang.bind(this, this._mapWindow));
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
@@ -938,35 +917,6 @@ const WindowManager = new Lang.Class({
Lang.bind(this, this._toggleCalendar));
global.display.connect('show-resize-popup', Lang.bind(this, this._showResizePopup));
global.display.connect('show-pad-osd', Lang.bind(this, this._showPadOsd));
global.display.connect('show-osd', Lang.bind(this, function (display, monitorIndex, iconName, label) {
let icon = Gio.Icon.new_for_string(iconName);
Main.osdWindowManager.show(monitorIndex, icon, label, null);
}));
this._gsdWacomProxy = new GsdWacomProxy(Gio.DBus.session, GSD_WACOM_BUS_NAME,
GSD_WACOM_OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error.message);
return;
}
}));
global.display.connect('pad-mode-switch', Lang.bind(this, function (display, pad, group, mode) {
let labels = [];
//FIXME: Fix num buttons
for (let i = 0; i < 50; i++) {
let str = display.get_pad_action_label(pad, Meta.PadActionType.BUTTON, i);
labels.push(str ? str: '');
}
if (this._gsdWacomProxy) {
this._gsdWacomProxy.SetOLEDLabelsRemote(pad.get_device_node(), labels);
this._gsdWacomProxy.SetGroupModeLEDRemote(pad.get_device_node(), group, mode);
}
}));
Main.overview.connect('showing', Lang.bind(this, function() {
for (let i = 0; i < this._dimmedWindows.length; i++)
@@ -996,13 +946,7 @@ const WindowManager = new Lang.Class({
gesture = new AppSwitchAction();
gesture.connect('activated', Lang.bind(this, this._switchApp));
global.stage.add_action(gesture);
},
_showPadOsd: function (display, device, settings, imagePath, editionMode, monitorIndex) {
this._currentPadOsd = new PadOsd.PadOsd(device, settings, imagePath, editionMode, monitorIndex);
this._currentPadOsd.connect('closed', Lang.bind(this, function() { this._currentPadOsd = null }));
return this._currentPadOsd.actor;
},
_actionSwitchWorkspace: function(action, direction) {
@@ -1129,9 +1073,6 @@ const WindowManager = new Lang.Class({
if (!this._shouldAnimate())
return false;
if (!actor.get_texture())
return false;
let type = actor.meta_window.get_window_type();
return types.indexOf(type) >= 0;
},
@@ -1306,17 +1247,37 @@ const WindowManager = new Lang.Class({
return;
}
if ((whichChange == Meta.SizeChange.FULLSCREEN ||
whichChange == Meta.SizeChange.UNFULLSCREEN) &&
oldFrameRect.width > 0 && oldFrameRect.height > 0)
this._fullscreenAnimation(shellwm, actor, oldFrameRect, whichChange);
if (whichChange == Meta.SizeChange.FULLSCREEN)
this._fullscreenWindow(shellwm, actor, oldFrameRect, oldBufferRect);
else if (whichChange == Meta.SizeChange.UNFULLSCREEN)
this._unfullscreenWindow(shellwm, actor, oldFrameRect, oldBufferRect);
else
shellwm.completed_size_change(actor);
},
_fullscreenAnimation: function(shellwm, actor, oldFrameRect, change) {
_fullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
actor.translation_x = oldFrameRect.x - monitor.x;
actor.translation_y = oldFrameRect.y - monitor.y;
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
},
_unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
let targetRect = actor.meta_window.get_frame_rect();
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
actor.translation_x = -(targetRect.x - monitor.x);
actor.translation_y = -(targetRect.y - monitor.y);
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
},
_fullscreenAnimation: function(shellwm, actor, oldFrameRect) {
this._resizing.push(actor);
// Position a clone of the window on top of the old position,
// while actor updates are frozen.
// Note that the MetaWindow has up to date sizing information for
// the new geometry already.
let targetRect = actor.meta_window.get_frame_rect();
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
let actorClone = new St.Widget({ content: actorContent });
actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
@@ -1324,28 +1285,10 @@ const WindowManager = new Lang.Class({
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
Main.uiGroup.add_actor(actorClone);
let rect = change == Meta.SizeChange.FULLSCREEN ? oldFrameRect : null;
actor.__fullscreenClone = actorClone;
if (this._clearFullscreenInfo(actor))
this._shellwm.completed_size_change(actor);
actor.__fullscreenInfo = { clone: actorClone,
oldRect: rect };
},
_sizeChangedWindow: function(shellwm, actor) {
if (!actor.__fullscreenInfo)
return;
if (this._resizing.indexOf(actor) != -1)
return;
let actorClone = actor.__fullscreenInfo.clone;
let targetRect = actor.meta_window.get_frame_rect();
let scaleX = targetRect.width / actorClone.width;
let scaleY = targetRect.height / actorClone.height;
this._resizing.push(actor);
let scaleX = targetRect.width / oldFrameRect.width;
let scaleY = targetRect.height / oldFrameRect.height;
// Now scale and fade out the clone
Tweener.addTween(actorClone,
@@ -1358,17 +1301,9 @@ const WindowManager = new Lang.Class({
transition: 'easeOutQuad'
});
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
let oldRect = actor.__fullscreenInfo.oldRect;
if (oldRect) {
actor.translation_x = oldRect.x - monitor.x;
actor.translation_y = oldRect.y - monitor.y;
} else {
actor.translation_x = -(targetRect.x - monitor.x);
actor.translation_y = -(targetRect.y - monitor.y);
}
// Now set scale the actor to size it as the clone.
// Note that the caller of this function already set a translation
// on the actor.
actor.scale_x = 1 / scaleX;
actor.scale_y = 1 / scaleY;
@@ -1394,15 +1329,6 @@ const WindowManager = new Lang.Class({
shellwm.completed_size_change(actor);
},
_clearFullscreenInfo: function(actor) {
if (actor.__fullscreenInfo) {
actor.__fullscreenInfo.clone.destroy();
delete actor.__fullscreenInfo;
return true;
}
return false;
},
_sizeChangeWindowDone: function(shellwm, actor) {
if (this._removeEffect(this._resizing, actor)) {
Tweener.removeTweens(actor);
@@ -1410,13 +1336,23 @@ const WindowManager = new Lang.Class({
actor.scale_y = 1.0;
actor.translation_x = 0;
actor.translation_y = 0;
this._clearFullscreenInfo(actor);
let actorClone = actor.__fullscreenClone;
if (actorClone) {
actorClone.destroy();
delete actor.__fullscreenClone;
}
}
},
_sizeChangeWindowOverwritten: function(shellwm, actor) {
if (this._removeEffect(this._resizing, actor))
this._clearFullscreenInfo(actor);
if (this._removeEffect(this._resizing, actor)) {
let actorClone = actor.__fullscreenClone;
if (actorClone) {
actorClone.destroy();
delete actor.__fullscreenClone;
}
}
},
_hasAttachedDialogs: function(window, ignoreWindow) {

View File

@@ -111,7 +111,7 @@ const WindowClone = new Lang.Class({
this.metaWindow._delegate = this;
this._workspace = workspace;
this._windowClone = new Clutter.Clone({ source: realWindow });
this._windowClone = new Clutter.Clone({ source: realWindow.get_texture() });
// We expect this.actor to be used for all interaction rather than
// this._windowClone; as the former is reactive and the latter
// is not, this just works for most cases. However, for DND all

View File

@@ -29,7 +29,6 @@ gl
gu
he
hi
hr
hu
ia
id

View File

@@ -39,7 +39,6 @@ js/ui/mpris.js
js/ui/notificationDaemon.js
js/ui/overviewControls.js
js/ui/overview.js
js/ui/padOsd.js
js/ui/panel.js
js/ui/popupMenu.js
js/ui/runDialog.js
@@ -53,7 +52,6 @@ js/ui/status/brightness.js
js/ui/status/keyboard.js
js/ui/status/location.js
js/ui/status/network.js
js/ui/status/nightLight.js
js/ui/status/power.js
js/ui/status/rfkill.js
js/ui/status/system.js

View File

@@ -1688,7 +1688,7 @@ msgstr "تقويم إيفُليوشِن"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: src/calendar-server/evolution-calendar.desktop.in:6
msgid "evolution"
msgstr "evolution"
msgstr "إيفُليوشن"
#. translators:
#. * The number of sound outputs on a particular device

2220
po/be.po

File diff suppressed because it is too large Load Diff

439
po/ca.po
View File

@@ -4,15 +4,14 @@
# Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>, 2009.
# Jordi Serratosa <jordis@softcatala.cat>, 2012.
# Gil Forcada <gilforcada@guifi.net>, 2010, 2011, 2013, 2014, 2016.
# Jordi Mas i Hernàndez <jmas@softcatala.org>, 2017
#
msgid ""
msgstr ""
"Project-Id-Version: HEAD\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-16 05:51+0100\n"
"PO-Revision-Date: 2017-02-16 06:34+0100\n"
"POT-Creation-Date: 2016-09-16 21:22+0200\n"
"PO-Revision-Date: 2016-09-16 21:22+0200\n"
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca\n"
@@ -20,7 +19,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 1.8.9\n"
"X-Generator: Poedit 1.8.7.1\n"
#: ../js/extensionPrefs/main.js:117
#, javascript-format
@@ -28,27 +27,28 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "S'ha produït un error en carregar el diàleg de preferències de %s:"
#: ../js/extensionPrefs/main.js:149
msgid "Shell Extensions"
msgstr "Extensions del Shell"
msgid "GNOME Shell Extensions"
msgstr "Extensions del GNOME Shell"
#: ../js/gdm/authPrompt.js:149 ../js/ui/audioDeviceSelection.js:71
#: ../js/ui/components/networkAgent.js:145 ../js/ui/components/polkitAgent.js:179
#: ../js/ui/endSessionDialog.js:482 ../js/ui/extensionDownloader.js:195
#: ../js/ui/shellMountOperation.js:399 ../js/ui/status/network.js:939
#: ../js/gdm/authPrompt.js:147 ../js/ui/audioDeviceSelection.js:71
#: ../js/ui/components/networkAgent.js:145
#: ../js/ui/components/polkitAgent.js:179 ../js/ui/endSessionDialog.js:483
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:916
msgid "Cancel"
msgstr "Cancel·la"
#: ../js/gdm/authPrompt.js:171 ../js/gdm/authPrompt.js:218
#: ../js/gdm/authPrompt.js:450
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216
#: ../js/gdm/authPrompt.js:448
msgid "Next"
msgstr "Següent"
#: ../js/gdm/authPrompt.js:214 ../js/ui/shellMountOperation.js:403
#: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59
msgid "Unlock"
msgstr "Desbloqueja"
#: ../js/gdm/authPrompt.js:216
#: ../js/gdm/authPrompt.js:214
msgctxt "button"
msgid "Sign In"
msgstr "Entra"
@@ -181,67 +181,56 @@ msgstr "%d de %B, a les %l%M %p"
msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, a les %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: ../js/portalHelper/main.js:67
msgid "Hotspot Login"
msgstr "Inici de sessió al punt d'accés Wi-Fi"
#: ../js/portalHelper/main.js:113
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
msgstr ""
"La connexió a aquest punt d'accés no és segura. Contrasenyes o altre "
"informació que introduïu en aquesta pàgina pot ser vista per persones properes."
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page
#: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Redirecció per l'autenticació web"
#. No support for non-modal system dialogs, so ignore the option
#. let modal = options['modal'] || true;
#: ../js/ui/accessDialog.js:62 ../js/ui/status/location.js:427
#: ../js/ui/accessDialog.js:62 ../js/ui/status/location.js:426
msgid "Deny Access"
msgstr "Denega l'accés"
#: ../js/ui/accessDialog.js:63 ../js/ui/status/location.js:430
#: ../js/ui/accessDialog.js:63 ../js/ui/status/location.js:429
msgid "Grant Access"
msgstr "Permetre l'accés"
#: ../js/ui/appDisplay.js:806
#: ../js/ui/appDisplay.js:794
msgid "Frequently used applications will appear here"
msgstr "Les aplicacions utilitzades freqüentment apareixeran aquí"
#: ../js/ui/appDisplay.js:927
#: ../js/ui/appDisplay.js:914
msgid "Frequent"
msgstr "Freqüent"
#: ../js/ui/appDisplay.js:934
#: ../js/ui/appDisplay.js:921
msgid "All"
msgstr "Totes"
#: ../js/ui/appDisplay.js:1892
#: ../js/ui/appDisplay.js:1853
msgid "New Window"
msgstr "Finestra nova"
#: ../js/ui/appDisplay.js:1906
msgid "Launch using Dedicated Graphics Card"
msgstr "Inicia usant una tarja gràfica dedicada"
#: ../js/ui/appDisplay.js:1933 ../js/ui/dash.js:289
#: ../js/ui/appDisplay.js:1881 ../js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Suprimeix dels preferits"
#: ../js/ui/appDisplay.js:1939
#: ../js/ui/appDisplay.js:1887
msgid "Add to Favorites"
msgstr "Afegeix als preferits"
#: ../js/ui/appDisplay.js:1949
#: ../js/ui/appDisplay.js:1897
msgid "Show Details"
msgstr "Mostra els detalls"
#: ../js/ui/appFavorites.js:138
#: ../js/ui/appFavorites.js:134
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "S'ha afegit %s als preferits."
#: ../js/ui/appFavorites.js:172
#: ../js/ui/appFavorites.js:168
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "S'ha suprimit %s dels preferits."
@@ -270,11 +259,11 @@ msgstr "Micròfon"
msgid "Change Background…"
msgstr "Canvia el fons de l'escriptori…"
#: ../js/ui/backgroundMenu.js:21 ../js/ui/status/nightLight.js:51
#: ../js/ui/backgroundMenu.js:21
msgid "Display Settings"
msgstr "Paràmetres de la pantalla"
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:401
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:374
msgid "Settings"
msgstr "Paràmetres"
@@ -390,7 +379,7 @@ msgstr "S'ha connectat un dispositiu extern"
msgid "External drive disconnected"
msgstr "S'ha desconnectat un dispositiu extern"
#: ../js/ui/components/autorunManager.js:356
#: ../js/ui/components/autorunManager.js:355
#, javascript-format
msgid "Open with %s"
msgstr "Obre amb %s"
@@ -403,8 +392,8 @@ msgstr "Contrasenya:"
msgid "Type again:"
msgstr "Torneu a escriure-la:"
#: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:272
#: ../js/ui/status/network.js:366 ../js/ui/status/network.js:942
#: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:269
#: ../js/ui/status/network.js:352 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Connecta"
@@ -435,21 +424,22 @@ msgid "Service: "
msgstr "Servei:"
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:666
#: ../js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "La xarxa sense fil requereix autenticació"
#: ../js/ui/components/networkAgent.js:321
#: ../js/ui/components/networkAgent.js:667
#: ../js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network “%s”."
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
msgstr ""
"Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus "
"d'encriptació."
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:670
#: ../js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Autenticació 802.1X amb fil"
@@ -458,17 +448,17 @@ msgid "Network name: "
msgstr "Nom de la xarxa: "
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:674
#: ../js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "Autenticació DSL"
#: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:680
#: ../js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "Cal que introduïu el codi PIN"
#: ../js/ui/components/networkAgent.js:340
#: ../js/ui/components/networkAgent.js:681
#: ../js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil"
@@ -477,19 +467,19 @@ msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:348
#: ../js/ui/components/networkAgent.js:687
#: ../js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Contrasenya de la xarxa de banda ampla mòbil"
#: ../js/ui/components/networkAgent.js:349
#: ../js/ui/components/networkAgent.js:671
#: ../js/ui/components/networkAgent.js:675
#: ../js/ui/components/networkAgent.js:688
#: ../js/ui/components/networkAgent.js:663
#: ../js/ui/components/networkAgent.js:667
#: ../js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Cal introduir una contrasenya per connectar-vos a «%s»."
#: ../js/ui/components/networkAgent.js:655 ../js/ui/status/network.js:1747
#: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1658
msgid "Network Manager"
msgstr "Gestor de connexions de xarxa"
@@ -510,7 +500,7 @@ msgstr "Autentica"
#. * because of an authentication error (like invalid password),
#. * for instance.
#: ../js/ui/components/polkitAgent.js:301 ../js/ui/shellMountOperation.js:383
msgid "Sorry, that didnt work. Please try again."
msgid "Sorry, that didn't work. Please try again."
msgstr "No ha funcionat. Torneu-ho a provar."
#. Translators: this is the other person changing their old IM name to their new
@@ -520,7 +510,7 @@ msgstr "No ha funcionat. Torneu-ho a provar."
msgid "%s is now known as %s"
msgstr "En/na %s ara es diu %s"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:178
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows"
msgstr "Finestres"
@@ -642,11 +632,11 @@ msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
msgstr[0] ""
"Es reiniciarà l'ordinador automàticament i s'instal·laran les actualitzacions "
"d'aquí %d segon."
"Es reiniciarà l'ordinador automàticament i s'instal·laran les "
"actualitzacions d'aquí %d segon."
msgstr[1] ""
"Es reiniciarà l'ordinador automàticament i s'instal·laran les actualitzacions "
"d'aquí %d segons."
"Es reiniciarà l'ordinador automàticament i s'instal·laran les "
"actualitzacions d'aquí %d segons."
#: ../js/ui/endSessionDialog.js:127 ../js/ui/endSessionDialog.js:147
msgctxt "button"
@@ -677,33 +667,31 @@ msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
"time: ensure that you have backed up and that the computer is plugged in."
msgstr ""
"%s %s s'instal·larà després del reinici. Una actualització de la instal·lació "
"pot trigar força temps. Assegureu-vos que heu fet còpia de seguretat i que "
"l'ordinador està connectat al corrent."
#: ../js/ui/endSessionDialog.js:361
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"S'està utilitzant la bateria: connecteu l'ordinador a la xarxa elèctrica abans "
"d'instal·lar les actualitzacions."
"S'està utilitzant la bateria: connecteu l'ordinador a la xarxa elèctrica "
"abans d'instal·lar les actualitzacions."
#: ../js/ui/endSessionDialog.js:378
msgid "Some applications are busy or have unsaved work."
msgstr ""
"Hi ha algunes aplicacions que estan ocupades o que tenen documents sense desar."
"Hi ha algunes aplicacions que estan ocupades o que tenen documents sense "
"desar."
#: ../js/ui/endSessionDialog.js:385
msgid "Other users are logged in."
msgstr "Altres usuaris tenen la sessió oberta."
#. Translators: Remote here refers to a remote session, like a ssh login
#: ../js/ui/endSessionDialog.js:670
#: ../js/ui/endSessionDialog.js:671
#, javascript-format
msgid "%s (remote)"
msgstr "%s (remot)"
#. Translators: Console here refers to a tty like a VT console
#: ../js/ui/endSessionDialog.js:673
#: ../js/ui/endSessionDialog.js:674
#, javascript-format
msgid "%s (console)"
msgstr "%s (consola)"
@@ -802,8 +790,6 @@ msgstr "Multimèdia"
msgid "Undo"
msgstr "Desfés"
#. Translators: This is the main view to select
#. activities. See also note for "Activities" string.
#: ../js/ui/overview.js:113
msgid "Overview"
msgstr "Vista general"
@@ -816,50 +802,6 @@ msgstr "Vista general"
msgid "Type to search…"
msgstr "Teclegeu per cercar…"
#: ../js/ui/padOsd.js:37
msgid "New shortcut…"
msgstr "Drecera de teclat nova…"
#: ../js/ui/padOsd.js:86
msgid "Application defined"
msgstr "Definit per l'aplicació"
#: ../js/ui/padOsd.js:87
msgid "Show on-screen help"
msgstr "Mostra l'ajuda en pantalla"
#: ../js/ui/padOsd.js:88
msgid "Switch monitor"
msgstr "Commuta el monitor "
#: ../js/ui/padOsd.js:89
msgid "Assign keystroke"
msgstr "Assigna la pulsació de tecla"
#: ../js/ui/padOsd.js:143
msgid "Done"
msgstr "Fet"
#: ../js/ui/padOsd.js:597
msgid "Edit…"
msgstr "Edita…"
#: ../js/ui/padOsd.js:610 ../js/ui/padOsd.js:665
msgid "None"
msgstr "Cap"
#: ../js/ui/padOsd.js:648
msgid "Press a button to configure"
msgstr "Premeu un botó per a configurar"
#: ../js/ui/padOsd.js:649
msgid "Press Esc to exit"
msgstr "Premeu Esc per sortir"
#: ../js/ui/padOsd.js:652
msgid "Press any key to exit"
msgstr "Premeu qualsevol tecla per sortir"
#: ../js/ui/panel.js:358
msgid "Quit"
msgstr "Surt"
@@ -875,7 +817,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: ../js/ui/panel.js:810
#: ../js/ui/panel.js:807
msgid "Top Bar"
msgstr "Barra superior"
@@ -896,10 +838,6 @@ msgstr "Introduïu una ordre"
msgid "Close"
msgstr "Tanca"
#: ../js/ui/runDialog.js:277
msgid "Restart is not available on Wayland"
msgstr "El reinici no està disponible en Wayland"
#: ../js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "S'està reiniciant…"
@@ -924,11 +862,11 @@ msgid_plural "%d new notifications"
msgstr[0] "%d notificació nova"
msgstr[1] "%d notificacions noves"
#: ../js/ui/screenShield.js:449 ../js/ui/status/system.js:409
#: ../js/ui/screenShield.js:449 ../js/ui/status/system.js:382
msgid "Lock"
msgstr "Bloqueja"
#: ../js/ui/screenShield.js:707
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "El GNOME necessita bloquejar la pantalla"
@@ -939,11 +877,11 @@ msgstr "El GNOME necessita bloquejar la pantalla"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:828 ../js/ui/screenShield.js:1295
#: ../js/ui/screenShield.js:825 ../js/ui/screenShield.js:1291
msgid "Unable to lock"
msgstr "No es pot blocar"
#: ../js/ui/screenShield.js:829 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:826 ../js/ui/screenShield.js:1292
msgid "Lock was blocked by an application"
msgstr "Una aplicació està bloquejant el bloqueig"
@@ -1027,7 +965,7 @@ msgstr "Text gran"
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:56 ../js/ui/status/network.js:638
#: ../js/ui/status/bluetooth.js:56 ../js/ui/status/network.js:624
msgid "Bluetooth Settings"
msgstr "Paràmetres del Bluetooth"
@@ -1044,17 +982,17 @@ msgid "Off"
msgstr "Desactivat"
#: ../js/ui/status/bluetooth.js:140
msgid "On"
msgstr "Activat"
msgid "Not In Use"
msgstr "No s'usa"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1302
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Activa"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:181
#: ../js/ui/status/network.js:367 ../js/ui/status/network.js:1302
#: ../js/ui/status/network.js:1417 ../js/ui/status/nightLight.js:47
#: ../js/ui/status/rfkill.js:90 ../js/ui/status/rfkill.js:117
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Desactiva"
@@ -1091,29 +1029,29 @@ msgid "Enable"
msgstr "Habilita"
#. Translators: %s is an application name
#: ../js/ui/status/location.js:436
#: ../js/ui/status/location.js:435
#, javascript-format
msgid "Give %s access to your location?"
msgstr "Voleu donar a %s accés a la vostra ubicació?"
#: ../js/ui/status/location.js:438
#: ../js/ui/status/location.js:437
msgid "Location access can be changed at any time from the privacy settings."
msgstr ""
"Podeu canviar la configuració de l'accés a la ubicació sempre que vulgueu des "
"de la configuració de la privacitat."
"Podeu canviar la configuració de l'accés a la ubicació sempre que vulgueu "
"des de la configuració de la privacitat."
#: ../js/ui/status/network.js:104
#: ../js/ui/status/network.js:101
msgid "<unknown>"
msgstr "<desconegut>"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:465 ../js/ui/status/network.js:1331
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308
#, javascript-format
msgid "%s Off"
msgstr "%s apagat"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:468
#: ../js/ui/status/network.js:454
#, javascript-format
msgid "%s Connected"
msgstr "%s connectat"
@@ -1121,209 +1059,171 @@ msgstr "%s connectat"
#. 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);
#. %s is a network identifier
#: ../js/ui/status/network.js:473
#: ../js/ui/status/network.js:459
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s no gestionat"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:476
#: ../js/ui/status/network.js:462
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s s'està desconnectant"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:483 ../js/ui/status/network.js:1323
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300
#, javascript-format
msgid "%s Connecting"
msgstr "%s s'està connectant"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: ../js/ui/status/network.js:486
#: ../js/ui/status/network.js:472
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s requereix autenticació"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: ../js/ui/status/network.js:494
#: ../js/ui/status/network.js:480
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Manca el microprogramari per %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: ../js/ui/status/network.js:498
#: ../js/ui/status/network.js:484
#, javascript-format
msgid "%s Unavailable"
msgstr "%s no disponible"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:501
#: ../js/ui/status/network.js:487
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s ha fallat la connexió"
#: ../js/ui/status/network.js:517
#: ../js/ui/status/network.js:503
msgid "Wired Settings"
msgstr "Paràmetres de la xarxa amb fils"
#: ../js/ui/status/network.js:559
#: ../js/ui/status/network.js:545
msgid "Mobile Broadband Settings"
msgstr "Configuració de la xarxa de banda ampla mòbil"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:602 ../js/ui/status/network.js:1328
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s maquinari inhabilitat"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: ../js/ui/status/network.js:606
#: ../js/ui/status/network.js:592
#, javascript-format
msgid "%s Disabled"
msgstr "%s Inhabilitat"
#: ../js/ui/status/network.js:646
#: ../js/ui/status/network.js:632
msgid "Connect to Internet"
msgstr "Connecta a l'Internet"
#: ../js/ui/status/network.js:836
#: ../js/ui/status/network.js:813
msgid "Airplane Mode is On"
msgstr "El mode d'avió és actiu"
#: ../js/ui/status/network.js:837
#: ../js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Quan el mode d'avió és actiu es desactiva la xarxa sense fil."
msgstr "Quan el mode d'avió és actiu es desactiva la xarxa sense fils."
#: ../js/ui/status/network.js:838
#: ../js/ui/status/network.js:815
msgid "Turn Off Airplane Mode"
msgstr "Desactiva el mode d'avió"
#: ../js/ui/status/network.js:847
#: ../js/ui/status/network.js:824
msgid "Wi-Fi is Off"
msgstr "La xarxa sense fil està desactivada"
#: ../js/ui/status/network.js:848
#: ../js/ui/status/network.js:825
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "S'ha d'activar la xarxa sense fil per poder-se connectar a una xarxa."
msgstr "S'ha d'activar la xarxa sense fils per poder-se connectar a una xarxa."
#: ../js/ui/status/network.js:849
#: ../js/ui/status/network.js:826
msgid "Turn On Wi-Fi"
msgstr "Activa la xarxa sense fil"
msgstr "Activa la xarxa sense fils"
#: ../js/ui/status/network.js:874
#: ../js/ui/status/network.js:851
msgid "Wi-Fi Networks"
msgstr "Xarxes sense fil"
#: ../js/ui/status/network.js:876
#: ../js/ui/status/network.js:853
msgid "Select a network"
msgstr "Trieu una xarxa"
#: ../js/ui/status/network.js:906
#: ../js/ui/status/network.js:883
msgid "No Networks"
msgstr "Cap xarxa"
#: ../js/ui/status/network.js:927 ../js/ui/status/rfkill.js:115
#: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Utilitza l'interruptor de maquinari per desactivar-la"
#: ../js/ui/status/network.js:1194
#: ../js/ui/status/network.js:1171
msgid "Select Network"
msgstr "Trieu una xarxa"
#: ../js/ui/status/network.js:1200
#: ../js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "Paràmetres del sense fil"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:1319
#: ../js/ui/status/network.js:1296
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hostpot %s actiu"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:1334
#: ../js/ui/status/network.js:1311
#, javascript-format
msgid "%s Not Connected"
msgstr "%s no està connectat"
#: ../js/ui/status/network.js:1434
msgid "connecting"
#: ../js/ui/status/network.js:1411
msgid "connecting..."
msgstr "s'està connectant..."
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:1437
#: ../js/ui/status/network.js:1414
msgid "authentication required"
msgstr "cal autenticació"
#: ../js/ui/status/network.js:1439
#: ../js/ui/status/network.js:1416
msgid "connection failed"
msgstr "ha fallat la connexió"
#: ../js/ui/status/network.js:1505 ../js/ui/status/network.js:1600
#: ../js/ui/status/rfkill.js:93
#: ../js/ui/status/network.js:1482 ../js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Paràmetres de xarxa"
#: ../js/ui/status/network.js:1507
#: ../js/ui/status/network.js:1484
msgid "VPN Settings"
msgstr "Paràmetres de la VPN"
#: ../js/ui/status/network.js:1526
#: ../js/ui/status/network.js:1503
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1536
#: ../js/ui/status/network.js:1513
msgid "VPN Off"
msgstr "VPN apagat"
#: ../js/ui/status/network.js:1631
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s connexió amb fil"
msgstr[1] "%s connexions amb fil"
#: ../js/ui/status/network.js:1635
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s connexió Wifi"
msgstr[1] "%s connexions Wifi"
#: ../js/ui/status/network.js:1639
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s connexió mòdem"
msgstr[1] "%s connexions mòdem"
#: ../js/ui/status/network.js:1786
#: ../js/ui/status/network.js:1697
msgid "Connection failed"
msgstr "Ha fallat la connexió"
#: ../js/ui/status/network.js:1787
#: ../js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "Ha fallat l'activació de la connexió de xarxa"
#: ../js/ui/status/nightLight.js:68
msgid "Night Light Disabled"
msgstr "Llum nocturna inhabilitada"
#: ../js/ui/status/nightLight.js:69
msgid "Night Light On"
msgstr "Llum nocturna habilitada"
#: ../js/ui/status/nightLight.js:70
msgid "Resume"
msgstr "Reprèn"
#: ../js/ui/status/nightLight.js:71
msgid "Disable Until Tomorrow"
msgstr "Inhabilita fins demà"
#: ../js/ui/status/power.js:61
msgid "Power Settings"
msgstr "Paràmetres d'energia"
@@ -1362,27 +1262,27 @@ msgstr "%d%%"
msgid "Airplane Mode On"
msgstr "El mode d'avió és actiu"
#: ../js/ui/status/system.js:378
#: ../js/ui/status/system.js:351
msgid "Switch User"
msgstr "Canvia d'usuari"
#: ../js/ui/status/system.js:383
#: ../js/ui/status/system.js:356
msgid "Log Out"
msgstr "Surt"
#: ../js/ui/status/system.js:388
#: ../js/ui/status/system.js:361
msgid "Account Settings"
msgstr "Paràmetres del compte"
#: ../js/ui/status/system.js:405
#: ../js/ui/status/system.js:378
msgid "Orientation Lock"
msgstr "Bloqueja l'orientació"
#: ../js/ui/status/system.js:413
#: ../js/ui/status/system.js:386
msgid "Suspend"
msgstr "Atura temporalment"
#: ../js/ui/status/system.js:416
#: ../js/ui/status/system.js:389
msgid "Power Off"
msgstr "Apaga"
@@ -1402,11 +1302,11 @@ msgstr "Entra amb un altre usuari"
msgid "Unlock Window"
msgstr "Desbloqueja la finestra"
#: ../js/ui/viewSelector.js:182
#: ../js/ui/viewSelector.js:159
msgid "Applications"
msgstr "Aplicacions"
#: ../js/ui/viewSelector.js:186
#: ../js/ui/viewSelector.js:163
msgid "Search"
msgstr "Cerca"
@@ -1415,22 +1315,22 @@ msgstr "Cerca"
msgid "“%s” is ready"
msgstr "«%s» ja està a punt"
#: ../js/ui/windowManager.js:83
#: ../js/ui/windowManager.js:63
msgid "Do you want to keep these display settings?"
msgstr "Voleu mantenir aquesta configuració de la pantalla?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: ../js/ui/windowManager.js:102
#: ../js/ui/windowManager.js:82
msgid "Revert Settings"
msgstr "Descarta els canvis"
#: ../js/ui/windowManager.js:105
#: ../js/ui/windowManager.js:85
msgid "Keep Changes"
msgstr "Mantén els canvis"
#: ../js/ui/windowManager.js:123
#: ../js/ui/windowManager.js:103
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -1439,10 +1339,10 @@ msgstr[1] "Es descartaran els canvis d'aquí %d segons"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: ../js/ui/windowManager.js:678
#: ../js/ui/windowManager.js:658
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
msgid "%d x %d"
msgstr "%d x %d"
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
@@ -1539,7 +1439,7 @@ msgid "Mode used by GDM for login screen"
msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada"
#: ../src/main.c:393
msgid "Use a specific mode, e.g. gdm for login screen"
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada"
#: ../src/main.c:399
@@ -1568,15 +1468,6 @@ msgstr "La contrasenya no pot ser buida"
msgid "Authentication dialog was dismissed by the user"
msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ msgid "Web Authentication Redirect"
#~ msgstr "Redirecció per l'autenticació web"
#~ msgid "%d x %d"
#~ msgstr "%d x %d"
#~ msgid "Not In Use"
#~ msgstr "No s'usa"
#~ msgid "System"
#~ msgstr "Sistema"
@@ -1609,8 +1500,8 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ msgid "Enable internal tools useful for developers and testers from Alt-F2"
#~ msgstr ""
#~ "Habilita les eines internes en el diàleg de l'Alt+F2 que són útils per als "
#~ "desenvolupadors i provadors"
#~ "Habilita les eines internes en el diàleg de l'Alt+F2 que són útils per "
#~ "als desenvolupadors i provadors"
#~ msgid ""
#~ "Allows access to internal debugging and monitoring tools using the Alt-F2 "
@@ -1665,7 +1556,8 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ msgid "Index of the currently selected view in the application picker."
#~ msgstr ""
#~ "Índex de la vista seleccionada actualment en el seleccionador d'aplicacions."
#~ "Índex de la vista seleccionada actualment en el seleccionador "
#~ "d'aplicacions."
#~ msgid "History for command (Alt-F2) dialog"
#~ msgstr "Historial de les ordres utilitzades en el diàleg de l'Alt+F2"
@@ -1680,8 +1572,8 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ "This key overrides the automatic hiding of the 'Log out' menu item in "
#~ "single-user, single-session situations."
#~ msgstr ""
#~ "Aquesta clau sobreescriu l'ocultació automàtica de l'element de menú «Surt» "
#~ "quan només hi ha un usuari i un sol tipus de sessió."
#~ "Aquesta clau sobreescriu l'ocultació automàtica de l'element de menú "
#~ "«Surt» quan només hi ha un usuari i un sol tipus de sessió."
#~ msgid ""
#~ "Whether to remember password for mounting encrypted or remote filesystems"
@@ -1696,10 +1588,10 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ "state of the checkbox."
#~ msgstr ""
#~ "El GNOME Shell us demanarà la contrasenya quan es munti un dispositiu "
#~ "encriptat o un sistema de fitxers remot. Si es pot desar la contrasenya per "
#~ "utilitzar-lo en el futur, es mostrarà la casella de verificació «Recorda la "
#~ "contrasenya». Aquesta clau estableix el valor per defecte d'aquesta casella "
#~ "de verificació."
#~ "encriptat o un sistema de fitxers remot. Si es pot desar la contrasenya "
#~ "per utilitzar-lo en el futur, es mostrarà la casella de verificació "
#~ "«Recorda la contrasenya». Aquesta clau estableix el valor per defecte "
#~ "d'aquesta casella de verificació."
#~ msgid ""
#~ "Whether the default Bluetooth adapter had set up devices associated to it"
@@ -1710,13 +1602,13 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ msgid ""
#~ "The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
#~ "powered, or if there were devices set up associated with the default "
#~ "adapter. This will be reset if the default adapter is ever seen not to have "
#~ "devices associated to it."
#~ "adapter. This will be reset if the default adapter is ever seen not to "
#~ "have devices associated to it."
#~ msgstr ""
#~ "El Shell només mostrà una entrada de menú Bluetooth si un adaptador "
#~ "Bluetooh està engegat, o si hi ha dispositius configurats associats a "
#~ "l'adaptador predeterminat. Això es reiniciarà si l'adaptador predeterminat "
#~ "té dispositius associats."
#~ "l'adaptador predeterminat. Això es reiniciarà si l'adaptador "
#~ "predeterminat té dispositius associats."
#~ msgid "Show the week date in the calendar"
#~ msgstr "Mostra el número de la setmana al calendari"
@@ -1737,8 +1629,8 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ "Keybinding to open the \"Show Applications\" view of the Activities "
#~ "Overview."
#~ msgstr ""
#~ "Vinculació per obrir la vista «Mostra les aplicacions» de les activitats de "
#~ "la vista general."
#~ "Vinculació per obrir la vista «Mostra les aplicacions» de les activitats "
#~ "de la vista general."
#~ msgid "Keybinding to open the overview"
#~ msgstr "Vinculació per obrir la vista general"
@@ -1780,9 +1672,9 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ "If true, only applications that have windows on the current workspace are "
#~ "shown in the switcher. Otherwise, all applications are included."
#~ msgstr ""
#~ "Si és «true» (cert), només les aplicacions que tinguin finestres en l'espai "
#~ "de treball actual es mostren en el canviador. En cas contrari es mostren "
#~ "totes les aplicacions."
#~ "Si és «true» (cert), només les aplicacions que tinguin finestres en "
#~ "l'espai de treball actual es mostren en el canviador. En cas contrari es "
#~ "mostren totes les aplicacions."
#~ msgid "The application icon mode."
#~ msgstr "El mode d'icona de les aplicacions."
@@ -1793,13 +1685,13 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ "only' (shows only the application icon) or 'both'."
#~ msgstr ""
#~ "Configureu com es mostren les finestres en l'intercanviador. Els valors "
#~ "possibles són: «thumbnail-only» (mostra una miniatura de la finestra), «app-"
#~ "icon-only» (mostra la icona de l'aplicació) o «both» (ambdues coses: mostra "
#~ "la miniatura de la finestra i la icona de l'aplicació)."
#~ "possibles són: «thumbnail-only» (mostra una miniatura de la finestra), "
#~ "«app-icon-only» (mostra la icona de l'aplicació) o «both» (ambdues coses: "
#~ "mostra la miniatura de la finestra i la icona de l'aplicació)."
#~ msgid ""
#~ "If true, only windows from the current workspace are shown in the switcher. "
#~ "Otherwise, all windows are included."
#~ "If true, only windows from the current workspace are shown in the "
#~ "switcher. Otherwise, all windows are included."
#~ msgstr ""
#~ "Si és «true» (cert), només les finestres de l'espai de treball actual es "
#~ "mostren en el canviador. En cas contrari, es mostren totes les finestres."
@@ -1826,8 +1718,11 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr ""
#~ "Retarda el canvi del focus, quan s'està en mode ratolí, fins que el punter "
#~ "no estigui quiet"
#~ "Retarda el canvi del focus, quan s'està en mode ratolí, fins que el "
#~ "punter no estigui quiet"
#~ msgid "Network Login"
#~ msgstr "Inici de sessió de la xarxa"
#~ msgid "Use as Internet connection"
#~ msgstr "Utilitza com a connexió a Internet"
@@ -1858,6 +1753,9 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ msgid "Airplane Mode"
#~ msgstr "Mode d'avió"
#~ msgid "On"
#~ msgstr "Activat"
#~ msgid "Show the message tray"
#~ msgstr "Mostra la safata de missatges"
@@ -1996,6 +1894,9 @@ msgstr "L'usuari ha descartat el diàleg d'autenticació"
#~ msgid "Status is set to offline"
#~ msgstr "S'ha establert l'estat a fora de línia"
#~ msgid "Encryption is not available"
#~ msgstr "L'encriptació no està disponible"
#~ msgid "Certificate is invalid"
#~ msgstr "El certificat no és vàlid"

342
po/cs.po
View File

@@ -5,15 +5,15 @@
# Andre Klapper <ak-47@gmx.net>, 2009.
# Petr Kovar <pknbe@volny.cz>, 2009, 2010, 2011, 2012, 2014, 2015.
# Adam Matoušek <adamatousek@gmail.com>, 2012, 2013.
# Marek Černocký <marek@manet.cz>, 2012, 2013, 2014, 2015, 2016, 2017.
# Marek Černocký <marek@manet.cz>, 2012, 2013, 2014, 2015, 2016.
#
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: 2017-02-13 09:27+0000\n"
"PO-Revision-Date: 2017-02-13 23:25+0100\n"
"POT-Creation-Date: 2016-08-19 21:11+0000\n"
"PO-Revision-Date: 2016-08-19 23:17+0200\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
@@ -24,30 +24,6 @@ msgstr ""
"X-Generator: Gtranslator 2.91.7\n"
"X-Project-Style: gnome\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
msgstr "Systém"
#: data/50-gnome-shell-system.xml:9
msgid "Show the notification list"
msgstr "Zobrazit seznam upozornění"
#: data/50-gnome-shell-system.xml:12
msgid "Focus the active notification"
msgstr "Zaměřovat aktivní upozornění"
#: data/50-gnome-shell-system.xml:15
msgid "Show the overview"
msgstr "Zobrazit přehled"
#: data/50-gnome-shell-system.xml:18
msgid "Show all applications"
msgstr "Zobrazit všechny aplikace"
#: data/50-gnome-shell-system.xml:21
msgid "Open the application menu"
msgstr "Otevřít nabídku aplikací"
#: data/gnome-shell-extension-prefs.desktop.in.in:4
msgid "GNOME Shell Extension Preferences"
msgstr "Předvolby rozšíření GNOME Shell"
@@ -308,8 +284,7 @@ msgstr "Se změnou zaměření v režimu myši čekat na zastavení pohybu ukaza
msgid "Network Login"
msgstr "Přihlášení do sítě"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:9
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:8
msgid "network-workgroup"
msgstr "network-workgroup"
@@ -323,23 +298,23 @@ msgstr ""
msgid "GNOME Shell Extensions"
msgstr "Rozšíření GNOME Shell"
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:145 js/ui/components/polkitAgent.js:179
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:195
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:928
#: js/ui/endSessionDialog.js:483 js/ui/extensionDownloader.js:195
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:916
msgid "Cancel"
msgstr "Zrušit"
#: js/gdm/authPrompt.js:171 js/gdm/authPrompt.js:218 js/gdm/authPrompt.js:450
#: js/gdm/authPrompt.js:169 js/gdm/authPrompt.js:216 js/gdm/authPrompt.js:448
msgid "Next"
msgstr "Další"
#: js/gdm/authPrompt.js:214 js/ui/shellMountOperation.js:403
#: js/gdm/authPrompt.js:212 js/ui/shellMountOperation.js:403
#: js/ui/unlockDialog.js:59
msgid "Unlock"
msgstr "Odemknout"
#: js/gdm/authPrompt.js:216
#: js/gdm/authPrompt.js:214
msgctxt "button"
msgid "Sign In"
msgstr "Přihlásit se"
@@ -357,7 +332,7 @@ msgstr "Nejste na seznamu?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:859
#: js/gdm/loginDialog.js:854
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(např. uživatel nebo %s)"
@@ -365,12 +340,12 @@ msgstr "(např. uživatel nebo %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:864 js/ui/components/networkAgent.js:271
#: js/gdm/loginDialog.js:859 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Uživatelské jméno: "
#: js/gdm/loginDialog.js:1201
#: js/gdm/loginDialog.js:1196
msgid "Login Window"
msgstr "Přihlašovací okno"
@@ -472,18 +447,11 @@ msgstr "%e. %B %l%M%p"
msgid "%B %d %Y, %l%M %p"
msgstr "%e. %B %Y, %l%M%p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:67
msgid "Hotspot Login"
msgstr "Přihlášení k přístupovému bodu"
#: js/portalHelper/main.js:113
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
msgstr ""
"Vaše připojení k tomuto přístupovému bodu není bezpečné. Hesla a další "
"informace, které zadáte na této stránce mohou vidět ostatní lidé v okolí."
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page
#: js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Přesměrováno na ověření přes web"
#. No support for non-modal system dialogs, so ignore the option
#. let modal = options['modal'] || true;
@@ -495,44 +463,40 @@ msgstr "Zamítnout přístup"
msgid "Grant Access"
msgstr "Schválit přístup"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:794
msgid "Frequently used applications will appear here"
msgstr "Zde se objeví často používané aplikace"
#: js/ui/appDisplay.js:926
#: js/ui/appDisplay.js:914
msgid "Frequent"
msgstr "Časté"
#: js/ui/appDisplay.js:933
#: js/ui/appDisplay.js:921
msgid "All"
msgstr "Všechny"
#: js/ui/appDisplay.js:1891
#: js/ui/appDisplay.js:1853
msgid "New Window"
msgstr "Nové okno"
#: js/ui/appDisplay.js:1905
msgid "Launch using Dedicated Graphics Card"
msgstr "Spustit pomocí vyhrazené grafické karty"
#: js/ui/appDisplay.js:1932 js/ui/dash.js:289
#: js/ui/appDisplay.js:1881 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Odstranit z oblíbených"
#: js/ui/appDisplay.js:1938
#: js/ui/appDisplay.js:1887
msgid "Add to Favorites"
msgstr "Přidat mezi oblíbené"
#: js/ui/appDisplay.js:1948
#: js/ui/appDisplay.js:1897
msgid "Show Details"
msgstr "Zobrazit podrobnosti"
#: js/ui/appFavorites.js:137
#: js/ui/appFavorites.js:134
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s byl přidán mezi oblíbené."
#: js/ui/appFavorites.js:171
#: js/ui/appFavorites.js:168
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s byl odstraněn z oblíbených."
@@ -681,7 +645,7 @@ msgstr "Externí svazek připojen"
msgid "External drive disconnected"
msgstr "Externí svazek odpojen"
#: js/ui/components/autorunManager.js:356
#: js/ui/components/autorunManager.js:355
#, javascript-format
msgid "Open with %s"
msgstr "Otevřít pomocí %s"
@@ -694,8 +658,8 @@ msgstr "Heslo:"
msgid "Type again:"
msgstr "Napište znovu:"
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:272
#: js/ui/status/network.js:355 js/ui/status/network.js:931
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:269
#: js/ui/status/network.js:352 js/ui/status/network.js:919
msgid "Connect"
msgstr "Připojit"
@@ -723,11 +687,11 @@ msgstr "Heslo soukromého klíče: "
msgid "Service: "
msgstr "Služba: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:666
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "K bezdrátové síti je vyžadováno ověření"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -736,7 +700,7 @@ msgstr ""
"Pro přístup k bezdrátové síti „%s“ jsou vyžadována hesla nebo šifrovací "
"klíče."
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:670
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Ověření připojení po drátu 802.1X"
@@ -744,15 +708,15 @@ msgstr "Ověření připojení po drátu 802.1X"
msgid "Network name: "
msgstr "Název sítě: "
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "Ověření DSL"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "Požadován kód PIN"
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:681
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Pro mobilní širokopásmové zařízení je vyžadován kód PIN"
@@ -760,17 +724,17 @@ msgstr "Pro mobilní širokopásmové zařízení je vyžadován kód PIN"
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Heslo k mobilní širokopásmové síti"
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:671
#: js/ui/components/networkAgent.js:675 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:667 js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Pro připojení k „%s“ je vyžadováno heslo."
#: js/ui/components/networkAgent.js:655 js/ui/status/network.js:1736
#: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1658
msgid "Network Manager"
msgstr "Network Manager"
@@ -796,12 +760,12 @@ msgstr "Ověření bohužel nebylo úspěšné. Zkuste to prosím znovu."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:765
#: js/ui/components/telepathyClient.js:760
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s je teď znám jako %s"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:178
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:155
msgid "Windows"
msgstr "Okna"
@@ -985,13 +949,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:670
#: js/ui/endSessionDialog.js:671
#, javascript-format
msgid "%s (remote)"
msgstr "%s (vzdálený)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:673
#: js/ui/endSessionDialog.js:674
#, javascript-format
msgid "%s (console)"
msgstr "%s (konzola)"
@@ -1090,8 +1054,6 @@ msgstr "Multimédia"
msgid "Undo"
msgstr "Zpět"
#. Translators: This is the main view to select
#. activities. See also note for "Activities" string.
#: js/ui/overview.js:113
msgid "Overview"
msgstr "Přehled"
@@ -1104,50 +1066,6 @@ msgstr "Přehled"
msgid "Type to search…"
msgstr "vyhledávejte psaním…"
#: js/ui/padOsd.js:37
msgid "New shortcut…"
msgstr "Nová klávesová zkratka…"
#: js/ui/padOsd.js:86
msgid "Application defined"
msgstr "Definováno aplikací"
#: js/ui/padOsd.js:87
msgid "Show on-screen help"
msgstr "Zobrazit nápovědu na obrazovce"
#: js/ui/padOsd.js:88
msgid "Switch monitor"
msgstr "Přepnout monitor"
#: js/ui/padOsd.js:89
msgid "Assign keystroke"
msgstr "Přířadit klávesu"
#: js/ui/padOsd.js:143
msgid "Done"
msgstr "Hotovo"
#: js/ui/padOsd.js:597
msgid "Edit…"
msgstr "Upravit…"
#: js/ui/padOsd.js:610 js/ui/padOsd.js:665
msgid "None"
msgstr "Źádná"
#: js/ui/padOsd.js:648
msgid "Press a button to configure"
msgstr "Zmáčkněte tlačítko pro nastavení"
#: js/ui/padOsd.js:649
msgid "Press Esc to exit"
msgstr "Zmáčknutím Esc ukončíte"
#: js/ui/padOsd.js:652
msgid "Press any key to exit"
msgstr "Zmáčknutím klávesy ukončíte"
#: js/ui/panel.js:358
msgid "Quit"
msgstr "Ukončit"
@@ -1184,10 +1102,6 @@ msgstr "Zadejte příkaz:"
msgid "Close"
msgstr "Zavřít"
#: js/ui/runDialog.js:277
msgid "Restart is not available on Wayland"
msgstr "Restart není na Waylandu k dispozici"
#: js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "Restartuje se…"
@@ -1218,7 +1132,7 @@ msgstr[2] "%d nových upozornění"
msgid "Lock"
msgstr "Uzamknout"
#: js/ui/screenShield.js:707
#: js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME potřebuje uzamknout obrazovku"
@@ -1229,11 +1143,11 @@ msgstr "GNOME potřebuje uzamknout obrazovku"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:828 js/ui/screenShield.js:1295
#: js/ui/screenShield.js:825 js/ui/screenShield.js:1291
msgid "Unable to lock"
msgstr "Nelze uzamknout obrazovku"
#: js/ui/screenShield.js:829 js/ui/screenShield.js:1296
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1292
msgid "Lock was blocked by an application"
msgstr "Zamknutí bylo zablokováno některou z aplikací"
@@ -1317,7 +1231,7 @@ msgstr "Styl velkého textu"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:624
msgid "Bluetooth Settings"
msgstr "Nastavení Bluetooth"
@@ -1335,16 +1249,16 @@ msgid "Off"
msgstr "Vypnuto"
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "Zapnuto"
msgid "Not In Use"
msgstr "Nepoužívá se"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1291
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Zapnout"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:356 js/ui/status/network.js:1291
#: js/ui/status/network.js:1406 js/ui/status/rfkill.js:90
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:178
#: js/ui/status/network.js:353 js/ui/status/network.js:1279
#: js/ui/status/network.js:1394 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Vypnout"
@@ -1393,18 +1307,18 @@ msgstr ""
"Přístup ke službám pro určování polohy lze kdykoliv změnit v nastavení "
"soukromí."
#: js/ui/status/network.js:104
#: js/ui/status/network.js:101
msgid "<unknown>"
msgstr "<neznámé>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454 js/ui/status/network.js:1320
#: js/ui/status/network.js:451 js/ui/status/network.js:1308
#, javascript-format
msgid "%s Off"
msgstr "%s je vypnuto"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:457
#: js/ui/status/network.js:454
#, javascript-format
msgid "%s Connected"
msgstr "%s je připojeno"
@@ -1412,193 +1326,168 @@ msgstr "%s je 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);
#. %s is a network identifier
#: js/ui/status/network.js:462
#: js/ui/status/network.js:459
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s není spravováno"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s se odpojuje"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:472 js/ui/status/network.js:1312
#: js/ui/status/network.js:469 js/ui/status/network.js:1300
#, javascript-format
msgid "%s Connecting"
msgstr "%s se připojuje"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:475
#: js/ui/status/network.js:472
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s požaduje ověření"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:483
#: js/ui/status/network.js:480
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Schází firmware pro %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:487
#: js/ui/status/network.js:484
#, javascript-format
msgid "%s Unavailable"
msgstr "%s je nedostupné"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:490
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s selhalo připojení"
#: js/ui/status/network.js:506
#: js/ui/status/network.js:503
msgid "Wired Settings"
msgstr "Nastavení připojení po drátu"
#: js/ui/status/network.js:548
#: js/ui/status/network.js:545
msgid "Mobile Broadband Settings"
msgstr "Nastavení mobilní širokopásmové sítě"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:591 js/ui/status/network.js:1317
#: js/ui/status/network.js:588 js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s je hardwarově zakázáno"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:595
#: js/ui/status/network.js:592
#, javascript-format
msgid "%s Disabled"
msgstr "%s je zakázáno"
#: js/ui/status/network.js:635
#: js/ui/status/network.js:632
msgid "Connect to Internet"
msgstr "Připojit k Internetu"
#: js/ui/status/network.js:825
#: js/ui/status/network.js:813
msgid "Airplane Mode is On"
msgstr "Režim „letadlo“ je zapnutý"
#: js/ui/status/network.js:826
#: js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Když je zapnutý režim „letadlo“, je WiFi zakázána."
#: js/ui/status/network.js:827
#: js/ui/status/network.js:815
msgid "Turn Off Airplane Mode"
msgstr "Vypnout režim „letadlo“"
#: js/ui/status/network.js:836
#: js/ui/status/network.js:824
msgid "Wi-Fi is Off"
msgstr "WiFi je vypnutá"
#: js/ui/status/network.js:837
#: js/ui/status/network.js:825
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Abyste se připojili k síti, je zapotřebí zapnout WiFi."
#: js/ui/status/network.js:838
#: js/ui/status/network.js:826
msgid "Turn On Wi-Fi"
msgstr "Zapnout WiFi"
#: js/ui/status/network.js:863
#: js/ui/status/network.js:851
msgid "Wi-Fi Networks"
msgstr "Sítě WiFi"
#: js/ui/status/network.js:865
#: js/ui/status/network.js:853
msgid "Select a network"
msgstr "Vyberte síť"
#: js/ui/status/network.js:895
#: js/ui/status/network.js:883
msgid "No Networks"
msgstr "Žádné sítě"
#: js/ui/status/network.js:916 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "K vypnutí použijte fyzický vypínač"
#: js/ui/status/network.js:1183
#: js/ui/status/network.js:1171
msgid "Select Network"
msgstr "Vybrat síť"
#: js/ui/status/network.js:1189
#: js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "Nastavení WiFi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1308
#: js/ui/status/network.js:1296
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s je aktivní přístupový bod"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1323
#: js/ui/status/network.js:1311
#, javascript-format
msgid "%s Not Connected"
msgstr "%s není připojeno"
#: js/ui/status/network.js:1423
#: js/ui/status/network.js:1411
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:1426
#: js/ui/status/network.js:1414
msgid "authentication required"
msgstr "je požadováno ověření"
#: js/ui/status/network.js:1428
#: js/ui/status/network.js:1416
msgid "connection failed"
msgstr "připojení selhalo"
#: js/ui/status/network.js:1494 js/ui/status/network.js:1589
#: js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1482 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Nastavení sítě"
#: js/ui/status/network.js:1496
#: js/ui/status/network.js:1484
msgid "VPN Settings"
msgstr "Nastavení VPN"
#: js/ui/status/network.js:1515
#: js/ui/status/network.js:1503
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1525
#: js/ui/status/network.js:1513
msgid "VPN Off"
msgstr "VPN je vypnuta"
#: js/ui/status/network.js:1620
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s drátové připojení"
msgstr[1] "%s drátová připojení"
msgstr[2] "%s drátových připojení"
#: js/ui/status/network.js:1624
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s bezdrátové připojení"
msgstr[1] "%s bezdrátová připojení"
msgstr[2] "%s bezdrátových připojení"
#: js/ui/status/network.js:1628
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s modemové připojení"
msgstr[1] "%s modemová připojení"
msgstr[2] "%s modemových připojení"
#: js/ui/status/network.js:1775
#: js/ui/status/network.js:1697
msgid "Connection failed"
msgstr "Připojení selhalo"
#: js/ui/status/network.js:1776
#: js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "Aktivace síťového připojení selhala"
@@ -1680,11 +1569,11 @@ msgstr "Přihlásit se jako jiný uživatel"
msgid "Unlock Window"
msgstr "Odemykací okno"
#: js/ui/viewSelector.js:182
#: js/ui/viewSelector.js:159
msgid "Applications"
msgstr "Aplikace"
#: js/ui/viewSelector.js:186
#: js/ui/viewSelector.js:163
msgid "Search"
msgstr "Hledat"
@@ -1693,22 +1582,22 @@ msgstr "Hledat"
msgid "“%s” is ready"
msgstr "Připraveno „%s“"
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:63
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:102
#: js/ui/windowManager.js:82
msgid "Revert Settings"
msgstr "Obnovit původní"
#: js/ui/windowManager.js:105
#: js/ui/windowManager.js:85
msgid "Keep Changes"
msgstr "Zachovat"
#: js/ui/windowManager.js:123
#: js/ui/windowManager.js:103
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -1718,7 +1607,7 @@ msgstr[2] "Nastavení se obnoví na původní za %d sekund"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:678
#: js/ui/windowManager.js:658
#, javascript-format
msgid "%d x %d"
msgstr "%d×%d"
@@ -1791,8 +1680,7 @@ msgstr "Přesunout o monitor doprava"
msgid "Evolution Calendar"
msgstr "Kalendář Evolution"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: src/calendar-server/evolution-calendar.desktop.in:6
#: src/calendar-server/evolution-calendar.desktop.in:5
msgid "evolution"
msgstr "evolution"
@@ -1857,3 +1745,33 @@ msgstr "Heslo nemůže být prázdné."
#: src/shell-polkit-authentication-agent.c:353
msgid "Authentication dialog was dismissed by the user"
msgstr "Dialogové okno ověření bylo uživatelem zrušeno"
#~ msgid "System"
#~ msgstr "Systém"
#~ msgid "Show the notification list"
#~ msgstr "Zobrazit seznam upozornění"
#~ msgid "Focus the active notification"
#~ msgstr "Zaměřovat aktivní upozornění"
#~ msgid "Show the overview"
#~ msgstr "Zobrazit přehled"
#~ msgid "Show all applications"
#~ msgstr "Zobrazit všechny aplikace"
#~ msgid "Open the application menu"
#~ msgstr "Otevřít nabídku aplikací"
#~ msgid "Show the week date in the calendar"
#~ msgstr "Zobrazovat v kalendáři čísla týdnů"
#~ msgid "If true, display the ISO week date in the calendar."
#~ msgstr "Je-li zapnuto, zobrazovat v kalendáři čísla týdnů dle ISO."
#~ msgid "Use as Internet connection"
#~ msgstr "Použít jako připojení k Internetu"
#~ msgid "%s is requesting access to your location."
#~ msgstr "Aplikace %s žádá o přístup k informacím o vaší poloze."

505
po/da.po

File diff suppressed because it is too large Load Diff

305
po/de.po
View File

@@ -22,40 +22,16 @@ 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: 2016-11-25 22:24+0000\n"
"PO-Revision-Date: 2016-11-26 11:56+0100\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"POT-Creation-Date: 2016-08-20 08:27+0000\n"
"PO-Revision-Date: 2016-08-21 11:38+0200\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.11\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
msgstr "System"
#: data/50-gnome-shell-system.xml:9
msgid "Show the notification list"
msgstr "Benachrichtigungsliste anzeigen"
#: data/50-gnome-shell-system.xml:12
msgid "Focus the active notification"
msgstr "Auf aktive Benachrichtigungen ausrichten"
#: data/50-gnome-shell-system.xml:15
msgid "Show the overview"
msgstr "Die Übersicht anzeigen"
#: data/50-gnome-shell-system.xml:18
msgid "Show all applications"
msgstr "Alle Anwendungen anzeigen"
#: data/50-gnome-shell-system.xml:21
msgid "Open the application menu"
msgstr "Das Anwendungsmenü öffnen"
"X-Generator: Poedit 1.8.8\n"
#: data/gnome-shell-extension-prefs.desktop.in.in:4
msgid "GNOME Shell Extension Preferences"
@@ -343,23 +319,23 @@ msgstr "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:"
msgid "GNOME Shell Extensions"
msgstr "GNOME-Shell-Erweiterungen"
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:145 js/ui/components/polkitAgent.js:179
#: js/ui/endSessionDialog.js:483 js/ui/extensionDownloader.js:195
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:928
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:916
msgid "Cancel"
msgstr "Abbrechen"
#: js/gdm/authPrompt.js:171 js/gdm/authPrompt.js:218 js/gdm/authPrompt.js:450
#: js/gdm/authPrompt.js:169 js/gdm/authPrompt.js:216 js/gdm/authPrompt.js:448
msgid "Next"
msgstr "Weiter"
#: js/gdm/authPrompt.js:214 js/ui/shellMountOperation.js:403
#: js/gdm/authPrompt.js:212 js/ui/shellMountOperation.js:403
#: js/ui/unlockDialog.js:59
msgid "Unlock"
msgstr "Entsperren"
#: js/gdm/authPrompt.js:216
#: js/gdm/authPrompt.js:214
msgctxt "button"
msgid "Sign In"
msgstr "Anmelden"
@@ -377,7 +353,7 @@ msgstr "Nicht aufgeführt?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:859
#: js/gdm/loginDialog.js:854
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(z.B. Benutzer oder %s)"
@@ -385,12 +361,12 @@ msgstr "(z.B. Benutzer oder %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:864 js/ui/components/networkAgent.js:271
#: js/gdm/loginDialog.js:859 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Benutzername:"
#: js/gdm/loginDialog.js:1201
#: js/gdm/loginDialog.js:1196
msgid "Login Window"
msgstr "Anmeldefenster"
@@ -495,7 +471,7 @@ msgstr "%e. %B %Y, %H:%M"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page
#: js/portalHelper/main.js:87
#: js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Umleitung zu einer Internet-Anmeldung"
@@ -509,35 +485,31 @@ msgstr "Zugriff verhindern"
msgid "Grant Access"
msgstr "Zugriff gewähren"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:794
msgid "Frequently used applications will appear here"
msgstr "Häufig genutzte Anwendungen erscheinen hier"
#: js/ui/appDisplay.js:926
#: js/ui/appDisplay.js:914
msgid "Frequent"
msgstr "Häufig"
#: js/ui/appDisplay.js:933
#: js/ui/appDisplay.js:921
msgid "All"
msgstr "Alle"
#: js/ui/appDisplay.js:1891
#: js/ui/appDisplay.js:1853
msgid "New Window"
msgstr "Neues Fenster"
#: js/ui/appDisplay.js:1905
msgid "Launch using Dedicated Graphics Card"
msgstr "Mit dedizierter Grafikkarte starten"
#: js/ui/appDisplay.js:1932 js/ui/dash.js:289
#: js/ui/appDisplay.js:1881 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
#: js/ui/appDisplay.js:1938
#: js/ui/appDisplay.js:1887
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
#: js/ui/appDisplay.js:1948
#: js/ui/appDisplay.js:1897
msgid "Show Details"
msgstr "Details anzeigen"
@@ -695,7 +667,7 @@ msgstr "Externes Laufwerk verbunden"
msgid "External drive disconnected"
msgstr "Externes Laufwerk getrennt"
#: js/ui/components/autorunManager.js:356
#: js/ui/components/autorunManager.js:355
#, javascript-format
msgid "Open with %s"
msgstr "Öffnen mit %s"
@@ -708,8 +680,8 @@ msgstr "Passwort:"
msgid "Type again:"
msgstr "Erneut eingeben:"
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:272
#: js/ui/status/network.js:355 js/ui/status/network.js:931
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:269
#: js/ui/status/network.js:352 js/ui/status/network.js:919
msgid "Connect"
msgstr "Verbinden"
@@ -737,11 +709,11 @@ msgstr "Passwort für geheimen Schlüssel:"
msgid "Service: "
msgstr "Dienst:"
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:666
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "Anmeldung für Drahtlosnetzwerk wird benötigt"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -750,7 +722,7 @@ msgstr ""
"Passwörter oder Schlüssel sind erforderlich, um auf das Drahtlosnetzwerk "
"»%s« zuzugreifen."
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:670
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Kabelgebundene 802.1X-Anmeldung"
@@ -758,15 +730,15 @@ msgstr "Kabelgebundene 802.1X-Anmeldung"
msgid "Network name: "
msgstr "Netzwerkname:"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "DSL-Anmeldung"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "PIN-Code ist erforderlich"
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:681
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt."
@@ -774,17 +746,17 @@ msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt."
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Passwort der mobilen Breitbandverbindung"
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:671
#: js/ui/components/networkAgent.js:675 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:667 js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
#: js/ui/components/networkAgent.js:655 js/ui/status/network.js:1734
#: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1658
msgid "Network Manager"
msgstr "Netzwerk-Verwaltung"
@@ -811,12 +783,12 @@ msgstr ""
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:765
#: js/ui/components/telepathyClient.js:760
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s heißt jetzt %s"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:178
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:155
msgid "Windows"
msgstr "Fenster"
@@ -1109,50 +1081,6 @@ msgstr "Übersicht"
msgid "Type to search…"
msgstr "Suchbegriff eingeben …"
#: js/ui/padOsd.js:37
msgid "New shortcut…"
msgstr "Neue Tastenkombination …"
#: js/ui/padOsd.js:86
msgid "Application defined"
msgstr "Anwendung festgelegt"
#: js/ui/padOsd.js:87
msgid "Show on-screen help"
msgstr "Bildschirmhilfe anzeigen"
#: js/ui/padOsd.js:88
msgid "Switch monitor"
msgstr "Bildschirm wechseln"
#: js/ui/padOsd.js:89
msgid "Assign keystroke"
msgstr "Tastenkombination zuweisen"
#: js/ui/padOsd.js:143
msgid "Done"
msgstr "Erledigt"
#: js/ui/padOsd.js:597
msgid "Edit…"
msgstr "Bearbeiten …"
#: js/ui/padOsd.js:610 js/ui/padOsd.js:665
msgid "None"
msgstr "Keine"
#: js/ui/padOsd.js:648
msgid "Press a button to configure"
msgstr "Klicken Sie auf einen Knopf zum Einrichten"
#: js/ui/padOsd.js:649
msgid "Press Esc to exit"
msgstr "Drücken Sie Esc zum Abbrechen."
#: js/ui/padOsd.js:652
msgid "Press any key to exit"
msgstr "Drücken Sie eine beliebige Taste zum Beenden"
#: js/ui/panel.js:358
msgid "Quit"
msgstr "Beenden"
@@ -1189,10 +1117,6 @@ msgstr "Bitte geben Sie einen Befehl ein"
msgid "Close"
msgstr "Schließen"
#: js/ui/runDialog.js:277
msgid "Restart is not available on Wayland"
msgstr "Neu Starten ist unter Wayland nicht verfügbar"
#: js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "Neustart …"
@@ -1224,7 +1148,7 @@ msgstr[1] "%d neue Benachrichtigungen"
msgid "Lock"
msgstr "Sperren"
#: js/ui/screenShield.js:707
#: js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME muss den Bildschirm sperren"
@@ -1235,11 +1159,11 @@ msgstr "GNOME muss den Bildschirm sperren"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:828 js/ui/screenShield.js:1295
#: js/ui/screenShield.js:825 js/ui/screenShield.js:1291
msgid "Unable to lock"
msgstr "Sperrung fehlgeschlagen"
#: js/ui/screenShield.js:829 js/ui/screenShield.js:1296
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1292
msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert"
@@ -1323,7 +1247,7 @@ msgstr "Große Schrift"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:624
msgid "Bluetooth Settings"
msgstr "Bluetooth-Einstellungen"
@@ -1340,16 +1264,16 @@ msgid "Off"
msgstr "Aus"
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "An"
msgid "Not In Use"
msgstr "Nicht in Verwendung"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1291
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Einschalten"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:356 js/ui/status/network.js:1291
#: js/ui/status/network.js:1406 js/ui/status/rfkill.js:90
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:178
#: js/ui/status/network.js:353 js/ui/status/network.js:1279
#: js/ui/status/network.js:1394 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Ausschalten"
@@ -1398,18 +1322,18 @@ msgstr ""
"Standortzugriff kann in den Einstellungen zur Privatsphäre jederzeit "
"geändert werden."
#: js/ui/status/network.js:104
#: js/ui/status/network.js:101
msgid "<unknown>"
msgstr "<Unbekannt>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454 js/ui/status/network.js:1320
#: js/ui/status/network.js:451 js/ui/status/network.js:1308
#, javascript-format
msgid "%s Off"
msgstr "%s ausgeschaltet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:457
#: js/ui/status/network.js:454
#, javascript-format
msgid "%s Connected"
msgstr "%s verbunden"
@@ -1417,93 +1341,93 @@ msgstr "%s verbunden"
#. 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);
#. %s is a network identifier
#: js/ui/status/network.js:462
#: js/ui/status/network.js:459
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s nicht verwaltet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s wird getrennt"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:472 js/ui/status/network.js:1312
#: js/ui/status/network.js:469 js/ui/status/network.js:1300
#, javascript-format
msgid "%s Connecting"
msgstr "%s wird verbunden"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:475
#: js/ui/status/network.js:472
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s erfordert eine Anmeldung"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:483
#: js/ui/status/network.js:480
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Firmware fehlt für %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:487
#: js/ui/status/network.js:484
#, javascript-format
msgid "%s Unavailable"
msgstr "%s nicht verfügbar"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:490
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Connection Failed"
msgstr "Verbindung von %s gescheitert"
#: js/ui/status/network.js:506
#: js/ui/status/network.js:503
msgid "Wired Settings"
msgstr "LAN-Einstellungen"
#: js/ui/status/network.js:548
#: js/ui/status/network.js:545
msgid "Mobile Broadband Settings"
msgstr "Einstellungen der mobilen Breitbandverbindung"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:591 js/ui/status/network.js:1317
#: js/ui/status/network.js:588 js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s-Hardware ausgeschaltet"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:595
#: js/ui/status/network.js:592
#, javascript-format
msgid "%s Disabled"
msgstr "%s ausgeschaltet"
#: js/ui/status/network.js:635
#: js/ui/status/network.js:632
msgid "Connect to Internet"
msgstr "Mit dem Internet verbinden"
#: js/ui/status/network.js:825
#: js/ui/status/network.js:813
msgid "Airplane Mode is On"
msgstr "Flugmodus ist eingeschaltet"
#: js/ui/status/network.js:826
#: js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr ""
"Drahtlosnetzwerk ist ausgeschaltet, wenn sich Ihr Gerät im Flugmodus "
"befindet."
#: js/ui/status/network.js:827
#: js/ui/status/network.js:815
msgid "Turn Off Airplane Mode"
msgstr "Flugmodus ausschalten"
#: js/ui/status/network.js:836
#: js/ui/status/network.js:824
msgid "Wi-Fi is Off"
msgstr "Drahtlosnetzwerk ist ausgeschaltet"
#: js/ui/status/network.js:837
#: js/ui/status/network.js:825
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr ""
"Drahtlosnetzwerk muss eingeschaltet werden, um eine Netzwerkverbindung "
@@ -1512,102 +1436,80 @@ msgstr ""
# Wi-Fi einschalten
# oder
# Schalten sie Wi-Fi ein
#: js/ui/status/network.js:838
#: js/ui/status/network.js:826
msgid "Turn On Wi-Fi"
msgstr "Drahtlosnetzwerk einschalten"
#: js/ui/status/network.js:863
#: js/ui/status/network.js:851
msgid "Wi-Fi Networks"
msgstr "Drahtlosnetzwerke"
#: js/ui/status/network.js:865
#: js/ui/status/network.js:853
msgid "Select a network"
msgstr "Wählen Sie ein Netzwerk"
#: js/ui/status/network.js:895
#: js/ui/status/network.js:883
msgid "No Networks"
msgstr "Keine Netzwerke"
#: js/ui/status/network.js:916 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Benutzen Sie zum Ausschalten den Gehäuseschalter"
#: js/ui/status/network.js:1183
#: js/ui/status/network.js:1171
msgid "Select Network"
msgstr "Wählen Sie ein Netzwerk aus"
#: js/ui/status/network.js:1189
#: js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "Drahtlosnetzwerk-Einstellungen"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1308
#: js/ui/status/network.js:1296
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s eingeschaltet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1323
#: js/ui/status/network.js:1311
#, javascript-format
msgid "%s Not Connected"
msgstr "%s nicht verbunden"
#: js/ui/status/network.js:1423
#: js/ui/status/network.js:1411
msgid "connecting..."
msgstr "Verbindungsaufbau …"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1426
#: js/ui/status/network.js:1414
msgid "authentication required"
msgstr "Anmeldung erforderlich"
#: js/ui/status/network.js:1428
#: js/ui/status/network.js:1416
msgid "connection failed"
msgstr "Verbindung gescheitert"
#: js/ui/status/network.js:1494 js/ui/status/network.js:1587
#: js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1482 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Netzwerkeinstellungen"
#: js/ui/status/network.js:1496
#: js/ui/status/network.js:1484
msgid "VPN Settings"
msgstr "VPN-Einstellungen"
#: js/ui/status/network.js:1515
#: js/ui/status/network.js:1503
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1525
#: js/ui/status/network.js:1513
msgid "VPN Off"
msgstr "VPN ausgeschaltet"
#: js/ui/status/network.js:1618
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Kabelverbindung"
msgstr[1] "%s Kabelverbindungen"
#: js/ui/status/network.js:1622
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Funknetzwerkverbindung"
msgstr[1] "%s Funknetzwerkverbindungen"
#: js/ui/status/network.js:1626
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s Modem-Verbindung"
msgstr[1] "%s Modem-Verbindungen"
#: js/ui/status/network.js:1773
#: js/ui/status/network.js:1697
msgid "Connection failed"
msgstr "Verbindung gescheitert"
#: js/ui/status/network.js:1774
#: js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
@@ -1689,11 +1591,11 @@ msgstr "Als anderer Benutzer anmelden"
msgid "Unlock Window"
msgstr "Fenster entsperren"
#: js/ui/viewSelector.js:182
#: js/ui/viewSelector.js:159
msgid "Applications"
msgstr "Anwendungen"
#: js/ui/viewSelector.js:186
#: js/ui/viewSelector.js:163
msgid "Search"
msgstr "Suchen"
@@ -1702,22 +1604,22 @@ msgstr "Suchen"
msgid "“%s” is ready"
msgstr "»%s« ist bereit"
#: js/ui/windowManager.js:64
#: js/ui/windowManager.js:63
msgid "Do you want to keep these display settings?"
msgstr "Wollen Sie diese Anzeigeeinstellungen beibehalten?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:82
msgid "Revert Settings"
msgstr "Zurücksetzen"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
msgid "Keep Changes"
msgstr "Beibehalten"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:103
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -1727,7 +1629,7 @@ msgstr[1] ""
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:658
#, javascript-format
msgid "%d x %d"
msgstr "%d x %d"
@@ -1827,20 +1729,20 @@ msgstr[1] "%u Eingänge"
msgid "System Sounds"
msgstr "Systemklänge"
#: src/main.c:380
#: src/main.c:381
msgid "Print version"
msgstr "Version ausgeben"
#: src/main.c:386
#: src/main.c:387
msgid "Mode used by GDM for login screen"
msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
#: src/main.c:392
#: src/main.c:393
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr ""
"Einen spezifischen Modus nutzen, wie z.B. »gdm« für den Anmeldebildschirm"
#: src/main.c:398
#: src/main.c:399
msgid "List possible modes"
msgstr "Die möglichen Modi auflisten"
@@ -1866,8 +1768,23 @@ msgstr "Es muss ein Passwort angegeben werden"
msgid "Authentication dialog was dismissed by the user"
msgstr "Der Dialog zur Anmeldung wurde vom Benutzer geschlossen"
#~ msgid "Not In Use"
#~ msgstr "Nicht in Verwendung"
#~ msgid "System"
#~ msgstr "System"
#~ msgid "Show the notification list"
#~ msgstr "Benachrichtigungsliste anzeigen"
#~ msgid "Focus the active notification"
#~ msgstr "Auf aktive Benachrichtigungen ausrichten"
#~ msgid "Show the overview"
#~ msgstr "Die Übersicht anzeigen"
#~ msgid "Show all applications"
#~ msgstr "Alle Anwendungen anzeigen"
#~ msgid "Open the application menu"
#~ msgstr "Das Anwendungsmenü öffnen"
#~ msgid "Show the week date in the calendar"
#~ msgstr "Kalenderwoche im Kalender anzeigen"

533
po/es.po

File diff suppressed because it is too large Load Diff

529
po/eu.po

File diff suppressed because it is too large Load Diff

View File

@@ -1674,7 +1674,7 @@ msgstr "تقویم اوولوشن"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: src/calendar-server/evolution-calendar.desktop.in:6
msgid "evolution"
msgstr "evolution"
msgstr "اوولوشن"
#. translators:
#. * The number of sound outputs on a particular device

529
po/fi.po

File diff suppressed because it is too large Load Diff

130
po/fr.po
View File

@@ -4,6 +4,7 @@
#
# Mathieu Bridon <bochecha@fedoraproject.org>, 2009.
# Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>, 2010.
# Claude Paroz <claude@2xlibre.net>, 2010-2011.
# Bruno Brouard <annoa.b@gmail.com>, 2011-2012.
# Cyril Arnaud <cyril dot arnaud at gmail dot com>, 2011.
# Luc Guillemin <luc.guillemin@gmail.com>, 2011.
@@ -13,24 +14,21 @@
# Mathieu Stumpf <psychoslave@culture-libre.org>, 2013.
# Alain Lojewski <allomervan@gmail.com>, 2014.
# Erwan Georget <egeorget@opmbx.org>, 2016.
# Claude Paroz <claude@2xlibre.net>, 2010-2011, 2016.
# Charles Monzat <superboa@hotmail.fr>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master fr\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-11-17 23:00+0000\n"
"PO-Revision-Date: 2017-01-22 11:01+0100\n"
"Last-Translator: Charles Monzat <superboa@hotmail.fr>\n"
"POT-Creation-Date: 2016-09-13 09:48+0000\n"
"PO-Revision-Date: 2016-09-13 12:19+0200\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"Language-Team: français <gnomefr@traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.8.11\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@@ -356,7 +354,7 @@ msgstr "Extensions GNOME Shell"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:145 js/ui/components/polkitAgent.js:179
#: js/ui/endSessionDialog.js:483 js/ui/extensionDownloader.js:195
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:926
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:916
msgid "Cancel"
msgstr "Annuler"
@@ -728,8 +726,8 @@ msgstr "Mot de passe :"
msgid "Type again:"
msgstr "Saisissez à nouveau :"
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:270
#: js/ui/status/network.js:353 js/ui/status/network.js:929
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:269
#: js/ui/status/network.js:352 js/ui/status/network.js:919
msgid "Connect"
msgstr "Se connecter"
@@ -757,11 +755,11 @@ msgstr "Mot de passe de la clé privée : "
msgid "Service: "
msgstr "Service : "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:666
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "L'authentification est requise par le réseau sans fil"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -770,7 +768,7 @@ msgstr ""
"Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau "
"sans fil « %s »"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:670
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Authentification filaire 802.1X"
@@ -778,15 +776,15 @@ msgstr "Authentification filaire 802.1X"
msgid "Network name: "
msgstr "Nom du réseau : "
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "Authentification DSL"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "Code PIN requis"
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:681
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Un code PIN est nécessaire pour les connexions mobiles"
@@ -794,17 +792,17 @@ msgstr "Un code PIN est nécessaire pour les connexions mobiles"
msgid "PIN: "
msgstr "PIN : "
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Mot de passe de la connexion mobile"
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:671
#: js/ui/components/networkAgent.js:675 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:667 js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Un mot de passe est requis pour se connecter à « %s »."
#: js/ui/components/networkAgent.js:655 js/ui/status/network.js:1670
#: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1658
msgid "Network Manager"
msgstr "Gestionnaire de réseau"
@@ -1174,10 +1172,6 @@ msgstr "Saisissez une commande"
msgid "Close"
msgstr "Fermer"
#: js/ui/runDialog.js:277
msgid "Restart is not available on Wayland"
msgstr "Le redémarrage n'est pas disponible sur Wayland"
#: js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "Redémarrage en cours…"
@@ -1217,11 +1211,11 @@ msgstr "GNOME a besoin de verrouiller l'écran"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:825 js/ui/screenShield.js:1292
#: js/ui/screenShield.js:825 js/ui/screenShield.js:1291
msgid "Unable to lock"
msgstr "Impossible de verrouiller"
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1293
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1292
msgid "Lock was blocked by an application"
msgstr "Le verrouillage a été bloqué par une application"
@@ -1305,7 +1299,7 @@ msgstr "Grand texte"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:625
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:624
msgid "Bluetooth Settings"
msgstr "Paramètres Bluetooth"
@@ -1325,13 +1319,13 @@ msgstr "Éteint"
msgid "Not In Use"
msgstr "Pas en cours d'utilisation"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1289
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Activer"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:179
#: js/ui/status/network.js:354 js/ui/status/network.js:1289
#: js/ui/status/network.js:1404 js/ui/status/rfkill.js:90
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:178
#: js/ui/status/network.js:353 js/ui/status/network.js:1279
#: js/ui/status/network.js:1394 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Éteindre"
@@ -1380,18 +1374,18 @@ msgstr ""
"Les règles d'accès à la localisation peuvent à tout moment être modifiées "
"dans les paramètres de confidentialité."
#: js/ui/status/network.js:102
#: js/ui/status/network.js:101
msgid "<unknown>"
msgstr "<inconnu>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:452 js/ui/status/network.js:1318
#: js/ui/status/network.js:451 js/ui/status/network.js:1308
#, javascript-format
msgid "%s Off"
msgstr "%s éteint"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:455
#: js/ui/status/network.js:454
#, javascript-format
msgid "%s Connected"
msgstr "%s connecté"
@@ -1399,168 +1393,168 @@ msgstr "%s connecté"
#. 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);
#. %s is a network identifier
#: js/ui/status/network.js:460
#: js/ui/status/network.js:459
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s non géré"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:463
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Disconnecting"
msgstr "Déconnexion de %s en cours"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:470 js/ui/status/network.js:1310
#: js/ui/status/network.js:469 js/ui/status/network.js:1300
#, javascript-format
msgid "%s Connecting"
msgstr "Connexion de %s en cours"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:473
#: js/ui/status/network.js:472
#, javascript-format
msgid "%s Requires Authentication"
msgstr "Authentification nécessaire pour %s"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:481
#: js/ui/status/network.js:480
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Micrologiciel manquant pour %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:485
#: js/ui/status/network.js:484
#, javascript-format
msgid "%s Unavailable"
msgstr "%s non disponible"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:488
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Connection Failed"
msgstr "Échec de connexion à %s"
#: js/ui/status/network.js:504
#: js/ui/status/network.js:503
msgid "Wired Settings"
msgstr "Paramètres filaire"
#: js/ui/status/network.js:546
#: js/ui/status/network.js:545
msgid "Mobile Broadband Settings"
msgstr "Paramètres connexion mobile"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:589 js/ui/status/network.js:1315
#: js/ui/status/network.js:588 js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Équipement %s désactivé"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:593
#: js/ui/status/network.js:592
#, javascript-format
msgid "%s Disabled"
msgstr "%s désactivé"
#: js/ui/status/network.js:633
#: js/ui/status/network.js:632
msgid "Connect to Internet"
msgstr "Se connecter à Internet"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:813
msgid "Airplane Mode is On"
msgstr "Le mode avion est activé"
#: js/ui/status/network.js:824
#: js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Le Wi-Fi est désactivé quand le mode avion est activé."
#: js/ui/status/network.js:825
#: js/ui/status/network.js:815
msgid "Turn Off Airplane Mode"
msgstr "Désactiver le mode avion"
#: js/ui/status/network.js:834
#: js/ui/status/network.js:824
msgid "Wi-Fi is Off"
msgstr "Le Wi-fi est désactivé"
#: js/ui/status/network.js:835
#: js/ui/status/network.js:825
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Le Wi-Fi a besoin d'être activé pour se connecter à un réseau."
#: js/ui/status/network.js:836
#: js/ui/status/network.js:826
msgid "Turn On Wi-Fi"
msgstr "Activer le Wi-Fi"
#: js/ui/status/network.js:861
#: js/ui/status/network.js:851
msgid "Wi-Fi Networks"
msgstr "Réseaux Wi-Fi"
#: js/ui/status/network.js:863
#: js/ui/status/network.js:853
msgid "Select a network"
msgstr "Choisir un réseau"
#: js/ui/status/network.js:893
#: js/ui/status/network.js:883
msgid "No Networks"
msgstr "Aucun réseau disponible"
#: js/ui/status/network.js:914 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Utiliser l'interrupteur matériel pour éteindre"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1171
msgid "Select Network"
msgstr "Sélectionner un réseau"
#: js/ui/status/network.js:1187
#: js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "Paramètres Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1306
#: js/ui/status/network.js:1296
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s actif"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1321
#: js/ui/status/network.js:1311
#, javascript-format
msgid "%s Not Connected"
msgstr "%s non connecté"
#: js/ui/status/network.js:1421
#: js/ui/status/network.js:1411
msgid "connecting..."
msgstr "connexion..."
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1424
#: js/ui/status/network.js:1414
msgid "authentication required"
msgstr "authentification nécessaire"
#: js/ui/status/network.js:1426
#: js/ui/status/network.js:1416
msgid "connection failed"
msgstr "échec de connexion"
#: js/ui/status/network.js:1492 js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1482 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Paramètres du réseau"
#: js/ui/status/network.js:1494
#: js/ui/status/network.js:1484
msgid "VPN Settings"
msgstr "Paramètres VPN"
#: js/ui/status/network.js:1513
#: js/ui/status/network.js:1503
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1523
#: js/ui/status/network.js:1513
msgid "VPN Off"
msgstr "VPN désactivé"
#: js/ui/status/network.js:1709
#: js/ui/status/network.js:1697
msgid "Connection failed"
msgstr "Échec de connexion"
#: js/ui/status/network.js:1710
#: js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "L'activation de la connexion réseau a échoué"

499
po/fur.po

File diff suppressed because it is too large Load Diff

1331
po/gl.po

File diff suppressed because it is too large Load Diff

1771
po/hr.po

File diff suppressed because it is too large Load Diff

513
po/hu.po

File diff suppressed because it is too large Load Diff

491
po/id.po

File diff suppressed because it is too large Load Diff

473
po/it.po

File diff suppressed because it is too large Load Diff

686
po/kk.po

File diff suppressed because it is too large Load Diff

538
po/lt.po

File diff suppressed because it is too large Load Diff

957
po/nb.po

File diff suppressed because it is too large Load Diff

329
po/pa.po
View File

@@ -7,8 +7,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-sh"
"ell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-11-23 20:38+0000\n"
"PO-Revision-Date: 2016-12-05 18:27-0600\n"
"POT-Creation-Date: 2016-08-19 21:36+0000\n"
"PO-Revision-Date: 2016-09-05 07:28-0600\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: Punjabi <punjabi-users@list.sf.net>\n"
"Language: pa\n"
@@ -18,30 +18,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 2.0\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
msgstr "ਸਿਸਟਮ"
#: data/50-gnome-shell-system.xml:9
msgid "Show the notification list"
msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਸੂਚੀ ਵੇਖਾਓ"
#: data/50-gnome-shell-system.xml:12
msgid "Focus the active notification"
msgstr "ਸਰਗਰਮ ਸੂਚਨਾ ਉੱਤੇ ਫੋਕਸ"
#: data/50-gnome-shell-system.xml:15
msgid "Show the overview"
msgstr "ਸੰਖੇਪ ਵੇਖਾਓ"
#: data/50-gnome-shell-system.xml:18
msgid "Show all applications"
msgstr "ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖੋ"
#: data/50-gnome-shell-system.xml:21
msgid "Open the application menu"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਮੇਨੂ ਖੋਲ੍ਹੋ"
#: data/gnome-shell-extension-prefs.desktop.in.in:4
msgid "GNOME Shell Extension Preferences"
msgstr "ਗਨੋਮ ਸ਼ੈੱਲ ਇਕਸਟੈਨਸ਼ਨ ਪਸੰਦ"
@@ -167,7 +143,7 @@ msgstr ""
#: data/org.gnome.shell.gschema.xml.in:77
msgid ""
"Whether the default Bluetooth adapter had set up devices associated to it"
msgstr "ਕੀ ਡਿਫਾਲਟ ਬਲਿਊਟੁੱਥ ਅਡੈਪਟਰ ਇਸ ਨਾਲ ਸਬੰਧਿਤ ਡਿਵਾਈਸਾਂ ਲਈ ਸੈੱਟ ਅੱਪ ਕੀਤਾ ਹੈ"
msgstr ""
#: data/org.gnome.shell.gschema.xml.in:78
msgid ""
@@ -319,23 +295,23 @@ msgstr "%s ਲਈ ਪਸੰਦ ਡਾਈਲਾਗ ਨੂੰ ਲੋਡ ਕਰਨ
msgid "GNOME Shell Extensions"
msgstr "ਗਨੋਮ ਸ਼ੈਲ ਇਕਸਟੈਸ਼ਨ"
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:145 js/ui/components/polkitAgent.js:179
#: js/ui/endSessionDialog.js:483 js/ui/extensionDownloader.js:195
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:928
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:916
msgid "Cancel"
msgstr "ਰੱਦ ਕਰੋ"
#: js/gdm/authPrompt.js:171 js/gdm/authPrompt.js:218 js/gdm/authPrompt.js:450
#: js/gdm/authPrompt.js:169 js/gdm/authPrompt.js:216 js/gdm/authPrompt.js:448
msgid "Next"
msgstr "ਅੱਗੇ"
#: js/gdm/authPrompt.js:214 js/ui/shellMountOperation.js:403
#: js/gdm/authPrompt.js:212 js/ui/shellMountOperation.js:403
#: js/ui/unlockDialog.js:59
msgid "Unlock"
msgstr "ਅਣ-ਲਾਕ"
#: js/gdm/authPrompt.js:216
#: js/gdm/authPrompt.js:214
msgctxt "button"
msgid "Sign In"
msgstr "ਸਾਇਨ ਇਨ"
@@ -353,7 +329,7 @@ msgstr "ਲਿਸਟ ਵਿੱਚ ਨਹੀਂ ਹੈ?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:859
#: js/gdm/loginDialog.js:854
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(ਜਿਵੇਂ ਕਿ ਯੂਜ਼ਰ ਜਾਂ %s)"
@@ -361,12 +337,12 @@ msgstr "(ਜਿਵੇਂ ਕਿ ਯੂਜ਼ਰ ਜਾਂ %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:864 js/ui/components/networkAgent.js:271
#: js/gdm/loginDialog.js:859 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "ਯੂਜ਼ਰ ਨਾਂ: "
#: js/gdm/loginDialog.js:1201
#: js/gdm/loginDialog.js:1196
msgid "Login Window"
msgstr "ਲਾਗਇਨ ਵਿੰਡੋ"
@@ -470,7 +446,7 @@ msgstr "%d %B %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page
#: js/portalHelper/main.js:87
#: js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "ਵੈੱਬ ਪਰਮਾਣਕਿਤਾ ਰੀ-ਡਾਇਰੈਕਟ"
@@ -484,35 +460,31 @@ msgstr "ਪਹੁੰਚ ਉੱਤ ਪਾਬੰਦੀ"
msgid "Grant Access"
msgstr "ਪਹੁੰਚ ਲਈ ਮਨਜ਼ੂਰੀ"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:794
msgid "Frequently used applications will appear here"
msgstr "ਆਮ ਵਰਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨ ਇੱਥੇ ਵਿਖਾਈ ਦੇਣਗੀਆਂ"
#: js/ui/appDisplay.js:926
#: js/ui/appDisplay.js:914
msgid "Frequent"
msgstr "ਅਕਸਰ"
#: js/ui/appDisplay.js:933
#: js/ui/appDisplay.js:921
msgid "All"
msgstr "ਸਭ"
#: js/ui/appDisplay.js:1891
#: js/ui/appDisplay.js:1853
msgid "New Window"
msgstr "ਨਵੀਂ ਵਿੰਡੋ"
#: js/ui/appDisplay.js:1905
msgid "Launch using Dedicated Graphics Card"
msgstr "ਵੱਖਰੇ ਗਰਾਫ਼ਿਕਸ ਕਾਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਲਾਓ"
#: js/ui/appDisplay.js:1932 js/ui/dash.js:289
#: js/ui/appDisplay.js:1881 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
#: js/ui/appDisplay.js:1938
#: js/ui/appDisplay.js:1887
msgid "Add to Favorites"
msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ"
#: js/ui/appDisplay.js:1948
#: js/ui/appDisplay.js:1897
msgid "Show Details"
msgstr "ਵੇਰਵਾ ਵੇਖੋ"
@@ -670,7 +642,7 @@ msgstr "ਬਾਹਰੀ ਡਰਾਇਵ ਕੁਨੈਕਟ ਹੋਈ"
msgid "External drive disconnected"
msgstr "ਬਾਹਰੀ ਡਰਾਇਵ ਡਿਸ-ਕੁਨੈਕਟ ਹੈ"
#: js/ui/components/autorunManager.js:356
#: js/ui/components/autorunManager.js:355
#, javascript-format
msgid "Open with %s"
msgstr "%s ਨਾਲ ਖੋਲ੍ਹੋ"
@@ -683,8 +655,8 @@ msgstr "ਪਾਸਵਰਡ:"
msgid "Type again:"
msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼:"
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:272
#: js/ui/status/network.js:355 js/ui/status/network.js:931
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:269
#: js/ui/status/network.js:352 js/ui/status/network.js:919
msgid "Connect"
msgstr "ਕੁਨੈਕਟ ਕਰੋ"
@@ -712,18 +684,18 @@ msgstr "ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਪਾਸਵਰਡ: "
msgid "Service: "
msgstr "ਸਰਵਿਸ: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:666
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "ਬੇਤਾਰ ਨੈੱਟਵਰਕ ਲਈ ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
msgstr "ਬੇਤਾਰ ਨੈੱਟਵਰਕ “%s” ਵਰਤਣ ਲਈ ਪਾਸਵਰਡ ਜਾਂ ਇੰਕ੍ਰਿਪਸ਼ਨ ਕੁੰਜੀਆਂ ਦੀ ਲੋੜ ਹੈ।"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:670
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "ਤਾਰ 802.1X ਪਰਮਾਣਕਿਤਾ"
@@ -731,15 +703,15 @@ msgstr "ਤਾਰ 802.1X ਪਰਮਾਣਕਿਤਾ"
msgid "Network name: "
msgstr "ਨੈੱਟਵਰਕ ਨਾਂ: "
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "DSL ਪਰਮਾਣਕਿਤਾ"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "PIN ਕੋਡ ਲੋੜੀਦਾ ਹੈ"
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:681
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਜੰਤਰ ਲਈ PIN ਕੋਡ ਚਾਹੀਦਾ ਹੈ"
@@ -747,17 +719,17 @@ msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਜੰਤਰ ਲਈ PIN ਕ
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਨੈੱਟਵਰਕ ਪਾਸਵਰਡ"
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:671
#: js/ui/components/networkAgent.js:675 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:667 js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "“%s” ਨਾਲ ਕੁਨੈਕਟ ਹੋਣ ਲਈ ਪਾਸਵਰਡ ਦੀ ਲੋੜ ਹੈ। "
#: js/ui/components/networkAgent.js:655 js/ui/status/network.js:1734
#: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1658
msgid "Network Manager"
msgstr "ਨੈੱਟਵਰਕ ਮੈਨੇਜਰ"
@@ -783,12 +755,12 @@ msgstr "ਅਫਸੋਸ, ਉਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਫੇਰ
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:765
#: js/ui/components/telepathyClient.js:760
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s ਨੂੰ ਹੁਣ %s ਵਜੋਂ ਜਾਣਿਆ ਜਾਵੇਗਾ"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:178
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:155
msgid "Windows"
msgstr "ਵਿੰਡੋ"
@@ -930,6 +902,8 @@ msgid "Power off after updates are installed"
msgstr "ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰਨ ਦੇ ਬਾਅਦ ਬੰਦ ਕਰੋ"
#: js/ui/endSessionDialog.js:137
#| msgctxt "title"
#| msgid "Restart & Install Updates"
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ ਤੇ ਅੱਪਗਰੇਡ ਇੰਸਟਾਲ ਕਰੋ"
@@ -943,9 +917,6 @@ msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
"time: ensure that you have backed up and that the computer is plugged in."
msgstr ""
"ਮੁੜ-ਚਾਲੂ ਹੋਣ ਦੇ ਬਾਅਦ %s %s ਨੂੰ ਇੰਸਟਾਲ ਕੀਤਾ ਜਾਵੇਗਾ। ਅੱਪਗਰੇਡ ਇੰਸਟਾਲੇਸ਼ਨ ਨੂੰ ਲੰਮਾ"
" ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ: "
"ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਬੈਕਅੱਪ ਲੈ ਲਿਆ ਹੈ ਅਤੇ ਕੰਪਿਊਟਰ ਦਾ ਪਲੱਗ ਲੱਗਾ ਹੈ।"
#: js/ui/endSessionDialog.js:361
msgid "Running on battery power: please plug in before installing updates."
@@ -1077,54 +1048,6 @@ msgstr "ਸੰਖੇਪ"
msgid "Type to search…"
msgstr "…ਲੱਭਣ ਲਈ ਲਿਖੋ"
#: js/ui/padOsd.js:37
msgid "New shortcut…"
msgstr "...ਨਵਾਂ ਸ਼ਾਰਟਕੱਟ"
#: js/ui/padOsd.js:86
#| msgid "Applications"
msgid "Application defined"
msgstr "ਨਿਰਧਾਰਿਤ ਐਪਲੀਕੇਸ਼ਨ"
#: js/ui/padOsd.js:87
#| msgid "Show the onscreen keyboard"
msgid "Show on-screen help"
msgstr "ਆਨ-ਸਕਰੀਨ ਮਦਦ ਵੇਖਾਓ"
#: js/ui/padOsd.js:88
#, fuzzy
#| msgid "Switch User"
msgid "Switch monitor"
msgstr "ਯੂਜ਼ਰ ਬਦਲੋ"
#: js/ui/padOsd.js:89
msgid "Assign keystroke"
msgstr "ਕੀ-ਸਟਰੋਕ ਦਿਓ"
#: js/ui/padOsd.js:143
msgid "Done"
msgstr "ਮੁਕੰਮਲ"
#: js/ui/padOsd.js:597
msgid "Edit…"
msgstr "ਸੋਧ…"
#: js/ui/padOsd.js:610 js/ui/padOsd.js:665
msgid "None"
msgstr "ਕੋਈ ਨਹੀਂ"
#: js/ui/padOsd.js:648
msgid "Press a button to configure"
msgstr "ਸੰਰਚਨਾ ਲਈ ਬਟਨ ਨੂੰ ਦੱਬੋ"
#: js/ui/padOsd.js:649
msgid "Press Esc to exit"
msgstr "ਬਾਹਰ ਜਾਣ ਲਈ ਕੋਈ ਵੀ Esc ਦੱਬੋ"
#: js/ui/padOsd.js:652
msgid "Press any key to exit"
msgstr "ਬਾਹਰ ਜਾਣ ਲਈ ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ"
#: js/ui/panel.js:358
msgid "Quit"
msgstr "ਬਾਹਰ"
@@ -1161,11 +1084,6 @@ msgstr "ਕਮਾਂਡ ਦਿਓ"
msgid "Close"
msgstr "ਬੰਦ ਕਰੋ"
#: js/ui/runDialog.js:277
#| msgid "Encryption is not available"
msgid "Restart is not available on Wayland"
msgstr "ਵੇਅਲੈਂਡ ਉੱਤੇ ਮੁੜ-ਚਾਲੂ ਕਰੋ ਉਪਲਬਧ ਨਹੀਂ"
#: js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "...ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
@@ -1194,7 +1112,7 @@ msgstr[1] "%d ਨਵੀਆਂ ਸੂਚਨਾਵਾਂ"
msgid "Lock"
msgstr "ਲਾਕ"
#: js/ui/screenShield.js:707
#: js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "ਗਨੋਮ ਨੂੰ ਸਕਰੀਨ ਲਾਕ ਕਰਨ ਦੀ ਲੋੜ ਹੈ"
@@ -1205,11 +1123,11 @@ msgstr "ਗਨੋਮ ਨੂੰ ਸਕਰੀਨ ਲਾਕ ਕਰਨ ਦੀ ਲੋ
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:828 js/ui/screenShield.js:1295
#: js/ui/screenShield.js:825 js/ui/screenShield.js:1291
msgid "Unable to lock"
msgstr "ਅਣਲਾਕ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
#: js/ui/screenShield.js:829 js/ui/screenShield.js:1296
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1292
msgid "Lock was blocked by an application"
msgstr "ਲਾਕ ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ ਵਲੋਂ ਪਾਬੰਦੀ ਲਗਾਈ"
@@ -1293,7 +1211,7 @@ msgstr "ਵੱਡੇ ਅੱਖਰ"
msgid "Bluetooth"
msgstr "ਬਲਿਊਟੁੱਥ"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:624
msgid "Bluetooth Settings"
msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ"
@@ -1310,16 +1228,16 @@ msgid "Off"
msgstr "ਬੰਦ"
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "ਚਾਲੂ"
msgid "Not In Use"
msgstr "ਵਰਤੋਂ ਵਿੱਚ ਨਹੀਂ"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1291
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1279
msgid "Turn On"
msgstr "ਚਾਲੂ ਕਰੋ"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:356 js/ui/status/network.js:1291
#: js/ui/status/network.js:1406 js/ui/status/rfkill.js:90
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:178
#: js/ui/status/network.js:353 js/ui/status/network.js:1279
#: js/ui/status/network.js:1394 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "ਬੰਦ ਕਰੋ"
@@ -1365,20 +1283,19 @@ msgstr "ਕੀ ਆਪਣੇ ਟਿਕਾਣੇ ਲਈ %s ਨੂੰ ਪਹੁੰ
#: js/ui/status/location.js:437
msgid "Location access can be changed at any time from the privacy settings."
msgstr ""
"ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।"
#: js/ui/status/network.js:104
#: js/ui/status/network.js:101
msgid "<unknown>"
msgstr "<ਅਣਜਾਣ>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454 js/ui/status/network.js:1320
#: js/ui/status/network.js:451 js/ui/status/network.js:1308
#, javascript-format
msgid "%s Off"
msgstr "%s ਬੰਦ ਹੈ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:457
#: js/ui/status/network.js:454
#, javascript-format
msgid "%s Connected"
msgstr "%s ਕਨੈਕਟ ਹੈ"
@@ -1386,193 +1303,169 @@ msgstr "%s ਕਨੈਕਟ ਹੈ"
#. 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);
#. %s is a network identifier
#: js/ui/status/network.js:462
#: js/ui/status/network.js:459
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s ਬਿਨ-ਪਰਬੰਧ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s ਡਿਸ-ਕੁਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:472 js/ui/status/network.js:1312
#: js/ui/status/network.js:469 js/ui/status/network.js:1300
#, javascript-format
msgid "%s Connecting"
msgstr "%s ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:475
#: js/ui/status/network.js:472
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:483
#: js/ui/status/network.js:480
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "%s ਲਈ ਫਿਰਮਵੇਅਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:487
#: js/ui/status/network.js:484
#, javascript-format
msgid "%s Unavailable"
msgstr "%s ਨਾ-ਮੌਜੂਦ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:490
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ"
#: js/ui/status/network.js:506
#: js/ui/status/network.js:503
msgid "Wired Settings"
msgstr "ਤਾਰ ਸੈਟਿੰਗ"
#: js/ui/status/network.js:548
#: js/ui/status/network.js:545
msgid "Mobile Broadband Settings"
msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਸੈਟਿੰਗ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:591 js/ui/status/network.js:1317
#: js/ui/status/network.js:588 js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s ਹਾਰਡਵੇਅਰ ਬੰਦ ਹੈ"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:595
#: js/ui/status/network.js:592
#, javascript-format
msgid "%s Disabled"
msgstr "%s ਬੰਦ ਹੈ"
#: js/ui/status/network.js:635
#: js/ui/status/network.js:632
#| msgid "Connection error"
msgid "Connect to Internet"
msgstr "ਇੰਟਰਨੈੱਟ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"
#: js/ui/status/network.js:825
#: js/ui/status/network.js:813
msgid "Airplane Mode is On"
msgstr "ਏਅਰਪਲੇਨ ਮੋਡ ਚਾਲੂ ਹੈ"
#: js/ui/status/network.js:826
#: js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "ਜਦੋਂ ਏਅਰ-ਪਲੇਨ ਮੋਡ ਚਾਲੂ ਹੁੰਦਾ ਹੈ ਤਾਂ ਵਾਈ-ਫਾਈ ਬੰਦ ਹੁੰਦਾ ਹੈ"
#: js/ui/status/network.js:827
#: js/ui/status/network.js:815
msgid "Turn Off Airplane Mode"
msgstr "ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ"
#: js/ui/status/network.js:836
#: js/ui/status/network.js:824
msgid "Wi-Fi is Off"
msgstr "ਵਾਈ-ਫਾਈ ਬੰਦ ਹੈ"
#: js/ui/status/network.js:837
#: js/ui/status/network.js:825
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "ਨੈੱਟਵਰਕ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਵਾਈ-ਫਾਈ ਨੂੰ ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ"
#: js/ui/status/network.js:838
#: js/ui/status/network.js:826
msgid "Turn On Wi-Fi"
msgstr "ਵਾਈ-ਫਾਈ ਚਾਲੂ"
#: js/ui/status/network.js:863
#: js/ui/status/network.js:851
msgid "Wi-Fi Networks"
msgstr "ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ"
#: js/ui/status/network.js:865
#: js/ui/status/network.js:853
msgid "Select a network"
msgstr "ਨੈੱਟਵਰਕ ਚੁਣੋ"
#: js/ui/status/network.js:895
#: js/ui/status/network.js:883
msgid "No Networks"
msgstr "ਕੋਈ ਨੈੱਟਵਰਕ ਨਹੀਂ"
#: js/ui/status/network.js:916 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "ਬੰਦ ਕਰਨ ਲਈ ਹਾਰਡਵੇਅਰ ਸਵਿੱਚ ਵਰਤੋਂ"
#: js/ui/status/network.js:1183
#: js/ui/status/network.js:1171
msgid "Select Network"
msgstr "ਨੈੱਟਵਰਕ ਚੁਣੋ"
#: js/ui/status/network.js:1189
#: js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "ਵਾਈ-ਫਾਈ ਸੈਟਿੰਗ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1308
#: js/ui/status/network.js:1296
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s ਹਾਟਸਪਾਟ ਸਰਗਰਮ"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1323
#: js/ui/status/network.js:1311
#, javascript-format
msgid "%s Not Connected"
msgstr "%s ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ"
#: js/ui/status/network.js:1423
#: js/ui/status/network.js:1411
msgid "connecting..."
msgstr "...ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1426
#: js/ui/status/network.js:1414
msgid "authentication required"
msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
#: js/ui/status/network.js:1428
#: js/ui/status/network.js:1416
msgid "connection failed"
msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ"
#: js/ui/status/network.js:1494 js/ui/status/network.js:1587
#: js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1482 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "ਨੈੱਟਵਰਕ ਸੈਟਿੰਗ"
#: js/ui/status/network.js:1496
#: js/ui/status/network.js:1484
msgid "VPN Settings"
msgstr "VPN ਸੈਟਿੰਗ"
#: js/ui/status/network.js:1515
#: js/ui/status/network.js:1503
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1525
#: js/ui/status/network.js:1513
msgid "VPN Off"
msgstr "VPN ਬੰਦ ਹੈ"
#: js/ui/status/network.js:1618
#, javascript-format
#| msgid "%s Connecting"
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s ਤਾਰ ਵਾਲਾ ਕਨੈਕਸ਼ਨ"
msgstr[1] "%s ਤਾਰ ਵਾਲੇ ਕਨੈਕਸ਼ਨ"
#: js/ui/status/network.js:1622
#, javascript-format
#| msgid "%s Connecting"
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Wi-Fi ਕਨੈਕਸ਼ਨ"
msgstr[1] "%s Wi-Fi ਕਨੈਕਸ਼ਨ"
#: js/ui/status/network.js:1626
#, javascript-format
#| msgid "%s Connecting"
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s ਮਾਡਲ ਕਨੈਕਸ਼ਨ"
msgstr[1] "%s ਮਾਡਲ ਕਨੈਕਸ਼ਨ"
#: js/ui/status/network.js:1773
#: js/ui/status/network.js:1697
msgid "Connection failed"
msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ"
#: js/ui/status/network.js:1774
#: js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ ਦੀ ਐਕਟੀਵੇਸ਼ਨ ਫੇਲ੍ਹ ਹੋਈ"
@@ -1654,11 +1547,11 @@ msgstr "ਹੋਰ ਯੂਜ਼ਰ ਵਜੋਂ ਲਾਗਇਨ"
msgid "Unlock Window"
msgstr "ਵਿੰਡੋ ਅਣਲਾਕ"
#: js/ui/viewSelector.js:182
#: js/ui/viewSelector.js:159
msgid "Applications"
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
#: js/ui/viewSelector.js:186
#: js/ui/viewSelector.js:163
msgid "Search"
msgstr "ਖੋਜ"
@@ -1667,22 +1560,22 @@ msgstr "ਖੋਜ"
msgid "“%s” is ready"
msgstr "“%s” ਤਿਆਰ ਹੈ"
#: js/ui/windowManager.js:64
#: js/ui/windowManager.js:63
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:83
#: js/ui/windowManager.js:82
msgid "Revert Settings"
msgstr "ਸੈਟਿੰਗ ਵਾਪਿਸ ਲਵੋ"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
msgid "Keep Changes"
msgstr "ਬਦਲਾਅ ਲਾਗੂ ਰੱਖੋ"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:103
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -1691,7 +1584,7 @@ msgstr[1] "ਸੈਟਿੰਗ ਬਦਲਾਅ ਨੂੰ %d ਸਕਿੰਟਾਂ
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:658
#, javascript-format
msgid "%d x %d"
msgstr "%d x %d"
@@ -1767,7 +1660,7 @@ msgstr "ਈਵੇਲੂਸ਼ਨ ਕੈਲੰਡਰ"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: src/calendar-server/evolution-calendar.desktop.in:6
msgid "evolution"
msgstr "evolution"
msgstr "ਈਵੇਲੂਸ਼ਨ"
#. translators:
#. * The number of sound outputs on a particular device
@@ -1791,19 +1684,19 @@ msgstr[1] "%u ਇੰਪੁੱਟ"
msgid "System Sounds"
msgstr "ਸਿਸਟਮ ਸਾਊਂਡ"
#: src/main.c:380
#: src/main.c:381
msgid "Print version"
msgstr "ਵਰਜਨ ਛਾਪੋ"
#: src/main.c:386
#: src/main.c:387
msgid "Mode used by GDM for login screen"
msgstr "ਲਾਗਇਨ ਸਕਰੀਨ ਲਈ GDM ਵਲੋਂ ਵਰਤਿਆ ਮੋਡ"
#: src/main.c:392
#: src/main.c:393
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "ਲਾਗਇਨ ਸਕਰੀਨ ਉੱਤੇ ਖਾਸ ਮੋਡ ਜਿਵੇਂ ਕਿ \"gdm\" ਵਰਤੋਂ"
#: src/main.c:398
#: src/main.c:399
msgid "List possible modes"
msgstr "ਸੰਭਵ ਮੋਡ ਵੇਖਾਓ"
@@ -1829,8 +1722,23 @@ msgstr "ਪਾਸਵਰਡ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ"
msgid "Authentication dialog was dismissed by the user"
msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋਂ ਰੱਦ ਕੀਤਾ"
#~ msgid "Not In Use"
#~ msgstr "ਵਰਤੋਂ ਵਿੱਚ ਨਹੀਂ"
#~ msgid "System"
#~ msgstr "ਸਿਸਟਮ"
#~ msgid "Show the notification list"
#~ msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਸੂਚੀ ਵੇਖਾਓ"
#~ msgid "Focus the active notification"
#~ msgstr "ਸਰਗਰਮ ਸੂਚਨਾ ਉੱਤੇ ਫੋਕਸ"
#~ msgid "Show the overview"
#~ msgstr "ਸੰਖੇਪ ਵੇਖਾਓ"
#~ msgid "Show all applications"
#~ msgstr "ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖੋ"
#~ msgid "Open the application menu"
#~ msgstr "ਐਪਲੀਕੇਸ਼ਨ ਮੇਨੂ ਖੋਲ੍ਹੋ"
#~ msgid "Show the week date in the calendar"
#~ msgstr "ਕੈਲੰਡਰ ਵਿੱਚ ਹਫ਼ਤਾ ਮਿਤੀ ਵੇਖੋ"
@@ -1864,6 +1772,9 @@ msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋ
#~ msgid "Airplane Mode"
#~ msgstr "ਏਅਰਪਲੇਨ ਮੋਡ"
#~ msgid "On"
#~ msgstr "ਚਾਲੂ"
#~ msgid "Show the message tray"
#~ msgstr "ਸੁਨੇਹਾ ਟਰੇ ਵੇਖਾਓ"
@@ -2002,6 +1913,9 @@ msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋ
#~ msgid "Status is set to offline"
#~ msgstr "ਹਾਲਤ ਆਫਲਾਈਨ ਸੈੱਟ ਕੀਤੀ ਗਈ ਹੈ"
#~ msgid "Encryption is not available"
#~ msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ"
#~ msgid "Certificate is invalid"
#~ msgstr "ਸਰਟੀਫਿਕੇਟ ਗਲਤ ਹੈ"
@@ -2658,6 +2572,9 @@ msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋ
#~ msgid "If true, display onscreen keyboard."
#~ msgstr "ਜੇ ਚੋਣ ਕੀਤੀ ਤਾਂ ਆਨਸਕਰੀਨ ਕੀਬੋਰਡ ਵੇਖਾਇਆ ਜਾਵੇਗਾ।"
#~ msgid "Show the onscreen keyboard"
#~ msgstr "ਆਨਸਕਰੀਨ ਕੀਬੋਰਡ ਵੇਖਾਓ"
#~ msgid "Connectivity lost"
#~ msgstr "ਕੁਨੈਕਸ਼ਨ ਟੁੱਟ ਗਿਆ"

488
po/pl.po

File diff suppressed because it is too large Load Diff

View File

@@ -301,7 +301,7 @@ msgstr "Sessão na rede"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:9
msgid "network-workgroup"
msgstr "network-workgroup"
msgstr "Grupo de Trabalho na Rede"
#: js/extensionPrefs/main.js:117
#, javascript-format
@@ -1685,7 +1685,7 @@ msgstr "Calendário do Evolution"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: src/calendar-server/evolution-calendar.desktop.in:6
msgid "evolution"
msgstr "evolution"
msgstr "Evolution"
#. translators:
#. * The number of sound outputs on a particular device

File diff suppressed because it is too large Load Diff

167
po/ru.po
View File

@@ -19,16 +19,16 @@ 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: 2016-11-23 20:37+0000\n"
"PO-Revision-Date: 2016-11-24 00:07+0300\n"
"POT-Creation-Date: 2016-09-07 09:41+0000\n"
"PO-Revision-Date: 2016-09-11 20:49+0300\n"
"Last-Translator: Stas Solovey <whats_up@tut.by>\n"
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
"Language-Team: Russian <gnome-cyr@gnome.org>\n"
"Language: ru\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"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Gtranslator 2.91.7\n"
#: data/50-gnome-shell-system.xml:6
@@ -336,7 +336,7 @@ msgstr "Расширения GNOME Shell"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:145 js/ui/components/polkitAgent.js:179
#: js/ui/endSessionDialog.js:483 js/ui/extensionDownloader.js:195
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:926
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:916
msgid "Cancel"
msgstr "Отмена"
@@ -367,7 +367,7 @@ msgstr "Нет в списке?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:859
#: js/gdm/loginDialog.js:854
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(например, пользователь или %s)"
@@ -375,12 +375,12 @@ msgstr "(например, пользователь или %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:864 js/ui/components/networkAgent.js:271
#: js/gdm/loginDialog.js:859 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Имя пользователя: "
#: js/gdm/loginDialog.js:1201
#: js/gdm/loginDialog.js:1196
msgid "Login Window"
msgstr "Окно входа в систему"
@@ -438,7 +438,7 @@ msgstr "%A, %H%M"
#: js/misc/util.js:209
#, no-c-format
msgid "%B %d, %H%M"
msgstr "%e %b., %H%M"
msgstr "%d %b., %H%M"
# fix даты
#. Translators: this is the month name, day number, year
@@ -447,7 +447,7 @@ msgstr "%e %b., %H%M"
#: js/misc/util.js:215
#, no-c-format
msgid "%B %d %Y, %H%M"
msgstr "%e %b. %Y, %H%M"
msgstr "%d %b. %Y, %H%M"
# по всей видимости разрабы коммент перепутали c "Translators: Time in 12h format"
#. Translators: Time in 12h format
@@ -476,7 +476,7 @@ msgstr "%A, %l%M %p"
#: js/misc/util.js:238
#, no-c-format
msgid "%B %d, %l%M %p"
msgstr "%e %b., %l%M %p"
msgstr "%d %b., %l%M %p"
# fix даты
#. Translators: this is the month name, day number, year
@@ -485,7 +485,7 @@ msgstr "%e %b., %l%M %p"
#: js/misc/util.js:244
#, no-c-format
msgid "%B %d %Y, %l%M %p"
msgstr "%e %b. %Y, %l%M %p"
msgstr "%d %b. %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page
@@ -655,16 +655,17 @@ msgstr "Весь день"
msgid "Events"
msgstr "События"
# fix для даты в календаре и на экране блокировки, за разъяснением обращаться к Stas Solovey <whats_up@tut.by>
#: js/ui/calendar.js:845
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %e %b."
msgstr "%A, %d %b."
# fix для даты в календаре и на экране блокировки
#: js/ui/calendar.js:849
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %e %b. %Y"
msgstr "%A, %d %b. %Y"
#: js/ui/calendar.js:931
msgid "Notifications"
@@ -699,8 +700,8 @@ msgstr "Пароль:"
msgid "Type again:"
msgstr "Введите ещё раз:"
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:270
#: js/ui/status/network.js:353 js/ui/status/network.js:929
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:269
#: js/ui/status/network.js:352 js/ui/status/network.js:919
msgid "Connect"
msgstr "Соединиться"
@@ -728,11 +729,11 @@ msgstr "Пароль личного ключа: "
msgid "Service: "
msgstr "Служба: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:666
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "Беспроводная сеть требует подтверждения подлинности"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -740,7 +741,7 @@ msgid ""
msgstr ""
"Для доступа к беспроводной сети «%s» требуется пароль или ключ шифрования."
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:670
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Аутентификация Wired 802.1X"
@@ -748,15 +749,15 @@ msgstr "Аутентификация Wired 802.1X"
msgid "Network name: "
msgstr "Название сети: "
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "Аутентификация DSL"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "Требуется PIN-код"
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:681
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Для широкополосного мобильного устройства требуется PIN-код"
@@ -764,17 +765,17 @@ msgstr "Для широкополосного мобильного устрой
msgid "PIN: "
msgstr "PIN-код: "
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Пароль для мобильной широкополосной сети"
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:671
#: js/ui/components/networkAgent.js:675 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:667 js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Для подключения к «%s» требуется пароль."
#: js/ui/components/networkAgent.js:655 js/ui/status/network.js:1670
#: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1658
msgid "Network Manager"
msgstr "Диспетчер сети"
@@ -800,7 +801,7 @@ msgstr "Не удалось подтвердить подлинность. По
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:765
#: js/ui/components/telepathyClient.js:760
#, javascript-format
msgid "%s is now known as %s"
msgstr "Контакт %s теперь известен как %s"
@@ -957,6 +958,8 @@ msgid "Power off after updates are installed"
msgstr "Выключить после установки обновлений"
#: js/ui/endSessionDialog.js:137
#| msgctxt "title"
#| msgid "Restart & Install Updates"
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Перезапуск и установка обновлений"
@@ -1142,10 +1145,6 @@ msgstr "Введите команду"
msgid "Close"
msgstr "Закрыть"
#: js/ui/runDialog.js:277
msgid "Restart is not available on Wayland"
msgstr "Перезапуск не доступен при использовании Wayland"
#: js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "Перезапуск…"
@@ -1188,11 +1187,11 @@ msgstr "GNOME необходимо заблокировать экран"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:825 js/ui/screenShield.js:1292
#: js/ui/screenShield.js:825 js/ui/screenShield.js:1291
msgid "Unable to lock"
msgstr "Не удалось заблокировать"
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1293
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1292
msgid "Lock was blocked by an application"
msgstr "Блокировке помешало приложение"
@@ -1276,7 +1275,7 @@ msgstr "Крупный текст"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:625
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:624
msgid "Bluetooth Settings"
msgstr "Настроить Bluetooth"
@@ -1297,13 +1296,13 @@ msgstr "Выключено"
msgid "Not In Use"
msgstr "Не используется"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1289
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Включить"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:179
#: js/ui/status/network.js:354 js/ui/status/network.js:1289
#: js/ui/status/network.js:1404 js/ui/status/rfkill.js:90
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:178
#: js/ui/status/network.js:353 js/ui/status/network.js:1279
#: js/ui/status/network.js:1394 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Выключить"
@@ -1352,18 +1351,18 @@ msgstr ""
"Параметры доступа к данным местоположения можно изменить в любое время в "
"настройках конфиденциальности."
#: js/ui/status/network.js:102
#: js/ui/status/network.js:101
msgid "<unknown>"
msgstr "<неизвестно>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:452 js/ui/status/network.js:1318
#: js/ui/status/network.js:451 js/ui/status/network.js:1308
#, javascript-format
msgid "%s Off"
msgstr "Выключено %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:455
#: js/ui/status/network.js:454
#, javascript-format
msgid "%s Connected"
msgstr "Подключено %s"
@@ -1371,168 +1370,168 @@ msgstr "Подключено %s"
#. 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);
#. %s is a network identifier
#: js/ui/status/network.js:460
#: js/ui/status/network.js:459
#, javascript-format
msgid "%s Unmanaged"
msgstr "Не управляется %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:463
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Disconnecting"
msgstr "Отключение %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:470 js/ui/status/network.js:1310
#: js/ui/status/network.js:469 js/ui/status/network.js:1300
#, javascript-format
msgid "%s Connecting"
msgstr "Подключение %s"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:473
#: js/ui/status/network.js:472
#, javascript-format
msgid "%s Requires Authentication"
msgstr "Требуется аутентификация для %s"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:481
#: js/ui/status/network.js:480
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Отсутствует прошивка для %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:485
#: js/ui/status/network.js:484
#, javascript-format
msgid "%s Unavailable"
msgstr "Недоступно %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:488
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Connection Failed"
msgstr "Сбой подключения %s"
#: js/ui/status/network.js:504
#: js/ui/status/network.js:503
msgid "Wired Settings"
msgstr "Параметры проводных соединений"
#: js/ui/status/network.js:546
#: js/ui/status/network.js:545
msgid "Mobile Broadband Settings"
msgstr "Параметры широкополосной мобильной связи"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:589 js/ui/status/network.js:1315
#: js/ui/status/network.js:588 js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Оборудование выключено %s"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:593
#: js/ui/status/network.js:592
#, javascript-format
msgid "%s Disabled"
msgstr "Выключено %s"
#: js/ui/status/network.js:633
#: js/ui/status/network.js:632
msgid "Connect to Internet"
msgstr "Подключиться к Интернету"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:813
msgid "Airplane Mode is On"
msgstr "Включён режим авиаперелёта"
#: js/ui/status/network.js:824
#: js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Когда включён режим авиаперелёта, адаптер Wi-Fi выключен."
#: js/ui/status/network.js:825
#: js/ui/status/network.js:815
msgid "Turn Off Airplane Mode"
msgstr "Выключить режим авиаперелёта"
#: js/ui/status/network.js:834
#: js/ui/status/network.js:824
msgid "Wi-Fi is Off"
msgstr "Wi-Fi выключен"
#: js/ui/status/network.js:835
#: js/ui/status/network.js:825
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Для подключения к сети, адаптер Wi-Fi должен быть включён."
#: js/ui/status/network.js:836
#: js/ui/status/network.js:826
msgid "Turn On Wi-Fi"
msgstr "Включить Wi-Fi"
#: js/ui/status/network.js:861
#: js/ui/status/network.js:851
msgid "Wi-Fi Networks"
msgstr "Сети Wi-Fi"
#: js/ui/status/network.js:863
#: js/ui/status/network.js:853
msgid "Select a network"
msgstr "Выберите сеть"
#: js/ui/status/network.js:893
#: js/ui/status/network.js:883
msgid "No Networks"
msgstr "Сети отсутствуют"
#: js/ui/status/network.js:914 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Используйте механический переключатель, чтобы выключить"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1171
msgid "Select Network"
msgstr "Выбрать сеть"
#: js/ui/status/network.js:1187
#: js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "Параметры Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1306
#: js/ui/status/network.js:1296
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Точка доступа %s включена"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1321
#: js/ui/status/network.js:1311
#, javascript-format
msgid "%s Not Connected"
msgstr "Не подключено %s"
#: js/ui/status/network.js:1421
#: js/ui/status/network.js:1411
msgid "connecting..."
msgstr "подключение…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1424
#: js/ui/status/network.js:1414
msgid "authentication required"
msgstr "требуется подтверждение подлинности"
#: js/ui/status/network.js:1426
#: js/ui/status/network.js:1416
msgid "connection failed"
msgstr "сбой подключения"
#: js/ui/status/network.js:1492 js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1482 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Настроить сеть"
#: js/ui/status/network.js:1494
#: js/ui/status/network.js:1484
msgid "VPN Settings"
msgstr "Параметры VPN"
#: js/ui/status/network.js:1513
#: js/ui/status/network.js:1503
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1523
#: js/ui/status/network.js:1513
msgid "VPN Off"
msgstr "Соединение VPN выключено"
#: js/ui/status/network.js:1709
#: js/ui/status/network.js:1697
msgid "Connection failed"
msgstr "Сбой подключения"
#: js/ui/status/network.js:1710
#: js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "Не удалось активировать сетевое подключение"
@@ -1800,19 +1799,6 @@ msgstr "Пароль не может быть пустым"
msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация отклонена пользователем"
#, fuzzy
#~| msgid "Applications"
#~ msgid "Application defined"
#~ msgstr "Приложения"
#, fuzzy
#~| msgid "Switch User"
#~ msgid "Switch monitor"
#~ msgstr "Сменить пользователя"
#~ msgid "On"
#~ msgstr "Включено"
#~ msgid "Show the week date in the calendar"
#~ msgstr "Показывать в календаре нумерацию недель"
@@ -1847,3 +1833,6 @@ msgstr "Аутентификация отклонена пользователе
#~ msgid "Airplane Mode"
#~ msgstr "Режим авиаперелёта"
#~ msgid "On"
#~ msgstr "Включено"

525
po/sk.po

File diff suppressed because it is too large Load Diff

496
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

311
po/tr.po
View File

@@ -14,8 +14,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: 2016-11-23 22:21+0000\n"
"PO-Revision-Date: 2016-11-24 12:48+0300\n"
"POT-Creation-Date: 2016-08-20 08:27+0000\n"
"PO-Revision-Date: 2016-09-04 22:11+0300\n"
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
"Language: tr\n"
@@ -26,30 +26,6 @@ msgstr ""
"X-Generator: Gtranslator 2.91.7\n"
"X-Project-Style: gnome\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
msgstr "Sistem"
#: data/50-gnome-shell-system.xml:9
msgid "Show the notification list"
msgstr "Bildirim listesini göster"
#: data/50-gnome-shell-system.xml:12
msgid "Focus the active notification"
msgstr "Etkin bildirime odaklan"
#: data/50-gnome-shell-system.xml:15
msgid "Show the overview"
msgstr "Genel görünümü göster"
#: data/50-gnome-shell-system.xml:18
msgid "Show all applications"
msgstr "Tüm uygulamaları göster"
#: data/50-gnome-shell-system.xml:21
msgid "Open the application menu"
msgstr "Uygulama menüsünü aç"
#: data/gnome-shell-extension-prefs.desktop.in.in:4
msgid "GNOME Shell Extension Preferences"
msgstr "GNOME Kabuğu Eklenti Tercihleri"
@@ -322,6 +298,7 @@ msgstr "Ağ Girişi"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:9
#| msgid "Network error"
msgid "network-workgroup"
msgstr "network-workgroup"
@@ -334,23 +311,23 @@ msgstr "%s için tercihler iletişim penceresi yüklenirken hata oluştu:"
msgid "GNOME Shell Extensions"
msgstr "GNOME Kabuğu Uzantıları"
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:145 js/ui/components/polkitAgent.js:179
#: js/ui/endSessionDialog.js:483 js/ui/extensionDownloader.js:195
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:928
#: js/ui/shellMountOperation.js:399 js/ui/status/network.js:916
msgid "Cancel"
msgstr "İptal"
#: js/gdm/authPrompt.js:171 js/gdm/authPrompt.js:218 js/gdm/authPrompt.js:450
#: js/gdm/authPrompt.js:169 js/gdm/authPrompt.js:216 js/gdm/authPrompt.js:448
msgid "Next"
msgstr "Sonraki"
#: js/gdm/authPrompt.js:214 js/ui/shellMountOperation.js:403
#: js/gdm/authPrompt.js:212 js/ui/shellMountOperation.js:403
#: js/ui/unlockDialog.js:59
msgid "Unlock"
msgstr "Kilit Aç"
#: js/gdm/authPrompt.js:216
#: js/gdm/authPrompt.js:214
msgctxt "button"
msgid "Sign In"
msgstr "Giriş"
@@ -368,7 +345,7 @@ msgstr "Listede yok mu?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:859
#: js/gdm/loginDialog.js:854
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(örneğin, kullanıcı veya %s)"
@@ -376,12 +353,12 @@ msgstr "(örneğin, kullanıcı veya %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:864 js/ui/components/networkAgent.js:271
#: js/gdm/loginDialog.js:859 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Kullanıcı Adı: "
#: js/gdm/loginDialog.js:1201
#: js/gdm/loginDialog.js:1196
msgid "Login Window"
msgstr "Oturum Açma Penceresi"
@@ -485,7 +462,7 @@ msgstr "%d %B %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page
#: js/portalHelper/main.js:87
#: js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Web Kimlik Doğrulama Yönlendirmesi"
@@ -499,35 +476,31 @@ msgstr "Erişimi Reddet"
msgid "Grant Access"
msgstr "Erişime İzin Ver"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:794
msgid "Frequently used applications will appear here"
msgstr "Sık kullanılan uygulamalar burada yer alacak"
#: js/ui/appDisplay.js:926
#: js/ui/appDisplay.js:914
msgid "Frequent"
msgstr "Sık sık"
#: js/ui/appDisplay.js:933
#: js/ui/appDisplay.js:921
msgid "All"
msgstr "Hepsi"
#: js/ui/appDisplay.js:1891
#: js/ui/appDisplay.js:1853
msgid "New Window"
msgstr "Yeni Pencere"
#: js/ui/appDisplay.js:1905
msgid "Launch using Dedicated Graphics Card"
msgstr "Adanmış Ekran Kartıyla Başlat"
#: js/ui/appDisplay.js:1932 js/ui/dash.js:289
#: js/ui/appDisplay.js:1881 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Sık Kullanılanlardan Çıkar"
#: js/ui/appDisplay.js:1938
#: js/ui/appDisplay.js:1887
msgid "Add to Favorites"
msgstr "Sık Kullanılanlara Ekle"
#: js/ui/appDisplay.js:1948
#: js/ui/appDisplay.js:1897
msgid "Show Details"
msgstr "Ayrıntıları Göster"
@@ -685,7 +658,7 @@ msgstr "Harici sürücü bağlandı"
msgid "External drive disconnected"
msgstr "Harici sürücü ayrıldı"
#: js/ui/components/autorunManager.js:356
#: js/ui/components/autorunManager.js:355
#, javascript-format
msgid "Open with %s"
msgstr "%s ile Aç"
@@ -698,8 +671,8 @@ msgstr "Parola:"
msgid "Type again:"
msgstr "Terkar yazın:"
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:272
#: js/ui/status/network.js:355 js/ui/status/network.js:931
#: js/ui/components/networkAgent.js:140 js/ui/status/network.js:269
#: js/ui/status/network.js:352 js/ui/status/network.js:919
msgid "Connect"
msgstr "Bağlan"
@@ -727,11 +700,11 @@ msgstr "Özel anahtar parolası: "
msgid "Service: "
msgstr "Hizmet: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:666
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "Kablosuz ağ için kimlik doğrulama gerekiyor"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -740,7 +713,7 @@ msgstr ""
"“%s” kablosuz ağına erişmek için parolalar veya şifreleme anahtarları "
"gerekiyor."
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:670
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Kablolu 802.1X kimlik doğrulaması"
@@ -748,15 +721,15 @@ msgstr "Kablolu 802.1X kimlik doğrulaması"
msgid "Network name: "
msgstr "Ağ adı: "
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "DSL kimlik doğrulama"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "PIN kodu gerekli"
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:681
#: js/ui/components/networkAgent.js:340 js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Mobil geniş bant aygıtı için PIN kodu gerekli"
@@ -764,17 +737,17 @@ msgstr "Mobil geniş bant aygıtı için PIN kodu gerekli"
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:348 js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Mobil geniş bant ağ parolası"
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:671
#: js/ui/components/networkAgent.js:675 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:349 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:667 js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "“%s”e bağlanmak için parola gerekli."
#: js/ui/components/networkAgent.js:655 js/ui/status/network.js:1734
#: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1658
msgid "Network Manager"
msgstr "Ağ Yöneticisi"
@@ -800,12 +773,12 @@ msgstr "Üzgünüm ama işe yaramadı. Lütfen tekrar deneyin."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:765
#: js/ui/components/telepathyClient.js:760
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s, şimdi %s olarak biliniyor"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:178
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:155
msgid "Windows"
msgstr "Pencereler"
@@ -1090,52 +1063,6 @@ msgstr "Genel Görünüm"
msgid "Type to search…"
msgstr "Aramak için buraya yazın..."
#: js/ui/padOsd.js:37
msgid "New shortcut…"
msgstr "Yeni kısayol…"
#: js/ui/padOsd.js:86
#| msgid "Applications"
msgid "Application defined"
msgstr "Uygulama tanımlı"
#: js/ui/padOsd.js:87
msgid "Show on-screen help"
msgstr "Ekranda yardımı göster"
#: js/ui/padOsd.js:88
#| msgid "Switch User"
msgid "Switch monitor"
msgstr "Monitör değiştir"
#: js/ui/padOsd.js:89
msgid "Assign keystroke"
msgstr "Tuş vuruşu ata"
#: js/ui/padOsd.js:143
msgid "Done"
msgstr "Bitti"
#: js/ui/padOsd.js:597
msgid "Edit…"
msgstr "Düzenle…"
#: js/ui/padOsd.js:610 js/ui/padOsd.js:665
msgid "None"
msgstr "Yok"
#: js/ui/padOsd.js:648
msgid "Press a button to configure"
msgstr "Yapılandırmak için bir düğmeye basın"
#: js/ui/padOsd.js:649
msgid "Press Esc to exit"
msgstr "Çıkmak için Esc'ye basın"
#: js/ui/padOsd.js:652
msgid "Press any key to exit"
msgstr "Çıkmak için herhangi bir tuşa basın"
#: js/ui/panel.js:358
msgid "Quit"
msgstr "Kapat"
@@ -1172,11 +1099,6 @@ msgstr "Komut Girin"
msgid "Close"
msgstr "Kapat"
#: js/ui/runDialog.js:277
#| msgid "Encryption is not available"
msgid "Restart is not available on Wayland"
msgstr "Wayland'da yeniden başlatma kullanılabilir değil"
#: js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "Yeniden başlatılıyor..."
@@ -1203,7 +1125,7 @@ msgstr[0] "%d yeni bildirim"
msgid "Lock"
msgstr "Kilitle"
#: js/ui/screenShield.js:707
#: js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME'un ekranı kilitlemesi gerekiyor"
@@ -1214,11 +1136,11 @@ msgstr "GNOME'un ekranı kilitlemesi gerekiyor"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:828 js/ui/screenShield.js:1295
#: js/ui/screenShield.js:825 js/ui/screenShield.js:1291
msgid "Unable to lock"
msgstr "Kilitlenemedi"
#: js/ui/screenShield.js:829 js/ui/screenShield.js:1296
#: js/ui/screenShield.js:826 js/ui/screenShield.js:1292
msgid "Lock was blocked by an application"
msgstr "Kilitleme bir uygulama tarafından engellendi"
@@ -1302,7 +1224,7 @@ msgstr "Büyük Yazı"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:624
msgid "Bluetooth Settings"
msgstr "Bluetooth Ayarları"
@@ -1318,16 +1240,16 @@ msgid "Off"
msgstr "Kapalı"
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "ık"
msgid "Not In Use"
msgstr "Kullanımda Değil"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1291
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Aç"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:356 js/ui/status/network.js:1291
#: js/ui/status/network.js:1406 js/ui/status/rfkill.js:90
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:178
#: js/ui/status/network.js:353 js/ui/status/network.js:1279
#: js/ui/status/network.js:1394 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Kapat"
@@ -1374,18 +1296,18 @@ msgstr "%s uygulaması konumunuza erişebilsin mi?"
msgid "Location access can be changed at any time from the privacy settings."
msgstr "Konum erişimi, gizlilik ayarlarından her zaman değiştirilebilir."
#: js/ui/status/network.js:104
#: js/ui/status/network.js:101
msgid "<unknown>"
msgstr "<bilinmeyen>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454 js/ui/status/network.js:1320
#: js/ui/status/network.js:451 js/ui/status/network.js:1308
#, javascript-format
msgid "%s Off"
msgstr "%s Kapalı"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:457
#: js/ui/status/network.js:454
#, javascript-format
msgid "%s Connected"
msgstr "%s Bağlandı"
@@ -1393,190 +1315,168 @@ msgstr "%s Bağlandı"
#. 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);
#. %s is a network identifier
#: js/ui/status/network.js:462
#: js/ui/status/network.js:459
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s Yönetilmiyor"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s Bağlantısı Kesiliyor"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:472 js/ui/status/network.js:1312
#: js/ui/status/network.js:469 js/ui/status/network.js:1300
#, javascript-format
msgid "%s Connecting"
msgstr "%s Bağlanıyor"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:475
#: js/ui/status/network.js:472
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s Kimlik Doğrulaması Gerektiriyor"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:483
#: js/ui/status/network.js:480
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "%s İçin Ürün Bilgisi Eksik"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:487
#: js/ui/status/network.js:484
#, javascript-format
msgid "%s Unavailable"
msgstr "%s Kullanılamaz"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:490
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s Bağlantısı Başarısız Oldu"
#: js/ui/status/network.js:506
#: js/ui/status/network.js:503
msgid "Wired Settings"
msgstr "Kablolu Ağ Ayarları"
#: js/ui/status/network.js:548
#: js/ui/status/network.js:545
msgid "Mobile Broadband Settings"
msgstr "Mobil Geniş Bant Ayarları"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:591 js/ui/status/network.js:1317
#: js/ui/status/network.js:588 js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s Donanımı Devre Dışı"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:595
#: js/ui/status/network.js:592
#, javascript-format
msgid "%s Disabled"
msgstr "%s Devre Dışı"
#: js/ui/status/network.js:635
#: js/ui/status/network.js:632
msgid "Connect to Internet"
msgstr "İnternet'e Bağlan"
#: js/ui/status/network.js:825
#: js/ui/status/network.js:813
msgid "Airplane Mode is On"
msgstr "Uçak Kipi Açık"
#: js/ui/status/network.js:826
#: js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Uçak kipi açıldığında kablosuz ağ devre dışı kalır."
#: js/ui/status/network.js:827
#: js/ui/status/network.js:815
msgid "Turn Off Airplane Mode"
msgstr "Uçak Kipini Kapat"
#: js/ui/status/network.js:836
#: js/ui/status/network.js:824
msgid "Wi-Fi is Off"
msgstr "Kablosuz Ağ Kapalı"
#: js/ui/status/network.js:837
#: js/ui/status/network.js:825
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Bir ağa bağlanmak için kablosuz ağın açık olması gerekir."
#: js/ui/status/network.js:838
#: js/ui/status/network.js:826
msgid "Turn On Wi-Fi"
msgstr "Kablosuz Ağı Aç"
#: js/ui/status/network.js:863
#: js/ui/status/network.js:851
msgid "Wi-Fi Networks"
msgstr "Kablosuz Ağlar"
#: js/ui/status/network.js:865
#: js/ui/status/network.js:853
msgid "Select a network"
msgstr "Bir ağ seçin"
#: js/ui/status/network.js:895
#: js/ui/status/network.js:883
msgid "No Networks"
msgstr "Ağ Yok"
#: js/ui/status/network.js:916 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Kapatmak için donanım anahtarını kullanın."
#: js/ui/status/network.js:1183
#: js/ui/status/network.js:1171
msgid "Select Network"
msgstr "Ağ Seç"
#: js/ui/status/network.js:1189
#: js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "Kablosuz Ağ Ayarları"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1308
#: js/ui/status/network.js:1296
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s Etkin Noktası Aktif"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1323
#: js/ui/status/network.js:1311
#, javascript-format
msgid "%s Not Connected"
msgstr "%s Bağlı Değil"
#: js/ui/status/network.js:1423
#: js/ui/status/network.js:1411
msgid "connecting..."
msgstr "bağlanıyor..."
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1426
#: js/ui/status/network.js:1414
msgid "authentication required"
msgstr "kimlik doğrulaması gerekli"
#: js/ui/status/network.js:1428
#: js/ui/status/network.js:1416
msgid "connection failed"
msgstr "bağlantı başarısız"
#: js/ui/status/network.js:1494 js/ui/status/network.js:1587
#: js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1482 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Ağ Ayarları"
#: js/ui/status/network.js:1496
#: js/ui/status/network.js:1484
msgid "VPN Settings"
msgstr "VPN Ayarları"
#: js/ui/status/network.js:1515
#: js/ui/status/network.js:1503
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1525
#: js/ui/status/network.js:1513
msgid "VPN Off"
msgstr "VPN Kapalı"
#: js/ui/status/network.js:1618
#, javascript-format
#| msgid "%s Connecting"
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Kablolu Bağlantı"
#: js/ui/status/network.js:1622
#, javascript-format
#| msgid "%s Connecting"
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Kablosuz Ağ Bağlantısı"
#: js/ui/status/network.js:1626
#, javascript-format
#| msgid "%s Connecting"
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s Modem Bağlantısı"
#: js/ui/status/network.js:1773
#: js/ui/status/network.js:1697
msgid "Connection failed"
msgstr "Bağlantı başarısız oldu"
#: js/ui/status/network.js:1774
#: js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "Ağ bağlantısının etkinleştirilmesi başarısız oldu"
@@ -1658,11 +1558,11 @@ msgstr "Başka kullanıcı olarak oturum aç"
msgid "Unlock Window"
msgstr "Kilit Açma Penceresi"
#: js/ui/viewSelector.js:182
#: js/ui/viewSelector.js:159
msgid "Applications"
msgstr "Uygulamalar"
#: js/ui/viewSelector.js:186
#: js/ui/viewSelector.js:163
msgid "Search"
msgstr "Ara"
@@ -1671,22 +1571,22 @@ msgstr "Ara"
msgid "“%s” is ready"
msgstr "“%s” hazır"
#: js/ui/windowManager.js:64
#: js/ui/windowManager.js:63
msgid "Do you want to keep these display settings?"
msgstr "Bu görüntü ayarlarını saklamak istiyor musunuz?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:82
msgid "Revert Settings"
msgstr "Ayarları Eski Haline Getir"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
msgid "Keep Changes"
msgstr "Değişiklikleri Sakla"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:103
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@@ -1694,7 +1594,7 @@ msgstr[0] "Ayarlardaki değişiklikler %d saniye içinde eski haline döndürül
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:658
#, javascript-format
msgid "%d x %d"
msgstr "%d x %d"
@@ -1792,19 +1692,19 @@ msgstr[0] "%u Girdi"
msgid "System Sounds"
msgstr "Sistem Sesleri"
#: src/main.c:380
#: src/main.c:381
msgid "Print version"
msgstr "Sürümü yazdır"
#: src/main.c:386
#: src/main.c:387
msgid "Mode used by GDM for login screen"
msgstr "Oturum açma ekranında GDM tarafından kullanılan kip"
#: src/main.c:392
#: src/main.c:393
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Oturum açma için -\"gdm\" gibi- özel bir kip kullan"
#: src/main.c:398
#: src/main.c:399
msgid "List possible modes"
msgstr "Mevcut kipleri listele"
@@ -1830,8 +1730,23 @@ msgstr "Parola boş bırakılamaz"
msgid "Authentication dialog was dismissed by the user"
msgstr "Kimlik doğrulama penceresi kullanıcı tarafından kapatıldı"
#~ msgid "Not In Use"
#~ msgstr "Kullanımda Değil"
#~ msgid "System"
#~ msgstr "Sistem"
#~ msgid "Show the notification list"
#~ msgstr "Bildirim listesini göster"
#~ msgid "Focus the active notification"
#~ msgstr "Etkin bildirime odaklan"
#~ msgid "Show the overview"
#~ msgstr "Genel görünümü göster"
#~ msgid "Show all applications"
#~ msgstr "Tüm uygulamaları göster"
#~ msgid "Open the application menu"
#~ msgstr "Uygulama menüsünü aç"
#~ msgid "Show the week date in the calendar"
#~ msgstr "Hafta tarihini takvimde göster"
@@ -1861,6 +1776,9 @@ msgstr "Kimlik doğrulama penceresi kullanıcı tarafından kapatıldı"
#~ msgid "Airplane Mode"
#~ msgstr "Uçak Kipi"
#~ msgid "On"
#~ msgstr "Açık"
#~| msgid "Show the message tray"
#~ msgid "Show the message list"
#~ msgstr "İleti listesini göster"
@@ -1942,6 +1860,9 @@ msgstr "Kimlik doğrulama penceresi kullanıcı tarafından kapatıldı"
#~ msgid "Status is set to offline"
#~ msgstr "Durum çevrimdıına ayarlı"
#~ msgid "Encryption is not available"
#~ msgstr "Şifreleme kullanılabilir değil"
#~ msgid "Certificate is invalid"
#~ msgstr "Sertifika geçersiz"

1313
po/uk.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -335,7 +335,7 @@ 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-$(LIBMUTTER_API_VERSION) ClutterX11-$(LIBMUTTER_API_VERSION) Meta-$(LIBMUTTER_API_VERSION) 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
if HAVE_NETWORKMANAGER
Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
endif
@@ -350,7 +350,7 @@ INTROSPECTION_GIRS += Shell-0.1.gir
CLEANFILES += Shell-0.1.gir
St-1.0.gir: libst-1.0.la
St_1_0_gir_INCLUDES = Clutter-$(LIBMUTTER_API_VERSION) Gtk-3.0
St_1_0_gir_INCLUDES = Clutter-1.0 Gtk-3.0
St_1_0_gir_CFLAGS = $(st_cflags) -DST_COMPILATION
St_1_0_gir_LIBS = libst-1.0.la
St_1_0_gir_FILES = $(filter-out %-private.h $(st_non_gir_sources), $(addprefix $(srcdir)/,$(st_source_h))) \

View File

@@ -30,7 +30,6 @@ main (int argc, char *argv[])
{
g_message("Failed to defined ARGV: %s", error->message);
g_error_free (error);
g_object_unref (context);
return 1;
}
@@ -44,11 +43,9 @@ main (int argc, char *argv[])
{
g_message ("Execution of main.js threw exception: %s", error->message);
g_error_free (error);
g_object_unref (context);
return status;
}
g_object_unref (context);
return 0;
}

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